Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,5 @@ coverage
.dumi/tmp
.dumi/tmp-production
dist
.docs-dist
.docs-dist
.vscode
5 changes: 5 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type {
InternalValidateMessages,
Rule,
RuleItem,
RuleType,
RuleValuePackage,
Rules,
SyncErrorType,
Expand Down Expand Up @@ -145,6 +146,10 @@ class Schema {
source = { ...source };
}
value = source[z] = rule.transform(value);
if (!rule.type) {
const type = Array.isArray(value) ? 'array' : typeof value;
rule.type = type as RuleType;
}
}
if (typeof rule === 'function') {
rule = {
Expand Down
2 changes: 1 addition & 1 deletion tests/deep.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ describe('deep', () => {
testArray: [],
};
const validator = new Schema(descriptor);
validator.validate(record, (errors, fields) => {
validator.validate(record, () => {
done();
});
});
Expand Down
42 changes: 42 additions & 0 deletions tests/number.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,46 @@ describe('number', () => {
done();
});
});
it('transform string', done => {
const value = { v: 'a' };
new Schema({
v: { required: true, transform: v => v },
})
.validate(value, errors => {
expect(value.v).toBe('a');
expect(errors).toBeFalsy();
})
.then(source => {
expect(source).toEqual({ v: 'a' });
done();
});
});
it('transform number', done => {
const value = { v: 0 };
new Schema({
v: { required: true, transform: v => v },
})
.validate(value, errors => {
expect(value.v).toBe(0);
expect(errors).toBeFalsy();
})
.then(source => {
expect(source).toEqual({ v: 0 });
done();
});
});
it('transform array', done => {
const value = { v: [0, 1] };
new Schema({
v: { required: true, transform: v => v },
})
.validate(value, errors => {
expect(value.v).toEqual([0, 1]);
expect(errors).toBeFalsy();
})
.then(source => {
expect(source).toEqual({ v: [0, 1] });
done();
});
});
});