@cosmicdrift/kumiko-framework 0.269.1 → 0.270.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 (99) hide show
  1. package/README.md +5 -1
  2. package/package.json +3 -3
  3. package/src/__tests__/anonymous-access.integration.test.ts +1 -1
  4. package/src/__tests__/error-contract.integration.test.ts +1 -1
  5. package/src/__tests__/fixtures/migrate-db-raw/global-fetch.expected.ts +9 -0
  6. package/src/__tests__/fixtures/migrate-db-raw/global-fetch.input.ts +10 -0
  7. package/src/__tests__/fixtures/migrate-db-raw/global-select.expected.ts +6 -0
  8. package/src/__tests__/fixtures/migrate-db-raw/global-select.input.ts +12 -0
  9. package/src/__tests__/fixtures/migrate-db-raw/import-pruning.expected.ts +12 -0
  10. package/src/__tests__/fixtures/migrate-db-raw/import-pruning.input.ts +12 -0
  11. package/src/__tests__/fixtures/migrate-db-raw/manual-only.expected.ts +26 -0
  12. package/src/__tests__/fixtures/migrate-db-raw/manual-only.input.ts +26 -0
  13. package/src/__tests__/fixtures/migrate-db-raw/own-tenant-const-shorthand.expected.ts +10 -0
  14. package/src/__tests__/fixtures/migrate-db-raw/own-tenant-const-shorthand.input.ts +11 -0
  15. package/src/__tests__/fixtures/migrate-db-raw/own-tenant-event.expected.ts +9 -0
  16. package/src/__tests__/fixtures/migrate-db-raw/own-tenant-event.input.ts +15 -0
  17. package/src/__tests__/fixtures/migrate-open-to-all/manual-only.expected.ts +16 -0
  18. package/src/__tests__/fixtures/migrate-open-to-all/manual-only.input.ts +16 -0
  19. package/src/__tests__/fixtures/migrate-open-to-all/test-nested-shorthand.expected.ts +12 -0
  20. package/src/__tests__/fixtures/migrate-open-to-all/test-nested-shorthand.input.ts +12 -0
  21. package/src/__tests__/fixtures/migrate-open-to-all/test-simple.expected.ts +7 -0
  22. package/src/__tests__/fixtures/migrate-open-to-all/test-simple.input.ts +7 -0
  23. package/src/__tests__/full-stack.integration.test.ts +2 -2
  24. package/src/__tests__/migrate-db-raw-codemod.test.ts +132 -0
  25. package/src/__tests__/migrate-open-to-all-codemod.test.ts +84 -0
  26. package/src/__tests__/transition-guard.integration.test.ts +7 -7
  27. package/src/__tests__/upgrade-cli.test.ts +54 -0
  28. package/src/api/__tests__/api.test.ts +2 -2
  29. package/src/api/__tests__/body-limit.test.ts +1 -1
  30. package/src/api/__tests__/pii-leak-guard.integration.test.ts +2 -2
  31. package/src/api/__tests__/request-locale.integration.test.ts +1 -1
  32. package/src/api/__tests__/server-error-logging.test.ts +1 -1
  33. package/src/changes.json +10 -2
  34. package/src/db/__tests__/list-filter-field-access.integration.test.ts +1 -1
  35. package/src/derivatives/__tests__/derivatives-context.integration.test.ts +2 -2
  36. package/src/engine/__tests__/boot-validator-dashboard.test.ts +5 -5
  37. package/src/engine/__tests__/boot-validator-pii-retention.test.ts +1 -1
  38. package/src/engine/__tests__/boot-validator-projection-list.test.ts +17 -17
  39. package/src/engine/__tests__/boot-validator-query-output-schema.test.ts +18 -18
  40. package/src/engine/__tests__/boot-validator-query-refs.test.ts +3 -3
  41. package/src/engine/__tests__/boot-validator-s0-integration.test.ts +2 -2
  42. package/src/engine/__tests__/boot-validator.test.ts +18 -18
  43. package/src/engine/__tests__/build-app-schema.test.ts +10 -6
  44. package/src/engine/__tests__/build-config-feature-schema-secrets.test.ts +48 -0
  45. package/src/engine/__tests__/build-config-feature-schema.test.ts +34 -5
  46. package/src/engine/__tests__/engine.test.ts +39 -25
  47. package/src/engine/__tests__/entity-handlers.test.ts +19 -8
  48. package/src/engine/__tests__/entity-presave-wiring.integration.test.ts +2 -2
  49. package/src/engine/__tests__/extends-registrar.test.ts +3 -3
  50. package/src/engine/__tests__/feature-crud-shorthand.test.ts +9 -3
  51. package/src/engine/__tests__/feature-crud-verb-access.integration.test.ts +1 -1
  52. package/src/engine/__tests__/hook-phases.test.ts +5 -5
  53. package/src/engine/__tests__/lifecycle-hooks.test.ts +9 -3
  54. package/src/engine/__tests__/multiselect-filter.integration.test.ts +1 -1
  55. package/src/engine/__tests__/post-query-hook.test.ts +6 -2
  56. package/src/engine/__tests__/projection-detail-actions.test.ts +2 -2
  57. package/src/engine/__tests__/projection-detail-singleton.test.ts +3 -3
  58. package/src/engine/__tests__/projection-detail-tabs.test.ts +3 -3
  59. package/src/engine/__tests__/projection-list-filter.integration.test.ts +1 -1
  60. package/src/engine/__tests__/registry.test.ts +19 -13
  61. package/src/engine/__tests__/screen.test.ts +26 -20
  62. package/src/engine/boot-validator/__tests__/access-declarations.test.ts +5 -4
  63. package/src/engine/boot-validator/__tests__/parent-ref.test.ts +18 -6
  64. package/src/engine/boot-validator/access-declarations.ts +3 -5
  65. package/src/engine/boot-validator/nav.ts +4 -3
  66. package/src/engine/build-config-feature-schema.ts +9 -2
  67. package/src/engine/entity-handlers.ts +1 -1
  68. package/src/engine/feature-ast/__tests__/canonical-form.test.ts +3 -1
  69. package/src/engine/feature-ast/__tests__/parse-happy-path.test.ts +2 -2
  70. package/src/engine/feature-ast/__tests__/parse.test.ts +106 -4
  71. package/src/engine/feature-ast/__tests__/patcher.test.ts +3 -3
  72. package/src/engine/feature-ast/__tests__/read-optional-access-rule.test.ts +4 -4
  73. package/src/engine/feature-ast/__tests__/render-roundtrip.test.ts +5 -1
  74. package/src/engine/feature-ast/extractors/handlers.ts +16 -2
  75. package/src/engine/feature-ast/extractors/hooks.ts +25 -4
  76. package/src/engine/feature-ast/patcher.ts +15 -3
  77. package/src/engine/feature-ast/patterns.ts +4 -0
  78. package/src/engine/feature-ast/render.ts +3 -0
  79. package/src/engine/pattern-library/shared-fields.ts +7 -3
  80. package/src/entrypoint/__tests__/entrypoint-attach-dispatcher.integration.test.ts +1 -1
  81. package/src/entrypoint/__tests__/entrypoint-job-wiring.integration.test.ts +3 -3
  82. package/src/entrypoint/__tests__/split-deploy.integration.test.ts +1 -1
  83. package/src/es-ops/__tests__/runner.integration.test.ts +2 -2
  84. package/src/jobs/__tests__/job-event-trigger.integration.test.ts +2 -2
  85. package/src/jobs/__tests__/job-multi-trigger.integration.test.ts +2 -2
  86. package/src/jobs/__tests__/jobs.integration.test.ts +1 -1
  87. package/src/observability/__tests__/observability.integration.test.ts +7 -7
  88. package/src/pipeline/__tests__/archive-stream.integration.test.ts +2 -2
  89. package/src/pipeline/__tests__/dispatcher.test.ts +15 -15
  90. package/src/pipeline/__tests__/lifecycle-pipeline.test.ts +10 -10
  91. package/src/pipeline/__tests__/load-aggregate-query.integration.test.ts +1 -1
  92. package/src/pipeline/__tests__/post-query-hook.integration.test.ts +3 -3
  93. package/src/pipeline/__tests__/query-projection.integration.test.ts +3 -3
  94. package/src/scripts/codemod/migrate-db-raw.ts +397 -0
  95. package/src/scripts/codemod/migrate-open-to-all.ts +248 -0
  96. package/src/secrets/__tests__/contains-secret.test.ts +5 -5
  97. package/src/stack/__tests__/request-helper.integration.test.ts +3 -3
  98. package/src/stack/__tests__/setup-test-stack-jobs.integration.test.ts +1 -1
  99. package/src/testing/__tests__/e2e-generator.test.ts +19 -5
