retold 1.0.6 → 4.0.1

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 (71) hide show
  1. package/.claude/settings.local.json +58 -0
  2. package/CLAUDE.md +52 -0
  3. package/docs/.nojekyll +0 -0
  4. package/docs/README.md +161 -0
  5. package/docs/_sidebar.md +65 -0
  6. package/docs/_topbar.md +6 -0
  7. package/docs/architecture.md +312 -0
  8. package/docs/cover.md +15 -0
  9. package/docs/css/docuserve.css +73 -0
  10. package/docs/fable.md +198 -0
  11. package/docs/getting-started.md +272 -0
  12. package/docs/index.html +39 -0
  13. package/docs/js/pict.min.js +12 -0
  14. package/docs/js/pict.min.js.map +1 -0
  15. package/docs/meadow.md +211 -0
  16. package/docs/modules.md +96 -0
  17. package/docs/orator.md +164 -0
  18. package/docs/pict-docuserve.min.js +58 -0
  19. package/docs/pict-docuserve.min.js.map +1 -0
  20. package/docs/pict.md +213 -0
  21. package/docs/retold-building-documentation.md +33 -0
  22. package/docs/retold-catalog.json +2826 -0
  23. package/docs/retold-keyword-index.json +161289 -0
  24. package/docs/utility.md +63 -0
  25. package/examples/quickstart/README.md +47 -0
  26. package/examples/quickstart/layer1/README.md +21 -0
  27. package/examples/quickstart/layer1/index.js +49 -0
  28. package/examples/quickstart/layer1/package-lock.json +344 -0
  29. package/examples/quickstart/layer1/package.json +12 -0
  30. package/examples/quickstart/layer2/README.md +34 -0
  31. package/examples/quickstart/layer2/index.js +251 -0
  32. package/examples/quickstart/layer2/package-lock.json +4468 -0
  33. package/examples/quickstart/layer2/package.json +17 -0
  34. package/examples/quickstart/layer2/setup-database.js +61 -0
  35. package/examples/quickstart/layer3/README.md +39 -0
  36. package/examples/quickstart/layer3/index.js +91 -0
  37. package/examples/quickstart/layer3/package-lock.json +1936 -0
  38. package/examples/quickstart/layer3/package.json +14 -0
  39. package/examples/quickstart/layer4/README.md +47 -0
  40. package/examples/quickstart/layer4/generate-build-config.js +18 -0
  41. package/examples/quickstart/layer4/html/index.html +17 -0
  42. package/examples/quickstart/layer4/package-lock.json +13206 -0
  43. package/examples/quickstart/layer4/package.json +38 -0
  44. package/examples/quickstart/layer4/server.js +28 -0
  45. package/examples/quickstart/layer4/source/BookStore-Application-Config.json +15 -0
  46. package/examples/quickstart/layer4/source/BookStore-Application.js +54 -0
  47. package/examples/quickstart/layer4/source/providers/Router-Config.json +18 -0
  48. package/examples/quickstart/layer4/source/views/View-About.js +38 -0
  49. package/examples/quickstart/layer4/source/views/View-Home.js +50 -0
  50. package/examples/quickstart/layer4/source/views/View-Layout.js +60 -0
  51. package/examples/quickstart/layer5/README.md +26 -0
  52. package/examples/quickstart/layer5/index.js +121 -0
  53. package/examples/quickstart/layer5/package-lock.json +345 -0
  54. package/examples/quickstart/layer5/package.json +13 -0
  55. package/modules/.claude/settings.local.json +52 -0
  56. package/modules/CLAUDE.md +60 -0
  57. package/modules/Checkout.sh +42 -0
  58. package/modules/Include-Retold-Module-List.sh +15 -0
  59. package/modules/Retold-Modules.md +24 -0
  60. package/modules/Status.sh +59 -0
  61. package/modules/Update.sh +45 -0
  62. package/modules/fable/Fable.md +2 -0
  63. package/modules/meadow/Meadow.md +1 -0
  64. package/modules/orator/Orator.md +1 -0
  65. package/modules/pict/Pict.md +1 -0
  66. package/package.json +30 -35
  67. package/source/Retold.cjs +2 -0
  68. package/test/Retold_tests.js +23 -41
  69. package/.travis.yml +0 -13
  70. package/source/Retold-Meadow-Macros.js +0 -269
  71. package/source/Retold.js +0 -48
