testeranto 0.159.0 → 0.161.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/common/src/PM/PM_WithEslintAndTsc.js +8 -1
  2. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +13 -1
  3. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.mock.js +4 -1
  4. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.specification.js +6 -1
  5. package/dist/common/src/lib/classBuilder.test/classBuilder.test.implementation.js +9 -8
  6. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  7. package/dist/module/src/PM/PM_WithEslintAndTsc.js +8 -1
  8. package/dist/module/src/ProjectPage.js +128 -21
  9. package/dist/module/src/ProjectsPage.js +15 -9
  10. package/dist/module/src/TestPage.js +13 -1
  11. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +13 -1
  12. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.mock.js +4 -1
  13. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.specification.js +6 -1
  14. package/dist/module/src/lib/classBuilder.test/classBuilder.test.implementation.js +9 -8
  15. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  16. package/dist/prebuild/App.js +814 -376
  17. package/dist/prebuild/run.mjs +8 -1
  18. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  19. package/notify.sh +47 -0
  20. package/package.json +1 -1
  21. package/src/PM/PM_WithEslintAndTsc.ts +8 -1
  22. package/src/ProjectPage.tsx +204 -38
  23. package/src/ProjectsPage.tsx +23 -19
  24. package/src/TestPage.tsx +12 -1
  25. package/src/lib/baseBuilder.test/baseBuilder.test.implementation.ts +15 -9
  26. package/src/lib/baseBuilder.test/baseBuilder.test.mock.ts +4 -1
  27. package/src/lib/baseBuilder.test/baseBuilder.test.specification.ts +6 -1
  28. package/src/lib/classBuilder.test/classBuilder.test.implementation.ts +8 -5
  29. package/testeranto/App.js +814 -376
  30. package/testeranto/bundles/node/allTests/metafile.json +15 -10
  31. package/testeranto/bundles/node/allTests/src/lib/baseBuilder.test/baseBuilder.test.node.mjs +22 -5
  32. package/testeranto/bundles/node/allTests/src/lib/classBuilder.test/classBuilder.test.mjs +7 -7
  33. package/testeranto/bundles/pure/allTests/metafile.json +7 -7
  34. package/testeranto/bundles/pure/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure.mjs +22 -5
  35. package/testeranto/bundles/web/allTests/metafile.json +7 -7
  36. package/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs +22 -5
  37. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/lint_errors.txt +4 -4
  38. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/message.txt +2 -1
  39. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/prompt.txt +5 -0
  40. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/type_errors.txt +22 -19
  41. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/lint_errors.txt +4 -4
  42. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/message.txt +2 -1
  43. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/prompt.txt +5 -0
  44. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/type_errors.txt +22 -19
  45. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/lint_errors.txt +4 -4
  46. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/logs.txt +1 -9
  47. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/message.txt +2 -1
  48. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/prompt.txt +5 -0
  49. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/type_errors.txt +22 -19
  50. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/bdd_errors.txt +1 -0
  51. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/logs.txt +85 -23
  52. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/message.txt +2 -1
  53. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/prompt.txt +5 -0
  54. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/tests.json +24 -0
  55. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/type_errors.txt +13 -9
  56. package/testeranto/reports/allTests/summary.json +5 -5
  57. package/dist/module/src/BuildLogsPage.js +0 -99
  58. package/dist/module/src/Project.js +0 -332
  59. package/src/BuildLogsPage.tsx +0 -108
  60. package/src/Project.tsx +0 -375
