cabloy 5.1.216 → 5.1.218

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 (89) hide show
  1. package/.cabloy-version +1 -1
  2. package/.github/workflows/create-cabloy.yml +137 -0
  3. package/.github/workflows/playwright-e2e.yml +163 -13
  4. package/.github/workflows/vona-test-sqlite3.yml +77 -7
  5. package/CHANGELOG.md +22 -0
  6. package/CONTRIBUTING.md +4 -2
  7. package/package.json +1 -1
  8. package/repo-docs/frontend/scripts.md +2 -0
  9. package/repo-docs/reference/repo-scripts.md +27 -1
  10. package/repo-e2e/scripts/e2e.test.ts +1 -1
  11. package/repo-e2e/scripts/managedTest.test.ts +115 -3
  12. package/repo-e2e/scripts/managedTest.ts +69 -20
  13. package/repo-e2e/scripts/managedTestImports.test.ts +55 -5
  14. package/repo-e2e/scripts/runE2e.test.ts +109 -0
  15. package/repo-e2e/scripts/runE2e.ts +58 -39
  16. package/repo-e2e/scripts/runE2eArgs.test.ts +16 -1
  17. package/repo-e2e/scripts/runE2eArgs.ts +5 -0
  18. package/repo-e2e/specs/a-commerce.spec.ts +10 -2
  19. package/repo-e2e/specs/home-user-account.spec.ts +4 -0
  20. package/repo-e2e/specs/markdown.spec.ts +14 -3
  21. package/scripts/generateOpenapiIsolated.test.ts +5 -1
  22. package/scripts/runIsolatedTest.test.ts +403 -36
  23. package/scripts/runIsolatedTest.ts +139 -12
  24. package/scripts/testBrowserGuardianWindows.test.ts +327 -0
  25. package/scripts/testClaimCleanup.test.ts +25 -9
  26. package/scripts/testClaimCleanup.ts +14 -45
  27. package/scripts/testClaimProcesses.test.ts +81 -2
  28. package/scripts/testClaimProcesses.ts +46 -10
  29. package/scripts/testProcessGuardianWindows.test.ts +602 -0
  30. package/scripts/testProcessGuardianWindows.ts +155 -0
  31. package/vona/packages-cli/cli/package.json +1 -1
  32. package/vona/packages-cli/cli-set-api/package.json +1 -1
  33. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.bin.build.ts +4 -1
  34. package/vona/packages-cli/cli-set-api/test/binBuildEntries.test.ts +159 -0
  35. package/vona/packages-vona/vona/package.json +1 -1
  36. package/vona/packages-vona/vona-core/package.json +1 -1
  37. package/vona/packages-vona/vona-core/src/lib/core/testClaim.test.ts +298 -17
  38. package/vona/packages-vona/vona-core/src/lib/core/testClaim.ts +205 -97
  39. package/vona/packages-vona/vona-core/src/lib/core/testClaimFilesystem.test.ts +247 -0
  40. package/vona/packages-vona/vona-core/src/lib/core/testClaimFilesystem.ts +224 -0
  41. package/vona/packages-vona/vona-core/src/lib/core/testClaimFilesystemWindows.cs +229 -0
  42. package/vona/packages-vona/vona-core/src/lib/core/testClaimFilesystemWindows.ps1 +20 -0
  43. package/vona/packages-vona/vona-core/src/lib/core/testClaimFilesystemWindows.ts +200 -0
  44. package/vona/packages-vona/vona-core/src/lib/core/testProcessWindowsNative.cs +336 -0
  45. package/vona/packages-vona/vona-core/src/lib/core/testProcessWindowsNative.ps1 +20 -0
  46. package/vona/packages-vona/vona-core/src/lib/core/testProcessWindowsNative.ts +531 -0
  47. package/vona/packages-vona/vona-core/src/lib/framework/bootstrap.test.ts +61 -0
  48. package/vona/packages-vona/vona-core/src/lib/framework/index.ts +1 -0
  49. package/vona/packages-vona/vona-core/src/lib/framework/processWorker.test.ts +59 -0
  50. package/vona/packages-vona/vona-core/src/lib/framework/processWorker.ts +8 -5
  51. package/vona/packages-vona/vona-core/src/lib/framework/useApp.test.ts +84 -0
  52. package/vona/packages-vona/vona-core/src/lib/framework/useApp.ts +2 -2
  53. package/vona/packages-vona/vona-core/src/lib/utils/util.ts +1 -1
  54. package/vona/packages-vona/vona-mock/package.json +1 -1
  55. package/vona/pnpm-lock.yaml +42 -181
  56. package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/package.json +1 -1
  57. package/vona/src/suite-vendor/a-cabloy/package.json +2 -2
  58. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
  59. package/vona/src/suite-vendor/a-vona/modules/a-executor/package.json +1 -1
  60. package/vona/src/suite-vendor/a-vona/modules/a-executor/src/bean/bean.executor.ts +2 -1
  61. package/vona/src/suite-vendor/a-vona/modules/a-logger/package.json +1 -1
  62. package/vona/src/suite-vendor/a-vona/modules/a-logger/src/bean/middlewareSystem.httpLog.ts +2 -2
  63. package/vona/src/suite-vendor/a-vona/modules/a-logger/src/lib/redactIsolatedReadyHeader.test.ts +16 -0
  64. package/vona/src/suite-vendor/a-vona/modules/a-logger/src/lib/redactIsolatedReadyHeader.ts +6 -3
  65. package/vona/src/suite-vendor/a-vona/modules/a-logger/test/middlewareSystem.httpLog.test.ts +80 -0
  66. package/vona/src/suite-vendor/a-vona/modules/a-metrics/package.json +1 -1
  67. package/vona/src/suite-vendor/a-vona/modules/a-metrics/src/bean/middlewareSystem.health.ts +73 -2
  68. package/vona/src/suite-vendor/a-vona/modules/a-metrics/test/middlewareSystem.health.test.ts +309 -0
  69. package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
  70. package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/transactionAsyncLocalStorage_.ts +3 -3
  71. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  72. package/vona/src/suite-vendor/a-vona/modules/a-static/package.json +1 -1
  73. package/vona/src/suite-vendor/a-vona/modules/a-static/src/bean/middlewareSystem.static.ts +2 -2
  74. package/vona/src/suite-vendor/a-vona/modules/a-static/test/middlewareSystem.static.test.ts +101 -0
  75. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  76. package/zova/package.original.json +1 -1
  77. package/zova/packages-cli/cli/package.json +2 -2
  78. package/zova/packages-cli/cli-set-front/package.json +4 -4
  79. package/zova/packages-utils/zova-jsx/package.json +2 -2
  80. package/zova/packages-utils/zova-vite/package.json +2 -2
  81. package/zova/packages-utils/zova-vite/src/configUtils.ts +1 -1
  82. package/zova/packages-utils/zova-vite/test/configUtils.test.ts +55 -0
  83. package/zova/packages-zova/zova/package.json +3 -3
  84. package/zova/packages-zova/zova-core/package.json +2 -2
  85. package/zova/pnpm-lock.yaml +324 -63
  86. package/zova/src/suite/a-commerce/modules/commerce-trade/src/model/cart.ts +8 -4
  87. package/zova/src/suite/a-commerce/modules/commerce-trade/test/lib/cartModel.test.ts +71 -0
  88. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  89. package/zova/src/suite-vendor/a-zova/package.json +2 -2