@@ -20,7 +20,7 @@ const pingFeature = defineFeature("reqhelp", (r) => {
20
20
  isSuccess: true as const,
21
21
  data: { note: event.payload.note, userId: event.user.id },
22
22
  }),
23
- { access: { openToAll: true } },
23
+ { access: { openToAll: { reason: "test handler callable by any signed-in test user" } } },
24
24
  );
25
25
 
26
26
  r.writeHandler(
@@ -28,7 +28,7 @@ const pingFeature = defineFeature("reqhelp", (r) => {
28
28
  z.object({}),
29
29
  async () =>
30
30
  writeFailure(new UnprocessableError("reqhelp-boom", { i18nKey: "errors.unprocessable" })),
31
- { access: { openToAll: true } },
31
+ { access: { openToAll: { reason: "test handler callable by any signed-in test user" } } },
32
32
  );
33
33
 
34
34
  r.queryHandler(
@@ -40,7 +40,7 @@ const pingFeature = defineFeature("reqhelp", (r) => {
40
40
  }
41
41
  return { id: query.payload.id, ok: true };
42
42
  },
43
- { access: { openToAll: true } },
43
+ { access: { openToAll: { reason: "test handler callable by any signed-in test user" } } },
44
44
  );
45
45
  });
46
46
 
@@ -29,7 +29,7 @@ const manualDispatchFeature = defineFeature("manualdispatch", (r) => {
29
29
  await jobRunner.dispatch("manualdispatch:job:record", { note: event.payload.note });
30
30
  return { isSuccess: true as const, data: { id: 1, note: event.payload.note } };
31
31
  },
32
- { access: { openToAll: true } },
32
+ { access: { openToAll: { reason: "test handler callable by any signed-in test user" } } },
33
33
  );
