retold-harness 1.1.6 → 1.1.8

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
- # Retold Harness <small>1.1.1</small>
1
+ # Retold Harness
2
2
 
3
3
  > Composable REST API harness with pluggable schemas and database providers
4
4
 
@@ -0,0 +1,7 @@
1
+ {
2
+ "Name": "retold-harness",
3
+ "Version": "1.1.7",
4
+ "Description": "Restful API harness. Serves on 8086.",
5
+ "GeneratedAt": "2026-04-10T17:22:29.964Z",
6
+ "GitCommit": "32200ca"
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/entities.md CHANGED
@@ -8,8 +8,8 @@ Basic user accounts for the system.
8
8
 
9
9
  | Column | Type | Size | Notes |
10
10
  |--------|------|------|-------|
11
- | `IDUser` | AutoIdentity | | Primary key |
12
- | `GUIDUser` | Integer | | Numeric GUID |
11
+ | `IDUser` | AutoIdentity | -- | Primary key |
12
+ | `GUIDUser` | Integer | -- | Numeric GUID |
13
13
  | `LoginID` | String | 128 | Login username |
14
14
  | `Password` | String | 255 | Password hash |
15
15
  | `NameFirst` | String | 128 | First name |
@@ -25,7 +25,7 @@ The primary entity representing books in the store.
25
25
 
26
26
  | Column | Type | Size | Notes |
27
27
  |--------|------|------|-------|
28
- | `IDBook` | AutoIdentity | | Primary key |
28
+ | `IDBook` | AutoIdentity | -- | Primary key |
29
29
  | `GUIDBook` | AutoGUID | 128 | Unique identifier |
30
30
  | `Title` | String | 200 | Book title |
31
31
  | `Type` | String | 32 | Book type (e.g. Fiction) |
@@ -33,7 +33,7 @@ The primary entity representing books in the store.
33
33
  | `ISBN` | String | 64 | ISBN number |
34
34
  | `Language` | String | 12 | Language code |
35
35
  | `ImageURL` | String | 254 | Cover image URL |
36
- | `PublicationYear` | Integer | | Year published |
36
+ | `PublicationYear` | Integer | -- | Year published |
37
37
  | + change tracking | | | Create, Update, Delete |
38
38
 
39
39
  ## Author
@@ -42,10 +42,10 @@ Authors who write books.
42
42
 
43
43
  | Column | Type | Size | Notes |
44
44
  |--------|------|------|-------|
45
- | `IDAuthor` | AutoIdentity | | Primary key |
45
+ | `IDAuthor` | AutoIdentity | -- | Primary key |
46
46
  | `GUIDAuthor` | AutoGUID | 128 | Unique identifier |
47
47
  | `Name` | String | 200 | Author name |
48
- | `IDUser` | Integer | | FK to User (optional) |
48
+ | `IDUser` | Integer | -- | FK to User (optional) |
49
49
  | + change tracking | | | Create, Update, Delete |
50
50
 
51
51
  ## BookAuthorJoin
@@ -54,10 +54,10 @@ Many-to-many join table connecting Books to Authors.
54
54
 
55
55
  | Column | Type | Size | Notes |
56
56
  |--------|------|------|-------|
57
- | `IDBookAuthorJoin` | AutoIdentity | | Primary key |
57
+ | `IDBookAuthorJoin` | AutoIdentity | -- | Primary key |
58
58
  | `GUIDBookAuthorJoin` | AutoGUID | 255 | Unique identifier |
59
- | `IDBook` | Integer | | FK to Book |
60
- | `IDAuthor` | Integer | | FK to Author |
59
+ | `IDBook` | Integer | -- | FK to Book |
60
+ | `IDAuthor` | Integer | -- | FK to Author |
61
61
 
62
62
  > **Note:** No change tracking columns. A book can have multiple authors, and an author can write multiple books.
63
63
 
@@ -67,14 +67,14 @@ Pricing information for books, supporting multiple price periods.
67
67
 
68
68
  | Column | Type | Size | Notes |
69
69
  |--------|------|------|-------|
70
- | `IDBookPrice` | AutoIdentity | | Primary key |
70
+ | `IDBookPrice` | AutoIdentity | -- | Primary key |
71
71
  | `GUIDBookPrice` | AutoGUID | 36 | Unique identifier |
72
72
  | `Price` | Decimal | 8,2 | Price value |
73
- | `StartDate` | DateTime | | Price effective start |
74
- | `EndDate` | DateTime | | Price effective end |
75
- | `Discountable` | Boolean | | Can be discounted |
73
+ | `StartDate` | DateTime | -- | Price effective start |
74
+ | `EndDate` | DateTime | -- | Price effective end |
75
+ | `Discountable` | Boolean | -- | Can be discounted |
76
76
  | `CouponCode` | String | 16 | Associated coupon |
77
- | `IDBook` | Integer | | FK to Book |
77
+ | `IDBook` | Integer | -- | FK to Book |
78
78
  | + change tracking | | | Create, Update, Delete |
79
79
 
80
80
  ## BookStore
@@ -83,7 +83,7 @@ Physical bookstore locations.
83
83
 
84
84
  | Column | Type | Size | Notes |
85
85
  |--------|------|------|-------|
86
- | `IDBookStore` | AutoIdentity | | Primary key |
86
+ | `IDBookStore` | AutoIdentity | -- | Primary key |
87
87
  | `GUIDBookStore` | AutoGUID | 36 | Unique identifier |
88
88
  | `Name` | String | 200 | Store name |
89
89
  | `Address` | String | 64 | Street address |
@@ -99,15 +99,15 @@ Tracks book inventory levels at each store.
99
99
 
100
100
  | Column | Type | Size | Notes |
101
101
  |--------|------|------|-------|
102
- | `IDBookStoreInventory` | AutoIdentity | | Primary key |
102
+ | `IDBookStoreInventory` | AutoIdentity | -- | Primary key |
103
103
  | `GUIDBookStoreInventory` | AutoGUID | 36 | Unique identifier |
104
- | `StockDate` | DateTime | | When stock was recorded |
105
- | `BookCount` | Integer | | Current count |
106
- | `AggregateBookCount` | Integer | | Running total |
107
- | `IDBook` | Integer | | FK to Book |
108
- | `IDBookStore` | Integer | | FK to BookStore |
109
- | `IDBookPrice` | Integer | | FK to BookPrice |
110
- | `StockingAssociate` | Integer | | FK to User |
104
+ | `StockDate` | DateTime | -- | When stock was recorded |
105
+ | `BookCount` | Integer | -- | Current count |
106
+ | `AggregateBookCount` | Integer | -- | Running total |
107
+ | `IDBook` | Integer | -- | FK to Book |
108
+ | `IDBookStore` | Integer | -- | FK to BookStore |
109
+ | `IDBookPrice` | Integer | -- | FK to BookPrice |
110
+ | `StockingAssociate` | Integer | -- | FK to User |
111
111
  | + change tracking | | | Create, Update, Delete |
112
112
 
113
113
  ## Review
@@ -116,10 +116,10 @@ User reviews for books.
116
116
 
117
117
  | Column | Type | Size | Notes |
118
118
  |--------|------|------|-------|
119
- | `IDReview` | AutoIdentity | | Primary key |
119
+ | `IDReview` | AutoIdentity | -- | Primary key |
120
120
  | `GUIDReview` | AutoGUID | 36 | Unique identifier |
121
- | `Text` | Text | | Review content |
122
- | `Rating` | Integer | | Numeric rating |
123
- | `IDBook` | Integer | | FK to Book |
124
- | `IDUser` | Integer | | FK to User (reviewer) |
121
+ | `Text` | Text | -- | Review content |
122
+ | `Rating` | Integer | -- | Numeric rating |
123
+ | `IDBook` | Integer | -- | FK to Book |
124
+ | `IDUser` | Integer | -- | FK to User (reviewer) |
125
125
  | + change tracking | | | Create, Update, Delete |
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="Retold Harness v1.1.7 Documentation Restful API harness. Serves on 8086.">
8
8
 
9
- <title>Documentation</title>
9
+ <title>Retold Harness v1.1.7 Documentation</title>
10
10
 
11
11
  <!-- Application Stylesheet -->
12
12
  <link href="css/docuserve.css" rel="stylesheet">
@@ -1,5 +1,5 @@
1
1
  {
2
- "Generated": "2026-03-02T03:11:17.737Z",
2
+ "Generated": "2026-04-10T17:22:29.657Z",
3
3
  "GitHubOrg": "stevenvelozo",
4
4
  "DefaultBranch": "master",
5
5
  "Groups": [
@@ -40,23 +40,6 @@
40
40
  }
41
41
  ]
42
42
  },
