meadow 2.0.33 → 2.0.36
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 +1 -1
- package/docs/_version.json +7 -0
- package/docs/css/docuserve.css +277 -23
- package/docs/index.html +2 -2
- package/docs/providers/README.md +17 -17
- package/docs/providers/alasql.md +7 -7
- package/docs/providers/meadow-endpoints.md +13 -10
- package/docs/providers/mssql.md +10 -10
- package/docs/providers/mysql.md +7 -7
- package/docs/providers/sqlite.md +7 -7
- package/docs/query/README.md +5 -5
- package/docs/retold-catalog.json +3 -12
- package/docs/retold-keyword-index.json +4742 -4076
- package/docs/schema/README.md +16 -16
- package/package.json +9 -8
- package/scripts/bookstore-seed.js +538 -0
- package/scripts/mssql-test-db.sh +18 -0
- package/scripts/mysql-test-db.sh +6 -6
- package/scripts/postgresql-test-db.sh +6 -6
- package/source/Meadow.js +1 -0
- package/source/providers/Meadow-Provider-MSSQL.js +11 -0
- package/source/providers/Meadow-Provider-RetoldDataBeacon.js +228 -0
- package/scripts/bookstore-seed-postgresql.sql +0 -135
- package/scripts/bookstore-seed.sql +0 -147
package/docs/_cover.md
CHANGED
package/docs/css/docuserve.css
CHANGED
|
@@ -1,73 +1,327 @@
|
|
|
1
1
|
/* ============================================================================
|
|
2
|
-
Pict Docuserve - Base Styles
|
|
2
|
+
Pict Docuserve - Base Styles & Theme Variables
|
|
3
3
|
============================================================================ */
|
|
4
4
|
|
|
5
|
-
/*
|
|
6
|
-
|
|
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:
|
|
17
|
-
background-color:
|
|
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
|
-
|
|
270
|
+
a
|
|
271
|
+
{
|
|
272
|
+
color: var(--docuserve-accent);
|
|
30
273
|
text-decoration: none;
|
|
31
274
|
}
|
|
32
275
|
|
|
33
|
-
a:hover
|
|
34
|
-
|
|
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
|
-
|
|
294
|
+
::-webkit-scrollbar-track
|
|
295
|
+
{
|
|
296
|
+
background: var(--docuserve-scrollbar-track);
|
|
49
297
|
}
|
|
50
298
|
|
|
51
|
-
::-webkit-scrollbar-thumb
|
|
52
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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">
|
package/docs/providers/README.md
CHANGED
|
@@ -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
|
|
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
|
|
13
|
-
├── MSSQL
|
|
14
|
-
├── SQLite
|
|
15
|
-
├── ALASQL
|
|
16
|
-
├── MeadowEndpoints
|
|
17
|
-
└── None
|
|
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
|
|
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
|
|
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
|
|
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)
|
|
245
|
-
- [MSSQL](providers/mssql.md)
|
|
246
|
-
- [SQLite](providers/sqlite.md)
|
|
247
|
-
- [ALASQL](providers/alasql.md)
|
|
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)
|
|
252
|
-
- [Query Overview](query/README.md)
|
|
253
|
-
- [Meadow-Endpoints](https://github.com/stevenvelozo/meadow-endpoints)
|
|
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
|
package/docs/providers/alasql.md
CHANGED
|
@@ -253,9 +253,9 @@ meadow.doCreate(
|
|
|
253
253
|
|
|
254
254
|
| Use Case | Recommendation |
|
|
255
255
|
|----------|---------------|
|
|
256
|
-
| Unit testing | Excellent
|
|
257
|
-
| Browser applications | Excellent
|
|
258
|
-
| Rapid prototyping | Excellent
|
|
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)
|
|
269
|
-
- [MySQL Provider](providers/mysql.md)
|
|
270
|
-
- [SQLite Provider](providers/sqlite.md)
|
|
271
|
-
- [Schema](schema/README.md)
|
|
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
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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
|
package/docs/providers/mssql.md
CHANGED
|
@@ -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 |
|
|
87
|
+
| `MSSQL.server` | string | -- | SQL Server hostname |
|
|
88
88
|
| `MSSQL.port` | number | `1433` | SQL Server port |
|
|
89
|
-
| `MSSQL.user` | string |
|
|
90
|
-
| `MSSQL.password` | string |
|
|
91
|
-
| `MSSQL.database` | string |
|
|
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**
|
|
109
|
-
- **Performance**
|
|
110
|
-
- **Type Safety**
|
|
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)
|
|
295
|
-
- [MySQL Provider](providers/mysql.md)
|
|
296
|
-
- [meadow-connection-mssql](https://github.com/stevenvelozo/meadow-connection-mssql)
|
|
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
|
package/docs/providers/mysql.md
CHANGED
|
@@ -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 |
|
|
87
|
+
| `MySQL.Server` | string | -- | Database server hostname |
|
|
88
88
|
| `MySQL.Port` | number | `3306` | Database server port |
|
|
89
|
-
| `MySQL.User` | string |
|
|
90
|
-
| `MySQL.Password` | string |
|
|
91
|
-
| `MySQL.Database` | string |
|
|
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)
|
|
259
|
-
- [MSSQL Provider](providers/mssql.md)
|
|
260
|
-
- [meadow-connection-mysql](https://github.com/stevenvelozo/meadow-connection-mysql)
|
|
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
|
package/docs/providers/sqlite.md
CHANGED
|
@@ -151,9 +151,9 @@ meadow.doCount(
|
|
|
151
151
|
|
|
152
152
|
| Use Case | Recommendation |
|
|
153
153
|
|----------|---------------|
|
|
154
|
-
| Local development | Great
|
|
155
|
-
| Unit testing | Good
|
|
156
|
-
| Small production apps | Good
|
|
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)
|
|
171
|
-
- [MySQL Provider](providers/mysql.md)
|
|
172
|
-
- [ALASQL Provider](providers/alasql.md)
|
|
173
|
-
- [meadow-connection-sqlite](https://github.com/stevenvelozo/meadow-connection-sqlite)
|
|
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
|
package/docs/query/README.md
CHANGED
|
@@ -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
|
|
113
|
-
2. .addFilter(...)
|
|
114
|
-
3. .addRecord(...)
|
|
115
|
-
4. meadow.doRead(query)
|
|
116
|
-
5. callback(error, ...)
|
|
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.
|
package/docs/retold-catalog.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"Generated": "2026-
|
|
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
|
]
|