@jskit-ai/kernel 0.1.147 → 0.1.148

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/kernel",
3
- "version": "0.1.147",
3
+ "version": "0.1.148",
4
4
  "type": "module",
5
5
  "dependencies": {
6
6
  "json-rest-schema": "^1.0.17"
@@ -238,7 +238,7 @@ const GENERATED_UI_SOURCE_CONTRACT_PROFILES = Object.freeze({
238
238
  }),
239
239
  Object.freeze({
240
240
  id: "medium-viewport",
241
- pattern: /\b768\b/,
241
+ pattern: /\b(?:768|1024)\b/,
242
242
  message: "Generated UI smoke tests must include tablet-ish medium width."
243
243
  }),
244
244
  Object.freeze({
@@ -206,3 +206,13 @@ test("generated UI responsive smoke profile requires compact medium expanded che
206
206
  /missing:medium-viewport/
207
207
  );
208
208
  });
209
+
210
+ test("generated UI responsive smoke profile accepts a Vuetify md viewport", () => {
211
+ assert.doesNotThrow(() => assertGeneratedUiSourceContract(
212
+ "390 1024 1280 scrollWidth toBeGreaterThanOrEqual(48) generated-ui-screen",
213
+ {
214
+ profile: "responsive-smoke",
215
+ sourceName: "tests/e2e/example.spec.ts"
216
+ }
217
+ ));
218
+ });
@@ -5,6 +5,7 @@ import {
5
5
  normalizeSingleSchemaDefinition,
6
6
  resolveSchemaTransportSchemaDefinition
7
7
  } from "./schemaDefinitions.js";
8
+ import { validateSchemaPayload } from "./schemaPayloadValidation.js";
8
9
 
9
10
  test("normalizeSingleSchemaDefinition validates mode eagerly", () => {
10
11
  const definition = {
@@ -49,3 +50,41 @@ test("resolveSchemaTransportSchemaDefinition still resolves valid definitions",
49
50
  assert.equal(transportSchema.additionalProperties, false);
50
51
  assert.equal(transportSchema.properties.name.type, "string");
51
52
  });
53
+
54
+ test("temporal schemas preserve strict JSON strings", () => {
55
+ const definition = {
56
+ schema: createSchema({
57
+ serviceDate: { type: "date", required: true },
58
+ openingTime: { type: "time", required: true },
59
+ scheduledAt: { type: "dateTime", required: true }
60
+ }),
61
+ mode: "replace"
62
+ };
63
+ const payload = {
64
+ serviceDate: "2026-08-13",
65
+ openingTime: "07:08:09.123",
66
+ scheduledAt: "2026-08-13T07:08:09.123+08:00"
67
+ };
68
+
69
+ assert.deepEqual(validateSchemaPayload(definition, payload), payload);
70
+ assert.throws(
71
+ () => validateSchemaPayload(definition, {
72
+ serviceDate: new Date("2026-08-13T00:00:00.000Z"),
73
+ openingTime: new Date("2026-08-13T07:08:09.123Z"),
74
+ scheduledAt: new Date("2026-08-13T07:08:09.123Z")
75
+ }),
76
+ /Schema validation failed\./
77
+ );
78
+ });
79
+
80
+ test("removed timestamp schemas fail instead of silently changing meaning", () => {
81
+ const definition = {
82
+ schema: createSchema({ occurredAt: { type: "timestamp" } }),
83
+ mode: "replace"
84
+ };
85
+
86
+ assert.throws(
87
+ () => validateSchemaPayload(definition, { occurredAt: 1 }),
88
+ /No casting function for type: timestamp/
89
+ );
90
+ });