cabloy 5.1.151 → 5.1.153

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 (42) hide show
  1. package/.cabloy-version +1 -1
  2. package/.claude/skills/cabloy-module-removal/SKILL.md +1 -1
  3. package/.claude/skills/cabloy-resource-field-update/SKILL.md +1 -1
  4. package/.claude/skills/cabloy-spec-generation/SKILL.md +1 -1
  5. package/.claude/skills/cabloy-spec-generation/references/repo-aware-discovery.md +1 -1
  6. package/.claude/skills/cabloy-workflow/SKILL.md +13 -14
  7. package/.claude/skills/cabloy-workflow/evals/evals.json +4 -4
  8. package/CHANGELOG.md +20 -0
  9. package/CLAUDE.md +3 -3
  10. package/package.json +1 -1
  11. package/repo-docs/.vitepress/config.mjs +5 -0
  12. package/repo-docs/ai/cli-to-skill-map.md +19 -0
  13. package/repo-docs/ai/docs-skills-rules-mapping.md +21 -6
  14. package/repo-docs/ai/future-skill-roadmap.md +17 -72
  15. package/repo-docs/ai/introduction.md +15 -5
  16. package/repo-docs/ai/playbook-spec-execution.md +144 -0
  17. package/repo-docs/ai/playbook-spec-generation.md +155 -0
  18. package/repo-docs/ai/repo-guidance.md +9 -5
  19. package/repo-docs/ai/rules-and-config.md +2 -2
  20. package/repo-docs/ai/skills.md +4 -0
  21. package/repo-docs/ai/virtual-decorator-guidance.md +1 -1
  22. package/repo-docs/backend/introduction.md +1 -1
  23. package/repo-docs/frontend/model-resource-cookbook.md +38 -7
  24. package/repo-docs/frontend/model-resource-usage-guide.md +2 -1
  25. package/repo-docs/frontend/router-tabs-introduction.md +1 -1
  26. package/repo-docs/frontend/use-state-data-best-practices.md +39 -6
  27. package/repo-docs/reference/package-map.md +4 -1
  28. package/repo-docs/reference/repo-scripts.md +25 -0
  29. package/repo-e2e/specs/cabloy-basic.spec.ts +69 -20
  30. package/test-results/.last-run.json +4 -2
  31. package/test-results/cabloy-basic-ATP-BASIC-SUM-58d8a-ry-states-and-Markdown-HTML/error-context.md +195 -0
  32. package/vona/pnpm-lock.yaml +81 -145
  33. package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/payment/controller.tsx +3 -2
  34. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx +29 -6
  35. package/zova/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +1 -0
  36. package/zova/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +1 -0
  37. package/zova/src/suite/a-training/modules/training-student/src/model/student.ts +1 -1
  38. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/package.json +1 -1
  39. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/lib/mutationSuccess.ts +11 -0
  40. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/model/resource.ts +12 -7
  41. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/test/lib/mutationSuccess.test.ts +95 -0
  42. package/zova/src/suite-vendor/a-cabloy/package.json +2 -2
@@ -0,0 +1,95 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+
4
+ import { runMutationSuccess } from '../../src/lib/mutationSuccess.ts';
5
+
6
+ function createDeferred() {
7
+ let resolve: (() => void) | undefined;
8
+ const promise = new Promise<void>(resolve_ => {
9
+ resolve = resolve_;
10
+ });
11
+ return { promise, resolve: () => resolve?.() };
12
+ }
13
+
14
+ async function flushAsyncWork() {
15
+ await new Promise<void>(resolve => setImmediate(resolve));
16
+ }
17
+
18
+ test('waits for select invalidation when used by a create mutation', async () => {
19
+ const select = createDeferred();
20
+ let completed = false;
21
+ const result = runMutationSuccess({
22
+ invalidateSelect: () => select.promise,
23
+ }).then(() => {
24
+ completed = true;
25
+ });
26
+
27
+ await flushAsyncWork();
28
+ assert.equal(completed, false);
29
+
30
+ select.resolve();
31
+ await result;
32
+ assert.equal(completed, true);
33
+ });
34
+
35
+ test('waits for select and item invalidation before custom success handling', async () => {
36
+ const select = createDeferred();
37
+ const item = createDeferred();
38
+ const calls: string[] = [];
39
+ let completed = false;
40
+ const result = runMutationSuccess({
41
+ invalidateSelect: async () => {
42
+ calls.push('select');
43
+ await select.promise;
44
+ },
45
+ invalidateItem: async () => {
46
+ calls.push('item');
47
+ await item.promise;
48
+ },
49
+ onSuccess: () => {
50
+ calls.push('success');
51
+ },
52
+ }).then(() => {
53
+ completed = true;
54
+ });
55
+
56
+ await flushAsyncWork();
57
+ assert.deepEqual(calls, ['select']);
58
+ assert.equal(completed, false);
59
+
60
+ select.resolve();
61
+ await flushAsyncWork();
62
+ assert.deepEqual(calls, ['select', 'item']);
63
+ assert.equal(completed, false);
64
+
65
+ item.resolve();
66
+ await result;
67
+ assert.deepEqual(calls, ['select', 'item', 'success']);
68
+ assert.equal(completed, true);
69
+ });
70
+
71
+ test('skips select invalidation while still waiting for item invalidation', async () => {
72
+ const item = createDeferred();
73
+ const calls: string[] = [];
74
+ let completed = false;
75
+ const result = runMutationSuccess({
76
+ invalidateItem: async () => {
77
+ calls.push('item');
78
+ await item.promise;
79
+ },
80
+ onSuccess: () => {
81
+ calls.push('success');
82
+ },
83
+ }).then(() => {
84
+ completed = true;
85
+ });
86
+
87
+ await flushAsyncWork();
88
+ assert.deepEqual(calls, ['item']);
89
+ assert.equal(completed, false);
90
+
91
+ item.resolve();
92
+ await result;
93
+ assert.deepEqual(calls, ['item', 'success']);
94
+ assert.equal(completed, true);
95
+ });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-suite-a-cabloy",
3
- "version": "5.1.48",
3
+ "version": "5.1.49",
4
4
  "gitHead": "4dece229b6d3f4735930e833afcb4b95ec51bf86",
5
5
  "description": "",
6
6
  "author": "",
@@ -8,7 +8,7 @@
8
8
  "type": "module",
9
9
  "dependencies": {
10
10
  "zova-module-a-rbac": "^5.0.1",
11
- "zova-module-rest-resource": "^5.1.47"
11
+ "zova-module-rest-resource": "^5.1.48"
12
12
  },
13
13
  "title": "a-cabloy"
14
14
  }