meadow 2.0.31 → 2.0.35

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.
package/docs/_cover.md CHANGED
@@ -1,4 +1,4 @@
1
- # Meadow <small>v2.0.23</small>
1
+ # Meadow
2
2
 
3
3
  > A data access library providing magic where you want it, programmability where you don't
4
4
 
@@ -0,0 +1,7 @@
1
+ {
2
+ "Name": "meadow",
3
+ "Version": "2.0.33",
4
+ "Description": "A data access library.",
5
+ "GeneratedAt": "2026-04-10T17:22:06.723Z",
6
+ "GitCommit": "8aa8f87"
7
+ }
@@ -1,73 +1,327 @@
1
1
  /* ============================================================================
2
- Pict Docuserve - Base Styles
2
+ Pict Docuserve - Base Styles & Theme Variables
3
3
  ============================================================================ */
4
4
 
5
- /* Reset and base */
6
- *, *::before, *::after {
5
+ /* ----------------------------------------------------------------------------
6
+ Theme variables light defaults on :root.
7
+ Dark mode applies when either:
8
+ (a) the user explicitly selected dark via <html data-theme="dark">
9
+ (b) the user hasn't chosen anything AND the system prefers dark
10
+ An explicit <html data-theme="light"> pins the light palette regardless.
11
+ ---------------------------------------------------------------------------- */
12
+
13
+ :root
14
+ {
15
+ /* Surfaces */
16
+ --docuserve-bg: #FDFBF7;
17
+ --docuserve-bg-elevated: #FFFFFF;
18
+ --docuserve-border: #DDD6CA;
19
+ --docuserve-border-soft: #EAE3D8;
20
+
21
+ /* Text */
22
+ --docuserve-text: #2A241E;
23
+ --docuserve-text-strong: #3D3229;
24
+ --docuserve-text-muted: #5E5549;
25
+ --docuserve-text-dim: #8A7F72;
26
+
27
+ /* Accent / links */
28
+ --docuserve-accent: #2E7D74;
29
+ --docuserve-accent-hover: #236660;
30
+
31
+ /* Top bar */
32
+ --docuserve-topbar-bg: #3D3229;
33
+ --docuserve-topbar-text: #E8E0D4;
34
+ --docuserve-topbar-text-muted: #B5AA9A;
35
+ --docuserve-topbar-text-dim: #8A7F72;
36
+ --docuserve-topbar-hover-bg: #524438;
37
+ --docuserve-topbar-version-bg: rgba(255, 255, 255, 0.06);
38
+ --docuserve-topbar-version-border: rgba(255, 255, 255, 0.08);
39
+ --docuserve-topbar-version-text: #B5AA9A;
40
+
41
+ /* Sidebar */
42
+ --docuserve-sidebar-bg: #FAF7F1;
43
+ --docuserve-sidebar-border: #DDD6CA;
44
+ --docuserve-sidebar-border-soft: #E5DED1;
45
+ --docuserve-sidebar-text: #423D37;
46
+ --docuserve-sidebar-group-title: #3D3229;
47
+ --docuserve-sidebar-module-text: #5E5549;
48
+ --docuserve-sidebar-hover-bg: #EAE3D8;
49
+ --docuserve-sidebar-hover-text: #2E7D74;
50
+ --docuserve-sidebar-active-bg: #E5DED1;
51
+ --docuserve-sidebar-active-text: #2E7D74;
52
+ --docuserve-sidebar-search-bg: #FFFFFF;
53
+ --docuserve-sidebar-search-border: #DDD6CA;
54
+
55
+ /* Inline code */
56
+ --docuserve-inline-code-bg: #F0ECE4;
57
+ --docuserve-inline-code-text: #9E3A50;
58
+
59
+ /* Code block panel */
60
+ --docuserve-code-bg: #F6F3EE;
61
+ --docuserve-code-border: #E5DED1;
62
+ --docuserve-code-gutter-bg: #EFEAE0;
63
+ --docuserve-code-gutter-border: #DDD6CA;
64
+ --docuserve-code-gutter-text: #A59986;
65
+ --docuserve-code-text: #2A241E;
66
+
67
+ /* Syntax tokens — low-chroma dark-on-light palette */
68
+ --docuserve-tok-keyword: #A03472;
69
+ --docuserve-tok-string: #1A6640;
70
+ --docuserve-tok-number: #B25A00;
71
+ --docuserve-tok-comment: #8A7F72;
72
+ --docuserve-tok-operator: #2E7D74;
73
+ --docuserve-tok-punctuation: #2A241E;
74
+ --docuserve-tok-function: #2A5DB0;
75
+ --docuserve-tok-property: #9E3A50;
76
+ --docuserve-tok-tag: #9E3A50;
77
+ --docuserve-tok-attr-name: #B25A00;
78
+ --docuserve-tok-attr-value: #1A6640;
79
+
80
+ /* Tables, blockquotes, mermaid */
81
+ --docuserve-table-header-bg: #F5F0E8;
82
+ --docuserve-table-row-alt-bg: #F9F6F0;
83
+ --docuserve-blockquote-bg: #F7F5F0;
84
+ --docuserve-blockquote-border: #2E7D74;
85
+ --docuserve-blockquote-text: #5E5549;
86
+ --docuserve-mermaid-bg: #FFFFFF;
87
+
88
+ /* Scrollbars */
89
+ --docuserve-scrollbar-track: #F5F0E8;
90
+ --docuserve-scrollbar-thumb: #D4CCBE;
91
+ --docuserve-scrollbar-thumb-hover: #B5AA9A;
92
+ }
93
+
94
+ @media (prefers-color-scheme: dark)
95
+ {
96
+ :root:not([data-theme="light"])
97
+ {
98
+ --docuserve-bg: #15120F;
99
+ --docuserve-bg-elevated: #1B1814;
100
+ --docuserve-border: #2F2823;
101
+ --docuserve-border-soft: #26211C;
102
+
103
+ --docuserve-text: #E8E0D4;
104
+ --docuserve-text-strong: #F2ECE0;
105
+ --docuserve-text-muted: #B5AA9A;
106
+ --docuserve-text-dim: #7A6F62;
107
+
108
+ --docuserve-accent: #5DB8A8;
109
+ --docuserve-accent-hover: #7FCCB8;
110
+
111
+ --docuserve-topbar-bg: #1A1612;
112
+ --docuserve-topbar-text: #E8E0D4;
113
+ --docuserve-topbar-text-muted: #B5AA9A;
114
+ --docuserve-topbar-text-dim: #7A6F62;
115
+ --docuserve-topbar-hover-bg: #2A241E;
116
+ --docuserve-topbar-version-bg: rgba(255, 255, 255, 0.05);
117
+ --docuserve-topbar-version-border: rgba(255, 255, 255, 0.09);
118
+ --docuserve-topbar-version-text: #B5AA9A;
119
+
120
+ --docuserve-sidebar-bg: #1B1814;
121
+ --docuserve-sidebar-border: #2F2823;
122
+ --docuserve-sidebar-border-soft: #26211C;
123
+ --docuserve-sidebar-text: #C9C0B3;
124
+ --docuserve-sidebar-group-title: #F2ECE0;
125
+ --docuserve-sidebar-module-text: #B5AA9A;
126
+ --docuserve-sidebar-hover-bg: #2A241E;
127
+ --docuserve-sidebar-hover-text: #7FCCB8;
128
+ --docuserve-sidebar-active-bg: #2F2823;
129
+ --docuserve-sidebar-active-text: #7FCCB8;
130
+ --docuserve-sidebar-search-bg: #26211C;
131
+ --docuserve-sidebar-search-border: #2F2823;
132
+
133
+ --docuserve-inline-code-bg: #2A241E;
134
+ --docuserve-inline-code-text: #E8B07A;
135
+
136
+ --docuserve-code-bg: #1E1A17;
137
+ --docuserve-code-border: #2F2823;
138
+ --docuserve-code-gutter-bg: #17130F;
139
+ --docuserve-code-gutter-border: #2F2823;
140
+ --docuserve-code-gutter-text: #6A6052;
141
+ --docuserve-code-text: #E8E0D4;
142
+
143
+ --docuserve-tok-keyword: #C678DD;
144
+ --docuserve-tok-string: #98C379;
145
+ --docuserve-tok-number: #D19A66;
146
+ --docuserve-tok-comment: #7F848E;
147
+ --docuserve-tok-operator: #56B6C2;
148
+ --docuserve-tok-punctuation: #E8E0D4;
149
+ --docuserve-tok-function: #61AFEF;
150
+ --docuserve-tok-property: #E06C75;
151
+ --docuserve-tok-tag: #E06C75;
152
+ --docuserve-tok-attr-name: #D19A66;
153
+ --docuserve-tok-attr-value: #98C379;
154
+
155
+ --docuserve-table-header-bg: #26211C;
156
+ --docuserve-table-row-alt-bg: #1F1B17;
157
+ --docuserve-blockquote-bg: #1F1B17;
158
+ --docuserve-blockquote-border: #5DB8A8;
159
+ --docuserve-blockquote-text: #C9C0B3;
160
+ --docuserve-mermaid-bg: #E8E0D4;
161
+
162
+ --docuserve-scrollbar-track: #1B1814;
163
+ --docuserve-scrollbar-thumb: #3A322B;
164
+ --docuserve-scrollbar-thumb-hover: #524438;
165
+ }
166
+ }
167
+
168
+ :root[data-theme="dark"]
169
+ {
170
+ --docuserve-bg: #15120F;
171
+ --docuserve-bg-elevated: #1B1814;
172
+ --docuserve-border: #2F2823;
173
+ --docuserve-border-soft: #26211C;
174
+
175
+ --docuserve-text: #E8E0D4;
176
+ --docuserve-text-strong: #F2ECE0;
177
+ --docuserve-text-muted: #B5AA9A;
178
+ --docuserve-text-dim: #7A6F62;
179
+
180
+ --docuserve-accent: #5DB8A8;
181
+ --docuserve-accent-hover: #7FCCB8;
182
+
183
+ --docuserve-topbar-bg: #1A1612;
184
+ --docuserve-topbar-text: #E8E0D4;
185
+ --docuserve-topbar-text-muted: #B5AA9A;
186
+ --docuserve-topbar-text-dim: #7A6F62;
187
+ --docuserve-topbar-hover-bg: #2A241E;
188
+ --docuserve-topbar-version-bg: rgba(255, 255, 255, 0.05);
189
+ --docuserve-topbar-version-border: rgba(255, 255, 255, 0.09);
190
+ --docuserve-topbar-version-text: #B5AA9A;
191
+
192
+ --docuserve-sidebar-bg: #1B1814;
193
+ --docuserve-sidebar-border: #2F2823;
194
+ --docuserve-sidebar-border-soft: #26211C;
195
+ --docuserve-sidebar-text: #C9C0B3;
196
+ --docuserve-sidebar-group-title: #F2ECE0;
197
+ --docuserve-sidebar-module-text: #B5AA9A;
198
+ --docuserve-sidebar-hover-bg: #2A241E;
199
+ --docuserve-sidebar-hover-text: #7FCCB8;
200
+ --docuserve-sidebar-active-bg: #2F2823;
201
+ --docuserve-sidebar-active-text: #7FCCB8;
202
+ --docuserve-sidebar-search-bg: #26211C;
203
+ --docuserve-sidebar-search-border: #2F2823;
204
+
205
+ --docuserve-inline-code-bg: #2A241E;
206
+ --docuserve-inline-code-text: #E8B07A;
207
+
208
+ --docuserve-code-bg: #1E1A17;
209
+ --docuserve-code-border: #2F2823;
210
+ --docuserve-code-gutter-bg: #17130F;
211
+ --docuserve-code-gutter-border: #2F2823;
212
+ --docuserve-code-gutter-text: #6A6052;
213
+ --docuserve-code-text: #E8E0D4;
214
+
215
+ --docuserve-tok-keyword: #C678DD;
216
+ --docuserve-tok-string: #98C379;
217
+ --docuserve-tok-number: #D19A66;
218
+ --docuserve-tok-comment: #7F848E;
219
+ --docuserve-tok-operator: #56B6C2;
220
+ --docuserve-tok-punctuation: #E8E0D4;
221
+ --docuserve-tok-function: #61AFEF;
222
+ --docuserve-tok-property: #E06C75;
223
+ --docuserve-tok-tag: #E06C75;
224
+ --docuserve-tok-attr-name: #D19A66;
225
+ --docuserve-tok-attr-value: #98C379;
226
+
227
+ --docuserve-table-header-bg: #26211C;
228
+ --docuserve-table-row-alt-bg: #1F1B17;
229
+ --docuserve-blockquote-bg: #1F1B17;
230
+ --docuserve-blockquote-border: #5DB8A8;
231
+ --docuserve-blockquote-text: #C9C0B3;
232
+ --docuserve-mermaid-bg: #E8E0D4;
233
+
234
+ --docuserve-scrollbar-track: #1B1814;
235
+ --docuserve-scrollbar-thumb: #3A322B;
236
+ --docuserve-scrollbar-thumb-hover: #524438;
237
+ }
238
+
239
+ /* ----------------------------------------------------------------------------
240
+ Reset and base
241
+ ---------------------------------------------------------------------------- */
242
+
243
+ *, *::before, *::after
244
+ {
7
245
  box-sizing: border-box;
8
246
  }
9
247
 
10
- html, body {
248
+ html, body
249
+ {
11
250
  margin: 0;
12
251
  padding: 0;
13
252
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
14
253
  font-size: 16px;
15
254
  line-height: 1.5;
16
- color: #423D37;
17
- background-color: #fff;
255
+ color: var(--docuserve-text);
256
+ background-color: var(--docuserve-bg);
18
257
  -webkit-font-smoothing: antialiased;
19
258
  -moz-osx-font-smoothing: grayscale;
259
+ transition: background-color 0.15s ease, color 0.15s ease;
20
260
  }
21
261
 
22
262
  /* Typography */
23
- h1, h2, h3, h4, h5, h6 {
263
+ h1, h2, h3, h4, h5, h6
264
+ {
24
265
  margin-top: 0;
25
266
  line-height: 1.3;
267
+ color: var(--docuserve-text-strong);
26
268
  }
27
269
 
28
- a {
29
- color: #2E7D74;
270
+ a
271
+ {
272
+ color: var(--docuserve-accent);
30
273
  text-decoration: none;
31
274
  }
32
275
 
33
- a:hover {
34
- color: #256861;
276
+ a:hover
277
+ {
278
+ color: var(--docuserve-accent-hover);
35
279
  }
36
280
 
37
281
  /* Application container */
38
- #Docuserve-Application-Container {
282
+ #Docuserve-Application-Container
283
+ {
39
284
  min-height: 100vh;
40
285
  }
41
286
 
42
287
  /* Utility: scrollbar styling */
43
- ::-webkit-scrollbar {
288
+ ::-webkit-scrollbar
289
+ {
44
290
  width: 8px;
291
+ height: 8px;
45
292
  }
46
293
 
47
- ::-webkit-scrollbar-track {
48
- background: #F5F0E8;
294
+ ::-webkit-scrollbar-track
295
+ {
296
+ background: var(--docuserve-scrollbar-track);
49
297
  }
50
298
 
51
- ::-webkit-scrollbar-thumb {
52
- background: #D4CCBE;
299
+ ::-webkit-scrollbar-thumb
300
+ {
301
+ background: var(--docuserve-scrollbar-thumb);
53
302
  border-radius: 4px;
54
303
  }
55
304
 
56
- ::-webkit-scrollbar-thumb:hover {
57
- background: #B5AA9A;
305
+ ::-webkit-scrollbar-thumb:hover
306
+ {
307
+ background: var(--docuserve-scrollbar-thumb-hover);
58
308
  }
59
309
 
60
310
  /* Responsive adjustments */
61
- @media (max-width: 768px) {
62
- html {
311
+ @media (max-width: 768px)
312
+ {
313
+ html
314
+ {
63
315
  font-size: 14px;
64
316
  }
65
317
 
66
- #Docuserve-Sidebar-Container {
318
+ #Docuserve-Sidebar-Container
319
+ {
67
320
  display: none;
68
321
  }
69
322
 
70
- .docuserve-body {
323
+ .docuserve-body
324
+ {
71
325
  flex-direction: column;
72
326
  }
73
327
  }
package/docs/index.html CHANGED
@@ -4,9 +4,9 @@
4
4
  <meta charset="utf-8">
5
5
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
- <meta name="description" content="Documentation powered by pict-docuserve">
7
+ <meta name="description" content="Meadow v2.0.33 Documentation A data access library.">
8
8
 
9
- <title>Documentation</title>
9
+ <title>Meadow v2.0.33 Documentation</title>
10
10
 
11
11
  <!-- Application Stylesheet -->
12
12
  <link href="css/docuserve.css" rel="stylesheet">
@@ -2,19 +2,19 @@
2
2
 
3
3
  > Pluggable database backends through a consistent interface
4
4
 
5
- Meadow's provider system abstracts database communication behind a unified CRUD interface. You write your data access code once, then swap providers to target MySQL, MSSQL, SQLite, an in-browser IndexedDB store, or even a remote REST API all without changing your application logic.
5
+ Meadow's provider system abstracts database communication behind a unified CRUD interface. You write your data access code once, then swap providers to target MySQL, MSSQL, SQLite, an in-browser IndexedDB store, or even a remote REST API -- all without changing your application logic.
6
6
 
7
7
  ## Overview
8
8
 
9
9
  ```
10
10
  Meadow (Data Access Layer)
11
11
  └── Provider Interface
12
- ├── MySQL mysql2 connection pool, named placeholders
13
- ├── MSSQL mssql prepared statements, SCOPE_IDENTITY()
14
- ├── SQLite Lightweight embedded SQL
15
- ├── ALASQL In-memory JavaScript SQL engine (browser/Node)
16
- ├── MeadowEndpoints HTTP proxy to remote Meadow REST API
17
- └── None No-op stub for testing
12
+ ├── MySQL -> mysql2 connection pool, named placeholders
13
+ ├── MSSQL -> mssql prepared statements, SCOPE_IDENTITY()
14
+ ├── SQLite -> Lightweight embedded SQL
15
+ ├── ALASQL -> In-memory JavaScript SQL engine (browser/Node)
16
+ ├── MeadowEndpoints -> HTTP proxy to remote Meadow REST API
17
+ └── None -> No-op stub for testing
18
18
  ```
19
19
 
20
20
  Every provider implements the same operation set:
@@ -113,7 +113,7 @@ All providers store their results in a consistent structure on the query object:
113
113
  pQuery.parameters.result =
114
114
  {
115
115
  error: null, // Error object if operation failed, null on success
116
- value: false, // Result value (varies by operation see below)
116
+ value: false, // Result value (varies by operation -- see below)
117
117
  executed: true // Whether the provider attempted execution
118
118
  };
119
119
  ```
@@ -198,7 +198,7 @@ tmpConnection.connectAsync(
198
198
 
199
199
  ## MeadowEndpoints Provider
200
200
 
201
- The MeadowEndpoints provider is unique it doesn't connect to a database directly. Instead, it acts as an HTTP proxy to a remote Meadow REST API. This enables client-side code to use the same Meadow interface while the actual data operations happen on a server.
201
+ The MeadowEndpoints provider is unique -- it doesn't connect to a database directly. Instead, it acts as an HTTP proxy to a remote Meadow REST API. This enables client-side code to use the same Meadow interface while the actual data operations happen on a server.
202
202
 
203
203
  ```javascript
204
204
  meadow.setProvider('MeadowEndpoints');
@@ -235,19 +235,19 @@ meadow.setProvider('None');
235
235
  meadow.doRead(meadow.query.addFilter('IDBook', 1),
236
236
  (pError, pQuery, pRecord) =>
237
237
  {
238
- // pRecord will be minimal/empty no actual data
238
+ // pRecord will be minimal/empty -- no actual data
239
239
  });
240
240
  ```
241
241
 
242
242
  ## Provider-Specific Documentation
243
243
 
244
- - [MySQL](providers/mysql.md) Connection pooling, named placeholders, configuration
245
- - [MSSQL](providers/mssql.md) Prepared statements, type mapping, identity handling
246
- - [SQLite](providers/sqlite.md) Embedded database, lightweight deployment
247
- - [ALASQL](providers/alasql.md) In-memory SQL, dynamic table creation, browser support
244
+ - [MySQL](providers/mysql.md) -- Connection pooling, named placeholders, configuration
245
+ - [MSSQL](providers/mssql.md) -- Prepared statements, type mapping, identity handling
246
+ - [SQLite](providers/sqlite.md) -- Embedded database, lightweight deployment
247
+ - [ALASQL](providers/alasql.md) -- In-memory SQL, dynamic table creation, browser support
248
248
 
249
249
  ## Related Documentation
250
250
 
251
- - [Schema](schema/README.md) How schema definitions drive provider behavior
252
- - [Query Overview](query/README.md) FoxHound query DSL and dialect generation
253
- - [Meadow-Endpoints](https://github.com/stevenvelozo/meadow-endpoints) REST API generation on top of Meadow providers
251
+ - [Schema](schema/README.md) -- How schema definitions drive provider behavior
252
+ - [Query Overview](query/README.md) -- FoxHound query DSL and dialect generation
253
+ - [Meadow-Endpoints](https://github.com/stevenvelozo/meadow-endpoints) -- REST API generation on top of Meadow providers
@@ -253,9 +253,9 @@ meadow.doCreate(
253
253
 
254
254
  | Use Case | Recommendation |
255
255
  |----------|---------------|
256
- | Unit testing | Excellent no database setup, fast, deterministic |
257
- | Browser applications | Excellent full SQL in the browser |
258
- | Rapid prototyping | Excellent start coding immediately |
256
+ | Unit testing | Excellent -- no database setup, fast, deterministic |
257
+ | Browser applications | Excellent -- full SQL in the browser |
258
+ | Rapid prototyping | Excellent -- start coding immediately |
259
259
  | Production server | Consider MySQL or MSSQL instead |
260
260
  | Data persistence | Data is in-memory only (lost on refresh/restart) |
261
261
 
@@ -265,7 +265,7 @@ All operations are wrapped in try-catch blocks. Errors are stored in `pQuery.par
265
265
 
266
266
  ## Related Documentation
267
267
 
268
- - [Providers Overview](providers/README.md) Comparison of all providers
269
- - [MySQL Provider](providers/mysql.md) Production MySQL alternative
270
- - [SQLite Provider](providers/sqlite.md) Lightweight embedded alternative
271
- - [Schema](schema/README.md) Schema definitions that drive table creation
268
+ - [Providers Overview](providers/README.md) -- Comparison of all providers
269
+ - [MySQL Provider](providers/mysql.md) -- Production MySQL alternative
270
+ - [SQLite Provider](providers/sqlite.md) -- Lightweight embedded alternative
271
+ - [Schema](schema/README.md) -- Schema definitions that drive table creation
@@ -219,16 +219,19 @@ GET http://127.0.0.1:8086/1.0/Books/Count
219
219
 
220
220
  The primary use case for MeadowEndpoints is enabling client-side JavaScript to use the same Meadow data access interface that the server uses. This means your application logic can be written once and run in either context:
221
221
 
222
- ```
223
- Browser / Client Server
224
- ┌──────────────────┐ ┌──────────────────┐
225
- Application Code │ │ Application Code │
226
- │ │ │ │
227
- │ Meadow DAL │ │ Meadow DAL │
228
- │ Provider: │ HTTP/REST │ Provider: │
229
- │ MeadowEndpoints ─┼──────────────────>│ MySQL │
230
- │ │ │ │
231
- └──────────────────┘ └──────────────────┘
222
+ ```mermaid
223
+ graph LR
224
+ subgraph Browser["Browser / Client"]
225
+ AC1["Application Code"]
226
+ ME["Meadow DAL<br/>Provider: MeadowEndpoints"]
227
+ AC1 --- ME
228
+ end
229
+ subgraph Server["Server"]
230
+ AC2["Application Code"]
231
+ MY["Meadow DAL<br/>Provider: MySQL"]
232
+ AC2 --- MY
233
+ end
234
+ ME -- "HTTP / REST" --> MY
232
235
  ```
233
236
 
234
237
  - **Server side:** Meadow uses a database provider (MySQL, MSSQL, PostgreSQL, etc.) to interact with the database directly
@@ -84,11 +84,11 @@ Unlike MySQL, MSSQL connections are fully asynchronous. The connection module pr
84
84
 
85
85
  | Setting | Type | Default | Description |
86
86
  |---------|------|---------|-------------|
87
- | `MSSQL.server` | string | | SQL Server hostname |
87
+ | `MSSQL.server` | string | -- | SQL Server hostname |
88
88
  | `MSSQL.port` | number | `1433` | SQL Server port |
89
- | `MSSQL.user` | string | | Database user |
90
- | `MSSQL.password` | string | | Database password |
91
- | `MSSQL.database` | string | | Database name |
89
+ | `MSSQL.user` | string | -- | Database user |
90
+ | `MSSQL.password` | string | -- | Database password |
91
+ | `MSSQL.database` | string | -- | Database name |
92
92
 
93
93
  ### Pool Configuration (Internal Defaults)
94
94
 
@@ -105,9 +105,9 @@ Unlike MySQL, MSSQL connections are fully asynchronous. The connection module pr
105
105
 
106
106
  The MSSQL provider uses prepared statements for **every** CRUD operation. This provides:
107
107
 
108
- - **Security** Parameters are bound separately from SQL, preventing injection
109
- - **Performance** SQL Server can cache execution plans
110
- - **Type Safety** Parameters are explicitly typed
108
+ - **Security** -- Parameters are bound separately from SQL, preventing injection
109
+ - **Performance** -- SQL Server can cache execution plans
110
+ - **Type Safety** -- Parameters are explicitly typed
111
111
 
112
112
  ### Execution Lifecycle
113
113
 
@@ -291,6 +291,6 @@ docker run -d \
291
291
 
292
292
  ## Related Documentation
293
293
 
294
- - [Providers Overview](providers/README.md) Comparison of all providers
295
- - [MySQL Provider](providers/mysql.md) MySQL/MariaDB alternative
296
- - [meadow-connection-mssql](https://github.com/stevenvelozo/meadow-connection-mssql) Connection module source
294
+ - [Providers Overview](providers/README.md) -- Comparison of all providers
295
+ - [MySQL Provider](providers/mysql.md) -- MySQL/MariaDB alternative
296
+ - [meadow-connection-mssql](https://github.com/stevenvelozo/meadow-connection-mssql) -- Connection module source
@@ -84,11 +84,11 @@ The provider looks for the connection pool in two locations (for backward compat
84
84
 
85
85
  | Setting | Type | Default | Description |
86
86
  |---------|------|---------|-------------|
87
- | `MySQL.Server` | string | | Database server hostname |
87
+ | `MySQL.Server` | string | -- | Database server hostname |
88
88
  | `MySQL.Port` | number | `3306` | Database server port |
89
- | `MySQL.User` | string | | Database user |
90
- | `MySQL.Password` | string | | Database password |
91
- | `MySQL.Database` | string | | Database name |
89
+ | `MySQL.User` | string | -- | Database user |
90
+ | `MySQL.Password` | string | -- | Database password |
91
+ | `MySQL.Database` | string | -- | Database name |
92
92
  | `MySQL.ConnectionPoolLimit` | number | `20` | Maximum pool connections |
93
93
 
94
94
  ### Named Placeholders
@@ -255,6 +255,6 @@ docker run -d \
255
255
 
256
256
  ## Related Documentation
257
257
 
258
- - [Providers Overview](providers/README.md) Comparison of all providers
259
- - [MSSQL Provider](providers/mssql.md) Microsoft SQL Server alternative
260
- - [meadow-connection-mysql](https://github.com/stevenvelozo/meadow-connection-mysql) Connection module source
258
+ - [Providers Overview](providers/README.md) -- Comparison of all providers
259
+ - [MSSQL Provider](providers/mssql.md) -- Microsoft SQL Server alternative
260
+ - [meadow-connection-mysql](https://github.com/stevenvelozo/meadow-connection-mysql) -- Connection module source
@@ -151,9 +151,9 @@ meadow.doCount(
151
151
 
152
152
  | Use Case | Recommendation |
153
153
  |----------|---------------|
154
- | Local development | Great no server setup required |
155
- | Unit testing | Good fast, in-process database |
156
- | Small production apps | Good for low-concurrency workloads |
154
+ | Local development | Great -- no server setup required |
155
+ | Unit testing | Good -- fast, in-process database |
156
+ | Small production apps | Good -- for low-concurrency workloads |
157
157
  | High-concurrency production | Consider MySQL or MSSQL instead |
158
158
  | Browser applications | Use ALASQL provider instead |
159
159
 
@@ -167,7 +167,7 @@ The SQLite provider follows the same error handling pattern as MySQL:
167
167
 
168
168
  ## Related Documentation
169
169
 
170
- - [Providers Overview](providers/README.md) Comparison of all providers
171
- - [MySQL Provider](providers/mysql.md) MySQL/MariaDB for production
172
- - [ALASQL Provider](providers/alasql.md) In-memory alternative
173
- - [meadow-connection-sqlite](https://github.com/stevenvelozo/meadow-connection-sqlite) Connection module source
170
+ - [Providers Overview](providers/README.md) -- Comparison of all providers
171
+ - [MySQL Provider](providers/mysql.md) -- MySQL/MariaDB for production
172
+ - [ALASQL Provider](providers/alasql.md) -- In-memory alternative
173
+ - [meadow-connection-sqlite](https://github.com/stevenvelozo/meadow-connection-sqlite) -- Connection module source
@@ -109,11 +109,11 @@ By default, queries automatically exclude records where the `Deleted` column is
109
109
  When you pass a query to a CRUD method, Meadow handles the rest:
110
110
 
111
111
  ```
112
- 1. meadow.query Clone a fresh FoxHound query with scope and schema
113
- 2. .addFilter(...) Configure the query parameters
114
- 3. .addRecord(...) Attach data (for create/update)
115
- 4. meadow.doRead(query) Meadow sets the dialect, builds SQL, executes via provider
116
- 5. callback(error, ...) Results returned through callback
112
+ 1. meadow.query -> Clone a fresh FoxHound query with scope and schema
113
+ 2. .addFilter(...) -> Configure the query parameters
114
+ 3. .addRecord(...) -> Attach data (for create/update)
115
+ 4. meadow.doRead(query) -> Meadow sets the dialect, builds SQL, executes via provider
116
+ 5. callback(error, ...) -> Results returned through callback
117
117
  ```
118
118
 
119
119
  You never need to call `setDialect()` or `buildReadQuery()` yourself -- Meadow's behavior modules handle dialect selection and SQL generation based on the configured provider.
@@ -1,5 +1,5 @@
1
1
  {
2
- "Generated": "2026-03-02T02:11:44.637Z",
2
+ "Generated": "2026-04-10T17:22:06.398Z",
3
3
  "GitHubOrg": "stevenvelozo",
4
4
  "DefaultBranch": "master",
5
5
  "Groups": [
@@ -55,16 +55,6 @@
55
55
  "Key": "dist",
56
56
  "Description": "",
57
57
  "Modules": [
58
- {
59
- "Name": "FableTest-RocksDB",
60
- "Repo": "FableTest-RocksDB",
61
- "Group": "dist",
62
- "Branch": "master",
63
- "HasDocs": false,
64
- "HasCover": false,
65
- "Sidebar": [],
66
- "DocFiles": []
67
- },
68
58
  {
69
59
  "Name": "indoctrinate_content_staging",
70
60
  "Repo": "indoctrinate_content_staging",
@@ -174,7 +164,8 @@
174
164
  "HasCover": false,
175
165
  "Sidebar": [],
176
166
  "DocFiles": [
177
- "schema/README.md"
167
+ "schema/README.md",
168
+ "schema/json-columns.md"
178
169
  ]
179
170
  }
180
171
  ]