34
34
  r.job("record", { trigger: { manual: true }, runIn: "worker" }, async (payload) => {
35
35
  jobRuns.push({ name: "manualdispatch:job:record", payload });
@@ -34,7 +34,11 @@ function createTasksFeature() {
34
34
  return defineFeature("tasks", (r) => {
35
35
  r.systemScope();
36
36
  r.entity("task", taskEntity);
37
- r.writeHandler(defineEntityCreateHandler("task", taskEntity, { access: { openToAll: true } }));
37
+ r.writeHandler(
38
+ defineEntityCreateHandler("task", taskEntity, {
39
+ access: { openToAll: { reason: "test handler callable by any signed-in test user" } },
40
+ }),
41
+ );
38
42
  r.screen({
39
43
  id: "task-list",
40
44
  type: "entityList",
@@ -105,7 +109,11 @@ describe("generateE2ESpec", () => {
105
109
  const feature = defineFeature("events", (r) => {
106
110
  r.systemScope();
107
111
  r.entity("event", entity);
108
- r.writeHandler(defineEntityCreateHandler("event", entity, { access: { openToAll: true } }));
112
+ r.writeHandler(
113
+ defineEntityCreateHandler("event", entity, {
114
+ access: { openToAll: { reason: "test handler callable by any signed-in test user" } },
115
+ }),
116
+ );
109
117
  r.screen({
110
118
  id: "event-edit",
111
119
  type: "entityEdit",
@@ -165,7 +173,9 @@ describe("generateE2ESpec", () => {
165
173
  r.systemScope();
166
174
  r.entity("task", taskEntity);
167
175
  r.writeHandler(
168
- defineEntityCreateHandler("task", taskEntity, { access: { openToAll: true } }),
176
+ defineEntityCreateHandler("task", taskEntity, {
177
+ access: { openToAll: { reason: "test handler callable by any signed-in test user" } },
178
+ }),
169
179
  );
170
180
  r.screen({
171
181
  id: "edit",
@@ -201,7 +211,9 @@ describe("generateE2ESpec", () => {
201
211
  r.systemScope();
202
212
  r.entity("contact", contactEntity);
203
213
  r.writeHandler(
204
- defineEntityCreateHandler("contact", contactEntity, { access: { openToAll: true } }),
214
+ defineEntityCreateHandler("contact", contactEntity, {
215
+ access: { openToAll: { reason: "test handler callable by any signed-in test user" } },
216
+ }),
205
217
  );
206
218
  r.screen({
207
219
  id: "list",
@@ -225,7 +237,9 @@ describe("generateE2ESpec", () => {
225
237
  r.systemScope();
226
238
  r.entity("task", taskEntity);
227
239
  r.writeHandler(
228
- defineEntityCreateHandler("task", taskEntity, { access: { openToAll: true } }),
240
+ defineEntityCreateHandler("task", taskEntity, {
241
+ access: { openToAll: { reason: "test handler callable by any signed-in test user" } },
242
+ }),
229
243
  );
230
244
  r.screen({ id: "list", type: "entityList", entity: "task", columns: ["title"] });
231
245
  r.screen({