@@ -29,7 +29,8 @@ export class ModelCart extends BeanModelBase {
29
29
  mutationFn: async (body: ApiApiCommerceTradeCartaddItemRequestBody) => {
30
30
  return await this.scope.api.commerceTradeCart.addItem(body);
31
31
  },
32
- onSuccess: async () => {
32
+ onSuccess: async cart => {
33
+ this.$setQueryData(['current'], cart);
33
34
  await this.$invalidateQueries({ queryKey: ['current'] });
34
35
  },
35
36
  });
@@ -47,7 +48,8 @@ export class ModelCart extends BeanModelBase {
47
48
  }) => {
48
49
  return await this.scope.api.commerceTradeCart.updateItem(body, { params: { id } });
49
50
  },
50
- onSuccess: async () => {
51
+ onSuccess: async cart => {
52
+ this.$setQueryData(['current'], cart);
51
53
  await this.$invalidateQueries({ queryKey: ['current'] });
52
54
  },
53
55
  });
@@ -59,7 +61,8 @@ export class ModelCart extends BeanModelBase {
59
61
  mutationFn: async (id: string) => {
60
62
  return await this.scope.api.commerceTradeCart.deleteItem({ params: { id } });
61
63
  },
62
- onSuccess: async () => {
64
+ onSuccess: async cart => {
65
+ this.$setQueryData(['current'], cart);
63
66
  await this.$invalidateQueries({ queryKey: ['current'] });
64
67
  },
65
68
  });
