@haskou/value-objects 6.0.0 → 6.1.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.
- package/README.md +16 -0
- package/dist/errors/NullObjectCreationDisabledError.d.ts +5 -0
- package/dist/errors/NullObjectCreationDisabledError.d.ts.map +1 -0
- package/dist/errors/NullObjectCreationDisabledError.js +12 -0
- package/dist/errors/NullObjectCreationDisabledError.js.map +1 -0
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +1 -0
- package/dist/errors/index.js.map +1 -1
- package/dist/value-objects/ValueObject.d.ts +3 -0
- package/dist/value-objects/ValueObject.d.ts.map +1 -1
- package/dist/value-objects/ValueObject.js +11 -0
- package/dist/value-objects/ValueObject.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -60,6 +60,22 @@ try {
|
|
|
60
60
|
}
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
+
## Nullish construction
|
|
64
|
+
|
|
65
|
+
Automatic `NullObject` creation remains enabled by default for compatibility. Applications that prefer strict construction can disable it globally:
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
import { StringValueObject, ValueObject } from '@haskou/value-objects';
|
|
69
|
+
|
|
70
|
+
ValueObject.disableNullObjectCreation();
|
|
71
|
+
|
|
72
|
+
new StringValueObject(undefined as never); // throws NullObjectCreationDisabledError
|
|
73
|
+
|
|
74
|
+
ValueObject.enableNullObjectCreation();
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
The VitePress guide documents the default and strict modes in detail.
|
|
78
|
+
|
|
63
79
|
## Available categories
|
|
64
80
|
|
|
65
81
|
| Category | Examples |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NullObjectCreationDisabledError.d.ts","sourceRoot":"","sources":["../../src/errors/NullObjectCreationDisabledError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,+BAAgC,SAAQ,WAAW;gBAClD,eAAe,EAAE,MAAM;CAMpC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NullObjectCreationDisabledError = void 0;
|
|
4
|
+
const DomainError_1 = require("./DomainError");
|
|
5
|
+
class NullObjectCreationDisabledError extends DomainError_1.DomainError {
|
|
6
|
+
constructor(valueObjectName) {
|
|
7
|
+
super(`[NullObjectCreationDisabledError]: ${valueObjectName} received null or undefined while automatic NullObject creation is disabled`);
|
|
8
|
+
Object.setPrototypeOf(this, NullObjectCreationDisabledError.prototype);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.NullObjectCreationDisabledError = NullObjectCreationDisabledError;
|
|
12
|
+
//# sourceMappingURL=NullObjectCreationDisabledError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NullObjectCreationDisabledError.js","sourceRoot":"","sources":["../../src/errors/NullObjectCreationDisabledError.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAE5C,MAAa,+BAAgC,SAAQ,yBAAW;IAC9D,YAAY,eAAuB;QACjC,KAAK,CACH,sCAAsC,eAAe,6EAA6E,CACnI,CAAC;QACF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,+BAA+B,CAAC,SAAS,CAAC,CAAC;IACzE,CAAC;CACF;AAPD,0EAOC"}
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export * from './InvalidPositiveNumberError';
|
|
|
18
18
|
export * from './InvalidStringLengthError';
|
|
19
19
|
export * from './InvalidTimestampIntervalError';
|
|
20
20
|
export * from './InvalidLengthError';
|
|
21
|
+
export * from './NullObjectCreationDisabledError';
|
|
21
22
|
export * from './NullObjectError';
|
|
22
23
|
export * from './ValueNotInEnumError';
|
|
23
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
|
package/dist/errors/index.js
CHANGED
|
@@ -21,6 +21,7 @@ tslib_1.__exportStar(require("./InvalidPositiveNumberError"), exports);
|
|
|
21
21
|
tslib_1.__exportStar(require("./InvalidStringLengthError"), exports);
|
|
22
22
|
tslib_1.__exportStar(require("./InvalidTimestampIntervalError"), exports);
|
|
23
23
|
tslib_1.__exportStar(require("./InvalidLengthError"), exports);
|
|
24
|
+
tslib_1.__exportStar(require("./NullObjectCreationDisabledError"), exports);
|
|
24
25
|
tslib_1.__exportStar(require("./NullObjectError"), exports);
|
|
25
26
|
tslib_1.__exportStar(require("./ValueNotInEnumError"), exports);
|
|
26
27
|
//# sourceMappingURL=index.js.map
|
package/dist/errors/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,wDAA8B;AAC9B,8DAAoC;AACpC,4DAAkC;AAClC,kEAAwC;AACxC,6DAAmC;AACnC,8DAAoC;AACpC,+DAAqC;AACrC,6DAAmC;AACnC,gEAAsC;AACtC,iEAAuC;AACvC,kEAAwC;AACxC,8DAAoC;AACpC,gEAAsC;AACtC,+DAAqC;AACrC,iEAAuC;AACvC,uEAA6C;AAC7C,qEAA2C;AAC3C,0EAAgD;AAChD,+DAAqC;AACrC,4DAAkC;AAClC,gEAAsC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,wDAA8B;AAC9B,8DAAoC;AACpC,4DAAkC;AAClC,kEAAwC;AACxC,6DAAmC;AACnC,8DAAoC;AACpC,+DAAqC;AACrC,6DAAmC;AACnC,gEAAsC;AACtC,iEAAuC;AACvC,kEAAwC;AACxC,8DAAoC;AACpC,gEAAsC;AACtC,+DAAqC;AACrC,iEAAuC;AACvC,uEAA6C;AAC7C,qEAA2C;AAC3C,0EAAgD;AAChD,+DAAqC;AACrC,4EAAkD;AAClD,4DAAkC;AAClC,gEAAsC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { Primitive, Nullish } from '../types';
|
|
2
2
|
export declare abstract class ValueObject<T extends Primitive = Primitive> {
|
|
3
|
+
private static nullObjectCreationEnabled;
|
|
3
4
|
protected readonly value: T;
|
|
5
|
+
static disableNullObjectCreation(): void;
|
|
6
|
+
static enableNullObjectCreation(): void;
|
|
4
7
|
constructor(value: T | Nullish);
|
|
5
8
|
private isNullish;
|
|
6
9
|
protected clone(value: T): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueObject.d.ts","sourceRoot":"","sources":["../../src/value-objects/ValueObject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ValueObject.d.ts","sourceRoot":"","sources":["../../src/value-objects/ValueObject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAG9C,8BAAsB,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC/D,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAQ;IAEhD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAG,CAAC,CAAC;WAEf,yBAAyB,IAAI,IAAI;WAIjC,wBAAwB,IAAI,IAAI;gBAIlC,KAAK,EAAE,CAAC,GAAG,OAAO;IAW9B,OAAO,CAAC,SAAS;IAIjB,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAMxB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAMjC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAQhC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAInC,OAAO,IAAI,CAAC;IAIZ,QAAQ,IAAI,MAAM;CAG1B"}
|
|
@@ -1,11 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ValueObject = void 0;
|
|
4
|
+
const errors_1 = require("../errors");
|
|
4
5
|
const NullObject_1 = require("./NullObject");
|
|
5
6
|
class ValueObject {
|
|
7
|
+
static nullObjectCreationEnabled = true;
|
|
6
8
|
value;
|
|
9
|
+
static disableNullObjectCreation() {
|
|
10
|
+
ValueObject.nullObjectCreationEnabled = false;
|
|
11
|
+
}
|
|
12
|
+
static enableNullObjectCreation() {
|
|
13
|
+
ValueObject.nullObjectCreationEnabled = true;
|
|
14
|
+
}
|
|
7
15
|
constructor(value) {
|
|
8
16
|
if (this.isNullish(value)) {
|
|
17
|
+
if (ValueObject.nullObjectCreationEnabled === false) {
|
|
18
|
+
throw new errors_1.NullObjectCreationDisabledError(new.target.name);
|
|
19
|
+
}
|
|
9
20
|
return NullObject_1.NullObject.new(new.target);
|
|
10
21
|
}
|
|
11
22
|
this.value = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueObject.js","sourceRoot":"","sources":["../../src/value-objects/ValueObject.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ValueObject.js","sourceRoot":"","sources":["../../src/value-objects/ValueObject.ts"],"names":[],"mappings":";;;AAAA,sCAA4D;AAE5D,6CAA0C;AAE1C,MAAsB,WAAW;IACvB,MAAM,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAE7B,KAAK,CAAK;IAEtB,MAAM,CAAC,yBAAyB;QACrC,WAAW,CAAC,yBAAyB,GAAG,KAAK,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,wBAAwB;QACpC,WAAW,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAC/C,CAAC;IAED,YAAY,KAAkB;QAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,WAAW,CAAC,yBAAyB,KAAK,KAAK,EAAE,CAAC;gBACpD,MAAM,IAAI,wCAA+B,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC;YAED,OAAO,uBAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,SAAS,CAAC,KAAkB;QAClC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;IAC/C,CAAC;IAES,KAAK,CAAC,KAAQ;QACtB,OAAO,IAAK,IAAI,CAAC,WAA8C,CAC7D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CACnC,CAAC;IACZ,CAAC;IAEM,QAAQ,CAAC,KAAc;QAC5B,MAAM,UAAU,GAAG,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAE1E,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC;IACnC,CAAC;IAEM,OAAO,CAAC,KAAc;QAC3B,OAAO,CACL,KAAK,YAAY,WAAW;YAC5B,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;YACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CACrB,CAAC;IACJ,CAAC;IAEM,UAAU,CAAC,KAAc;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;IACvC,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,KAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;;AA1DH,kCA2DC"}
|
package/package.json
CHANGED