Skip to content

Commit bcbf259

Browse files
committed
fix(hf): update utils
1 parent 77fdc78 commit bcbf259

File tree

8 files changed

+17
-16
lines changed

8 files changed

+17
-16
lines changed

integration/toJsonSchema/index.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ it("integration", () => {
2727
theme: DPE.literal(["light", "dark"]),
2828
newsletter: DPE.boolean(),
2929
}).nullable(),
30-
metadata: DPE.record(DPE.string(), DPE.string(), { requireKey: null }),
30+
metadata: DPE.record(DPE.string(), DPE.string()),
3131
location: DPE.tuple([DPE.number(), DPE.number()], { rest: DPE.number() }),
3232
createdAt: DPE.date({ coerce: true }),
3333
startAt: DPE.time(),

integration/toTypescript/index.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ it("integration", () => {
2727
theme: DPE.literal(["light", "dark"]),
2828
newsletter: DPE.boolean(),
2929
}).nullable(),
30-
metadata: DPE.record(DPE.string(), DPE.string(), { requireKey: null }),
30+
metadata: DPE.record(DPE.string(), DPE.string()),
3131
location: DPE.tuple([DPE.number(), DPE.number()], { rest: DPE.number() }),
3232
createdAt: DPE.date({ coerce: true }),
3333
startAt: DPE.time(),

package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
"vitest": "3.2.4"
7272
},
7373
"peerDependencies": {
74-
"@duplojs/utils": ">=1.5.6 <2.0.0",
74+
"@duplojs/utils": ">=1.5.12 <2.0.0",
7575
"@duplojs/server-utils": ">=0.1.4 < 1.0.0"
7676
},
7777
"dependencies": {

scripts/toJsonSchema/transformer/defaults/record.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { A, DP, E, unwrap } from "@duplojs/utils";
1+
import { A, DP, E, O, unwrap } from "@duplojs/utils";
22
import { createTransformer, type JsonSchema } from "../create";
33

44
export interface JsonSchemaRecord {
@@ -14,7 +14,7 @@ export interface JsonSchemaRecord {
1414
export const recordTransformer = createTransformer(
1515
DP.recordKind.has,
1616
(
17-
{ definition: { key, value, requireKey } },
17+
{ definition: { key, value, baseData } },
1818
{
1919
transformer,
2020
success,
@@ -35,7 +35,9 @@ export const recordTransformer = createTransformer(
3535
const keySchema = unwrap(keyResult).schema;
3636
const valueSchema = unwrap(valueResult).schema;
3737

38-
if (requireKey) {
38+
const requireKey = O.keys(baseData);
39+
40+
if (A.minElements(requireKey, 1)) {
3941
const properties = A.reduce(
4042
requireKey,
4143
A.reduceFrom<Record<string, JsonSchema>>({}),
@@ -52,7 +54,6 @@ export const recordTransformer = createTransformer(
5254
additionalProperties: false,
5355
propertyNames: { enum: requireKey },
5456
minProperties: requireKey.length,
55-
maxProperties: requireKey.length,
5657
});
5758
}
5859

scripts/toJsonSchema/transformer/defaults/templateLiteral.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { DP } from "@duplojs/utils";
1+
import { A, DP } from "@duplojs/utils";
22
import { createTransformer } from "../create";
33

44
export interface JsonSchemaTemplateLiteral {
@@ -17,7 +17,7 @@ export const templateLiteralTransformer = createTransformer(
1717
) => {
1818
const result = DP.findRecordRequiredKeyOnTemplateLiteralPart(schema.definition.template);
1919

20-
if (result) {
20+
if (A.minElements(result, 1)) {
2121
return transformer(DP.literal(result));
2222
}
2323

tests/toJsonSchema/transformers/__snapshots__/record.test.ts.snap

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ exports[`record > with optional value 1`] = `
77
"definitions": {
88
"RecordSchema": {
99
"additionalProperties": false,
10-
"maxProperties": 2,
1110
"minProperties": 2,
1211
"properties": {
1312
"a": {
@@ -40,7 +39,6 @@ exports[`record > with requireKey enforces exact keys 1`] = `
4039
"definitions": {
4140
"RecordSchema": {
4241
"additionalProperties": false,
43-
"maxProperties": 2,
4442
"minProperties": 2,
4543
"properties": {
4644
"a": {

tests/toTypescript/transfomers/record.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ describe("record", () => {
3838
});
3939

4040
it("throws when key type unsupported", () => {
41+
const input: any = [];
42+
input.definition = {};
4143
expect(() => render(
42-
DPE.record({ definition: {} } as never, DPE.string()),
44+
DPE.record(input, DPE.string()),
4345
{
4446
identifier: "RecordError",
4547
transformers: defaultTransformers,

0 commit comments

Comments
 (0)