@@ -93,7 +96,8 @@ export class ModelCart extends BeanModelBase {
93
96
  mutationFn: async () => {
94
97
  return await this.scope.api.commerceTradeCart.clear();
95
98
  },
96
- onSuccess: async () => {
99
+ onSuccess: async cart => {
100
+ this.$setQueryData(['current'], cart);
97
101
  await this.$invalidateQueries({ queryKey: ['current'] });
98
102
  },
99
103
  });
@@ -0,0 +1,71 @@
1
+ import assert from 'node:assert/strict';
2
+ import { readFileSync } from 'node:fs';
3
+ import { stripTypeScriptTypes } from 'node:module';
4
+ import test from 'node:test';
5
+
6
+ const source = readFileSync(new URL('../../src/model/cart.ts', import.meta.url), 'utf8')
7
+ .replace(/^import[\s\S]*?;\n/gm, '')
8
+ .replace(/^@Model[^\n]*\n/gm, '');
9
+ const javascript = stripTypeScriptTypes(source).replace(
10
+ 'export class ModelCart',
11
+ 'class ModelCart',
12
+ );
13
+
14
+ function createModel() {
15
+ const invalidated = Promise.withResolvers<void>();
16
+ const released = Promise.withResolvers<void>();
17
+ const cache = new Map<string, unknown>([['current', { items: [] }]]);
18
+ class BeanModelBase {
19
+ $useMutationData(options: unknown) {
20
+ return options;
21
+ }
22
+
23
+ $setQueryData(key: string[], value: unknown) {
24
+ assert.deepEqual(key, ['current']);
25
+ cache.set('current', value);
26
+ }
27
+
28
+ async $invalidateQueries(filters: unknown) {
29
+ assert.deepEqual(filters, { queryKey: ['current'] });
30
+ invalidated.resolve();
31
+ await released.promise;
32
+ }
33
+ }
34
+ const ModelCart = new Function('BeanModelBase', `${javascript}\nreturn ModelCart;`)(
35
+ BeanModelBase,
36
+ );
37
+ return { model: new ModelCart(), cache, invalidated, released };
38
+ }
39
+
40
+ for (const method of ['addItem', 'updateItem', 'deleteItem', 'clear']) {
41
+ test(`${method} publishes the authoritative cart before its refresh completes`, async () => {
42
+ const { model, cache, invalidated, released } = createModel();
43
+ cache.set('current', { id: '1', items: [{ id: '2', quantity: 2 }] });
44
+ const cart = {
45
+ id: '1',
46
+ items: method === 'clear' || method === 'deleteItem' ? [] : [{ id: '2', quantity: 1 }],
47
+ };
48
+ const success = model[method]().onSuccess(cart);
49
+ try {
50
+ await invalidated.promise;
51
+ // The destination page reads this same query-owned value during navigation.
52
+ assert.equal(cache.get('current'), cart);
53
+ } finally {
54
+ released.resolve();
55
+ await success;
56
+ }
57
+ });
58
+ }
59
+
60
+ test('checkout invalidates the cart without publishing its different response contract', async () => {
61
+ const { model, cache, invalidated, released } = createModel();
62
+ const previous = cache.get('current');
63
+ const success = model.checkout().onSuccess({ orderId: '3', state: 'awaiting_payment' });
64
+ try {
65
+ await invalidated.promise;
66
+ assert.equal(cache.get('current'), previous);
67
+ } finally {
68
+ released.resolve();
69
+ await success;
70
+ }
71
+ });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-module-a-zova",
3
- "version": "5.1.108",
3
+ "version": "5.1.109",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "zova",
6
6
  "keywords": [
@@ -43,7 +43,7 @@
43
43
  "@cabloy/word-utils": "^2.1.14",
44
44
  "defu": "^6.1.7",
45
45
  "luxon": "^3.7.2",
46
- "zova-jsx": "^1.1.92"
46
+ "zova-jsx": "^1.1.93"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@cabloy/cli": "^3.1.29",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zova-suite-a-zova",
3
- "version": "5.1.170",
3
+ "version": "5.1.171",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "zova",
6
6
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "zova-module-a-style": "^5.1.35",
32
32
  "zova-module-a-table": "^5.1.44",
33
33
  "zova-module-a-zod": "^5.1.37",
34
- "zova-module-a-zova": "^5.1.108"
34
+ "zova-module-a-zova": "^5.1.109"
35
35
  },
36
36
  "title": "a-zova"
37
37
  }