@quatrain/core 1.2.1 → 1.2.2
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/dist/common/ResourcesErrors.d.ts +4 -0
- package/dist/common/ResourcesErrors.d.ts.map +1 -1
- package/dist/common/ResourcesErrors.js +9 -1
- package/dist/common/ResourcesErrors.js.map +1 -1
- package/dist/components/BaseObject.d.ts +1 -0
- package/dist/components/BaseObject.d.ts.map +1 -1
- package/dist/components/BaseObject.js +16 -0
- package/dist/components/BaseObject.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/common/ResourcesErrors.ts +9 -0
- package/src/components/BaseObject.ts +23 -0
- package/src/index.ts +2 -0
|
@@ -11,4 +11,8 @@ export declare class NotFoundError extends ResourceError {
|
|
|
11
11
|
}
|
|
12
12
|
export declare class GoneError extends ResourceError {
|
|
13
13
|
}
|
|
14
|
+
export declare class ValidationError extends ResourceError {
|
|
15
|
+
errors: Record<string, string>;
|
|
16
|
+
constructor(message: string, errors?: Record<string, string>);
|
|
17
|
+
}
|
|
14
18
|
//# sourceMappingURL=ResourcesErrors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesErrors.d.ts","sourceRoot":"","sources":["../../src/common/ResourcesErrors.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAK7B;AAED,qBAAa,eAAgB,SAAQ,aAAa;CAAG;AAErD,qBAAa,iBAAkB,SAAQ,aAAa;CAAG;AAEvD,qBAAa,cAAe,SAAQ,aAAa;CAAG;AAEpD,qBAAa,aAAc,SAAQ,aAAa;CAAG;AAEnD,qBAAa,SAAU,SAAQ,aAAa;CAAG"}
|
|
1
|
+
{"version":3,"file":"ResourcesErrors.d.ts","sourceRoot":"","sources":["../../src/common/ResourcesErrors.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAK7B;AAED,qBAAa,eAAgB,SAAQ,aAAa;CAAG;AAErD,qBAAa,iBAAkB,SAAQ,aAAa;CAAG;AAEvD,qBAAa,cAAe,SAAQ,aAAa;CAAG;AAEpD,qBAAa,aAAc,SAAQ,aAAa;CAAG;AAEnD,qBAAa,SAAU,SAAQ,aAAa;CAAG;AAE/C,qBAAa,eAAgB,SAAQ,aAAa;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;gBAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;CAIlE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.ResourceError = void 0;
|
|
3
|
+
exports.ValidationError = exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.ResourceError = void 0;
|
|
4
4
|
class ResourceError extends Error {
|
|
5
5
|
constructor(message) {
|
|
6
6
|
super(message);
|
|
@@ -23,4 +23,12 @@ exports.NotFoundError = NotFoundError;
|
|
|
23
23
|
class GoneError extends ResourceError {
|
|
24
24
|
}
|
|
25
25
|
exports.GoneError = GoneError;
|
|
26
|
+
class ValidationError extends ResourceError {
|
|
27
|
+
errors;
|
|
28
|
+
constructor(message, errors = {}) {
|
|
29
|
+
super(message);
|
|
30
|
+
this.errors = errors;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.ValidationError = ValidationError;
|
|
26
34
|
//# sourceMappingURL=ResourcesErrors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcesErrors.js","sourceRoot":"","sources":["../../src/common/ResourcesErrors.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAc,SAAQ,KAAK;IACrC,YAAY,OAAe;QACxB,KAAK,CAAC,OAAO,CAAC,CAAA;QAEd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IACpC,CAAC;CACH;AAND,sCAMC;AAED,MAAa,eAAgB,SAAQ,aAAa;CAAG;AAArD,0CAAqD;AAErD,MAAa,iBAAkB,SAAQ,aAAa;CAAG;AAAvD,8CAAuD;AAEvD,MAAa,cAAe,SAAQ,aAAa;CAAG;AAApD,wCAAoD;AAEpD,MAAa,aAAc,SAAQ,aAAa;CAAG;AAAnD,sCAAmD;AAEnD,MAAa,SAAU,SAAQ,aAAa;CAAG;AAA/C,8BAA+C"}
|
|
1
|
+
{"version":3,"file":"ResourcesErrors.js","sourceRoot":"","sources":["../../src/common/ResourcesErrors.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAc,SAAQ,KAAK;IACrC,YAAY,OAAe;QACxB,KAAK,CAAC,OAAO,CAAC,CAAA;QAEd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IACpC,CAAC;CACH;AAND,sCAMC;AAED,MAAa,eAAgB,SAAQ,aAAa;CAAG;AAArD,0CAAqD;AAErD,MAAa,iBAAkB,SAAQ,aAAa;CAAG;AAAvD,8CAAuD;AAEvD,MAAa,cAAe,SAAQ,aAAa;CAAG;AAApD,wCAAoD;AAEpD,MAAa,aAAc,SAAQ,aAAa;CAAG;AAAnD,sCAAmD;AAEnD,MAAa,SAAU,SAAQ,aAAa;CAAG;AAA/C,8BAA+C;AAE/C,MAAa,eAAgB,SAAQ,aAAa;IACxC,MAAM,CAAwB;IAErC,YAAY,OAAe,EAAE,SAAiC,EAAE;QAC7D,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACvB,CAAC;CACH;AAPD,0CAOC"}
|
|
@@ -14,5 +14,6 @@ export declare class BaseObject extends AbstractObject {
|
|
|
14
14
|
static fromBackend<T>(path: string): Promise<T>;
|
|
15
15
|
static fromDataObject<T extends BaseObjectType>(dao: DataObjectClass<any>): any;
|
|
16
16
|
asReference(): any;
|
|
17
|
+
validate(): void;
|
|
17
18
|
}
|
|
18
19
|
//# sourceMappingURL=BaseObject.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseObject.d.ts","sourceRoot":"","sources":["../../src/components/BaseObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"BaseObject.d.ts","sourceRoot":"","sources":["../../src/components/BaseObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvD,qBAAa,UAAW,SAAQ,cAAc;IAE3C,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAgD;IAE5E,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM;IAI9B,MAAM,CAAC,cAAc,CAAC,KAAK,GAAE,GAAU;WAuB1B,UAAU,CACpB,GAAG,GAAE,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,SAAqB,EAChE,KAAK,GAAE,GAAU,GACjB,OAAO,CAAC,cAAc,CAAC;IAkB1B,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,GAAE,GAAU,GAAG,GAAG;WAiB9D,OAAO,CACjB,GAAG,GAAE,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,SAAqB,EAChE,KAAK,GAAE,GAAU,GACjB,OAAO,CAAC,GAAG,CAAC;WA6BF,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAYrD,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,cAAc,EAC3C,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,GACzB,GAAG;IAMN,WAAW;IAQX,QAAQ;CAiBV"}
|
|
@@ -5,6 +5,7 @@ const ObjectUri_1 = require("./ObjectUri");
|
|
|
5
5
|
const DataObject_1 = require("./DataObject");
|
|
6
6
|
const BaseObjectProperties_1 = require("./BaseObjectProperties");
|
|
7
7
|
const AbstractObject_1 = require("./AbstractObject");
|
|
8
|
+
const ResourcesErrors_1 = require("../common/ResourcesErrors");
|
|
8
9
|
class BaseObject extends AbstractObject_1.AbstractObject {
|
|
9
10
|
static PROPS_DEFINITION = BaseObjectProperties_1.BaseObjectProperties;
|
|
10
11
|
static getProperty(key) {
|
|
@@ -75,6 +76,21 @@ class BaseObject extends AbstractObject_1.AbstractObject {
|
|
|
75
76
|
asReference() {
|
|
76
77
|
return this._dataObject.toReference();
|
|
77
78
|
}
|
|
79
|
+
validate() {
|
|
80
|
+
const errors = {};
|
|
81
|
+
const props = this.constructor.PROPS_DEFINITION || [];
|
|
82
|
+
for (const prop of props) {
|
|
83
|
+
if (prop.mandatory) {
|
|
84
|
+
const val = this.get(prop.name);
|
|
85
|
+
if (val === undefined || val === null || val === '') {
|
|
86
|
+
errors[prop.name] = `${prop.name} is required`;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (Object.keys(errors).length > 0) {
|
|
91
|
+
throw new ResourcesErrors_1.ValidationError('Validation failed', errors);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
78
94
|
}
|
|
79
95
|
exports.BaseObject = BaseObject;
|
|
80
96
|
//# sourceMappingURL=BaseObject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseObject.js","sourceRoot":"","sources":["../../src/components/BaseObject.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AAEvC,6CAAyC;AAEzC,iEAA6D;AAC7D,qDAAiD;
|
|
1
|
+
{"version":3,"file":"BaseObject.js","sourceRoot":"","sources":["../../src/components/BaseObject.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -24,9 +24,9 @@ import { BaseObjectType } from './components/types/BaseObjectType';
|
|
|
24
24
|
import { Proxy } from './components/types/ProxyConstructor';
|
|
25
25
|
import { UserType, User, UserProperties } from './components/User';
|
|
26
26
|
import { EntityType, Entity } from './components/Entity';
|
|
27
|
-
import { BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError } from './common/ResourcesErrors';
|
|
27
|
+
import { BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, ValidationError } from './common/ResourcesErrors';
|
|
28
28
|
import * as htmlType from './properties/types/PropertyHTMLType';
|
|
29
29
|
import { DataObjectParams } from './components/types/DataObjectParams';
|
|
30
|
-
export { htmlType, statuses, Core, Property, BaseProperty, BooleanProperty, DateTimeProperty, EnumProperty, HashProperty, CollectionProperty, ArrayProperty, ObjectProperty, NumberProperty, returnAs, StringProperty, MapProperty, FileProperty, ObjectUri, DataObject, AbstractObject, BaseObject, BaseObjectProperties, User, UserProperties, Entity, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, };
|
|
30
|
+
export { htmlType, statuses, Core, Property, BaseProperty, BooleanProperty, DateTimeProperty, EnumProperty, HashProperty, CollectionProperty, ArrayProperty, ObjectProperty, NumberProperty, returnAs, StringProperty, MapProperty, FileProperty, ObjectUri, DataObject, AbstractObject, BaseObject, BaseObjectProperties, User, UserProperties, Entity, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, ValidationError, };
|
|
31
31
|
export type { BasePropertyType, BooleanPropertyType, DataObjectParams, DateTimePropertyType, EnumPropertyType, HashPropertyType, CollectionPropertyType, ArrayPropertyType, ObjectPropertyType, NumberPropertyType, StringPropertyType, MapPropertyType, FilePropertyType, DataObjectClass, DataObjectProperties, BaseObjectType, UserType, Proxy, EntityType, };
|
|
32
32
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,KAAK,QAAQ,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EACJ,eAAe,EACf,mBAAmB,EACrB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACJ,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACV,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACJ,gBAAgB,EAChB,oBAAoB,EACtB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EACJ,kBAAkB,EAClB,sBAAsB,EACxB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAA;AAE3D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAExD,OAAO,EACJ,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.Entity = exports.UserProperties = exports.User = exports.BaseObjectProperties = exports.BaseObject = exports.AbstractObject = exports.DataObject = exports.ObjectUri = exports.FileProperty = exports.MapProperty = exports.StringProperty = exports.returnAs = exports.NumberProperty = exports.ObjectProperty = exports.ArrayProperty = exports.CollectionProperty = exports.HashProperty = exports.EnumProperty = exports.DateTimeProperty = exports.BooleanProperty = exports.BaseProperty = exports.Property = exports.Core = exports.statuses = exports.htmlType = void 0;
|
|
36
|
+
exports.ValidationError = exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.Entity = exports.UserProperties = exports.User = exports.BaseObjectProperties = exports.BaseObject = exports.AbstractObject = exports.DataObject = exports.ObjectUri = exports.FileProperty = exports.MapProperty = exports.StringProperty = exports.returnAs = exports.NumberProperty = exports.ObjectProperty = exports.ArrayProperty = exports.CollectionProperty = exports.HashProperty = exports.EnumProperty = exports.DateTimeProperty = exports.BooleanProperty = exports.BaseProperty = exports.Property = exports.Core = exports.statuses = exports.htmlType = void 0;
|
|
37
37
|
const Core_1 = require("./Core");
|
|
38
38
|
Object.defineProperty(exports, "Core", { enumerable: true, get: function () { return Core_1.Core; } });
|
|
39
39
|
const statuses = __importStar(require("./common/statuses"));
|
|
@@ -86,6 +86,7 @@ Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: fun
|
|
|
86
86
|
Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return ResourcesErrors_1.ForbiddenError; } });
|
|
87
87
|
Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return ResourcesErrors_1.NotFoundError; } });
|
|
88
88
|
Object.defineProperty(exports, "GoneError", { enumerable: true, get: function () { return ResourcesErrors_1.GoneError; } });
|
|
89
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return ResourcesErrors_1.ValidationError; } });
|
|
89
90
|
const htmlType = __importStar(require("./properties/types/PropertyHTMLType"));
|
|
90
91
|
exports.htmlType = htmlType;
|
|
91
92
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAA6B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAA6B;AAuD1B,qFAvDM,WAAI,OAuDN;AAtDP,4DAA6C;AAqD1C,4BAAQ;AApDX,oDAAgD;AAsD7C,yFAtDM,mBAAQ,OAsDN;AArDX,4DAA0E;AAsDvE,6FAtDM,2BAAY,OAsDN;AArDf,gEAAgF;AA+D7E,+FA/DM,+BAAc,OA+DN;AA9DjB,gEAAgF;AA4D7E,+FA5DM,+BAAc,OA4DN;AA3DjB,4DAA0E;AAsDvE,6FAtDM,2BAAY,OAsDN;AArDf,kEAGqC;AAgDlC,gGAlDA,iCAAe,OAkDA;AA/ClB,gEAIoC;AAiDjC,+FApDA,+BAAc,OAoDA;AAEd,yFApDA,yBAAQ,OAoDA;AAlDX,oEAGsC;AAwCnC,iGA1CA,mCAAgB,OA0CA;AAvCnB,4DAA0E;AAyCvE,6FAzCM,2BAAY,OAyCN;AAxCf,wEAGwC;AAsCrC,mGAxCA,uCAAkB,OAwCA;AArCrB,8DAA6E;AAsC1E,8FAtCM,6BAAa,OAsCN;AArChB,0DAAuE;AA0CpE,4FA1CM,yBAAW,OA0CN;AAzCd,4DAA0E;AA0CvE,6FA1CM,2BAAY,OA0CN;AAzCf,gEAA4D;AA4CzD,+FA5CM,+BAAc,OA4CN;AA3CjB,sDAAkD;AAyC/C,0FAzCM,qBAAS,OAyCN;AAvCZ,wDAAoD;AAwCjD,2FAxCM,uBAAU,OAwCN;AAtCb,wDAAoD;AAwCjD,2FAxCM,uBAAU,OAwCN;AAvCb,4EAAwE;AAwCrE,qGAxCM,2CAAoB,OAwCN;AApCvB,4CAAkE;AAqC/D,qFArCgB,WAAI,OAqChB;AACJ,+FAtCsB,qBAAc,OAsCtB;AArCjB,gDAAwD;AAsCrD,uFAtCkB,eAAM,OAsClB;AApCT,8DAOiC;AA8B9B,gGApCA,iCAAe,OAoCA;AACf,kGApCA,mCAAiB,OAoCA;AACjB,+FApCA,gCAAc,OAoCA;AACd,8FApCA,+BAAa,OAoCA;AACb,0FApCA,2BAAS,OAoCA;AACT,gGApCA,iCAAe,OAoCA;AAlClB,8EAA+D;AAI5D,4BAAQ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quatrain/core",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "Core objects for business apps",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"author": "Quatrain Développement SAS <developers@quatrain.com>",
|
|
21
21
|
"license": "AGPL-3.0-only",
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@quatrain/testing": "^1.1.
|
|
23
|
+
"@quatrain/testing": "^1.1.1",
|
|
24
24
|
"@tsconfig/recommended": "^1.0.1",
|
|
25
25
|
"@types/jest": "^29.5.12",
|
|
26
26
|
"@types/node": "^22.10.1",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"typescript": "^5.2.2"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@quatrain/log": "^1.2.
|
|
36
|
+
"@quatrain/log": "^1.2.1",
|
|
37
37
|
"node-persist": "^4.0.4",
|
|
38
38
|
"which": "^5.0.0"
|
|
39
39
|
},
|
|
@@ -15,3 +15,12 @@ export class ForbiddenError extends ResourceError {}
|
|
|
15
15
|
export class NotFoundError extends ResourceError {}
|
|
16
16
|
|
|
17
17
|
export class GoneError extends ResourceError {}
|
|
18
|
+
|
|
19
|
+
export class ValidationError extends ResourceError {
|
|
20
|
+
public errors: Record<string, string>
|
|
21
|
+
|
|
22
|
+
constructor(message: string, errors: Record<string, string> = {}) {
|
|
23
|
+
super(message)
|
|
24
|
+
this.errors = errors
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -5,6 +5,7 @@ import { BaseObjectType } from './types/BaseObjectType'
|
|
|
5
5
|
import { BaseObjectProperties } from './BaseObjectProperties'
|
|
6
6
|
import { AbstractObject } from './AbstractObject'
|
|
7
7
|
import { DataObjectType } from './types/DataObjectType'
|
|
8
|
+
import { ValidationError } from '../common/ResourcesErrors'
|
|
8
9
|
|
|
9
10
|
export class BaseObject extends AbstractObject {
|
|
10
11
|
// implements BaseObjectClass {
|
|
@@ -130,4 +131,26 @@ export class BaseObject extends AbstractObject {
|
|
|
130
131
|
asReference() {
|
|
131
132
|
return this._dataObject.toReference()
|
|
132
133
|
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Validates the object's properties against the model definition.
|
|
137
|
+
* Throws a ValidationError if any mandatory properties are missing or empty.
|
|
138
|
+
*/
|
|
139
|
+
validate() {
|
|
140
|
+
const errors: Record<string, string> = {}
|
|
141
|
+
const props = (this.constructor as typeof BaseObject).PROPS_DEFINITION || []
|
|
142
|
+
|
|
143
|
+
for (const prop of props) {
|
|
144
|
+
if (prop.mandatory) {
|
|
145
|
+
const val = this.get(prop.name)
|
|
146
|
+
if (val === undefined || val === null || val === '') {
|
|
147
|
+
errors[prop.name] = `${prop.name} is required`
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (Object.keys(errors).length > 0) {
|
|
153
|
+
throw new ValidationError('Validation failed', errors)
|
|
154
|
+
}
|
|
155
|
+
}
|
|
133
156
|
}
|
package/src/index.ts
CHANGED
|
@@ -45,6 +45,7 @@ import {
|
|
|
45
45
|
ForbiddenError,
|
|
46
46
|
NotFoundError,
|
|
47
47
|
GoneError,
|
|
48
|
+
ValidationError,
|
|
48
49
|
} from './common/ResourcesErrors'
|
|
49
50
|
import * as htmlType from './properties/types/PropertyHTMLType'
|
|
50
51
|
import { DataObjectParams } from './components/types/DataObjectParams'
|
|
@@ -80,6 +81,7 @@ export {
|
|
|
80
81
|
ForbiddenError,
|
|
81
82
|
NotFoundError,
|
|
82
83
|
GoneError,
|
|
84
|
+
ValidationError,
|
|
83
85
|
}
|
|
84
86
|
|
|
85
87
|
export type {
|