package/src/Project.tsx DELETED
@@ -1,375 +0,0 @@
1
- // /* eslint-disable @typescript-eslint/no-unused-vars */
2
- // import ReactDom from "react-dom/client";
3
- // import React, { useEffect, useState } from "react";
4
- // import { Col, Nav, Row, Tab, Table } from "react-bootstrap";
5
-
6
- // import { Footer } from "./Footer";
7
- // import { IBuiltConfig } from "./lib";
8
- // import { ISummary } from "./Types";
9
-
10
- // import { SettingsButton } from "./SettingsButton";
11
-
12
- // import SunriseAnimation from "./components/SunriseAnimation";
13
-
14
- // import "./Project.scss"
15
-
16
- // type ISummaries = [string, IBuiltConfig, ISummary][];
17
-
18
- // const BigBoard = () => {
19
-
20
- // const bigConfigElement = document.getElementById("bigConfig");
21
-
22
- // if (!bigConfigElement) throw new Error("bigConfig element not found");
23
- // const projects = JSON.parse(bigConfigElement.innerHTML) as string[];
24
-
25
- // const [summary, setSummary] = useState<ISummaries>();
26
- // const [nodeLogs, setNodeLogs] = useState<Record<string, string>>({});
27
- // const [webLogs, setWebLogs] = useState<Record<string, string>>({});
28
- // const [pureLogs, setPureLogs] = useState<Record<string, string>>({});
29
- // const [activeTab, setActiveTab] = useState<string>(() => {
30
- // const hash = window.location.hash.replace('#', '');
31
- // return hash || "node";
32
- // });
33
-
34
- // const fetchLogs = async (project: string) => {
35
- // try {
36
- // const [nodeRes, webRes, pureRes] = await Promise.all([
37
- // fetch(`./bundles/node/${project}/metafile.json`),
38
- // fetch(`./bundles/web/${project}/metafile.json`),
39
- // fetch(`./bundles/pure/${project}/metafile.json`),
40
- // ]);
41
-
42
- // setNodeLogs({ [project]: await nodeRes.json() });
43
- // setWebLogs({ [project]: await webRes.json() });
44
- // setPureLogs({ [project]: await pureRes.json() });
45
- // } catch (error) {
46
- // console.error("Error fetching logs:", error);
47
- // setNodeLogs({ [project]: "ERROR" });
48
- // setNodeLogs({ [project]: "ERROR" });
49
- // setNodeLogs({ [project]: "ERROR" });
50
-
51
- // }
52
- // };
53
-
54
- // useEffect(() => {
55
-
56
- // (async () => {
57
- // const x: Promise<[string, IBuiltConfig, ISummary]>[] = projects.map(
58
- // async (p) => {
59
-
60
- // fetchLogs(p);
61
-
62
- // return [
63
- // p,
64
-
65
- // (await (
66
- // await fetch(`./reports/config.json`)
67
- // ).json()) as IBuiltConfig,
68
-
69
- // (await (
70
- // await fetch(`./reports/${p}/summary.json`)
71
- // ).json()) as ISummary,
72
- // ] as [string, IBuiltConfig, ISummary];
73
- // }
74
- // );
75
-
76
- // Promise.all(x).then((v) => {
77
- // setSummary(v);
78
- // });
79
- // })();
80
-
81
-
82
- // }, []);
83
-
84
- // if (!summary || summary?.length === 0) {
85
- // return <div>loading...</div>;
86
- // }
87
-
88
-
89
- // return (
90
- // <div>
91
-
92
- // <SunriseAnimation active={false} />
93
-
94
- // <div className="container-fluid p-4" style={{ backgroundColor: 'transparent', position: 'relative', zIndex: 10 }}>
95
- // {/* Sky and sun elements */}
96
- // {/* <div id="sky"></div>
97
- // <div id="sun"></div>
98
- // <div id="sunDay"></div>
99
- // <div id="sunSet"></div>
100
- // <div id="horizon"></div>
101
- // <div id="water"></div>
102
- // <div id="waterReflectionContainer">
103
- // <div id="waterReflectionMiddle"></div>
104
- // </div> */}
105
- // <Tab.Container activeKey={activeTab} defaultActiveKey="node">
106
- // <nav className="navbar navbar-expand-lg navbar-light bg-light mb-3 rounded">
107
- // <div className="container-fluid">
108
- // <span className="navbar-brand text-muted">Project: testeranto</span>
109
- // <Nav variant="pills" className="me-auto" activeKey={activeTab} onSelect={(k) => {
110
- // setActiveTab(k || "node");
111
- // window.location.hash = k || "node";
112
- // }}>
113
- // <Nav.Item>
114
- // <Nav.Link eventKey="projects">Test Results</Nav.Link>
115
- // </Nav.Item>
116
- // <Nav.Item>
117
- // <Nav.Link
118
- // eventKey="node"
119
- // className={Object.values(nodeLogs).every(log => !log.errors || log.errors.length === 0)
120
- // ? "text-success"
121
- // : "text-danger"}
122
- // >
123
- // Node Build {Object.values(nodeLogs).every(log => !log.errors || log.errors.length === 0) ? "✅" : "❌"}
124
- // </Nav.Link>
125
- // </Nav.Item>
126
- // <Nav.Item>
127
- // <Nav.Link
128
- // eventKey="web"
129
- // className={Object.values(webLogs).every(log => !log.errors || log.errors.length === 0)
130
- // ? "text-success"
131
- // : "text-danger"}
132
- // >
133
- // Web Build {Object.values(webLogs).every(log => !log.errors || log.errors.length === 0) ? "✅" : "❌"}
134
- // </Nav.Link>
135
- // </Nav.Item>
136
- // <Nav.Item>
137
- // <Nav.Link
138
- // eventKey="pure"
139
- // className={Object.values(pureLogs).every(log => !log.errors || log.errors.length === 0)
140
- // ? "text-success"
141
- // : "text-danger"}
142
- // >
143
- // Pure Build {Object.values(pureLogs).every(log => !log.errors || log.errors.length === 0) ? "✅" : "❌"}
144
- // </Nav.Link>
145
- // </Nav.Item>
146
-
147
- // </Nav>
148
- // </div>
149
- // </nav>
150
- // <Row>
151
- // <Tab.Content>
152
- // <Tab.Pane eventKey="node">
153
- // {Object.keys(nodeLogs).length > 0 && (
154
- // <div className={`alert ${Object.values(nodeLogs).every(log => !log.errors || log.errors.length === 0)
155
- // ? 'alert-success'
156
- // : 'alert-danger'} d-flex justify-content-between align-items-center`}>
157
- // <span>
158
- // {Object.values(nodeLogs).every(log => !log.errors || log.errors.length === 0)
159
- // ? '✅ All Node builds passed successfully'
160
- // : '❌ Some Node builds failed'}
161
- // </span>
162
- // {!Object.values(nodeLogs).every(log => !log.errors || log.errors.length === 0) && (
163
- // <button
164
- // onClick={() => alert('AI debugger coming soon!')}
165
- // className="btn btn-sm btn-primary"
166
- // title="Get AI help debugging these build failures"
167
- // >
168
- // 🤖🪄✨
169
- // </button>
170
- // )}
171
- // </div>
172
- // )}
173
- // <pre >
174
- // {JSON.stringify(nodeLogs, null, 2)}
175
- // </pre>
176
- // </Tab.Pane>
177
- // <Tab.Pane eventKey="web">
178
- // {Object.keys(webLogs).length > 0 && (
179
- // <div className={`alert ${Object.values(webLogs).every(log => !log.errors || log.errors.length === 0)
180
- // ? 'alert-success'
181
- // : 'alert-danger'} d-flex justify-content-between align-items-center`}>
182
- // <span>
183
- // {Object.values(webLogs).every(log => !log.errors || log.errors.length === 0)
184
- // ? '✅ All Web builds passed successfully'
185
- // : '❌ Some Web builds failed'}
186
- // </span>
187
- // {!Object.values(webLogs).every(log => !log.errors || log.errors.length === 0) && (
188
- // <button
189
- // onClick={() => alert('AI debugger coming soon!')}
190
- // className="btn btn-sm btn-primary"
191
- // title="Get AI help debugging these build failures"
192
- // >
193
- // 🤖🪄✨
194
- // </button>
195
- // )}
196
- // </div>
197
- // )}
198
- // <pre >
199
- // {JSON.stringify(webLogs, null, 2)}
200
- // </pre>
201
- // </Tab.Pane>
202
- // <Tab.Pane eventKey="pure">
203
- // {Object.keys(pureLogs).length > 0 && (
204
- // <div className={`alert ${Object.values(pureLogs).every(log => !log.errors || log.errors.length === 0)
205
- // ? 'alert-success'
206
- // : 'alert-danger'} d-flex justify-content-between align-items-center`}>
207
- // <span>
208
- // {Object.values(pureLogs).every(log => !log.errors || log.errors.length === 0)
209
- // ? '✅ All Pure builds passed successfully'
210
- // : '❌ Some Pure builds failed'}
211
- // </span>
212
- // {!Object.values(pureLogs).every(log => !log.errors || log.errors.length === 0) && (
213
- // <button
214
- // onClick={() => alert('AI debugger coming soon!')}
215
- // className="btn btn-sm btn-primary"
216
- // title="Get AI help debugging these build failures"
217
- // >
218
- // 🤖🪄✨
219
- // </button>
220
- // )}
221
- // </div>
222
- // )}
223
- // <pre >
224
- // {JSON.stringify(pureLogs, null, 2)}
225
- // </pre>
226
- // </Tab.Pane>
227
- // <Tab.Pane eventKey="projects">
228
- // <Tab.Container defaultActiveKey={projects[0]}>
229
- // <Row>
230
- // <Col sm={3}>
231
- // <Nav variant="pills" className="flex-column">
232
- // {projects.map((project) => (
233
- // <Nav.Item key={project}>
234
- // <Nav.Link eventKey={project}>{project}</Nav.Link>
235
- // </Nav.Item>
236
- // ))}
237
- // </Nav>
238
- // </Col>
239
- // <Col sm={9}>
240
- // <Tab.Content>
241
- // {projects.map((project) => (
242
- // <Tab.Pane key={project} eventKey={project}>
243
- // <Table>
244
- // <Table>
245
- // <thead>
246
- // <tr>
247
- // <th>project</th>
248
- // <th>platform</th>
249
- // <th>BDD errors</th>
250
- // <th>Lint errors</th>
251
- // <th>Type errors</th>
252
-
253
- // </tr>
254
- // </thead>
255
-
256
- // <tbody>
257
- // {...summary.map((s) => {
258
- // return (
259
- // <>
260
- // <tr>
261
- // <th>{s[0]}</th>
262
- // </tr>
263
- // {...s[1].tests.map((t) => {
264
- // const x = `${s[0]}/${t[0]
265
- // .split(".")
266
- // .slice(0, -1)
267
- // .join(".")}/${t[1]}`;
268
- // const y = s[2][t[0]];
269
-
270
- // if (!y) return <pre>ERROR</pre>
271
-
272
- // return (
273
- // <tr>
274
- // <td>{t[0]}</td>
275
- // <td>
276
- // <button
277
- // className={`btn btn-sm ${(t[1] === "node" && nodeLogs[s[0]]?.errors?.length === 0) ||
278
- // (t[1] === "web" && webLogs[s[0]]?.errors?.length === 0) ||
279
- // (t[1] === "pure" && pureLogs[s[0]]?.errors?.length === 0)
280
- // ? "btn-outline-success"
281
- // : "btn-outline-danger"
282
- // }`}
283
- // onClick={() => {
284
- // const tabKey = t[1] === "node" ? "node" : t[1] === "web" ? "web" : "pure";
285
- // setActiveTab(tabKey);
286
- // }}
287
- // title={
288
- // (t[1] === "node" && nodeLogs[s[0]]?.errors?.length === 0) ||
289
- // (t[1] === "web" && webLogs[s[0]]?.errors?.length === 0) ||
290
- // (t[1] === "pure" && pureLogs[s[0]]?.errors?.length === 0)
291
- // ? "Build succeeded"
292
- // : "Build failed"
293
- // }
294
- // >
295
- // {t[1]}
296
- // {(t[1] === "node" && nodeLogs[s[0]]?.errors?.length === 0) ||
297
- // (t[1] === "web" && webLogs[s[0]]?.errors?.length === 0) ||
298
- // (t[1] === "pure" && pureLogs[s[0]]?.errors?.length === 0)
299
- // ? " ✅"
300
- // : " ❌"}
301
- // </button>
302
- // </td>
303
- // <td>
304
-
305
-
306
-
307
-
308
- // <a
309
- // href={`./reports/${x}/index.html`}
310
- // >
311
-
312
- // {
313
- // (y.runTimeErrors < 0) && "‼️ Tests did not complete"
314
- // }
315
-
316
- // {
317
- // y.runTimeErrors === 0 && "✅ All tests passed"
318
- // }
319
-
320
- // {
321
- // y.runTimeErrors > 0 && `⚠️ ${y.runTimeErrors} failures`
322
- // }
323
-
324
- // </a>
325
- // </td>
326
- // <td>
327
- // <a
328
- // href={`./reports/${x}/lint_errors.txt`}
329
- // >
330
- // {y.staticErrors}
331
- // </a>
332
- // </td>
333
- // <td>
334
- // <a
335
- // href={`./reports/${x}/type_errors.txt`}
336
- // >
337
- // {y.typeErrors}
338
- // </a>
339
- // </td>
340
-
341
-
342
- // </tr>
343
- // );
344
- // })}
345
- // </>
346
- // );
347
- // })}
348
- // </tbody>
349
- // </Table>
350
- // </Table>
351
- // </Tab.Pane>
352
- // ))}
353
- // </Tab.Content>
354
- // </Col>
355
- // </Row>
356
- // </Tab.Container>
357
- // </Tab.Pane>
358
- // </Tab.Content>
359
- // </Row>
360
- // </Tab.Container>
361
-
362
- // {/* disabled for now */}
363
- // {/* <SettingsButton className="gear-icon" /> */}
364
-
365
- // <Footer />
366
- // </div></div>
367
- // );
368
- // };
369
-
370
- // document.addEventListener("DOMContentLoaded", function () {
371
- // const elem = document.getElementById("root");
372
- // if (elem) {
373
- // ReactDom.createRoot(elem).render(React.createElement(BigBoard, {}));
374
- // }
375
- // });