@@ -0,0 +1,345 @@
1
+ {
2
+ "name": "retold-quickstart-layer5-utility",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "retold-quickstart-layer5-utility",
9
+ "version": "1.0.0",
10
+ "dependencies": {
11
+ "fable": "^3.1.51",
12
+ "manyfest": "^1.0.44"
13
+ }
14
+ },
15
+ "node_modules/async.eachlimit": {
16
+ "version": "0.5.2",
17
+ "resolved": "https://registry.npmjs.org/async.eachlimit/-/async.eachlimit-0.5.2.tgz",
18
+ "integrity": "sha512-emWKSFjCbXnrCJfM2NBMyriJQrdem+LrchiMQtCavBQnJ80N2C7IBhUz8vXnjYYh+aAkY0zZSofNxVYJMTDMIw==",
19
+ "license": "MIT",
20
+ "dependencies": {
21
+ "async.util.eachoflimit": "0.5.2",
22
+ "async.util.withoutindex": "0.5.2"
23
+ }
24
+ },
25
+ "node_modules/async.iterator": {
26
+ "version": "0.5.2",
27
+ "resolved": "https://registry.npmjs.org/async.iterator/-/async.iterator-0.5.2.tgz",
28
+ "integrity": "sha512-Ryg+D9tPYvcHbI3HknGfd6cgQaevwv/9lBpa3KbFrNWDcpsvc4BbpQLGpvaLNCJXM0Uzty/GDKuI2XktiIe0Ng==",
29
+ "license": "MIT"
30
+ },
31
+ "node_modules/async.util.eachoflimit": {
32
+ "version": "0.5.2",
33
+ "resolved": "https://registry.npmjs.org/async.util.eachoflimit/-/async.util.eachoflimit-0.5.2.tgz",
34
+ "integrity": "sha512-oZksH0sBW0AEOJKgBCQ79io9DZruoRBLTAea/Ik36pejR7pDpByvtXeuJsoZdPwSVslsrQcsUfucbUaiXYBnAQ==",
35
+ "license": "MIT",
36
+ "dependencies": {
37
+ "async.util.keyiterator": "0.5.2",
38
+ "async.util.noop": "0.5.2",
39
+ "async.util.once": "0.5.2",
40
+ "async.util.onlyonce": "0.5.2"
41
+ }
42
+ },
43
+ "node_modules/async.util.ensureasync": {
44
+ "version": "0.5.2",
45
+ "resolved": "https://registry.npmjs.org/async.util.ensureasync/-/async.util.ensureasync-0.5.2.tgz",
46
+ "integrity": "sha512-sQufNz4JYLHO/7ZUklaTGJtiX36gCp28McNNcMZfVYPm/wqi1pKk4xRCPr2DOZDM6KfA54zjG36jQjBU2mLzXg==",
47
+ "license": "MIT",
48
+ "dependencies": {
49
+ "async.util.restparam": "0.5.2",
50
+ "async.util.setimmediate": "0.5.2"
51
+ }
52
+ },
53
+ "node_modules/async.util.isarray": {
54
+ "version": "0.5.2",
55
+ "resolved": "https://registry.npmjs.org/async.util.isarray/-/async.util.isarray-0.5.2.tgz",
56
+ "integrity": "sha512-wbUzlrwON8RUgi+v/rhF0U99Ce8Osjcn+JP/mFNg6ymvShcobAOvE6cvLajSY5dPqKCOE1xfdhefgBif11zZgw==",
57
+ "license": "MIT"
58
+ },
59
+ "node_modules/async.util.isarraylike": {
60
+ "version": "0.5.2",
61
+ "resolved": "https://registry.npmjs.org/async.util.isarraylike/-/async.util.isarraylike-0.5.2.tgz",
62
+ "integrity": "sha512-DbFpsz3ZFNkohAW8IpGTlm8gotU32zpqe3Y2XkEA/G3XNO6rmUTKPpo7XgXUruoI+AsGi8+0zWpJHe7t1sLiAg==",
63
+ "license": "MIT",
64
+ "dependencies": {
65
+ "async.util.isarray": "0.5.2"
66
+ }
67
+ },
68
+ "node_modules/async.util.keyiterator": {
69
+ "version": "0.5.2",
70
+ "resolved": "https://registry.npmjs.org/async.util.keyiterator/-/async.util.keyiterator-0.5.2.tgz",
71
+ "integrity": "sha512-cktrETawCwgu13y3KZs2uMGFnNHc+IjKPZsavtRaoCjLELkePb2co4zrr+ghPvEqLXZIJPTKqC2HFZgJTssMVw==",
72
+ "license": "MIT",
73
+ "dependencies": {
74
+ "async.util.isarraylike": "0.5.2",
75
+ "async.util.keys": "0.5.2"
76
+ }
77
+ },
78
+ "node_modules/async.util.keys": {
79
+ "version": "0.5.2",
80
+ "resolved": "https://registry.npmjs.org/async.util.keys/-/async.util.keys-0.5.2.tgz",
81
+ "integrity": "sha512-umCOCRCRYwIC2Ho3fbuhKwIIe7OhQsVoVKGoF5GoQiGJUmjP4TG0Bmmcdpm7yW/znoIGKpnjKzVQz0niH4tfqw==",
82
+ "license": "MIT"
83
+ },
84
+ "node_modules/async.util.noop": {
85
+ "version": "0.5.2",
86
+ "resolved": "https://registry.npmjs.org/async.util.noop/-/async.util.noop-0.5.2.tgz",
87
+ "integrity": "sha512-AdwShXwE0KoskgqVJAck8zcM32nIHj3AC8ZN62ZaR5srhrY235Nw18vOJZWxcOfhxdVM0hRVKM8kMx7lcl7cCQ==",
88
+ "license": "MIT"
89
+ },
90
+ "node_modules/async.util.once": {
91
+ "version": "0.5.2",
92
+ "resolved": "https://registry.npmjs.org/async.util.once/-/async.util.once-0.5.2.tgz",
93
+ "integrity": "sha512-YQ5WPzDTt2jlblUDkq2I5RV/KiAJErJ4/0cEFhYPaZzqIuF/xDzdGvnEKe7UeuoMszsVPeajzcpKgkbwdb9MUA==",
94
+ "license": "MIT"
95
+ },
96
+ "node_modules/async.util.onlyonce": {
97
+ "version": "0.5.2",
98
+ "resolved": "https://registry.npmjs.org/async.util.onlyonce/-/async.util.onlyonce-0.5.2.tgz",
99
+ "integrity": "sha512-UgQvkU9JZ+I0Cm1f56XyGXcII+J3d/5XWUuHpcevlItuA3WFSJcqZrsyAUck2FkRSD8BwYQX1zUTDp3SJMVESg==",
100
+ "license": "MIT"
101
+ },
102
+ "node_modules/async.util.restparam": {
103
+ "version": "0.5.2",
104
+ "resolved": "https://registry.npmjs.org/async.util.restparam/-/async.util.restparam-0.5.2.tgz",
105
+ "integrity": "sha512-Q9Z+zgmtMxFX5i7CnBvNOkgrL5hptztCqwarQluyNudUUk4iCmyjmsQl8MuQEjNh3gGqP5ayvDaextL1VXXgIg==",
106
+ "license": "MIT"
107
+ },
108
+ "node_modules/async.util.setimmediate": {
109
+ "version": "0.5.2",
110
+ "resolved": "https://registry.npmjs.org/async.util.setimmediate/-/async.util.setimmediate-0.5.2.tgz",
111
+ "integrity": "sha512-aCYF85ZFCQ9Xn0106GcOVx+LvFguIIzfbfRTOlQoie3G4KeSjURfA6f7CfpFAF09FNP2A1MtdjeFdvYeTGDebw==",
112
+ "license": "MIT"
113
+ },
114
+ "node_modules/async.util.withoutindex": {
115
+ "version": "0.5.2",
116
+ "resolved": "https://registry.npmjs.org/async.util.withoutindex/-/async.util.withoutindex-0.5.2.tgz",
117
+ "integrity": "sha512-CTHbQc+1kHkK6izoXIVIiYjePgmAzvXecETn/eVuzhwL9BDC3oFLNiIrr57fKwyarZyy8PedVIpQNrqgA9KzNA==",
118
+ "license": "MIT"
119
+ },
120
+ "node_modules/async.waterfall": {
121
+ "version": "0.5.2",
122
+ "resolved": "https://registry.npmjs.org/async.waterfall/-/async.waterfall-0.5.2.tgz",
123
+ "integrity": "sha512-3eC5jwgBF0/CNTAwBQYCMybqd6ResDwsdyl3+i5qf1L7fYekVR5gbMzpBca7VoZj1W0BFsHcvjW3UeJstEt2kQ==",
124
+ "license": "MIT",
125
+ "dependencies": {
126
+ "async.iterator": "0.5.2",
127
+ "async.util.ensureasync": "0.5.2",
128
+ "async.util.isarray": "0.5.2",
129
+ "async.util.noop": "0.5.2",
130
+ "async.util.once": "0.5.2",
131
+ "async.util.restparam": "0.5.2"
132
+ }
133
+ },
134
+ "node_modules/big.js": {
135
+ "version": "7.0.1",
136
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-7.0.1.tgz",
137
+ "integrity": "sha512-iFgV784tD8kq4ccF1xtNMZnXeZzVuXWWM+ERFzKQjv+A5G9HC8CY3DuV45vgzFFcW+u2tIvmF95+AzWgs6BjCg==",
138
+ "license": "MIT",
139
+ "engines": {
140
+ "node": "*"
141
+ },
142
+ "funding": {
143
+ "type": "opencollective",
144
+ "url": "https://opencollective.com/bigjs"
145
+ }
146
+ },
147
+ "node_modules/cachetrax": {
148
+ "version": "1.0.4",
149
+ "resolved": "https://registry.npmjs.org/cachetrax/-/cachetrax-1.0.4.tgz",
150
+ "integrity": "sha512-VoqtXp+tEdcbmiR0eJcdERsaBKhmdeVjpZ2jeVadDq25iM7hvZAFu+BCKMHitWzpkgb/Dw4RAouQBGnXbADPBg==",
151
+ "license": "MIT",
152
+ "dependencies": {
153
+ "fable-serviceproviderbase": "^3.0.7"
154
+ }
155
+ },
156
+ "node_modules/cookie": {
157
+ "version": "1.1.1",
158
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz",
159
+ "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==",
160
+ "license": "MIT",
161
+ "engines": {
162
+ "node": ">=18"
163
+ },
164
+ "funding": {
165
+ "type": "opencollective",
166
+ "url": "https://opencollective.com/express"
167
+ }
168
+ },
169
+ "node_modules/data-arithmatic": {
170
+ "version": "1.0.7",
171
+ "resolved": "https://registry.npmjs.org/data-arithmatic/-/data-arithmatic-1.0.7.tgz",
172
+ "integrity": "sha512-Z1SBuORrjrlCx9AAx2Cy4yBYrsqtKEz7BzdcLWLMT/t78q3N5/4qjA+63zeMYUAvp9EsIKfQ8X0++Ls9xwaLag==",
173
+ "license": "MIT",
174
+ "dependencies": {
175
+ "fable-serviceproviderbase": "^3.0.2"
176
+ }
177
+ },
178
+ "node_modules/dayjs": {
179
+ "version": "1.11.19",
180
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz",
181
+ "integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==",
182
+ "license": "MIT"
183
+ },
184
+ "node_modules/decompress-response": {
185
+ "version": "6.0.0",
186
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
187
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
188
+ "license": "MIT",
189
+ "dependencies": {
190
+ "mimic-response": "^3.1.0"
191
+ },
192
+ "engines": {
193
+ "node": ">=10"
194
+ },
195
+ "funding": {
196
+ "url": "https://github.com/sponsors/sindresorhus"
197
+ }
198
+ },
199
+ "node_modules/fable": {
200
+ "version": "3.1.53",
201
+ "resolved": "https://registry.npmjs.org/fable/-/fable-3.1.53.tgz",
202
+ "integrity": "sha512-2b7sWs1K3Bl9V8biZ5VSy36YvojanAAKvOZM7hGMg+opLLt/Pk/lIEvucz4m16Vz+C3UDLWf7WKJqdBoEj8A1w==",
203
+ "license": "MIT",
204
+ "dependencies": {
205
+ "async.eachlimit": "^0.5.2",
206
+ "async.waterfall": "^0.5.2",
207
+ "big.js": "^7.0.1",
208
+ "cachetrax": "^1.0.4",
209
+ "cookie": "^1.0.2",
210
+ "data-arithmatic": "^1.0.7",
211
+ "dayjs": "^1.11.19",
212
+ "fable-log": "^3.0.16",
213
+ "fable-serviceproviderbase": "^3.0.16",
214
+ "fable-settings": "^3.0.12",
215
+ "fable-uuid": "^3.0.11",
216
+ "manyfest": "^1.0.43",
217
+ "simple-get": "^4.0.1"
218
+ }
219
+ },
220
+ "node_modules/fable-log": {
221
+ "version": "3.0.16",
222
+ "resolved": "https://registry.npmjs.org/fable-log/-/fable-log-3.0.16.tgz",
223
+ "integrity": "sha512-o9/eIdak/iDy8Cc+Q8NeYUf7AwqYZvr3EaeeGmVd6X7+Ao/c1y5u9x5I54WZmwcYcySukmf2BEiQvS/itoliVw==",
224
+ "license": "MIT",
225
+ "dependencies": {
226
+ "fable-serviceproviderbase": "^3.0.15"
227
+ }
228
+ },
229
+ "node_modules/fable-serviceproviderbase": {
230
+ "version": "3.0.16",
231
+ "resolved": "https://registry.npmjs.org/fable-serviceproviderbase/-/fable-serviceproviderbase-3.0.16.tgz",
232
+ "integrity": "sha512-jvv1MO/xSNTInRwCFZz56ON4UNVwcOnLuLJlkfzqKXSbN9O8M6E7TYFExkM/UsG35dzDnApilz6Zmg3FvES4Cg==",
233
+ "license": "MIT"
234
+ },
235
+ "node_modules/fable-settings": {
236
+ "version": "3.0.12",
237
+ "resolved": "https://registry.npmjs.org/fable-settings/-/fable-settings-3.0.12.tgz",
238
+ "integrity": "sha512-zzvoLcsIp06vNu5dXYV5FSQD1V1APj2IaYbhj8SJ3IHmb9pUrQm63ejGEC4fEEk+jBznHHe+RH6OEwtx6plh+g==",
239
+ "license": "MIT",
240
+ "dependencies": {
241
+ "fable-serviceproviderbase": "^3.0.15",
242
+ "precedent": "^1.0.15"
243
+ }
244
+ },
245
+ "node_modules/fable-uuid": {
246
+ "version": "3.0.11",
247
+ "resolved": "https://registry.npmjs.org/fable-uuid/-/fable-uuid-3.0.11.tgz",
248
+ "integrity": "sha512-ZNFmcc2HI16J6rqiLfkShzzNgeHjbInM0Ur70tAgXlQm/jWqIpU3OFAyTesrz4dVQ5+wCxjp7PQadF7YJ0hNIw==",
249
+ "license": "MIT",
250
+ "dependencies": {
251
+ "fable-serviceproviderbase": "^3.0.15"
252
+ }
253
+ },
254
+ "node_modules/manyfest": {
255
+ "version": "1.0.44",
256
+ "resolved": "https://registry.npmjs.org/manyfest/-/manyfest-1.0.44.tgz",
257
+ "integrity": "sha512-8sI1zQ5lysMW879Lb5VtksmpOy4M2vZIl2IjIzMo5lOWu1MmLZGX/MQxdBu0Klnf4fJwscainclMYs9/P3JXUQ==",
258
+ "license": "MIT",
259
+ "dependencies": {
260
+ "fable-serviceproviderbase": "^3.0.15"
261
+ }
262
+ },
263
+ "node_modules/mimic-response": {
264
+ "version": "3.1.0",
265
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
266
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
267
+ "license": "MIT",
268
+ "engines": {
269
+ "node": ">=10"
270
+ },
271
+ "funding": {
272
+ "url": "https://github.com/sponsors/sindresorhus"
273
+ }
274
+ },
275
+ "node_modules/once": {
276
+ "version": "1.4.0",
277
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
278
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
279
+ "license": "ISC",
280
+ "dependencies": {
281
+ "wrappy": "1"
282
+ }
283
+ },
284
+ "node_modules/precedent": {
285
+ "version": "1.0.15",
286
+ "resolved": "https://registry.npmjs.org/precedent/-/precedent-1.0.15.tgz",
287
+ "integrity": "sha512-tidXY4JvTudvJ/Jmb8OzHFpX6qUSPwmS7K/BChA7xDb7eqmfHjH3AAO+IhCz3k7k+bh31YNdblSIEkYnCIYelw==",
288
+ "license": "MIT",
289
+ "bin": {
290
+ "precedent": "bin/Precedent"
291
+ }
292
+ },
293
+ "node_modules/simple-concat": {
294
+ "version": "1.0.1",
295
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
296
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
297
+ "funding": [
298
+ {
299
+ "type": "github",
300
+ "url": "https://github.com/sponsors/feross"
301
+ },
302
+ {
303
+ "type": "patreon",
304
+ "url": "https://www.patreon.com/feross"
305
+ },
306
+ {
307
+ "type": "consulting",
308
+ "url": "https://feross.org/support"
309
+ }
310
+ ],
311
+ "license": "MIT"
312
+ },
313
+ "node_modules/simple-get": {
314
+ "version": "4.0.1",
315
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
316
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
317
+ "funding": [
318
+ {
319
+ "type": "github",
320
+ "url": "https://github.com/sponsors/feross"
321
+ },
322
+ {
323
+ "type": "patreon",
324
+ "url": "https://www.patreon.com/feross"
325
+ },
326
+ {
327
+ "type": "consulting",
328
+ "url": "https://feross.org/support"
329
+ }
330
+ ],
331
+ "license": "MIT",
332
+ "dependencies": {
333
+ "decompress-response": "^6.0.0",
334
+ "once": "^1.3.1",
335
+ "simple-concat": "^1.0.0"
336
+ }
337
+ },
338
+ "node_modules/wrappy": {
339
+ "version": "1.0.2",
340
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
341
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
342
+ "license": "ISC"
343
+ }
344
+ }
345
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "retold-quickstart-layer5-utility",
3
+ "version": "1.0.0",
4
+ "description": "Retold Quickstart: Layer 5 - Utility (Manyfest Object Navigation)",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "start": "node index.js"
8
+ },
9
+ "dependencies": {
10
+ "fable": "^3.1.51",
11
+ "manyfest": "^1.0.44"
12
+ }
13
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(xargs:*)",
5
+ "Bash(tree:*)",
6
+ "Bash(npm install:*)",
7
+ "Bash(npm view:*)",
8
+ "Bash(npm run build:*)",
9
+ "Bash(node -e:*)",
10
+ "Bash(curl:*)",
11
+ "Bash(find:*)",
12
+ "Bash(npx quack build:*)",
13
+ "Bash(npx quack copy:*)",
14
+ "Bash(npx quackage build)",
15
+ "Bash(npx quackage deploy:*)",
16
+ "Bash(ls:*)",
17
+ "Bash(lsof:*)",
18
+ "Bash(wc:*)",
19
+ "Bash(grep:*)",
20
+ "Bash(done)",
21
+ "Bash(npm test:*)",
22
+ "Bash(python3:*)",
23
+ "Bash(npx mocha:*)",
24
+ "Bash(git -C /Users/stevenvelozo/Code/retold remote:*)",
25
+ "Bash(git -C /Users/stevenvelozo/Code/retold config:*)",
26
+ "Bash(node:*)",
27
+ "Bash(chmod:*)",
28
+ "Bash(./scripts/mysql-test-db.sh:*)",
29
+ "Bash(npm run test-mysql:*)",
30
+ "Bash(npm run test-mysql-all:*)",
31
+ "Bash(npm run docker-mysql-status:*)",
32
+ "Bash(npm run:*)",
33
+ "Bash(./scripts/mssql-test-db.sh:*)",
34
+ "Bash(cat:*)",
35
+ "Bash(bash:*)",
36
+ "Bash(tr:*)",
37
+ "Bash(while read f)",
38
+ "Bash(do if [ ! -f \"/Users/stevenvelozo/Code/retold/docs/$f\" ])",
39
+ "Bash(then echo \"MISSING: $f\")",
40
+ "Bash(fi)",
41
+ "Bash(echo:*)",
42
+ "Bash(for app in todo-app contacts-app sports-stats-api)",
43
+ "Bash(do echo \"\")",
44
+ "Bash(cmp:*)",
45
+ "Bash(git rm:*)",
46
+ "Bash(xxd:*)",
47
+ "Bash(for f in *.cjs)",
48
+ "Bash(do sed -i '' \"s|require\\(''./Ultravisor-Task-Base.cjs''\\)|require\\(''../Ultravisor-Task-Base.cjs''\\)|g\" \"$f\")",
49
+ "Bash(npx ultravisor:*)"
50
+ ]
51
+ }
52
+ }
@@ -0,0 +1,60 @@
1
+ # Retold Modules
2
+
3
+ This directory contains all Retold module groups. Each subfolder holds individual git repos.
4
+
5
+ ## Module Management
6
+
7
+ Shell scripts manage all modules collectively:
8
+
9
+ - `Checkout.sh` — Clone all module repos from GitHub
10
+ - `Status.sh` — Show git status across all modules
11
+ - `Update.sh` — Pull with rebase across all modules
12
+ - `Include-Retold-Module-List.sh` — Central registry defining module arrays per group (sourced by the scripts above)
13
+ - `Retold-Modules.md` — Human-readable module list with hosted doc links
14
+
15
+ All modules are hosted at `github.com/stevenvelozo/<module-name>`.
16
+
17
+ ## Module Groups
18
+
19
+ | Group | Folder | Count | Purpose |
20
+ |-------|--------|-------|---------|
21
+ | Fable | `fable/` | 6 | Core ecosystem, DI, config, logging |
22
+ | Meadow | `meadow/` | 13 | Data access, ORM, query DSL, schema |
23
+ | Orator | `orator/` | 6 | API server, Restify, proxy, WebSocket |
24
+ | Pict | `pict/` | 15 | MVC, views, templates, forms, TUI |
25
+ | Utility | `utility/` | 10+ | Build tools, manifests, docs |
26
+
27
+ ## Working in a Module
28
+
29
+ Each module has its own `package.json`, tests, and README.
30
+
31
+ **Testing:**
32
+ ```bash
33
+ npm test # Mocha TDD: npx mocha -u tdd -R spec
34
+ npm run coverage # nyc coverage report
35
+ ```
36
+
37
+ **Building:**
38
+ ```bash
39
+ npx quack build # Most modules use Quackage
40
+ ```
41
+
42
+ Some modules (e.g., Pict, Fable) also use Gulp + Browserify for browser bundles.
43
+
44
+ ## Code Style
45
+
46
+ - Tabs for indentation, never spaces
47
+ - Plain JavaScript only — no TypeScript
48
+ - Opening braces on new lines (Allman style)
49
+ - Variable naming:
50
+ - `pVariable` — function parameters
51
+ - `tmpVariable` — scoped/temporary variables
52
+ - `VARIABLE` — globals and constants
53
+ - `libSomeLibrary` — imported/required libraries
54
+ - Match existing patterns in whichever module you are editing
55
+
56
+ ## Adding a New Module
57
+
58
+ 1. Add the repo name to the appropriate array in `Include-Retold-Module-List.sh`
59
+ 2. Update `Retold-Modules.md`
60
+ 3. The module should follow the same structure: `package.json`, `source/`, `test/`, Mocha TDD tests
@@ -0,0 +1,42 @@
1
+ #!/bin/bash
2
+ echo "### Checking out Retold modules into: [$(pwd)/..."
3
+
4
+ . ${BASH_SOURCE%/*}/Include-Retold-Module-List.sh
5
+
6
+ #
7
+ # This function attempts to checkout a repository from github relative to the current script folder
8
+ check_out_repository()
9
+ {
10
+ # echo "###--> attempting to check out the repository for $2 in $1"
11
+ CWD=$(pwd)
12
+ if [ -d "$CWD/$1/$2" ]
13
+ then
14
+ echo " > A $2 source directory already exists in $1.... skipping checkout."
15
+ elif [ -f "$CWD/$1/$2" ]; then
16
+ echo " > A $2 file already exists in $1... skipping checkout."
17
+ else
18
+ git clone https://github.com/stevenvelozo/$2 ./$1/$2
19
+ fi
20
+ }
21
+
22
+ process_repository_set()
23
+ {
24
+ # Save first argument in a variable
25
+ local repositorySetName="$1"
26
+ # Shift all arguments to the left (original $1 gets lost)
27
+ shift
28
+ # Collapse all remaining arguments into an array
29
+ local repositorySetRepositories=("$@") # Rebuild the array with rest of arguments
30
+ # Enumerate all repository addresses and check them out
31
+ for repositoryAddress in ${repositorySetRepositories[@]}; do
32
+ echo ""
33
+ echo "#####[ $repositorySetName -> $repositoryAddress ]#####"
34
+ check_out_repository $repositorySetName $repositoryAddress
35
+ done
36
+ }
37
+
38
+ process_repository_set "fable" "${repositoriesFable[@]}"
39
+ process_repository_set "meadow" "${repositoriesMeadow[@]}"
40
+ process_repository_set "orator" "${repositoriesOrator[@]}"
41
+ process_repository_set "pict" "${repositoriesPict[@]}"
42
+ process_repository_set "utility" "${repositoriesUtility[@]}"
@@ -0,0 +1,15 @@
1
+ #!/bin/bash
2
+
3
+ echo "### Building list of modules..."
4
+
5
+ repositoriesFable=("fable" "fable-log" "fable-settings" "fable-uuid" "fable-serviceproviderbase" "fable-log-logger-bunyan")
6
+
7
+ repositoriesMeadow=("stricture" "foxhound" "bibliograph" "meadow" "parime" "meadow-endpoints" "meadow-connection-mysql" "meadow-connection-mssql" "meadow-connection-sqlite" "retold-data-service" "retold-harness" "meadow-integration" "meadow-graph-client")
8
+
9
+ repositoriesOrator=("orator" "orator-serviceserver-restify" "orator-static-server" "orator-http-proxy" "tidings" "orator-endpoint" "orator-conversion")
10
+
11
+ repositoriesPict=("pict" "pict-template" "pict-view" "pict-provider" "pict-application" "pict-panel" "pict-nonlinearconfig" "pict-section-flow" "pict-docuserve" "cryptbrau" "informary" "pict-service-commandlineutility" "pict-section-recordset" "pict-section-content" "pict-section-form" "pict-section-tuigrid" "pict-router" "pict-serviceproviderbase" "pict-terminalui")
12
+
13
+ repositoriesUtility=("indoctrinate" "manyfest" "choreographic" "quackage" "ultravisor")
14
+
15
+ echo "### ... Module lists built!"
@@ -0,0 +1,24 @@
1
+ # Retold
2
+
3
+ Each of these folders contain the basic modules for the retold package sets.
4
+
5
+ ## Module Documentation
6
+
7
+ The following modules have documentation sites hosted on GitHub Pages:
8
+
9
+ ### Fable
10
+
11
+ - [fable-uuid](https://stevenvelozo.github.io/fable-uuid/) - A simple, flexible UUID generator for Node.js and browsers
12
+
13
+ ### Pict
14
+
15
+ - [pict](https://stevenvelozo.github.io/pict/) - A flexible MVC framework for building applications with text-based UI
16
+ - [pict-view](https://stevenvelozo.github.io/pict-view/) - A flexible View base class for the Pict application framework
17
+
18
+ ## Cleaning the DS_Store Folders
19
+
20
+ If you are using some variant of MacOS, and hate these folders, run this as a salve.
21
+
22
+ ```
23
+ find . -name '.DS_Store' -type f -delete
24
+ ```
@@ -0,0 +1,59 @@
1
+ #!/bin/bash
2
+ echo "Checking status of Retold modules in: [$(pwd)/..."
3
+
4
+ . ${BASH_SOURCE%/*}/Include-Retold-Module-List.sh
5
+
6
+ TOTAL_REPOS=0
7
+ CHANGED_REPOS=0
8
+ MISSING_REPOS=0
9
+
10
+ #
11
+ # This function checks the status of a repository, only showing output if there are changes
12
+ status_repository()
13
+ {
14
+ CWD=$(pwd)
15
+ TOTAL_REPOS=$((TOTAL_REPOS + 1))
16
+ if [ -d "$CWD/$1/$2" ]
17
+ then
18
+ cd "$CWD/$1/$2"
19
+ # Check if there are any changes (staged, unstaged, or untracked)
20
+ if [ -n "$(git status --porcelain)" ]
21
+ then
22
+ CHANGED_REPOS=$((CHANGED_REPOS + 1))
23
+ echo ""
24
+ echo "#####[ $1 -> $2 ]#####"
25
+ git status
26
+ fi
27
+ cd "$CWD"
28
+ else
29
+ MISSING_REPOS=$((MISSING_REPOS + 1))
30
+ fi
31
+ }
32
+
33
+ process_repository_set()
34
+ {
35
+ # Save first argument in a variable
36
+ local repositorySetName="$1"
37
+ # Shift all arguments to the left (original $1 gets lost)
38
+ shift
39
+ # Collapse all remaining arguments into an array
40
+ local repositorySetRepositories=("$@") # Rebuild the array with rest of arguments
41
+ # Enumerate all repository addresses and check them out
42
+ for repositoryAddress in ${repositorySetRepositories[@]}; do
43
+ status_repository $repositorySetName $repositoryAddress
44
+ done
45
+ }
46
+
47
+ process_repository_set "fable" "${repositoriesFable[@]}"
48
+ process_repository_set "meadow" "${repositoriesMeadow[@]}"
49
+ process_repository_set "orator" "${repositoriesOrator[@]}"
50
+ process_repository_set "pict" "${repositoriesPict[@]}"
51
+ process_repository_set "utility" "${repositoriesUtility[@]}"
52
+
53
+ echo ""
54
+ echo "===== Summary ====="
55
+ echo "$TOTAL_REPOS modules checked, $CHANGED_REPOS with changes, $((TOTAL_REPOS - CHANGED_REPOS - MISSING_REPOS)) clean"
56
+ if [ $MISSING_REPOS -gt 0 ]
57
+ then
58
+ echo "$MISSING_REPOS modules not checked out (run Checkout.sh)"
59
+ fi
@@ -0,0 +1,45 @@
1
+ #!/bin/bash
2
+ echo "Checking out Retold modules into: [$(pwd)/..."
3
+
4
+ . ${BASH_SOURCE%/*}/Include-Retold-Module-List.sh
5
+
6
+ #
7
+ # This function attempts to update a repository from github relative to the current script folder
8
+ update_repository()
9
+ {
10
+ # echo " ###--> attempting to update the repository for $2 in $1"
11
+ CWD=$(pwd)
12
+ if [ -d "$CWD/$1/$2" ]
13
+ then
14
+ # echo " # A $2 source directory exists in $1 -- updating with rebase...."
15
+ cd "$CWD/$1/$2"
16
+ git pull --rebase
17
+ # echo " ..."
18
+ cd "../.."
19
+ else
20
+ echo " # The $2 source directory does not exist in $1 -- maybe you need to run the Checkout script?"
21
+ fi
22
+ echo " <-- update attempt complete for repository $2 in $1"
23
+ }
24
+
25
+ process_repository_set()
26
+ {
27
+ # Save first argument in a variable
28
+ local repositorySetName="$1"
29
+ # Shift all arguments to the left (original $1 gets lost)
30
+ shift
31
+ # Collapse all remaining arguments into an array
32
+ local repositorySetRepositories=("$@") # Rebuild the array with rest of arguments
33
+ # Enumerate all repository addresses and check them out
34
+ for repositoryAddress in ${repositorySetRepositories[@]}; do
35
+ echo ""
36
+ echo "[ U ] --> #####[ $repositorySetName -> $repositoryAddress ]#####"
37
+ update_repository $repositorySetName $repositoryAddress
38
+ done
39
+ }
40
+
41
+ process_repository_set "fable" "${repositoriesFable[@]}"
42
+ process_repository_set "meadow" "${repositoriesMeadow[@]}"
43
+ process_repository_set "orator" "${repositoriesOrator[@]}"
44
+ process_repository_set "pict" "${repositoriesPict[@]}"
45
+ process_repository_set "utility" "${repositoriesUtility[@]}"
@@ -0,0 +1,2 @@
1
+ # Fable
2
+
@@ -0,0 +1 @@
1
+ # Meadow
@@ -0,0 +1 @@
1
+ # Orator
@@ -0,0 +1 @@
1
+ # Pict