43
- {
44
- "Name": "Data",
45
- "Key": "data",
46
- "Description": "",
47
- "Modules": [
48
- {
49
- "Name": "entertainment",
50
- "Repo": "entertainment",
51
- "Group": "data",
52
- "Branch": "master",
53
- "HasDocs": false,
54
- "HasCover": false,
55
- "Sidebar": [],
56
- "DocFiles": []
57
- }
58
- ]
59
- },
60
43
  {
61
44
  "Name": "Dist",
62
45
  "Key": "dist",
@@ -1,5 +1,5 @@
1
1
  {
2
- "Generated": "2026-03-02T03:11:17.862Z",
2
+ "Generated": "2026-04-10T17:22:29.932Z",
3
3
  "DocumentCount": 26,
4
4
  "LunrIndex": {
5
5
  "version": "2.3.9",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "retold-harness",
3
- "version": "1.1.6",
3
+ "version": "1.1.8",
4
4
  "description": "Restful API harness. Serves on 8086.",
5
5
  "main": "source/Retold-Harness.js",
6
6
  "bin": {
@@ -14,7 +14,7 @@
14
14
  "tests": "npx quack test -g",
15
15
  "coverage": "npx quack coverage",
16
16
  "build-model": "npm run build-schema-bookstore",
17
- "build-schema-bookstore": "cd source/schemas/bookstore && npx stricture -i BookStore.ddl -c Compile -f ./ -o MeadowModel && cp MeadowModel-Extended.json Schema.json",
17
+ "build-schema-bookstore": "cd source/schemas/bookstore && npx stricture compile BookStore.ddl -o ./ -p MeadowModel && cp MeadowModel-Extended.json Schema.json",
18
18
  "build-schema-us-federal-data": "cd source/schemas/us-federal-data && npx stricture compile USFederalData.ddl -o ./ -p MeadowModel && npx stricture meadow MeadowModel-Extended.json -o ./meadow -p MeadowSchema && cp MeadowModel-Extended.json Schema.json",
19
19
  "ingest-federal-data": "node source/schemas/us-federal-data/ingestion/ingest-federal-data.js",
20
20
  "build-schema-entertainment": "cd source/schemas/entertainment && npx stricture compile Entertainment.ddl -o ./ -p MeadowModel && npx stricture meadow MeadowModel-Extended.json -o ./meadow -p MeadowSchema && cp MeadowModel-Extended.json Schema.json",
@@ -38,21 +38,22 @@
38
38
  "blessed": "^0.1.81",
39
39
  "meadow-connection-dgraph": "^1.0.2",
40
40
  "meadow-connection-mongodb": "^1.0.2",
41
- "meadow-connection-mssql": "^1.0.16",
41
+ "meadow-connection-mssql": "^1.0.20",
42
42
  "meadow-connection-mysql": "^1.0.14",
43
43
  "meadow-connection-postgresql": "^1.0.2",
44
44
  "meadow-connection-solr": "^1.0.2",
45
45
  "meadow-connection-sqlite": "^1.0.18",
46
- "meadow-integration": "^1.0.16",
46
+ "meadow-integration": "^1.0.34",
47
47
  "orator-authentication": "^1.0.0",
48
48
  "pict": "^1.0.357",
49
49
  "pict-application": "^1.0.33",
50
50
  "pict-terminalui": "^0.0.3",
51
51
  "pict-view": "^1.0.67",
52
- "retold-data-service": "^2.0.19"
52
+ "retold-data-service": "^2.0.42"
53
53
  },
54
54
  "devDependencies": {
55
- "quackage": "^1.0.64",
55
+ "pict-docuserve": "^0.1.5",
56
+ "quackage": "^1.1.0",
56
57
  "stricture": "^4.0.2",
57
58
  "supertest": "^7.2.2"
58
59
  },
@@ -31,6 +31,7 @@ $ImageURL 254
31
31
  %GUIDBookAuthorJoin 255
32
32
  #IDBook -> IDBook
33
33
  #IDAuthor -> IDAuthor
34
+ #IDCustomer -> IDCustomer
34
35
 
35
36
  !Author
36
37
  @IDAuthor
@@ -111,3 +112,79 @@ $Country 64
111
112
  #Rating
112
113
  #IDBook -> IDBook
113
114
  #IDUser -> IDUser
115
+
116
+ !Customer
117
+ @IDCustomer
118
+ %GUIDCustomer
119
+ &CreateDate
120
+ #CreatingIDUser
121
+ &UpdateDate
122
+ #UpdatingIDUser
123
+ ^Deleted
124
+ &DeleteDate
125
+ #DeletingIDUser
126
+ $Name 200
127
+ $Description 1024
128
+ $ContactName 200
129
+ $ContactEmail 200
130
+ $ContactPhone 32
131
+ $Address
132
+ $City 64
133
+ $State 24
134
+ $Postal 16
135
+ $Country 64
136
+ ^Active
137
+
138
+ !BookStoreEmployee
139
+ @IDBookStoreEmployee
140
+ %GUIDBookStoreEmployee
141
+ &CreateDate
142
+ #CreatingIDUser
143
+ &UpdateDate
144
+ #UpdatingIDUser
145
+ ^Deleted
146
+ &DeleteDate
147
+ #DeletingIDUser
148
+ $Title 64
149
+ &HireDate
150
+ &TerminationDate
151
+ ^IsActive
152
+ #IDUser -> IDUser
153
+ #IDBookStore -> IDBookStore
154
+ #IDCustomer -> IDCustomer
155
+
156
+ !BookStoreSale
157
+ @IDBookStoreSale
158
+ %GUIDBookStoreSale
159
+ &CreateDate
160
+ #CreatingIDUser
161
+ &UpdateDate
162
+ #UpdatingIDUser
163
+ ^Deleted
164
+ &DeleteDate
165
+ #DeletingIDUser
166
+ &SaleDate
167
+ .TotalAmount 10,2
168
+ $PaymentMethod 32
169
+ $TransactionID 64
170
+ #IDBookStore -> IDBookStore
171
+ #IDUser -> IDUser
172
+ #IDCustomer -> IDCustomer
173
+
174
+ !BookStoreSaleItem
175
+ @IDBookStoreSaleItem
176
+ %GUIDBookStoreSaleItem
177
+ &CreateDate
178
+ #CreatingIDUser
179
+ &UpdateDate
180
+ #UpdatingIDUser
181
+ ^Deleted
182
+ &DeleteDate
183
+ #DeletingIDUser
184
+ #Quantity
185
+ .UnitPrice 8,2
186
+ .LineTotal 10,2
187
+ #IDBookStoreSale -> IDBookStoreSale
188
+ #IDBook -> IDBook
189
+ #IDBookPrice -> IDBookPrice
190
+ #IDCustomer -> IDCustomer