@schorts/shared-kernel 4.2.0 → 4.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/cjs/value-objects/array-value.js +2 -0
- package/dist/cjs/value-objects/array-value.js.map +1 -1
- package/dist/cjs/value-objects/index.js +3 -1
- package/dist/cjs/value-objects/index.js.map +1 -1
- package/dist/cjs/value-objects/object-value.js +2 -0
- package/dist/cjs/value-objects/object-value.js.map +1 -1
- package/dist/cjs/value-objects/url-value.js +23 -0
- package/dist/cjs/value-objects/url-value.js.map +1 -0
- package/dist/esm/value-objects/array-value.js +2 -0
- package/dist/esm/value-objects/array-value.js.map +1 -1
- package/dist/esm/value-objects/index.js +3 -1
- package/dist/esm/value-objects/index.js.map +1 -1
- package/dist/esm/value-objects/object-value.js +2 -0
- package/dist/esm/value-objects/object-value.js.map +1 -1
- package/dist/esm/value-objects/url-value.js +23 -0
- package/dist/esm/value-objects/url-value.js.map +1 -0
- package/dist/types/pub-sub/subscription.d.ts +0 -1
- package/dist/types/pub-sub/subscription.d.ts.map +1 -1
- package/dist/types/telemetry/telemetry.d.ts +0 -1
- package/dist/types/telemetry/telemetry.d.ts.map +1 -1
- package/dist/types/value-objects/array-value.d.ts +2 -0
- package/dist/types/value-objects/array-value.d.ts.map +1 -1
- package/dist/types/value-objects/index.d.ts +1 -0
- package/dist/types/value-objects/index.d.ts.map +1 -1
- package/dist/types/value-objects/object-value.d.ts +2 -0
- package/dist/types/value-objects/object-value.d.ts.map +1 -1
- package/dist/types/value-objects/url-value.d.ts +11 -0
- package/dist/types/value-objects/url-value.d.ts.map +1 -0
- package/package.json +11 -3
- package/.idx/airules.md +0 -186
- package/.idx/dev.nix +0 -54
- package/.vscode/settings.json +0 -7
- package/CHANGELOG +0 -357
- package/__tests__/auth/auth-provider.test.ts +0 -50
- package/__tests__/auth/require-auth.decorator.test.ts +0 -88
- package/__tests__/criteria/criteria.test.ts +0 -159
- package/__tests__/criteria/direction.test.ts +0 -11
- package/__tests__/criteria/filter-criterion.test.ts +0 -15
- package/__tests__/criteria/operator.test.ts +0 -22
- package/__tests__/criteria/order.test.ts +0 -14
- package/__tests__/dao/dao.test.ts +0 -126
- package/__tests__/domain-events/domain-event-primitives.test.ts +0 -34
- package/__tests__/domain-events/domain-event.test.ts +0 -50
- package/__tests__/entities/entity-registry.test.ts +0 -71
- package/__tests__/entities/entity.test.ts +0 -114
- package/__tests__/entities/register-entity.decorator.test.ts +0 -54
- package/__tests__/formatters/pascal-camel-to-snake.test.ts +0 -19
- package/__tests__/http/fetch-http-provider.test.ts +0 -155
- package/__tests__/http/http-provider.test.ts +0 -55
- package/__tests__/json-api/json-api-connector.test.ts +0 -78
- package/__tests__/json-api/json-api-list.test.ts +0 -24
- package/__tests__/json-api/json-api-single.test.ts +0 -24
- package/__tests__/json-api/url-criteria-builder.test.ts +0 -74
- package/__tests__/messages/message.test.ts +0 -16
- package/__tests__/models/base-model.test.ts +0 -10
- package/__tests__/state-manager/state-manager.test.ts +0 -101
- package/__tests__/unit-of-work/unit-of-work.test.ts +0 -47
- package/__tests__/utils/url/url-with-params-builder.test.ts +0 -39
- package/__tests__/value-objects/coordinates-value.test.ts +0 -68
- package/__tests__/value-objects/email-value.test.ts +0 -43
- package/__tests__/value-objects/enum-value.test.ts +0 -51
- package/__tests__/value-objects/integer-value.test.ts +0 -115
- package/__tests__/value-objects/phone-value.test.ts +0 -82
- package/__tests__/value-objects/slug-value.test.ts +0 -43
- package/__tests__/value-objects/string-value.test.ts +0 -121
- package/__tests__/value-objects/uuid-value.test.ts +0 -67
- package/__tests__/value-objects/value-object.test.ts +0 -25
- package/jest.config.js +0 -25
- package/src/abac/index.ts +0 -1
- package/src/abac/predicate.ts +0 -3
- package/src/auth/auth-provider.ts +0 -11
- package/src/auth/exceptions/index.ts +0 -2
- package/src/auth/exceptions/not-authenticated.ts +0 -11
- package/src/auth/exceptions/require-auth-not-implemented-correctly.ts +0 -11
- package/src/auth/index.ts +0 -3
- package/src/auth/require-auth.decorator.ts +0 -42
- package/src/converters/index.ts +0 -1
- package/src/converters/remote-file-to-base64.ts +0 -19
- package/src/criteria/criteria.ts +0 -46
- package/src/criteria/direction.ts +0 -1
- package/src/criteria/exceptions/index.ts +0 -2
- package/src/criteria/exceptions/limit-not-valid.ts +0 -11
- package/src/criteria/exceptions/offset-not-valid.ts +0 -11
- package/src/criteria/index.ts +0 -5
- package/src/criteria/operator.ts +0 -12
- package/src/criteria/order.ts +0 -4
- package/src/dao/dao.ts +0 -16
- package/src/dao/index.ts +0 -1
- package/src/domain-events/domain-event-primitives.ts +0 -10
- package/src/domain-events/domain-event-registry.ts +0 -40
- package/src/domain-events/domain-event.ts +0 -29
- package/src/domain-events/exceptions/domain-event-not-registered.ts +0 -11
- package/src/domain-events/exceptions/index.ts +0 -1
- package/src/domain-events/index.ts +0 -4
- package/src/entities/entity-registry.ts +0 -30
- package/src/entities/entity.ts +0 -25
- package/src/entities/exceptions/entity-not-registered.ts +0 -11
- package/src/entities/exceptions/index.ts +0 -1
- package/src/entities/index.ts +0 -4
- package/src/entities/register-entity.decorator.ts +0 -16
- package/src/event-bus/event-store.ts +0 -9
- package/src/event-bus/event-subscriber.ts +0 -5
- package/src/event-bus/in-memory/async-in-memory-event-bus.ts +0 -67
- package/src/event-bus/in-memory/in-memory-event-store.ts +0 -28
- package/src/event-bus/in-memory/index.ts +0 -2
- package/src/event-bus/index.ts +0 -3
- package/src/formatters/index.ts +0 -1
- package/src/formatters/pascal-camel-to-snake.ts +0 -8
- package/src/http/exceptions/http-exception.ts +0 -8
- package/src/http/exceptions/index.ts +0 -1
- package/src/http/fetch-http-provider.ts +0 -151
- package/src/http/http-interceptor.ts +0 -3
- package/src/http/http-provider.ts +0 -7
- package/src/http/index.ts +0 -5
- package/src/i18n/index.ts +0 -2
- package/src/i18n/shared-kernel-translation-keys.ts +0 -19
- package/src/i18n/translation-resolver.ts +0 -3
- package/src/index.ts +0 -21
- package/src/json-api/exceptions/index.ts +0 -1
- package/src/json-api/exceptions/json-api-errors.ts +0 -17
- package/src/json-api/index.ts +0 -5
- package/src/json-api/json-api-connector.ts +0 -97
- package/src/json-api/json-api-list.ts +0 -13
- package/src/json-api/json-api-single.ts +0 -13
- package/src/json-api/url-criteria-builder.ts +0 -49
- package/src/messages/index.ts +0 -1
- package/src/messages/message.ts +0 -3
- package/src/models/base-model.ts +0 -3
- package/src/models/index.ts +0 -1
- package/src/pub-sub/index.ts +0 -2
- package/src/pub-sub/publisher.ts +0 -3
- package/src/pub-sub/subscription.ts +0 -7
- package/src/rbac/base-resource.ts +0 -3
- package/src/rbac/exceptions/index.ts +0 -1
- package/src/rbac/exceptions/not-authorized.ts +0 -1
- package/src/rbac/index.ts +0 -5
- package/src/rbac/permission.ts +0 -4
- package/src/rbac/rbac-policy.ts +0 -41
- package/src/result/index.ts +0 -1
- package/src/result/result.ts +0 -35
- package/src/state-manager/in-memory-state-manager.ts +0 -22
- package/src/state-manager/index.ts +0 -3
- package/src/state-manager/session-storage-state-manager.ts +0 -47
- package/src/state-manager/state-manager.ts +0 -28
- package/src/telemetry/console-telemetry.ts +0 -27
- package/src/telemetry/index.ts +0 -2
- package/src/telemetry/telemetry.ts +0 -6
- package/src/unit-of-work/index.ts +0 -1
- package/src/unit-of-work/unit-of-work.ts +0 -5
- package/src/utils/index.ts +0 -2
- package/src/utils/url/index.ts +0 -1
- package/src/utils/url/url-with-params-builder.ts +0 -19
- package/src/utils/value-objects/index.ts +0 -1
- package/src/utils/value-objects/rule.ts +0 -3
- package/src/value-objects/array-value.ts +0 -92
- package/src/value-objects/boolean-value.ts +0 -23
- package/src/value-objects/coordinates-value.ts +0 -50
- package/src/value-objects/date-value.ts +0 -36
- package/src/value-objects/email-value.ts +0 -25
- package/src/value-objects/enum-value.ts +0 -27
- package/src/value-objects/exceptions/index.ts +0 -2
- package/src/value-objects/exceptions/value-not-valid.ts +0 -3
- package/src/value-objects/exceptions/values-not-valid.ts +0 -11
- package/src/value-objects/float-valuet.ts +0 -39
- package/src/value-objects/index.ts +0 -17
- package/src/value-objects/integer-value.ts +0 -29
- package/src/value-objects/object-value.ts +0 -84
- package/src/value-objects/phone-value.ts +0 -53
- package/src/value-objects/slug-value.ts +0 -25
- package/src/value-objects/string-value.ts +0 -27
- package/src/value-objects/uuid-value.ts +0 -34
- package/src/value-objects/value-object.ts +0 -7
- package/tsconfig.cjs.json +0 -13
- package/tsconfig.esm.json +0 -12
- package/tsconfig.json +0 -47
|
@@ -41,6 +41,8 @@ class ArrayValue {
|
|
|
41
41
|
return typeof value === "number" && value <= rule.less_than_or_equal;
|
|
42
42
|
if ("type" in rule)
|
|
43
43
|
return typeof value === rule.type;
|
|
44
|
+
if ("enum" in rule)
|
|
45
|
+
return rule.enum.includes(value);
|
|
44
46
|
if ("custom" in rule)
|
|
45
47
|
return rule.custom(value);
|
|
46
48
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-value.js","sourceRoot":"","sources":["../../../src/value-objects/array-value.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"array-value.js","sourceRoot":"","sources":["../../../src/value-objects/array-value.ts"],"names":[],"mappings":";;;AAoBA,MAAsB,UAAU;IACrB,SAAS,GAAG,OAAO,CAAC;IACpB,KAAK,CAAS;IACd,MAAM,CAA8C;IAI7D,YACE,KAAa,EACb,MAAmD;QAEnD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,OAAO,IAAI,CAAC,WAAW;gBACrB,CAAC,CAAE,IAAI,CAAC,MAAiC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACtF,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAA4B,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,GAAQ,EAAE,MAAyB;QACxD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,EAAE;YAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAEvB,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACrF,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,aAAkC,CAAC,CAAC;YACxE,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,KAAU,EAAE,IAAyB;QACxD,IAAI,UAAU,IAAI,IAAI;YAAE,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;QACrE,IAAI,cAAc,IAAI,IAAI;YAAE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAC1F,IAAI,uBAAuB,IAAI,IAAI;YAAE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,qBAAqB,CAAC;QAC7G,IAAI,WAAW,IAAI,IAAI;YAAE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QACpF,IAAI,oBAAoB,IAAI,IAAI;YAAE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC;QACvG,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,OAAO,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC;QACtD,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACpD,IAAI,QAAQ,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,WAAoB;QACzB,IAAI,CAAC,CAAC,WAAW,YAAY,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAExD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1E,CAAC;IAEO,UAAU,CAAO,GAAS;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1C,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC7C,MAAM,KAAK,GAAI,GAAW,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACvC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;CACF;AAzED,gCAyEC"}
|
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.ObjectValue = exports.ArrayValue = exports.FloatValue = exports.DateValue = exports.BooleanValue = exports.CoordinatesValue = exports.IntegerValue = exports.SlugValue = exports.PhoneValue = exports.EmailValue = exports.EnumValue = exports.StringValue = exports.UUIDValue = void 0;
|
|
17
|
+
exports.URLValue = exports.ObjectValue = exports.ArrayValue = exports.FloatValue = exports.DateValue = exports.BooleanValue = exports.CoordinatesValue = exports.IntegerValue = exports.SlugValue = exports.PhoneValue = exports.EmailValue = exports.EnumValue = exports.StringValue = exports.UUIDValue = void 0;
|
|
18
18
|
var uuid_value_1 = require("./uuid-value");
|
|
19
19
|
Object.defineProperty(exports, "UUIDValue", { enumerable: true, get: function () { return uuid_value_1.UUIDValue; } });
|
|
20
20
|
var string_value_1 = require("./string-value");
|
|
@@ -41,5 +41,7 @@ var array_value_1 = require("./array-value");
|
|
|
41
41
|
Object.defineProperty(exports, "ArrayValue", { enumerable: true, get: function () { return array_value_1.ArrayValue; } });
|
|
42
42
|
var object_value_1 = require("./object-value");
|
|
43
43
|
Object.defineProperty(exports, "ObjectValue", { enumerable: true, get: function () { return object_value_1.ObjectValue; } });
|
|
44
|
+
var url_value_1 = require("./url-value");
|
|
45
|
+
Object.defineProperty(exports, "URLValue", { enumerable: true, get: function () { return url_value_1.URLValue; } });
|
|
44
46
|
__exportStar(require("./exceptions"), exports);
|
|
45
47
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA4C;AAAnC,0GAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA4C;AAAnC,0GAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AAEjB,+CAA6B"}
|
|
@@ -44,6 +44,8 @@ class ObjectValue {
|
|
|
44
44
|
return typeof value === "number" && value <= rule.less_than_or_equal;
|
|
45
45
|
if ("type" in rule)
|
|
46
46
|
return typeof value === rule.type;
|
|
47
|
+
if ("enum" in rule)
|
|
48
|
+
return rule.enum.includes(value);
|
|
47
49
|
if ("custom" in rule)
|
|
48
50
|
return rule.custom(value);
|
|
49
51
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-value.js","sourceRoot":"","sources":["../../../src/value-objects/object-value.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"object-value.js","sourceRoot":"","sources":["../../../src/value-objects/object-value.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.URLValue = void 0;
|
|
4
|
+
class URLValue {
|
|
5
|
+
valueType = "URL";
|
|
6
|
+
value;
|
|
7
|
+
allowedHosts;
|
|
8
|
+
constructor(value, allowedHosts = []) {
|
|
9
|
+
this.value = value;
|
|
10
|
+
this.allowedHosts = allowedHosts;
|
|
11
|
+
}
|
|
12
|
+
get isValid() {
|
|
13
|
+
return this.allowedHosts.length === 0 || this.allowedHosts.includes(this.value.hostname);
|
|
14
|
+
}
|
|
15
|
+
equals(valueObject) {
|
|
16
|
+
return (valueObject instanceof URLValue &&
|
|
17
|
+
this.isValid &&
|
|
18
|
+
valueObject.isValid &&
|
|
19
|
+
this.value.href === valueObject.value.href);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.URLValue = URLValue;
|
|
23
|
+
//# sourceMappingURL=url-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-value.js","sourceRoot":"","sources":["../../../src/value-objects/url-value.ts"],"names":[],"mappings":";;;AAEA,MAAsB,QAAQ;IACnB,SAAS,GAAG,KAAK,CAAC;IAClB,KAAK,CAAM;IACX,YAAY,CAAgB;IAErC,YAAY,KAAU,EAAE,eAA8B,EAAE;QACtD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,CAAC,WAAoB;QACzB,OAAO,CACL,WAAW,YAAY,QAAQ;YAC/B,IAAI,CAAC,OAAO;YACZ,WAAW,CAAC,OAAO;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,IAAI,CAC3C,CAAC;IACJ,CAAC;CAGF;AAxBD,4BAwBC"}
|
|
@@ -41,6 +41,8 @@ class ArrayValue {
|
|
|
41
41
|
return typeof value === "number" && value <= rule.less_than_or_equal;
|
|
42
42
|
if ("type" in rule)
|
|
43
43
|
return typeof value === rule.type;
|
|
44
|
+
if ("enum" in rule)
|
|
45
|
+
return rule.enum.includes(value);
|
|
44
46
|
if ("custom" in rule)
|
|
45
47
|
return rule.custom(value);
|
|
46
48
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-value.js","sourceRoot":"","sources":["../../../src/value-objects/array-value.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"array-value.js","sourceRoot":"","sources":["../../../src/value-objects/array-value.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.ObjectValue = exports.ArrayValue = exports.FloatValue = exports.DateValue = exports.BooleanValue = exports.CoordinatesValue = exports.IntegerValue = exports.SlugValue = exports.PhoneValue = exports.EmailValue = exports.EnumValue = exports.StringValue = exports.UUIDValue = void 0;
|
|
17
|
+
exports.URLValue = exports.ObjectValue = exports.ArrayValue = exports.FloatValue = exports.DateValue = exports.BooleanValue = exports.CoordinatesValue = exports.IntegerValue = exports.SlugValue = exports.PhoneValue = exports.EmailValue = exports.EnumValue = exports.StringValue = exports.UUIDValue = void 0;
|
|
18
18
|
var uuid_value_1 = require("./uuid-value");
|
|
19
19
|
Object.defineProperty(exports, "UUIDValue", { enumerable: true, get: function () { return uuid_value_1.UUIDValue; } });
|
|
20
20
|
var string_value_1 = require("./string-value");
|
|
@@ -41,5 +41,7 @@ var array_value_1 = require("./array-value");
|
|
|
41
41
|
Object.defineProperty(exports, "ArrayValue", { enumerable: true, get: function () { return array_value_1.ArrayValue; } });
|
|
42
42
|
var object_value_1 = require("./object-value");
|
|
43
43
|
Object.defineProperty(exports, "ObjectValue", { enumerable: true, get: function () { return object_value_1.ObjectValue; } });
|
|
44
|
+
var url_value_1 = require("./url-value");
|
|
45
|
+
Object.defineProperty(exports, "URLValue", { enumerable: true, get: function () { return url_value_1.URLValue; } });
|
|
44
46
|
__exportStar(require("./exceptions"), exports);
|
|
45
47
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA4C;AAAnC,0GAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,+CAA4C;AAAnC,0GAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AAEjB,+CAA6B"}
|
|
@@ -44,6 +44,8 @@ class ObjectValue {
|
|
|
44
44
|
return typeof value === "number" && value <= rule.less_than_or_equal;
|
|
45
45
|
if ("type" in rule)
|
|
46
46
|
return typeof value === rule.type;
|
|
47
|
+
if ("enum" in rule)
|
|
48
|
+
return rule.enum.includes(value);
|
|
47
49
|
if ("custom" in rule)
|
|
48
50
|
return rule.custom(value);
|
|
49
51
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-value.js","sourceRoot":"","sources":["../../../src/value-objects/object-value.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"object-value.js","sourceRoot":"","sources":["../../../src/value-objects/object-value.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.URLValue = void 0;
|
|
4
|
+
class URLValue {
|
|
5
|
+
valueType = "URL";
|
|
6
|
+
value;
|
|
7
|
+
allowedHosts;
|
|
8
|
+
constructor(value, allowedHosts = []) {
|
|
9
|
+
this.value = value;
|
|
10
|
+
this.allowedHosts = allowedHosts;
|
|
11
|
+
}
|
|
12
|
+
get isValid() {
|
|
13
|
+
return this.allowedHosts.length === 0 || this.allowedHosts.includes(this.value.hostname);
|
|
14
|
+
}
|
|
15
|
+
equals(valueObject) {
|
|
16
|
+
return (valueObject instanceof URLValue &&
|
|
17
|
+
this.isValid &&
|
|
18
|
+
valueObject.isValid &&
|
|
19
|
+
this.value.href === valueObject.value.href);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.URLValue = URLValue;
|
|
23
|
+
//# sourceMappingURL=url-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-value.js","sourceRoot":"","sources":["../../../src/value-objects/url-value.ts"],"names":[],"mappings":";;;AAEA,MAAsB,QAAQ;IACnB,SAAS,GAAG,KAAK,CAAC;IAClB,KAAK,CAAM;IACX,YAAY,CAAgB;IAErC,YAAY,KAAU,EAAE,eAA8B,EAAE;QACtD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,CAAC,WAAoB;QACzB,OAAO,CACL,WAAW,YAAY,QAAQ;YAC/B,IAAI,CAAC,OAAO;YACZ,WAAW,CAAC,OAAO;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC,IAAI,CAC3C,CAAC;IACJ,CAAC;CAGF;AAxBD,4BAwBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../../src/pub-sub/subscription.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,
|
|
1
|
+
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../../src/pub-sub/subscription.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,IAAI,IAAI,CAAC;IAChB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IACjF,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,UAAU,IAAI,IAAI,CAAC;CACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/telemetry/telemetry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/telemetry/telemetry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACnD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-value.d.ts","sourceRoot":"","sources":["../../../src/value-objects/array-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE9D,MAAM,MAAM,cAAc,CAAC,IAAI,IAC3B;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAClB;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,qBAAqB,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GACrB;IAAE,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAA;CAAE,CAAC;AAEzC,KAAK,YAAY,CAAC,IAAI,IAAI;KACvB,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,SAAS,GAC7C,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAC3B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC5B,CAAC;AAEF,8BAAsB,UAAU,CAAC,IAAI,GAAG,GAAG,CAAE,YAAW,WAAW;IACjE,QAAQ,CAAC,SAAS,WAAW;IAC7B,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7D,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;gBAGrC,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE;IAMrD,IAAI,OAAO,IAAI,OAAO,CAMrB;IAED,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"array-value.d.ts","sourceRoot":"","sources":["../../../src/value-objects/array-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE9D,MAAM,MAAM,cAAc,CAAC,IAAI,IAC3B;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAClB;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,qBAAqB,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GACrB;IAAE,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;CAAE,GAC7B;IAAE,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAA;CAAE,CAAC;AAEzC,KAAK,YAAY,CAAC,IAAI,IAAI;KACvB,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,SAAS,GAC7C,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAC3B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC5B,CAAC;AAEF,8BAAsB,UAAU,CAAC,IAAI,GAAG,GAAG,CAAE,YAAW,WAAW;IACjE,QAAQ,CAAC,SAAS,WAAW;IAC7B,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7D,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;gBAGrC,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE;IAMrD,IAAI,OAAO,IAAI,OAAO,CAMrB;IAED,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;IAapB,MAAM,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO;IAOrC,OAAO,CAAC,UAAU;CAcnB"}
|
|
@@ -12,5 +12,6 @@ export { DateValue } from "./date-value";
|
|
|
12
12
|
export { FloatValue } from "./float-valuet";
|
|
13
13
|
export { ArrayValue } from "./array-value";
|
|
14
14
|
export { ObjectValue } from "./object-value";
|
|
15
|
+
export { URLValue } from "./url-value";
|
|
15
16
|
export * from "./exceptions";
|
|
16
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/value-objects/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/value-objects/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,cAAc,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-value.d.ts","sourceRoot":"","sources":["../../../src/value-objects/object-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE9D,MAAM,MAAM,cAAc,CAAC,IAAI,IAC3B;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAClB;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,qBAAqB,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GACrB;IAAE,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,YAAY,CAAC,IAAI,IAAI;KAC9B,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,SAAS,GAC7C,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAC3B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC5B,CAAC;AAEF,8BAAsB,WAAW,CAAC,IAAI,GAAG,GAAG,CAAE,YAAW,WAAW;IAClE,QAAQ,CAAC,SAAS,YAAY;IAC9B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAE5B,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;IAKnD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,MAAM,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO;IAOrC,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"object-value.d.ts","sourceRoot":"","sources":["../../../src/value-objects/object-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAE9D,MAAM,MAAM,cAAc,CAAC,IAAI,IAC3B;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GAClB;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,qBAAqB,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GACrB;IAAE,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,YAAY,CAAC,IAAI,IAAI;KAC9B,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,SAAS,GAC7C,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAC3B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC5B,CAAC;AAEF,8BAAsB,WAAW,CAAC,IAAI,GAAG,GAAG,CAAE,YAAW,WAAW;IAClE,QAAQ,CAAC,SAAS,YAAY;IAC9B,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAE5B,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC;IAKnD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,MAAM,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO;IAOrC,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,UAAU;CAcnB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ValueObject } from "./";
|
|
2
|
+
export declare abstract class URLValue implements ValueObject {
|
|
3
|
+
readonly valueType = "URL";
|
|
4
|
+
readonly value: URL;
|
|
5
|
+
readonly allowedHosts: Array<string>;
|
|
6
|
+
constructor(value: URL, allowedHosts?: Array<string>);
|
|
7
|
+
get isValid(): boolean;
|
|
8
|
+
equals(valueObject: unknown): boolean;
|
|
9
|
+
abstract readonly attributeName: string;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=url-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-value.d.ts","sourceRoot":"","sources":["../../../src/value-objects/url-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAEtC,8BAAsB,QAAS,YAAW,WAAW;IACnD,QAAQ,CAAC,SAAS,SAAS;IAC3B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAEzB,KAAK,EAAE,GAAG,EAAE,YAAY,GAAE,KAAK,CAAC,MAAM,CAAM;IAKxD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,MAAM,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO;IASrC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CACzC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schorts/shared-kernel",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.2",
|
|
4
4
|
"description": "A modular, type-safe foundation for building expressive, maintainable applications. This package provides core abstractions for domain modeling, HTTP integration, authentication, state management, and more — designed to be framework-agnostic and highly extensible.",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -160,10 +160,18 @@
|
|
|
160
160
|
"entities",
|
|
161
161
|
"http",
|
|
162
162
|
"domain-events",
|
|
163
|
-
"unit-of-work"
|
|
163
|
+
"unit-of-work",
|
|
164
|
+
"hexagonal-architecture",
|
|
165
|
+
"domain-model",
|
|
166
|
+
"ddd"
|
|
164
167
|
],
|
|
165
168
|
"bugs": {
|
|
166
169
|
"url": "https://github.com/schorts99/shared-kernel/issues"
|
|
167
170
|
},
|
|
168
|
-
"homepage": "https://github.com/schorts99/shared-kernel#readme"
|
|
171
|
+
"homepage": "https://github.com/schorts99/shared-kernel#readme",
|
|
172
|
+
"files": [
|
|
173
|
+
"dist",
|
|
174
|
+
"README.md",
|
|
175
|
+
"LICENSE"
|
|
176
|
+
]
|
|
169
177
|
}
|
package/.idx/airules.md
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
# Gemini AI Rules for Firebase Studio Nix Projects
|
|
2
|
-
|
|
3
|
-
## 1. Persona & Expertise
|
|
4
|
-
|
|
5
|
-
You are an expert in configuring development environments within Firebase Studio. You are proficient in using the `dev.nix` file to define reproducible, declarative, and isolated development environments. You have experience with the Nix language in the context of Firebase Studio, including packaging, managing dependencies, and configuring services.
|
|
6
|
-
|
|
7
|
-
## 2. Project Context
|
|
8
|
-
|
|
9
|
-
This project is a Nix-based environment for Firebase Studio, defined by a `.idx/dev.nix` file. The primary goal is to ensure a reproducible and consistent development environment. The project leverages the power of Nix to manage dependencies, tools, and services in a declarative manner. **Note:** This is not a Nix Flake-based environment.
|
|
10
|
-
|
|
11
|
-
## 3. `dev.nix` Configuration
|
|
12
|
-
|
|
13
|
-
The `.idx/dev.nix` file is the single source of truth for the development environment. Here are some of the most common configuration options:
|
|
14
|
-
|
|
15
|
-
### `channel`
|
|
16
|
-
The `nixpkgs` channel determines which package versions are available.
|
|
17
|
-
|
|
18
|
-
```nix
|
|
19
|
-
{ pkgs, ... }: {
|
|
20
|
-
channel = "stable-24.05"; # or "unstable"
|
|
21
|
-
}
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### `packages`
|
|
25
|
-
A list of packages to install from the specified channel. You can search for packages on the [NixOS package search](https://search.nixos.org/packages).
|
|
26
|
-
|
|
27
|
-
```nix
|
|
28
|
-
{ pkgs, ... }: {
|
|
29
|
-
packages = [
|
|
30
|
-
pkgs.nodejs_20
|
|
31
|
-
pkgs.go
|
|
32
|
-
];
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
### `env`
|
|
37
|
-
A set of environment variables to define within the workspace.
|
|
38
|
-
|
|
39
|
-
```nix
|
|
40
|
-
{ pkgs, ... }: {
|
|
41
|
-
env = {
|
|
42
|
-
API_KEY = "your-secret-key";
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### `idx.extensions`
|
|
48
|
-
A list of VS Code extensions to install from the [Open VSX Registry](https://open-vsx.org/).
|
|
49
|
-
|
|
50
|
-
```nix
|
|
51
|
-
{ pkgs, ... }: {
|
|
52
|
-
idx = {
|
|
53
|
-
extensions = [
|
|
54
|
-
"vscodevim.vim"
|
|
55
|
-
"golang.go"
|
|
56
|
-
];
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### `idx.workspace`
|
|
62
|
-
Workspace lifecycle hooks.
|
|
63
|
-
|
|
64
|
-
- **`onCreate`:** Runs when a workspace is first created.
|
|
65
|
-
- **`onStart`:** Runs every time the workspace is (re)started.
|
|
66
|
-
|
|
67
|
-
```nix
|
|
68
|
-
{ pkgs, ... }: {
|
|
69
|
-
idx = {
|
|
70
|
-
workspace = {
|
|
71
|
-
onCreate = {
|
|
72
|
-
npm-install = "npm install";
|
|
73
|
-
};
|
|
74
|
-
onStart = {
|
|
75
|
-
start-server = "npm run dev";
|
|
76
|
-
};
|
|
77
|
-
};
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### `idx.previews`
|
|
83
|
-
Configure a web preview for your application. The `$PORT` variable is dynamically assigned.
|
|
84
|
-
|
|
85
|
-
```nix
|
|
86
|
-
{ pkgs, ... }: {
|
|
87
|
-
idx = {
|
|
88
|
-
previews = {
|
|
89
|
-
enable = true;
|
|
90
|
-
previews = {
|
|
91
|
-
web = {
|
|
92
|
-
command = ["npm" "run" "dev" "--" "--port" "$PORT"];
|
|
93
|
-
manager = "web";
|
|
94
|
-
};
|
|
95
|
-
};
|
|
96
|
-
};
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## 4. Example Setups for Common Frameworks
|
|
102
|
-
|
|
103
|
-
Here are some examples of how to configure your `dev.nix` for common languages and frameworks.
|
|
104
|
-
|
|
105
|
-
### Node.js Web Server
|
|
106
|
-
This example sets up a Node.js environment, installs dependencies, and runs a development server with a web preview.
|
|
107
|
-
|
|
108
|
-
```nix
|
|
109
|
-
{ pkgs, ... }: {
|
|
110
|
-
packages = [ pkgs.nodejs_20 ];
|
|
111
|
-
idx = {
|
|
112
|
-
extensions = [ "dbaeumer.vscode-eslint" ];
|
|
113
|
-
workspace = {
|
|
114
|
-
onCreate = {
|
|
115
|
-
npm-install = "npm install";
|
|
116
|
-
};
|
|
117
|
-
onStart = {
|
|
118
|
-
dev-server = "npm run dev";
|
|
119
|
-
};
|
|
120
|
-
};
|
|
121
|
-
previews = {
|
|
122
|
-
enable = true;
|
|
123
|
-
previews = {
|
|
124
|
-
web = {
|
|
125
|
-
command = ["npm" "run" "dev" "--" "--port" "$PORT"];
|
|
126
|
-
manager = "web";
|
|
127
|
-
};
|
|
128
|
-
};
|
|
129
|
-
};
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
### Python with Flask
|
|
135
|
-
This example sets up a Python environment for a Flask web server. Remember to create a `requirements.txt` file with `Flask` in it.
|
|
136
|
-
|
|
137
|
-
```nix
|
|
138
|
-
{ pkgs, ... }: {
|
|
139
|
-
packages = [ pkgs.python3 pkgs.pip ];
|
|
140
|
-
idx = {
|
|
141
|
-
extensions = [ "ms-python.python" ];
|
|
142
|
-
workspace = {
|
|
143
|
-
onCreate = {
|
|
144
|
-
pip-install = "pip install -r requirements.txt";
|
|
145
|
-
};
|
|
146
|
-
};
|
|
147
|
-
previews = {
|
|
148
|
-
enable = true;
|
|
149
|
-
previews = {
|
|
150
|
-
web = {
|
|
151
|
-
command = ["flask" "run" "--port" "$PORT"];
|
|
152
|
-
manager = "web";
|
|
153
|
-
};
|
|
154
|
-
};
|
|
155
|
-
};
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### Go CLI
|
|
161
|
-
This example sets up a Go environment for building a command-line interface.
|
|
162
|
-
|
|
163
|
-
```nix
|
|
164
|
-
{ pkgs, ... }: {
|
|
165
|
-
packages = [ pkgs.go ];
|
|
166
|
-
idx = {
|
|
167
|
-
extensions = [ "golang.go" ];
|
|
168
|
-
workspace = {
|
|
169
|
-
onCreate = {
|
|
170
|
-
go-mod = "go mod tidy";
|
|
171
|
-
};
|
|
172
|
-
onStart = {
|
|
173
|
-
run-app = "go run .";
|
|
174
|
-
};
|
|
175
|
-
};
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
## 5. Interaction Guidelines
|
|
181
|
-
|
|
182
|
-
- Assume the user is familiar with general software development concepts but may be new to Nix and Firebase Studio.
|
|
183
|
-
- When generating Nix code, provide comments to explain the purpose of different sections.
|
|
184
|
-
- Explain the benefits of using `dev.nix` for reproducibility and dependency management.
|
|
185
|
-
- If a request is ambiguous, ask for clarification on the desired tools, libraries, and versions to be included in the environment.
|
|
186
|
-
- When suggesting changes to `dev.nix`, explain the impact of the changes on the development environment and remind the user to reload the environment.
|
package/.idx/dev.nix
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# To learn more about how to use Nix to configure your environment
|
|
2
|
-
# see: https://developers.google.com/idx/guides/customize-idx-env
|
|
3
|
-
{ pkgs, ... }: {
|
|
4
|
-
# Which nixpkgs channel to use.
|
|
5
|
-
channel = "stable-24.05"; # or "unstable"
|
|
6
|
-
# Use https://search.nixos.org/packages to find packages
|
|
7
|
-
packages = [
|
|
8
|
-
# pkgs.go
|
|
9
|
-
# pkgs.python311
|
|
10
|
-
# pkgs.python311Packages.pip
|
|
11
|
-
pkgs.nodejs_20
|
|
12
|
-
# pkgs.nodePackages.nodemon
|
|
13
|
-
];
|
|
14
|
-
# Sets environment variables in the workspace
|
|
15
|
-
env = {};
|
|
16
|
-
idx = {
|
|
17
|
-
# Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
|
|
18
|
-
extensions = [
|
|
19
|
-
# "vscodevim.vim"
|
|
20
|
-
"google.gemini-cli-vscode-ide-companion"
|
|
21
|
-
];
|
|
22
|
-
# Enable previews
|
|
23
|
-
previews = {
|
|
24
|
-
enable = true;
|
|
25
|
-
previews = {
|
|
26
|
-
# web = {
|
|
27
|
-
# # Example: run "npm run dev" with PORT set to IDX's defined port for previews,
|
|
28
|
-
# # and show it in IDX's web preview panel
|
|
29
|
-
# command = ["npm" "run" "dev"];
|
|
30
|
-
# manager = "web";
|
|
31
|
-
# env = {
|
|
32
|
-
# # Environment variables to set for your server
|
|
33
|
-
# PORT = "$PORT";
|
|
34
|
-
# };
|
|
35
|
-
# };
|
|
36
|
-
};
|
|
37
|
-
};
|
|
38
|
-
# Workspace lifecycle hooks
|
|
39
|
-
workspace = {
|
|
40
|
-
# Runs when a workspace is first created
|
|
41
|
-
onCreate = {
|
|
42
|
-
# Example: install JS dependencies from NPM
|
|
43
|
-
# npm-install = "npm install";
|
|
44
|
-
# Open editors for the following files by default, if they exist:
|
|
45
|
-
default.openFiles = [ ".idx/dev.nix" "README.md" ];
|
|
46
|
-
};
|
|
47
|
-
# Runs when the workspace is (re)started
|
|
48
|
-
onStart = {
|
|
49
|
-
# Example: start a background task to watch and re-build backend code
|
|
50
|
-
# watch-backend = "npm run watch-backend";
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
}
|