@thisisagile/easy 17.26.1 → 17.26.3
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/chunk-27MBNT3X.mjs +25 -0
- package/dist/chunk-27MBNT3X.mjs.map +1 -0
- package/dist/chunk-35SXXNQO.mjs +20 -0
- package/dist/chunk-35SXXNQO.mjs.map +1 -0
- package/dist/chunk-3M6NLHSO.mjs +18 -0
- package/dist/chunk-3M6NLHSO.mjs.map +1 -0
- package/dist/chunk-4CRBLF44.mjs +56 -0
- package/dist/chunk-4CRBLF44.mjs.map +1 -0
- package/dist/chunk-4K4X43SV.mjs +164 -0
- package/dist/chunk-4K4X43SV.mjs.map +1 -0
- package/dist/chunk-4LVZOQ6O.mjs +58 -0
- package/dist/chunk-4LVZOQ6O.mjs.map +1 -0
- package/dist/chunk-4N72FQFX.mjs +16 -0
- package/dist/chunk-4N72FQFX.mjs.map +1 -0
- package/dist/chunk-5AV36UKS.mjs +20 -0
- package/dist/chunk-5AV36UKS.mjs.map +1 -0
- package/dist/chunk-5DJPREIN.mjs +142 -0
- package/dist/chunk-5DJPREIN.mjs.map +1 -0
- package/dist/chunk-5ZHEIMZ7.mjs +79 -0
- package/dist/chunk-5ZHEIMZ7.mjs.map +1 -0
- package/dist/chunk-6QFV73AS.mjs +55 -0
- package/dist/chunk-6QFV73AS.mjs.map +1 -0
- package/dist/chunk-6UDAYZAZ.mjs +53 -0
- package/dist/chunk-6UDAYZAZ.mjs.map +1 -0
- package/dist/chunk-7HTKPMTI.mjs +72 -0
- package/dist/chunk-7HTKPMTI.mjs.map +1 -0
- package/dist/chunk-ABGKS4KE.mjs +297 -0
- package/dist/chunk-ABGKS4KE.mjs.map +1 -0
- package/dist/chunk-ADJAEGCT.mjs +21 -0
- package/dist/chunk-ADJAEGCT.mjs.map +1 -0
- package/dist/chunk-AGTB4HMP.mjs +11 -0
- package/dist/chunk-AGTB4HMP.mjs.map +1 -0
- package/dist/chunk-AINW2476.mjs +90 -0
- package/dist/chunk-AINW2476.mjs.map +1 -0
- package/dist/chunk-BDA5LB4S.mjs +29 -0
- package/dist/chunk-BDA5LB4S.mjs.map +1 -0
- package/dist/chunk-BIEWRRM7.mjs +26 -0
- package/dist/chunk-BIEWRRM7.mjs.map +1 -0
- package/dist/chunk-BIHKQLEE.mjs +40 -0
- package/dist/chunk-BIHKQLEE.mjs.map +1 -0
- package/dist/chunk-CO2AFYVD.mjs +43 -0
- package/dist/chunk-CO2AFYVD.mjs.map +1 -0
- package/dist/chunk-CSAPGLC7.mjs +94 -0
- package/dist/chunk-CSAPGLC7.mjs.map +1 -0
- package/dist/chunk-CSHFNF34.mjs +35 -0
- package/dist/chunk-CSHFNF34.mjs.map +1 -0
- package/dist/chunk-CWWAGBYB.mjs +46 -0
- package/dist/chunk-CWWAGBYB.mjs.map +1 -0
- package/dist/chunk-DEJ7A5PY.mjs +43 -0
- package/dist/chunk-DEJ7A5PY.mjs.map +1 -0
- package/dist/chunk-DRABNNX2.mjs +107 -0
- package/dist/chunk-DRABNNX2.mjs.map +1 -0
- package/dist/chunk-DXQSIBC7.mjs +13 -0
- package/dist/chunk-DXQSIBC7.mjs.map +1 -0
- package/dist/chunk-F34HSIZ5.mjs +68 -0
- package/dist/chunk-F34HSIZ5.mjs.map +1 -0
- package/dist/chunk-GADZDWP3.mjs +20 -0
- package/dist/chunk-GADZDWP3.mjs.map +1 -0
- package/dist/chunk-GB2P3UEO.mjs +82 -0
- package/dist/chunk-GB2P3UEO.mjs.map +1 -0
- package/dist/chunk-GCY5A63A.mjs +25 -0
- package/dist/chunk-GCY5A63A.mjs.map +1 -0
- package/dist/chunk-HL2BC7Z2.mjs +76 -0
- package/dist/chunk-HL2BC7Z2.mjs.map +1 -0
- package/dist/chunk-HULI73W2.mjs +37 -0
- package/dist/chunk-HULI73W2.mjs.map +1 -0
- package/dist/chunk-J3DYDXXF.mjs +175 -0
- package/dist/chunk-J3DYDXXF.mjs.map +1 -0
- package/dist/chunk-JMIXHXWM.mjs +23 -0
- package/dist/chunk-JMIXHXWM.mjs.map +1 -0
- package/dist/chunk-KJVTSC6I.mjs +24 -0
- package/dist/chunk-KJVTSC6I.mjs.map +1 -0
- package/dist/chunk-L63NPT4K.mjs +39 -0
- package/dist/chunk-L63NPT4K.mjs.map +1 -0
- package/dist/chunk-LYRXR6GZ.mjs +54 -0
- package/dist/chunk-LYRXR6GZ.mjs.map +1 -0
- package/dist/chunk-MBRLKMEQ.mjs +54 -0
- package/dist/chunk-MBRLKMEQ.mjs.map +1 -0
- package/dist/chunk-MDXL65W4.mjs +49 -0
- package/dist/chunk-MDXL65W4.mjs.map +1 -0
- package/dist/chunk-OFGI5FLG.mjs +11 -0
- package/dist/chunk-OFGI5FLG.mjs.map +1 -0
- package/dist/chunk-OKPGJD64.mjs +41 -0
- package/dist/chunk-OKPGJD64.mjs.map +1 -0
- package/dist/chunk-OQNZEKWO.mjs +24 -0
- package/dist/chunk-OQNZEKWO.mjs.map +1 -0
- package/dist/chunk-PIQ5Z4RB.mjs +18 -0
- package/dist/chunk-PIQ5Z4RB.mjs.map +1 -0
- package/dist/chunk-PIRWVOO2.mjs +7 -0
- package/dist/chunk-PIRWVOO2.mjs.map +1 -0
- package/dist/chunk-QBHHLIZY.mjs +51 -0
- package/dist/chunk-QBHHLIZY.mjs.map +1 -0
- package/dist/chunk-RNLFG4YX.mjs +20 -0
- package/dist/chunk-RNLFG4YX.mjs.map +1 -0
- package/dist/chunk-S6WR4MXU.mjs +324 -0
- package/dist/chunk-S6WR4MXU.mjs.map +1 -0
- package/dist/chunk-SDO3B3BQ.mjs +45 -0
- package/dist/chunk-SDO3B3BQ.mjs.map +1 -0
- package/dist/chunk-SJ4YFZKO.mjs +21 -0
- package/dist/chunk-SJ4YFZKO.mjs.map +1 -0
- package/dist/chunk-SJGQU3OG.mjs +15 -0
- package/dist/chunk-SJGQU3OG.mjs.map +1 -0
- package/dist/chunk-SPMDDHVK.mjs +40 -0
- package/dist/chunk-SPMDDHVK.mjs.map +1 -0
- package/dist/chunk-SSROJBD5.mjs +30 -0
- package/dist/chunk-SSROJBD5.mjs.map +1 -0
- package/dist/chunk-SW2OCUH3.mjs +10 -0
- package/dist/chunk-SW2OCUH3.mjs.map +1 -0
- package/dist/chunk-TCQRHKGS.mjs +20 -0
- package/dist/chunk-TCQRHKGS.mjs.map +1 -0
- package/dist/chunk-TNHYFGFF.mjs +60 -0
- package/dist/chunk-TNHYFGFF.mjs.map +1 -0
- package/dist/chunk-TYODLVCG.mjs +23 -0
- package/dist/chunk-TYODLVCG.mjs.map +1 -0
- package/dist/chunk-U5VBBUQ2.mjs +48 -0
- package/dist/chunk-U5VBBUQ2.mjs.map +1 -0
- package/dist/chunk-UYDZZAEK.mjs +11 -0
- package/dist/chunk-UYDZZAEK.mjs.map +1 -0
- package/dist/chunk-WJZFE5NE.mjs +17 -0
- package/dist/chunk-WJZFE5NE.mjs.map +1 -0
- package/dist/chunk-WSBULPUZ.mjs +30 -0
- package/dist/chunk-WSBULPUZ.mjs.map +1 -0
- package/dist/chunk-WSG55HKA.mjs +94 -0
- package/dist/chunk-WSG55HKA.mjs.map +1 -0
- package/dist/chunk-XL5IRJ2H.mjs +134 -0
- package/dist/chunk-XL5IRJ2H.mjs.map +1 -0
- package/dist/chunk-XUBQQUTS.mjs +50 -0
- package/dist/chunk-XUBQQUTS.mjs.map +1 -0
- package/dist/chunk-YPVIK4SP.mjs +57 -0
- package/dist/chunk-YPVIK4SP.mjs.map +1 -0
- package/dist/chunk-ZHXKBOK2.mjs +22 -0
- package/dist/chunk-ZHXKBOK2.mjs.map +1 -0
- package/dist/chunk-ZPNFXK7Y.mjs +36 -0
- package/dist/chunk-ZPNFXK7Y.mjs.map +1 -0
- package/dist/chunk-ZSLYORET.mjs +31 -0
- package/dist/chunk-ZSLYORET.mjs.map +1 -0
- package/dist/data/Condition.mjs +29 -0
- package/dist/data/Condition.mjs.map +1 -0
- package/dist/data/DataProvider.mjs +1 -0
- package/dist/data/DataProvider.mjs.map +1 -0
- package/dist/data/Database.mjs +23 -0
- package/dist/data/Database.mjs.map +1 -0
- package/dist/data/Field.mjs +47 -0
- package/dist/data/Field.mjs.map +1 -0
- package/dist/data/InMemoryGateway.mjs +70 -0
- package/dist/data/InMemoryGateway.mjs.map +1 -0
- package/dist/data/Query.mjs +1 -0
- package/dist/data/Query.mjs.map +1 -0
- package/dist/data/QueryProvider.mjs +1 -0
- package/dist/data/QueryProvider.mjs.map +1 -0
- package/dist/domain/Audit.mjs +36 -0
- package/dist/domain/Audit.mjs.map +1 -0
- package/dist/domain/Child.mjs +54 -0
- package/dist/domain/Child.mjs.map +1 -0
- package/dist/domain/DateTime.mjs +36 -0
- package/dist/domain/DateTime.mjs.map +1 -0
- package/dist/domain/Entity.mjs +71 -0
- package/dist/domain/Entity.mjs.map +1 -0
- package/dist/domain/Repo.mjs +96 -0
- package/dist/domain/Repo.mjs.map +1 -0
- package/dist/domain/Struct.mjs +33 -0
- package/dist/domain/Struct.mjs.map +1 -0
- package/dist/domain/Typo.mjs +114 -0
- package/dist/domain/Typo.mjs.map +1 -0
- package/dist/http/CacheControl.mjs +66 -0
- package/dist/http/CacheControl.mjs.map +1 -0
- package/dist/http/ContentType.mjs +21 -0
- package/dist/http/ContentType.mjs.map +1 -0
- package/dist/http/HttpHeader.mjs +8 -0
- package/dist/http/HttpHeader.mjs.map +1 -0
- package/dist/http/HttpStatus.mjs +25 -0
- package/dist/http/HttpStatus.mjs.map +1 -0
- package/dist/http/HttpVerb.mjs +21 -0
- package/dist/http/HttpVerb.mjs.map +1 -0
- package/dist/http/LocalRequestStore.mjs +29 -0
- package/dist/http/LocalRequestStore.mjs.map +1 -0
- package/dist/http/Request.mjs +1 -0
- package/dist/http/Request.mjs.map +1 -0
- package/dist/http/RequestOptions.mjs +30 -0
- package/dist/http/RequestOptions.mjs.map +1 -0
- package/dist/http/RequestProvider.mjs +1 -0
- package/dist/http/RequestProvider.mjs.map +1 -0
- package/dist/http/Response.mjs +13 -0
- package/dist/http/Response.mjs.map +1 -0
- package/dist/http/RestResult.mjs +34 -0
- package/dist/http/RestResult.mjs.map +1 -0
- package/dist/http/toResponse.mjs +33 -0
- package/dist/http/toResponse.mjs.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +115 -3476
- package/dist/index.mjs.map +1 -1
- package/dist/process/App.mjs +30 -0
- package/dist/process/App.mjs.map +1 -0
- package/dist/process/Manage.mjs +47 -0
- package/dist/process/Manage.mjs.map +1 -0
- package/dist/process/Scope.mjs +22 -0
- package/dist/process/Scope.mjs.map +1 -0
- package/dist/process/Search.mjs +31 -0
- package/dist/process/Search.mjs.map +1 -0
- package/dist/process/UseCase.mjs +53 -0
- package/dist/process/UseCase.mjs.map +1 -0
- package/dist/resources/Req.mjs +57 -0
- package/dist/resources/Req.mjs.map +1 -0
- package/dist/security/Jwt.mjs +77 -0
- package/dist/security/Jwt.mjs.map +1 -0
- package/dist/services/Api.mjs +44 -0
- package/dist/services/Api.mjs.map +1 -0
- package/dist/services/ApiGateway.mjs +45 -0
- package/dist/services/ApiGateway.mjs.map +1 -0
- package/dist/services/AxiosProvider.mjs +40 -0
- package/dist/services/AxiosProvider.mjs.map +1 -0
- package/dist/services/MappedRouteGateway.mjs +78 -0
- package/dist/services/MappedRouteGateway.mjs.map +1 -0
- package/dist/services/RouteGateway.mjs +46 -0
- package/dist/services/RouteGateway.mjs.map +1 -0
- package/dist/services/ViewRouteGateway.mjs +79 -0
- package/dist/services/ViewRouteGateway.mjs.map +1 -0
- package/dist/sql/Clause.mjs +24 -0
- package/dist/sql/Clause.mjs.map +1 -0
- package/dist/sql/Column.mjs +37 -0
- package/dist/sql/Column.mjs.map +1 -0
- package/dist/sql/Count.mjs +20 -0
- package/dist/sql/Count.mjs.map +1 -0
- package/dist/sql/Delete.mjs +19 -0
- package/dist/sql/Delete.mjs.map +1 -0
- package/dist/sql/Insert.mjs +21 -0
- package/dist/sql/Insert.mjs.map +1 -0
- package/dist/sql/Join.mjs +8 -0
- package/dist/sql/Join.mjs.map +1 -0
- package/dist/sql/Select.mjs +19 -0
- package/dist/sql/Select.mjs.map +1 -0
- package/dist/sql/SqlQuery.mjs +18 -0
- package/dist/sql/SqlQuery.mjs.map +1 -0
- package/dist/sql/Table.mjs +93 -0
- package/dist/sql/Table.mjs.map +1 -0
- package/dist/sql/TableGateway.mjs +72 -0
- package/dist/sql/TableGateway.mjs.map +1 -0
- package/dist/sql/Update.mjs +21 -0
- package/dist/sql/Update.mjs.map +1 -0
- package/dist/types/AnyKey.mjs +1 -0
- package/dist/types/AnyKey.mjs.map +1 -0
- package/dist/types/Array.mjs +16 -0
- package/dist/types/Array.mjs.map +1 -0
- package/dist/types/Builder.mjs +26 -0
- package/dist/types/Builder.mjs.map +1 -0
- package/dist/types/Cache.mjs +29 -0
- package/dist/types/Cache.mjs.map +1 -0
- package/dist/types/CacheAge.mjs +33 -0
- package/dist/types/CacheAge.mjs.map +1 -0
- package/dist/types/Case.mjs +29 -0
- package/dist/types/Case.mjs.map +1 -0
- package/dist/types/Constructor.mjs +23 -0
- package/dist/types/Constructor.mjs.map +1 -0
- package/dist/types/Context.mjs +28 -0
- package/dist/types/Context.mjs.map +1 -0
- package/dist/types/Currency.mjs +15 -0
- package/dist/types/Currency.mjs.map +1 -0
- package/dist/types/Enum.mjs +24 -0
- package/dist/types/Enum.mjs.map +1 -0
- package/dist/types/Environment.mjs +28 -0
- package/dist/types/Environment.mjs.map +1 -0
- package/dist/types/ErrorOrigin.mjs +1 -0
- package/dist/types/ErrorOrigin.mjs.map +1 -0
- package/dist/types/Exception.mjs +26 -0
- package/dist/types/Exception.mjs.map +1 -0
- package/dist/types/Falsy.mjs +10 -0
- package/dist/types/Falsy.mjs.map +1 -0
- package/dist/types/Func.mjs +8 -0
- package/dist/types/Func.mjs.map +1 -0
- package/dist/types/Gateway.mjs +24 -0
- package/dist/types/Gateway.mjs.map +1 -0
- package/dist/types/Get.mjs +13 -0
- package/dist/types/Get.mjs.map +1 -0
- package/dist/types/Id.mjs +13 -0
- package/dist/types/Id.mjs.map +1 -0
- package/dist/types/IdName.mjs +1 -0
- package/dist/types/IdName.mjs.map +1 -0
- package/dist/types/Identity.mjs +1 -0
- package/dist/types/Identity.mjs.map +1 -0
- package/dist/types/Indexed.mjs +15 -0
- package/dist/types/Indexed.mjs.map +1 -0
- package/dist/types/Is.mjs +42 -0
- package/dist/types/Is.mjs.map +1 -0
- package/dist/types/IsA.mjs +16 -0
- package/dist/types/IsA.mjs.map +1 -0
- package/dist/types/IsDate.mjs +14 -0
- package/dist/types/IsDate.mjs.map +1 -0
- package/dist/types/IsEqual.mjs +30 -0
- package/dist/types/IsEqual.mjs.map +1 -0
- package/dist/types/Json.d.ts +1 -0
- package/dist/types/Json.mjs +31 -0
- package/dist/types/Json.mjs.map +1 -0
- package/dist/types/List.mjs +27 -0
- package/dist/types/List.mjs.map +1 -0
- package/dist/types/Message.mjs +11 -0
- package/dist/types/Message.mjs.map +1 -0
- package/dist/types/Meta.mjs +19 -0
- package/dist/types/Meta.mjs.map +1 -0
- package/dist/types/Nullish.mjs +8 -0
- package/dist/types/Nullish.mjs.map +1 -0
- package/dist/types/Number.mjs +30 -0
- package/dist/types/Number.mjs.map +1 -0
- package/dist/types/Object.mjs +24 -0
- package/dist/types/Object.mjs.map +1 -0
- package/dist/types/PageList.mjs +40 -0
- package/dist/types/PageList.mjs.map +1 -0
- package/dist/types/Parser.mjs +80 -0
- package/dist/types/Parser.mjs.map +1 -0
- package/dist/types/Primitive.mjs +9 -0
- package/dist/types/Primitive.mjs.map +1 -0
- package/dist/types/Repository.mjs +24 -0
- package/dist/types/Repository.mjs.map +1 -0
- package/dist/types/Result.mjs +23 -0
- package/dist/types/Result.mjs.map +1 -0
- package/dist/types/Results.mjs +26 -0
- package/dist/types/Results.mjs.map +1 -0
- package/dist/types/Sort.mjs +10 -0
- package/dist/types/Sort.mjs.map +1 -0
- package/dist/types/Tag.mjs +26 -0
- package/dist/types/Tag.mjs.map +1 -0
- package/dist/types/Template.mjs +21 -0
- package/dist/types/Template.mjs.map +1 -0
- package/dist/types/Text.mjs +21 -0
- package/dist/types/Text.mjs.map +1 -0
- package/dist/types/ToText.mjs +23 -0
- package/dist/types/ToText.mjs.map +1 -0
- package/dist/types/Try.mjs +31 -0
- package/dist/types/Try.mjs.map +1 -0
- package/dist/types/TypeGuard.mjs +1 -0
- package/dist/types/TypeGuard.mjs.map +1 -0
- package/dist/types/Types.mjs +1 -0
- package/dist/types/Types.mjs.map +1 -0
- package/dist/types/Uri.mjs +119 -0
- package/dist/types/Uri.mjs.map +1 -0
- package/dist/types/Uuid.mjs +16 -0
- package/dist/types/Uuid.mjs.map +1 -0
- package/dist/types/Validatable.mjs +13 -0
- package/dist/types/Validatable.mjs.map +1 -0
- package/dist/types/Value.mjs +14 -0
- package/dist/types/Value.mjs.map +1 -0
- package/dist/utils/Base64.mjs +12 -0
- package/dist/utils/Base64.mjs.map +1 -0
- package/dist/utils/Convert.mjs +14 -0
- package/dist/utils/Convert.mjs.map +1 -0
- package/dist/utils/If.mjs +25 -0
- package/dist/utils/If.mjs.map +1 -0
- package/dist/utils/Loading.mjs +11 -0
- package/dist/utils/Loading.mjs.map +1 -0
- package/dist/utils/Log.mjs +21 -0
- package/dist/utils/Log.mjs.map +1 -0
- package/dist/utils/Mapper.mjs +28 -0
- package/dist/utils/Mapper.mjs.map +1 -0
- package/dist/utils/Promise.mjs +35 -0
- package/dist/utils/Promise.mjs.map +1 -0
- package/dist/utils/Property.mjs +13 -0
- package/dist/utils/Property.mjs.map +1 -0
- package/dist/utils/Seconds.mjs +18 -0
- package/dist/utils/Seconds.mjs.map +1 -0
- package/dist/utils/Sentence.mjs +71 -0
- package/dist/utils/Sentence.mjs.map +1 -0
- package/dist/utils/State.mjs +12 -0
- package/dist/utils/State.mjs.map +1 -0
- package/dist/utils/Traverse.mjs +12 -0
- package/dist/utils/Traverse.mjs.map +1 -0
- package/dist/utils/View.mjs +41 -0
- package/dist/utils/View.mjs.map +1 -0
- package/dist/utils/Wait.mjs +17 -0
- package/dist/utils/Wait.mjs.map +1 -0
- package/dist/validation/Contraints.mjs +65 -0
- package/dist/validation/Contraints.mjs.map +1 -0
- package/dist/validation/Validate.mjs +35 -0
- package/dist/validation/Validate.mjs.map +1 -0
- package/dist/validation/When.mjs +31 -0
- package/dist/validation/When.mjs.map +1 -0
- package/package.json +4 -13
- package/src/types/Json.ts +2 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Enum
|
|
3
|
+
} from "./chunk-F34HSIZ5.mjs";
|
|
4
|
+
import {
|
|
5
|
+
ofConstruct
|
|
6
|
+
} from "./chunk-ZPNFXK7Y.mjs";
|
|
7
|
+
|
|
8
|
+
// src/data/Database.ts
|
|
9
|
+
var DefaultProvider = class {
|
|
10
|
+
};
|
|
11
|
+
var Database = class _Database extends Enum {
|
|
12
|
+
constructor(name, provider, options) {
|
|
13
|
+
super(name);
|
|
14
|
+
this.provider = provider;
|
|
15
|
+
this.options = options;
|
|
16
|
+
}
|
|
17
|
+
static Default = new _Database("Default", DefaultProvider);
|
|
18
|
+
provide = () => ofConstruct(this.provider, this);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
DefaultProvider,
|
|
23
|
+
Database
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=chunk-27MBNT3X.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/data/Database.ts"],"sourcesContent":["import { DataProvider } from './DataProvider';\nimport { Enum } from '../types/Enum';\nimport { Constructor, ofConstruct } from '../types/Constructor';\n\nexport type DatabaseOptions = {\n user?: string;\n password?: string;\n host?: string;\n port?: number;\n cluster?: string;\n connectionString?: string;\n maxPoolSize?: number;\n minPoolSize?: number;\n maxIdleTimeMS?: number;\n socketTimeoutMS?: number;\n // Query specific options\n queryTimeoutMS?: number;\n};\n\nexport class DefaultProvider implements DataProvider {}\n\nexport class Database extends Enum {\n static readonly Default = new Database('Default', DefaultProvider);\n\n constructor(\n name: string,\n readonly provider: Constructor<DataProvider> | DataProvider,\n readonly options?: DatabaseOptions\n ) {\n super(name);\n }\n\n provide = <P>(): P => ofConstruct(this.provider, this);\n}\n"],"mappings":";;;;;;;;AAmBO,IAAM,kBAAN,MAA8C;AAAC;AAE/C,IAAM,WAAN,MAAM,kBAAiB,KAAK;AAAA,EAGjC,YACE,MACS,UACA,SACT;AACA,UAAM,IAAI;AAHD;AACA;AAAA,EAGX;AAAA,EARA,OAAgB,UAAU,IAAI,UAAS,WAAW,eAAe;AAAA,EAUjE,UAAU,MAAY,YAAY,KAAK,UAAU,IAAI;AACvD;","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
rest
|
|
3
|
+
} from "./chunk-6QFV73AS.mjs";
|
|
4
|
+
import {
|
|
5
|
+
toHttpStatus
|
|
6
|
+
} from "./chunk-WSG55HKA.mjs";
|
|
7
|
+
|
|
8
|
+
// src/http/toResponse.ts
|
|
9
|
+
function toResponse(status, body, headers) {
|
|
10
|
+
return {
|
|
11
|
+
status: toHttpStatus(status),
|
|
12
|
+
headers,
|
|
13
|
+
body: rest.to(body)
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export {
|
|
18
|
+
toResponse
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=chunk-35SXXNQO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/http/toResponse.ts"],"sourcesContent":["import { HttpStatus, toHttpStatus } from './HttpStatus';\nimport { rest } from './RestResult';\nimport { Response } from './Response';\nimport { Code } from '../types/Id';\n\nexport function toResponse(status: HttpStatus | Code, body?: unknown, headers?: { [key: string]: any }): Response {\n return {\n status: toHttpStatus(status),\n headers,\n body: rest.to(body),\n };\n}\n"],"mappings":";;;;;;;;AAKO,SAAS,WAAW,QAA2B,MAAgB,SAA4C;AAChH,SAAO;AAAA,IACL,QAAQ,aAAa,MAAM;AAAA,IAC3B;AAAA,IACA,MAAM,KAAK,GAAG,IAAI;AAAA,EACpB;AACF;","names":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SqlQuery
|
|
3
|
+
} from "./chunk-TCQRHKGS.mjs";
|
|
4
|
+
import {
|
|
5
|
+
ifGet
|
|
6
|
+
} from "./chunk-SJGQU3OG.mjs";
|
|
7
|
+
|
|
8
|
+
// src/sql/Delete.ts
|
|
9
|
+
var Delete = class extends SqlQuery {
|
|
10
|
+
toString() {
|
|
11
|
+
return `DELETE FROM ${this.table}` + ifGet(this.clauses.length, ` WHERE ${this.clauses.join(" AND ")};`, ";");
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export {
|
|
16
|
+
Delete
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=chunk-3M6NLHSO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/sql/Delete.ts"],"sourcesContent":["import { SqlQuery } from './SqlQuery';\nimport { ifGet } from '../types/Get';\n\nexport class Delete extends SqlQuery {\n toString(): string {\n return `DELETE FROM ${this.table}` + ifGet(this.clauses.length, ` WHERE ${this.clauses.join(' AND ')};`, ';');\n }\n}\n"],"mappings":";;;;;;;;AAGO,IAAM,SAAN,cAAqB,SAAS;AAAA,EACnC,WAAmB;AACjB,WAAO,eAAe,KAAK,KAAK,KAAK,MAAM,KAAK,QAAQ,QAAQ,UAAU,KAAK,QAAQ,KAAK,OAAO,CAAC,KAAK,GAAG;AAAA,EAC9G;AACF;","names":[]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import {
|
|
2
|
+
toResponse
|
|
3
|
+
} from "./chunk-35SXXNQO.mjs";
|
|
4
|
+
import {
|
|
5
|
+
isRestResult
|
|
6
|
+
} from "./chunk-6QFV73AS.mjs";
|
|
7
|
+
import {
|
|
8
|
+
HttpStatus
|
|
9
|
+
} from "./chunk-WSG55HKA.mjs";
|
|
10
|
+
import {
|
|
11
|
+
RequestOptions
|
|
12
|
+
} from "./chunk-AINW2476.mjs";
|
|
13
|
+
import {
|
|
14
|
+
cacheAge
|
|
15
|
+
} from "./chunk-YPVIK4SP.mjs";
|
|
16
|
+
import {
|
|
17
|
+
choose
|
|
18
|
+
} from "./chunk-S6WR4MXU.mjs";
|
|
19
|
+
import {
|
|
20
|
+
toResult
|
|
21
|
+
} from "./chunk-RNLFG4YX.mjs";
|
|
22
|
+
import {
|
|
23
|
+
ctx
|
|
24
|
+
} from "./chunk-CSAPGLC7.mjs";
|
|
25
|
+
import {
|
|
26
|
+
isDefined,
|
|
27
|
+
isEmpty
|
|
28
|
+
} from "./chunk-DEJ7A5PY.mjs";
|
|
29
|
+
|
|
30
|
+
// src/services/AxiosProvider.ts
|
|
31
|
+
import axios from "axios";
|
|
32
|
+
var isResponse = (a) => isDefined(a?.response);
|
|
33
|
+
var isRequest = (a) => isDefined(a?.request);
|
|
34
|
+
var asResponse = (uri, verb, error) => choose(error).type(
|
|
35
|
+
isResponse,
|
|
36
|
+
(r) => toResponse(r.response.status, isRestResult(r.response.data) ? r.response.data : toResult(r.response.statusText, uri.path, uri), r.response.headers)
|
|
37
|
+
).type(isRequest, (r) => toResponse(r.request.status, toResult(r.request.message, uri.path, uri))).else((e) => toResponse(HttpStatus.InternalServerError, toResult(e.message, uri.path, uri)));
|
|
38
|
+
var AxiosProvider = class {
|
|
39
|
+
constructor(ai = axios) {
|
|
40
|
+
this.ai = ai;
|
|
41
|
+
}
|
|
42
|
+
execute = ({ uri, verb, body, transform = (r) => r, transformError = (r) => r, options = RequestOptions.Json }) => this.ai.request({
|
|
43
|
+
url: uri.toString(),
|
|
44
|
+
method: verb.toString(),
|
|
45
|
+
headers: uri.isInternal && isEmpty(options.headers.Authorization) ? options.bearer(ctx.request.jwt).headers : options.headers,
|
|
46
|
+
data: options.type.encode(body),
|
|
47
|
+
maxRedirects: options.requestOptions.maxRedirects,
|
|
48
|
+
...options.requestOptions.timeout && { timeout: cacheAge.toMilliseconds(options?.requestOptions.timeout) },
|
|
49
|
+
...options.requestOptions.validateStatus && { validateStatus: options.requestOptions.validateStatus }
|
|
50
|
+
}).then((r) => toResponse(r.status, transform(r.data), r.headers)).catch((e) => Promise.reject(asResponse(uri, verb, transformError(e))));
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export {
|
|
54
|
+
AxiosProvider
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=chunk-4CRBLF44.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/services/AxiosProvider.ts"],"sourcesContent":["import axios, { AxiosError, AxiosInstance, AxiosResponse, Method } from 'axios';\nimport { toResponse } from '../http/toResponse';\nimport { isDefined, isEmpty } from '../types/Is';\nimport { Uri } from '../types/Uri';\nimport { HttpVerb } from '../http/HttpVerb';\nimport { choose } from '../types/Case';\nimport { isRestResult } from '../http/RestResult';\nimport { toResult } from '../types/Result';\nimport { HttpStatus } from '../http/HttpStatus';\nimport { RequestProvider } from '../http/RequestProvider';\nimport { RequestOptions } from '../http/RequestOptions';\nimport { ctx } from '../types/Context';\nimport { cacheAge } from '../types/CacheAge';\nimport { Response } from '../http/Response';\nimport { Request } from '../http/Request';\n\nconst isResponse = (a: unknown): a is { response: AxiosResponse } => isDefined((a as any)?.response);\nconst isRequest = (a: unknown): a is { request: any } => isDefined((a as any)?.request);\n\nconst asResponse = (uri: Uri, verb: HttpVerb, error: AxiosError): Response =>\n choose(error)\n .type(isResponse, r =>\n toResponse(r.response.status, isRestResult(r.response.data) ? r.response.data : toResult(r.response.statusText, uri.path, uri), r.response.headers)\n )\n .type(isRequest, r => toResponse(r.request.status, toResult(r.request.message, uri.path, uri)))\n .else(e => toResponse(HttpStatus.InternalServerError, toResult(e.message, uri.path, uri)));\n\nexport class AxiosProvider implements RequestProvider {\n constructor(readonly ai: AxiosInstance = axios) {}\n\n execute = ({ uri, verb, body, transform = (r: any) => r, transformError = (r: any) => r, options = RequestOptions.Json }: Request): Promise<Response> =>\n this.ai\n .request({\n url: uri.toString(),\n method: verb.toString() as Method,\n headers: uri.isInternal && isEmpty(options.headers.Authorization) ? options.bearer(ctx.request.jwt).headers : options.headers,\n data: options.type.encode(body),\n maxRedirects: options.requestOptions.maxRedirects,\n ...(options.requestOptions.timeout && { timeout: cacheAge.toMilliseconds(options?.requestOptions.timeout) }),\n ...(options.requestOptions.validateStatus && { validateStatus: options.requestOptions.validateStatus }),\n })\n .then(r => toResponse(r.status, transform(r.data), r.headers))\n .catch(e => Promise.reject(asResponse(uri, verb, transformError(e))));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAiE;AAgBxE,IAAM,aAAa,CAAC,MAAiD,UAAW,GAAW,QAAQ;AACnG,IAAM,YAAY,CAAC,MAAsC,UAAW,GAAW,OAAO;AAEtF,IAAM,aAAa,CAAC,KAAU,MAAgB,UAC5C,OAAO,KAAK,EACT;AAAA,EAAK;AAAA,EAAY,OAChB,WAAW,EAAE,SAAS,QAAQ,aAAa,EAAE,SAAS,IAAI,IAAI,EAAE,SAAS,OAAO,SAAS,EAAE,SAAS,YAAY,IAAI,MAAM,GAAG,GAAG,EAAE,SAAS,OAAO;AACpJ,EACC,KAAK,WAAW,OAAK,WAAW,EAAE,QAAQ,QAAQ,SAAS,EAAE,QAAQ,SAAS,IAAI,MAAM,GAAG,CAAC,CAAC,EAC7F,KAAK,OAAK,WAAW,WAAW,qBAAqB,SAAS,EAAE,SAAS,IAAI,MAAM,GAAG,CAAC,CAAC;AAEtF,IAAM,gBAAN,MAA+C;AAAA,EACpD,YAAqB,KAAoB,OAAO;AAA3B;AAAA,EAA4B;AAAA,EAEjD,UAAU,CAAC,EAAE,KAAK,MAAM,MAAM,YAAY,CAAC,MAAW,GAAG,iBAAiB,CAAC,MAAW,GAAG,UAAU,eAAe,KAAK,MACrH,KAAK,GACF,QAAQ;AAAA,IACP,KAAK,IAAI,SAAS;AAAA,IAClB,QAAQ,KAAK,SAAS;AAAA,IACtB,SAAS,IAAI,cAAc,QAAQ,QAAQ,QAAQ,aAAa,IAAI,QAAQ,OAAO,IAAI,QAAQ,GAAG,EAAE,UAAU,QAAQ;AAAA,IACtH,MAAM,QAAQ,KAAK,OAAO,IAAI;AAAA,IAC9B,cAAc,QAAQ,eAAe;AAAA,IACrC,GAAI,QAAQ,eAAe,WAAW,EAAE,SAAS,SAAS,eAAe,SAAS,eAAe,OAAO,EAAE;AAAA,IAC1G,GAAI,QAAQ,eAAe,kBAAkB,EAAE,gBAAgB,QAAQ,eAAe,eAAe;AAAA,EACvG,CAAC,EACA,KAAK,OAAK,WAAW,EAAE,QAAQ,UAAU,EAAE,IAAI,GAAG,EAAE,OAAO,CAAC,EAC5D,MAAM,OAAK,QAAQ,OAAO,WAAW,KAAK,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC;AAC1E;","names":[]}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import {
|
|
2
|
+
entries
|
|
3
|
+
} from "./chunk-HULI73W2.mjs";
|
|
4
|
+
import {
|
|
5
|
+
toList
|
|
6
|
+
} from "./chunk-ABGKS4KE.mjs";
|
|
7
|
+
import {
|
|
8
|
+
asString,
|
|
9
|
+
capitalize,
|
|
10
|
+
replaceAll
|
|
11
|
+
} from "./chunk-BDA5LB4S.mjs";
|
|
12
|
+
import {
|
|
13
|
+
ofGet
|
|
14
|
+
} from "./chunk-SJGQU3OG.mjs";
|
|
15
|
+
import {
|
|
16
|
+
toName
|
|
17
|
+
} from "./chunk-ZPNFXK7Y.mjs";
|
|
18
|
+
import {
|
|
19
|
+
isEmpty,
|
|
20
|
+
isNotEmpty
|
|
21
|
+
} from "./chunk-DEJ7A5PY.mjs";
|
|
22
|
+
|
|
23
|
+
// src/types/ToText.ts
|
|
24
|
+
var ToText = class {
|
|
25
|
+
constructor(subject) {
|
|
26
|
+
this.subject = subject;
|
|
27
|
+
}
|
|
28
|
+
get cap() {
|
|
29
|
+
return this.map((s) => capitalize(s?.toLowerCase()));
|
|
30
|
+
}
|
|
31
|
+
get capFirst() {
|
|
32
|
+
return this.map((s) => capitalize(s));
|
|
33
|
+
}
|
|
34
|
+
get title() {
|
|
35
|
+
return this.map(
|
|
36
|
+
(s) => s.split(" ").map((w) => text(w).cap).join(" ")
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
get pascal() {
|
|
40
|
+
return this.title.replace(" ", "");
|
|
41
|
+
}
|
|
42
|
+
get lower() {
|
|
43
|
+
return this.map((s) => s.toLowerCase());
|
|
44
|
+
}
|
|
45
|
+
get upper() {
|
|
46
|
+
return this.map((s) => s.toUpperCase());
|
|
47
|
+
}
|
|
48
|
+
get camel() {
|
|
49
|
+
return this.title.trim.map((s) => `${s.charAt(0).toLowerCase()}${s.slice(1)}`);
|
|
50
|
+
}
|
|
51
|
+
get kebab() {
|
|
52
|
+
return this.lower.replace(" ", "-");
|
|
53
|
+
}
|
|
54
|
+
get strictKebab() {
|
|
55
|
+
return this.map((s) => s.replace(/[^a-z\d]+/gi, " ").trim()).kebab;
|
|
56
|
+
}
|
|
57
|
+
get slug() {
|
|
58
|
+
return this.map(
|
|
59
|
+
(s) => s.replace(/ß/g, "ss").normalize("NFKD").replace(/[\u0300-\u036F]/g, "").toLowerCase().replace(/[^a-z\d]+/g, "-").replace(/(^-)|(-$)/g, "")
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
get snake() {
|
|
63
|
+
return this.upper.replace(" ", "_");
|
|
64
|
+
}
|
|
65
|
+
get plural() {
|
|
66
|
+
return this.ifLike("") ?? this.add("s");
|
|
67
|
+
}
|
|
68
|
+
get space() {
|
|
69
|
+
return this.map((s) => s.replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/[_-]/g, " "));
|
|
70
|
+
}
|
|
71
|
+
get sentence() {
|
|
72
|
+
return this.isEmpty ? this : this.map((s) => `${s.charAt(0).toUpperCase()}${s.slice(1)}.`);
|
|
73
|
+
}
|
|
74
|
+
get initials() {
|
|
75
|
+
return this.map(
|
|
76
|
+
(s) => s.split(" ").map((w) => w[0]).join("")
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
get trim() {
|
|
80
|
+
return this.map((s) => s.replace(/[- ,_#]/g, ""));
|
|
81
|
+
}
|
|
82
|
+
get trimSentence() {
|
|
83
|
+
return this.map(
|
|
84
|
+
(s) => s.replace(/[\u200B-\u200D\uFEFF]/g, "").replace(/[\s\u00A0]+/g, " ").replace(/\s+([.,;:!?])/g, "$1").trim()
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
get isEmpty() {
|
|
88
|
+
return isEmpty(this.toString());
|
|
89
|
+
}
|
|
90
|
+
parse = (subject, options = {}) => text(template(this.subject, subject, { type: toName(subject), ...options }));
|
|
91
|
+
is = (...others) => others.some((o) => this.toString() === text(o).toString());
|
|
92
|
+
equals = this.is;
|
|
93
|
+
isLike = (...others) => others.some((o) => this.trim.lower.is(text(o).trim.lower));
|
|
94
|
+
ifLike = (...others) => this.isLike(...others) ? this : void 0;
|
|
95
|
+
endsWith = (end) => this.subject.endsWith(asString(end));
|
|
96
|
+
startsWith = (end) => this.subject.startsWith(asString(end));
|
|
97
|
+
first = (n) => this.map((s) => s.substring(0, n));
|
|
98
|
+
last = (n) => this.map((s) => s.substring(s.length - n));
|
|
99
|
+
map = (func) => text(ofGet(func, this.subject));
|
|
100
|
+
replace = (search, replace) => this.map((s) => replaceAll(s, search, replace));
|
|
101
|
+
add = (add, separator = "") => this.map((s) => isNotEmpty(add) ? `${s}${separator}${text(add)}` : s);
|
|
102
|
+
with = (separator, ...other) => this.map(
|
|
103
|
+
(s) => toList(s).add(...other.map((u) => text(u).toString())).filter((s2) => isNotEmpty(s2)).join(separator)
|
|
104
|
+
);
|
|
105
|
+
split = (separator = " ") => toList(this.subject.split(separator));
|
|
106
|
+
toString() {
|
|
107
|
+
return this.subject;
|
|
108
|
+
}
|
|
109
|
+
toJSON() {
|
|
110
|
+
return this.subject;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
function text(subject, alt = "") {
|
|
114
|
+
const sub = subject ? asString(subject) : alt;
|
|
115
|
+
return new ToText(sub !== "[object Object]" ? sub : "");
|
|
116
|
+
}
|
|
117
|
+
function textValue(subject, prop) {
|
|
118
|
+
const p = prop.split(".");
|
|
119
|
+
const root = subject?.[p[0]];
|
|
120
|
+
const initial = typeof root === "object" && root !== null ? root : text(root);
|
|
121
|
+
return p.splice(1).reduce((t, s) => t?.[s], initial)?.toString() ?? "";
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// src/types/Template.ts
|
|
125
|
+
var Template = class {
|
|
126
|
+
constructor(template2, subject = {}, options = {}) {
|
|
127
|
+
this.template = template2;
|
|
128
|
+
this.subject = subject;
|
|
129
|
+
this.options = options;
|
|
130
|
+
}
|
|
131
|
+
toString = () => {
|
|
132
|
+
return entries(this.options).reduce((t, [k]) => this.option(t, k), this.object()).replace(" ", " ");
|
|
133
|
+
};
|
|
134
|
+
props = (tmpl, key, result = toList()) => {
|
|
135
|
+
const i1 = tmpl.indexOf(`{${key}`);
|
|
136
|
+
if (i1 < 0) {
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
const i2 = tmpl.indexOf("}", i1);
|
|
140
|
+
return this.props(tmpl.slice(i2 + 1), key, result.add(tmpl.substring(i1 + 1, i2)));
|
|
141
|
+
};
|
|
142
|
+
object = () => {
|
|
143
|
+
return this.props(this.template, "this").reduce((t, p) => t.replace(`{${p}}`, textValue(this.subject, p.replace("this.", ""))), this.template);
|
|
144
|
+
};
|
|
145
|
+
option = (tmpl, prop) => {
|
|
146
|
+
return this.props(tmpl, prop).reduce((t, p) => t.replace(`{${p}}`, textValue(this.options, p)), tmpl);
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
function template(tmpl, subject, options = {}) {
|
|
150
|
+
return new Template(asString(tmpl), subject, {
|
|
151
|
+
type: toName(subject),
|
|
152
|
+
subject: text(JSON.stringify(subject)),
|
|
153
|
+
...options
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export {
|
|
158
|
+
Template,
|
|
159
|
+
template,
|
|
160
|
+
ToText,
|
|
161
|
+
text,
|
|
162
|
+
textValue
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=chunk-4K4X43SV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/ToText.ts","../src/types/Template.ts"],"sourcesContent":["import { asString, capitalize, replaceAll, Text } from './Text';\nimport { toName } from './Constructor';\nimport { Optional } from './Types';\nimport { Get, ofGet } from './Get';\nimport { isEmpty, isNotEmpty } from './Is';\nimport { List, toList } from './List';\nimport { JsonValue } from './Json';\nimport { template } from './Template';\n\nexport class ToText implements Text {\n constructor(readonly subject: string) {}\n\n get cap(): ToText {\n return this.map(s => capitalize(s?.toLowerCase()));\n }\n\n get capFirst(): ToText {\n return this.map(s => capitalize(s));\n }\n\n get title(): ToText {\n return this.map(s =>\n s\n .split(' ')\n .map(w => text(w).cap)\n .join(' ')\n );\n }\n\n get pascal(): ToText {\n return this.title.replace(' ', '');\n }\n\n get lower(): ToText {\n return this.map(s => s.toLowerCase());\n }\n\n get upper(): ToText {\n return this.map(s => s.toUpperCase());\n }\n\n get camel(): ToText {\n return this.title.trim.map(s => `${s.charAt(0).toLowerCase()}${s.slice(1)}`);\n }\n\n get kebab(): ToText {\n return this.lower.replace(' ', '-');\n }\n\n get strictKebab(): ToText {\n return this.map(s => s.replace(/[^a-z\\d]+/gi, ' ').trim()).kebab;\n }\n\n get slug(): ToText {\n return this.map(s =>\n s\n .replace(/ß/g, 'ss')\n .normalize('NFKD')\n .replace(/[\\u0300-\\u036F]/g, '')\n .toLowerCase()\n .replace(/[^a-z\\d]+/g, '-')\n .replace(/(^-)|(-$)/g, '')\n );\n }\n\n get snake(): ToText {\n return this.upper.replace(' ', '_');\n }\n\n get plural(): ToText {\n return this.ifLike('') ?? this.add('s');\n }\n\n get space(): ToText {\n return this.map(s => s.replace(/([a-z0-9])([A-Z])/g, '$1 $2').replace(/[_-]/g, ' '));\n }\n\n get sentence(): ToText {\n return this.isEmpty ? this : this.map(s => `${s.charAt(0).toUpperCase()}${s.slice(1)}.`);\n }\n\n get initials(): ToText {\n return this.map(s =>\n s\n .split(' ')\n .map(w => w[0])\n .join('')\n );\n }\n\n get trim(): ToText {\n return this.map(s => s.replace(/[- ,_#]/g, ''));\n }\n\n get trimSentence(): ToText {\n return this.map(s =>\n s\n .replace(/[\\u200B-\\u200D\\uFEFF]/g, '')\n .replace(/[\\s\\u00A0]+/g, ' ')\n .replace(/\\s+([.,;:!?])/g, '$1')\n .trim()\n );\n }\n\n get isEmpty(): boolean {\n return isEmpty(this.toString());\n }\n\n parse = (subject: unknown, options = {}): ToText => text(template(this.subject, subject, { type: toName(subject), ...options }));\n\n is = (...others: unknown[]): boolean => others.some(o => this.toString() === text(o).toString());\n\n equals = this.is;\n\n isLike = (...others: unknown[]): boolean => others.some(o => this.trim.lower.is(text(o).trim.lower));\n\n ifLike = (...others: unknown[]): Optional<this> => (this.isLike(...others) ? this : undefined);\n\n endsWith = (end?: unknown): boolean => this.subject.endsWith(asString(end));\n\n startsWith = (end?: unknown): boolean => this.subject.startsWith(asString(end));\n\n first = (n: number): ToText => this.map(s => s.substring(0, n));\n\n last = (n: number): ToText => this.map(s => s.substring(s.length - n));\n\n map = (func: Get<string, string>): ToText => text(ofGet(func, this.subject));\n\n replace = (search: Text, replace: Text): ToText => this.map(s => replaceAll(s, search, replace));\n\n add = (add?: unknown, separator = ''): ToText => this.map(s => (isNotEmpty(add) ? `${s}${separator}${text(add)}` : s));\n\n with = (separator: string, ...other: unknown[]): ToText =>\n this.map(s =>\n toList(s)\n .add(...other.map(u => text(u).toString()))\n .filter(s => isNotEmpty(s))\n .join(separator)\n );\n\n split = (separator: string = ' '): List<string> => toList(this.subject.split(separator));\n\n toString(): string {\n return this.subject;\n }\n\n toJSON(): JsonValue {\n return this.subject;\n }\n}\n\nexport function text(subject?: unknown, alt = ''): ToText {\n const sub = subject ? asString(subject) : alt;\n return new ToText(sub !== '[object Object]' ? sub : '');\n}\n\nexport function textValue(subject: any, prop: string): string {\n const p = prop.split('.');\n const root = subject?.[p[0]];\n const initial = typeof root === 'object' && root !== null ? root : text(root);\n return (\n p\n .splice(1)\n .reduce((t, s) => t?.[s], initial)\n ?.toString() ?? ''\n );\n}\n","import { List, toList } from './List';\nimport { asString, Text } from './Text';\nimport { toName } from './Constructor';\nimport { entries } from './Object';\nimport { text, textValue } from './ToText';\n\nexport type TemplateOptions = { type?: Text; property?: Text; actual?: Text; subject?: Text };\n\nexport class Template implements Text {\n constructor(\n private readonly template: string,\n private readonly subject: unknown = {},\n private readonly options: TemplateOptions = {}\n ) {}\n\n toString = (): string => {\n return entries(this.options)\n .reduce((t, [k]) => this.option(t, k), this.object())\n .replace(' ', ' ');\n };\n\n private readonly props = (tmpl: string, key: string, result: List<string> = toList()): string[] => {\n const i1 = tmpl.indexOf(`{${key}`);\n if (i1 < 0) {\n return result;\n }\n const i2 = tmpl.indexOf('}', i1);\n return this.props(tmpl.slice(i2 + 1), key, result.add(tmpl.substring(i1 + 1, i2)));\n };\n\n private readonly object = (): string => {\n return this.props(this.template, 'this').reduce((t: string, p) => t.replace(`{${p}}`, textValue(this.subject, p.replace('this.', ''))), this.template);\n };\n\n private readonly option = (tmpl: string, prop: string): string => {\n return this.props(tmpl, prop).reduce((t: string, p) => t.replace(`{${p}}`, textValue(this.options, p)), tmpl);\n };\n}\n\nexport function template(tmpl: Text, subject: unknown, options: TemplateOptions = {}): Text {\n return new Template(asString(tmpl), subject, {\n type: toName(subject),\n subject: text(JSON.stringify(subject)),\n ...options,\n });\n}\n"],"mappings":"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","names":["s","template"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import {
|
|
2
|
+
entries,
|
|
3
|
+
values
|
|
4
|
+
} from "./chunk-HULI73W2.mjs";
|
|
5
|
+
import {
|
|
6
|
+
toList
|
|
7
|
+
} from "./chunk-ABGKS4KE.mjs";
|
|
8
|
+
import {
|
|
9
|
+
on,
|
|
10
|
+
use
|
|
11
|
+
} from "./chunk-ZPNFXK7Y.mjs";
|
|
12
|
+
import {
|
|
13
|
+
isDefined
|
|
14
|
+
} from "./chunk-DEJ7A5PY.mjs";
|
|
15
|
+
|
|
16
|
+
// src/types/Meta.ts
|
|
17
|
+
import "reflect-metadata";
|
|
18
|
+
var ClassMeta = class {
|
|
19
|
+
constructor(subject, data = (subject.prototype ?? subject).constructor) {
|
|
20
|
+
this.subject = subject;
|
|
21
|
+
this.data = data;
|
|
22
|
+
}
|
|
23
|
+
get = (key) => Reflect.getMetadata(key, this.data);
|
|
24
|
+
set = (key, value) => {
|
|
25
|
+
Reflect.defineMetadata(key, value, this.data);
|
|
26
|
+
return value;
|
|
27
|
+
};
|
|
28
|
+
entries = () => entries(this.subject);
|
|
29
|
+
parse = (f, options = {}) => {
|
|
30
|
+
const { initial = {}, skipUndefined = false } = options;
|
|
31
|
+
return this.entries().reduce((a, [k, val]) => use(f(val), (v) => isDefined(v) || !skipUndefined ? on(a, (a2) => a2[k] = v) : a), initial);
|
|
32
|
+
};
|
|
33
|
+
properties = (key) => toList([...Object.getOwnPropertyNames(this.subject), ...Object.getOwnPropertyNames(Object.getPrototypeOf(this.subject))]).map((p) => this.property(p)).filter((p) => key ? p.get(key) : p);
|
|
34
|
+
keys = (key) => this.properties().map((p) => p.get(key)).reduce((list, u) => u ? list.add(u) : list, toList());
|
|
35
|
+
values = () => values(this.subject);
|
|
36
|
+
property = (property) => new PropertyMeta(this.subject, property);
|
|
37
|
+
};
|
|
38
|
+
var PropertyMeta = class {
|
|
39
|
+
constructor(subject, property, data = Reflect.getMetadata(property, subject)) {
|
|
40
|
+
this.subject = subject;
|
|
41
|
+
this.property = property;
|
|
42
|
+
this.data = data;
|
|
43
|
+
}
|
|
44
|
+
get value() {
|
|
45
|
+
return this.subject[this.property];
|
|
46
|
+
}
|
|
47
|
+
get = (key) => isDefined(this.data) && isDefined(this.data[key]) ? this.data[key] : void 0;
|
|
48
|
+
set = (key, value) => {
|
|
49
|
+
Reflect.defineMetadata(this.property, { ...this.data, [key]: value }, this.subject);
|
|
50
|
+
return value;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
var meta = (subject) => new ClassMeta(subject ?? {});
|
|
54
|
+
|
|
55
|
+
export {
|
|
56
|
+
meta
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=chunk-4LVZOQ6O.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types/Meta.ts"],"sourcesContent":["import 'reflect-metadata';\nimport { List, toList } from './List';\nimport { isDefined } from './Is';\nimport { on, use } from './Constructor';\nimport { Optional } from './Types';\nimport { Entry, entries, values } from './Object';\n\ntype MetaParseOptions = { initial?: any; skipUndefined?: boolean };\n\nclass ClassMeta {\n constructor(\n readonly subject: any,\n private readonly data: any = (subject.prototype ?? subject).constructor\n ) {}\n\n get = <T>(key: string): T => Reflect.getMetadata(key, this.data) as T;\n\n set = <T>(key: string, value: T): T => {\n Reflect.defineMetadata(key, value, this.data);\n return value;\n };\n\n entries = <T = unknown>(): List<Entry<T>> => entries<T>(this.subject);\n\n parse = <Out, Value>(f: (v: Value) => Out, options: MetaParseOptions = {}): Record<string, Out> => {\n const { initial = {}, skipUndefined = false } = options;\n return this.entries<Value>().reduce((a, [k, val]) => use(f(val), v => (isDefined(v) || !skipUndefined ? on(a, a => (a[k] = v)) : a)), initial);\n };\n\n properties = (key?: string): List<PropertyMeta> =>\n toList([...Object.getOwnPropertyNames(this.subject), ...Object.getOwnPropertyNames(Object.getPrototypeOf(this.subject))])\n .map(p => this.property(p))\n .filter(p => (key ? p.get(key) : p));\n\n keys = <T = any>(key: string): List<T> =>\n this.properties()\n .map(p => p.get<T>(key))\n .reduce((list, u) => (u ? list.add(u) : list), toList<T>());\n\n values = <T = unknown>(): List<T> => values<T>(this.subject);\n\n property = (property: string | symbol): PropertyMeta => new PropertyMeta(this.subject, property);\n}\n\nclass PropertyMeta {\n constructor(\n readonly subject: any,\n readonly property: string | symbol,\n private readonly data = Reflect.getMetadata(property, subject)\n ) {}\n\n get value(): any {\n return this.subject[this.property];\n }\n\n get = <T>(key: string): Optional<T> => (isDefined(this.data) && isDefined(this.data[key]) ? (this.data[key] as T) : undefined);\n\n set = <T>(key: string, value: T): T => {\n Reflect.defineMetadata(this.property, { ...this.data, [key]: value }, this.subject);\n return value;\n };\n}\n\nexport const meta = (subject: unknown): ClassMeta => new ClassMeta(subject ?? {});\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAO;AASP,IAAM,YAAN,MAAgB;AAAA,EACd,YACW,SACQ,QAAa,QAAQ,aAAa,SAAS,aAC5D;AAFS;AACQ;AAAA,EAChB;AAAA,EAEH,MAAM,CAAI,QAAmB,QAAQ,YAAY,KAAK,KAAK,IAAI;AAAA,EAE/D,MAAM,CAAI,KAAa,UAAgB;AACrC,YAAQ,eAAe,KAAK,OAAO,KAAK,IAAI;AAC5C,WAAO;AAAA,EACT;AAAA,EAEA,UAAU,MAAmC,QAAW,KAAK,OAAO;AAAA,EAEpE,QAAQ,CAAa,GAAsB,UAA4B,CAAC,MAA2B;AACjG,UAAM,EAAE,UAAU,CAAC,GAAG,gBAAgB,MAAM,IAAI;AAChD,WAAO,KAAK,QAAe,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,IAAI,EAAE,GAAG,GAAG,OAAM,UAAU,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAAA,OAAMA,GAAE,CAAC,IAAI,CAAE,IAAI,CAAE,GAAG,OAAO;AAAA,EAC/I;AAAA,EAEA,aAAa,CAAC,QACZ,OAAO,CAAC,GAAG,OAAO,oBAAoB,KAAK,OAAO,GAAG,GAAG,OAAO,oBAAoB,OAAO,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,EACrH,IAAI,OAAK,KAAK,SAAS,CAAC,CAAC,EACzB,OAAO,OAAM,MAAM,EAAE,IAAI,GAAG,IAAI,CAAE;AAAA,EAEvC,OAAO,CAAU,QACf,KAAK,WAAW,EACb,IAAI,OAAK,EAAE,IAAO,GAAG,CAAC,EACtB,OAAO,CAAC,MAAM,MAAO,IAAI,KAAK,IAAI,CAAC,IAAI,MAAO,OAAU,CAAC;AAAA,EAE9D,SAAS,MAA4B,OAAU,KAAK,OAAO;AAAA,EAE3D,WAAW,CAAC,aAA4C,IAAI,aAAa,KAAK,SAAS,QAAQ;AACjG;AAEA,IAAM,eAAN,MAAmB;AAAA,EACjB,YACW,SACA,UACQ,OAAO,QAAQ,YAAY,UAAU,OAAO,GAC7D;AAHS;AACA;AACQ;AAAA,EAChB;AAAA,EAEH,IAAI,QAAa;AACf,WAAO,KAAK,QAAQ,KAAK,QAAQ;AAAA,EACnC;AAAA,EAEA,MAAM,CAAI,QAA8B,UAAU,KAAK,IAAI,KAAK,UAAU,KAAK,KAAK,GAAG,CAAC,IAAK,KAAK,KAAK,GAAG,IAAU;AAAA,EAEpH,MAAM,CAAI,KAAa,UAAgB;AACrC,YAAQ,eAAe,KAAK,UAAU,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,KAAK,OAAO;AAClF,WAAO;AAAA,EACT;AACF;AAEO,IAAM,OAAO,CAAC,YAAgC,IAAI,UAAU,WAAW,CAAC,CAAC;","names":["a"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
+
if (decorator = decorators[i])
|
|
7
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
+
if (kind && result)
|
|
9
|
+
__defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export {
|
|
14
|
+
__decorateClass
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=chunk-4N72FQFX.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Enum
|
|
3
|
+
} from "./chunk-F34HSIZ5.mjs";
|
|
4
|
+
|
|
5
|
+
// src/http/HttpVerb.ts
|
|
6
|
+
var HttpVerb = class _HttpVerb extends Enum {
|
|
7
|
+
static Get = new _HttpVerb("Get");
|
|
8
|
+
static Put = new _HttpVerb("Put");
|
|
9
|
+
static Patch = new _HttpVerb("Patch");
|
|
10
|
+
static Post = new _HttpVerb("Post");
|
|
11
|
+
static Delete = new _HttpVerb("Delete");
|
|
12
|
+
constructor(name) {
|
|
13
|
+
super(name, name.toLowerCase(), name.toUpperCase());
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export {
|
|
18
|
+
HttpVerb
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=chunk-5AV36UKS.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/http/HttpVerb.ts"],"sourcesContent":["import { Enum } from '../types/Enum';\n\nexport class HttpVerb extends Enum {\n static Get = new HttpVerb('Get');\n static Put = new HttpVerb('Put');\n static Patch = new HttpVerb('Patch');\n static Post = new HttpVerb('Post');\n static Delete = new HttpVerb('Delete');\n\n constructor(name: string) {\n super(name, name.toLowerCase(), name.toUpperCase());\n }\n}\n"],"mappings":";;;;;AAEO,IAAM,WAAN,MAAM,kBAAiB,KAAK;AAAA,EACjC,OAAO,MAAM,IAAI,UAAS,KAAK;AAAA,EAC/B,OAAO,MAAM,IAAI,UAAS,KAAK;AAAA,EAC/B,OAAO,QAAQ,IAAI,UAAS,OAAO;AAAA,EACnC,OAAO,OAAO,IAAI,UAAS,MAAM;AAAA,EACjC,OAAO,SAAS,IAAI,UAAS,QAAQ;AAAA,EAErC,YAAY,MAAc;AACxB,UAAM,MAAM,KAAK,YAAY,GAAG,KAAK,YAAY,CAAC;AAAA,EACpD;AACF;","names":[]}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import {
|
|
2
|
+
seconds
|
|
3
|
+
} from "./chunk-KJVTSC6I.mjs";
|
|
4
|
+
import {
|
|
5
|
+
isDate
|
|
6
|
+
} from "./chunk-ADJAEGCT.mjs";
|
|
7
|
+
import {
|
|
8
|
+
choose,
|
|
9
|
+
tryTo
|
|
10
|
+
} from "./chunk-S6WR4MXU.mjs";
|
|
11
|
+
import {
|
|
12
|
+
Value
|
|
13
|
+
} from "./chunk-WSBULPUZ.mjs";
|
|
14
|
+
import {
|
|
15
|
+
ifDefined
|
|
16
|
+
} from "./chunk-ABGKS4KE.mjs";
|
|
17
|
+
import {
|
|
18
|
+
isA
|
|
19
|
+
} from "./chunk-ZHXKBOK2.mjs";
|
|
20
|
+
import {
|
|
21
|
+
use
|
|
22
|
+
} from "./chunk-ZPNFXK7Y.mjs";
|
|
23
|
+
import {
|
|
24
|
+
isDefined,
|
|
25
|
+
isNumber,
|
|
26
|
+
isString
|
|
27
|
+
} from "./chunk-DEJ7A5PY.mjs";
|
|
28
|
+
|
|
29
|
+
// src/domain/DateTime.ts
|
|
30
|
+
import { DateTime as LuxonDateTime, Settings } from "luxon";
|
|
31
|
+
Settings.defaultZone = "utc";
|
|
32
|
+
var DateTime = class _DateTime extends Value {
|
|
33
|
+
luxon;
|
|
34
|
+
constructor(value, format) {
|
|
35
|
+
const luxon = choose(value).type(isString, (v) => format ? LuxonDateTime.fromFormat(v, format, { setZone: true }) : LuxonDateTime.fromISO(v, { setZone: true })).type(isNumber, (v) => LuxonDateTime.fromMillis(v)).type(isDate, (v) => LuxonDateTime.fromJSDate(v)).type(isDateTime, (v) => v.luxon).else(value instanceof LuxonDateTime ? value : LuxonDateTime.fromISO(void 0));
|
|
36
|
+
super(luxon.toISO() ?? void 0);
|
|
37
|
+
this.luxon = luxon;
|
|
38
|
+
}
|
|
39
|
+
static get now() {
|
|
40
|
+
return new _DateTime(LuxonDateTime.utc());
|
|
41
|
+
}
|
|
42
|
+
get isValid() {
|
|
43
|
+
return isDefined(this.value) && this.utc.isValid;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* @deprecated Deprecated in favor for DateTime.from as that also accepts locales and another DateTime
|
|
47
|
+
*/
|
|
48
|
+
get fromNow() {
|
|
49
|
+
return this.from();
|
|
50
|
+
}
|
|
51
|
+
get inAmsterdam() {
|
|
52
|
+
return this.withZone("Europe/Amsterdam");
|
|
53
|
+
}
|
|
54
|
+
get inNewYork() {
|
|
55
|
+
return this.withZone("America/New_York");
|
|
56
|
+
}
|
|
57
|
+
get inLondon() {
|
|
58
|
+
return this.withZone("Europe/London");
|
|
59
|
+
}
|
|
60
|
+
get inWarsaw() {
|
|
61
|
+
return this.withZone("Europe/Warsaw");
|
|
62
|
+
}
|
|
63
|
+
get utc() {
|
|
64
|
+
return this.luxon.setZone("utc");
|
|
65
|
+
}
|
|
66
|
+
from(dateOrLocale, maybeLocale) {
|
|
67
|
+
return use(
|
|
68
|
+
(isString(dateOrLocale) ? dateOrLocale : maybeLocale) ?? "en",
|
|
69
|
+
(locale) => ifDefined(
|
|
70
|
+
isA(dateOrLocale) ? dateOrLocale : void 0,
|
|
71
|
+
(d) => this.utc.setLocale(locale).toRelative({ base: d.utc }),
|
|
72
|
+
() => this.utc.setLocale(locale).toRelative()
|
|
73
|
+
)
|
|
74
|
+
) ?? "";
|
|
75
|
+
}
|
|
76
|
+
isAfter(dt2) {
|
|
77
|
+
return this.utc > dt2.utc;
|
|
78
|
+
}
|
|
79
|
+
isBefore(dt2) {
|
|
80
|
+
return this.utc < dt2.utc;
|
|
81
|
+
}
|
|
82
|
+
equals(dt2) {
|
|
83
|
+
return this.utc.hasSame(dt2.utc, "millisecond");
|
|
84
|
+
}
|
|
85
|
+
add(n, unit = "day") {
|
|
86
|
+
return new _DateTime(this.luxon.plus(isNumber(n) ? { [unit]: n } : n));
|
|
87
|
+
}
|
|
88
|
+
subtract(n, unit = "day") {
|
|
89
|
+
return new _DateTime(this.luxon.minus(isNumber(n) ? { [unit]: n } : n));
|
|
90
|
+
}
|
|
91
|
+
diff(other, unit = "day", opts) {
|
|
92
|
+
return Math[opts?.rounding ?? "floor"](this.utc.diff(other.utc).as(unit));
|
|
93
|
+
}
|
|
94
|
+
startOf(unit = "day") {
|
|
95
|
+
return new _DateTime(this.luxon.startOf(unit));
|
|
96
|
+
}
|
|
97
|
+
endOf(unit = "day") {
|
|
98
|
+
return new _DateTime(this.luxon.endOf(unit));
|
|
99
|
+
}
|
|
100
|
+
isWeekend() {
|
|
101
|
+
return this.luxon.isWeekend;
|
|
102
|
+
}
|
|
103
|
+
withZone(zone) {
|
|
104
|
+
return new _DateTime(this.luxon.setZone(zone));
|
|
105
|
+
}
|
|
106
|
+
toString() {
|
|
107
|
+
return this.value ?? "";
|
|
108
|
+
}
|
|
109
|
+
toJSON() {
|
|
110
|
+
return this.utc.toISO();
|
|
111
|
+
}
|
|
112
|
+
toFormat(format) {
|
|
113
|
+
return this.luxon.toFormat(format);
|
|
114
|
+
}
|
|
115
|
+
toLocale(locale = "nl-NL", format = "D") {
|
|
116
|
+
return this.luxon.setLocale(locale).toFormat(format);
|
|
117
|
+
}
|
|
118
|
+
toFull(locale) {
|
|
119
|
+
return this.toLocale(locale, "DDD");
|
|
120
|
+
}
|
|
121
|
+
toDate() {
|
|
122
|
+
return this.isValid ? this.utc.toJSDate() : void 0;
|
|
123
|
+
}
|
|
124
|
+
toEpoch() {
|
|
125
|
+
return this.luxon.toMillis();
|
|
126
|
+
}
|
|
127
|
+
ago(end = _DateTime.now) {
|
|
128
|
+
return seconds.toText(end.diff(this, "second"));
|
|
129
|
+
}
|
|
130
|
+
withClock(clock) {
|
|
131
|
+
return tryTo(() => [this.toDate(), clock.toDate()]).map(([td, cd]) => new Date(td.getFullYear(), td.getMonth(), td.getDate(), cd.getHours(), cd.getMinutes(), cd.getSeconds())).map((d) => new _DateTime(d)).value;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
var isDateTime = (dt2) => isDefined(dt2) && dt2 instanceof DateTime;
|
|
135
|
+
var dt = (dt2) => new DateTime(dt2);
|
|
136
|
+
|
|
137
|
+
export {
|
|
138
|
+
DateTime,
|
|
139
|
+
isDateTime,
|
|
140
|
+
dt
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=chunk-5DJPREIN.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/domain/DateTime.ts"],"sourcesContent":["import { DateTime as LuxonDateTime, DateTimeUnit as LuxonDateTimeUnit, DurationUnit as LuxonDurationUnit, Settings } from 'luxon';\nimport { Value } from '../types/Value';\nimport { Optional } from '../types/Types';\nimport { choose } from '../types/Case';\nimport { isDefined, isNumber, isString } from '../types/Is';\nimport { isDate } from '../types/IsDate';\nimport { isA } from '../types/IsA';\nimport { ifDefined } from '../utils/If';\nimport { JsonValue } from '../types/Json';\nimport { seconds } from '../utils/Seconds';\nimport { tryTo } from '../types/Try';\nimport { use } from '../types/Constructor';\n\nSettings.defaultZone = 'utc';\n\nexport type DateTimeUnit = LuxonDateTimeUnit;\nexport type DurationUnit = LuxonDurationUnit;\nexport type Duration = Partial<Record<DurationUnit, number>>;\n\nexport type DiffOptions = {\n rounding: 'floor' | 'ceil' | 'round';\n};\n\nexport type DatetimeInput = string | number | Date | DateTime | null;\n\nexport class DateTime extends Value<Optional<string>> {\n protected readonly luxon: LuxonDateTime;\n\n constructor(value?: DatetimeInput);\n constructor(value?: string, format?: string);\n constructor(value?: DatetimeInput, format?: string) {\n const luxon = choose(value)\n .type(isString, v => (format ? LuxonDateTime.fromFormat(v, format, { setZone: true }) : LuxonDateTime.fromISO(v, { setZone: true })))\n .type(isNumber, v => LuxonDateTime.fromMillis(v))\n .type(isDate, v => LuxonDateTime.fromJSDate(v))\n .type(isDateTime, v => v.luxon)\n // Allow constructing with LuxonDateTime without exposing types\n .else(value instanceof LuxonDateTime ? value : LuxonDateTime.fromISO(undefined as any));\n\n super(luxon.toISO() ?? undefined);\n this.luxon = luxon;\n }\n\n static get now(): DateTime {\n return new DateTime(LuxonDateTime.utc() as any);\n }\n\n get isValid(): boolean {\n return isDefined(this.value) && this.utc.isValid;\n }\n\n /**\n * @deprecated Deprecated in favor for DateTime.from as that also accepts locales and another DateTime\n */\n get fromNow(): string {\n return this.from();\n }\n\n get inAmsterdam(): DateTime {\n return this.withZone('Europe/Amsterdam');\n }\n\n get inNewYork(): DateTime {\n return this.withZone('America/New_York');\n }\n\n get inLondon(): DateTime {\n return this.withZone('Europe/London');\n }\n\n get inWarsaw(): DateTime {\n return this.withZone('Europe/Warsaw');\n }\n\n protected get utc(): LuxonDateTime {\n return this.luxon.setZone('utc');\n }\n\n from(locale?: string): string;\n\n from(date?: DateTime, locale?: string): string;\n\n from(dateOrLocale?: string | DateTime, maybeLocale?: string): string {\n return (\n use((isString(dateOrLocale) ? dateOrLocale : maybeLocale) ?? 'en', locale =>\n ifDefined(\n isA<DateTime>(dateOrLocale) ? dateOrLocale : undefined,\n d => this.utc.setLocale(locale).toRelative({ base: d.utc }),\n () => this.utc.setLocale(locale).toRelative()\n )\n ) ?? ''\n );\n }\n\n isAfter(dt: DateTime): boolean {\n return this.utc > dt.utc;\n }\n\n isBefore(dt: DateTime): boolean {\n return this.utc < dt.utc;\n }\n\n equals(dt: DateTime): boolean {\n return this.utc.hasSame(dt.utc, 'millisecond');\n }\n\n add(n: number, unit?: DurationUnit): DateTime;\n\n add(duration: Duration): DateTime;\n\n add(n: number | Duration, unit: DurationUnit = 'day'): DateTime {\n return new DateTime(this.luxon.plus(isNumber(n) ? { [unit]: n } : n) as any);\n }\n\n subtract(n: number, unit?: DurationUnit): DateTime;\n\n subtract(duration: Duration): DateTime;\n\n subtract(n: number | Duration, unit: DurationUnit = 'day'): DateTime {\n return new DateTime(this.luxon.minus(isNumber(n) ? { [unit]: n } : n) as any);\n }\n\n diff(other: DateTime, unit: DateTimeUnit = 'day', opts?: DiffOptions): number {\n return Math[opts?.rounding ?? 'floor'](this.utc.diff(other.utc).as(unit));\n }\n\n startOf(unit: DateTimeUnit = 'day'): DateTime {\n return new DateTime(this.luxon.startOf(unit) as any);\n }\n\n endOf(unit: DateTimeUnit = 'day'): DateTime {\n return new DateTime(this.luxon.endOf(unit) as any);\n }\n\n isWeekend(): boolean {\n return this.luxon.isWeekend;\n }\n\n withZone(zone: string): DateTime {\n return new DateTime(this.luxon.setZone(zone) as any);\n }\n\n toString(): string {\n return this.value ?? '';\n }\n\n toJSON(): JsonValue {\n return this.utc.toISO();\n }\n\n toFormat(format: string): string {\n return this.luxon.toFormat(format);\n }\n\n toLocale(locale = 'nl-NL', format = 'D'): string {\n return this.luxon.setLocale(locale).toFormat(format);\n }\n\n toFull(locale?: string): string {\n return this.toLocale(locale, 'DDD');\n }\n\n toDate(): Optional<Date> {\n return this.isValid ? this.utc.toJSDate() : undefined;\n }\n\n toEpoch(): number {\n return this.luxon.toMillis();\n }\n\n ago(end: DateTime = DateTime.now): string {\n return seconds.toText(end.diff(this, 'second'));\n }\n\n withClock(clock: DateTime): DateTime {\n return tryTo(() => [this.toDate() as Date, clock.toDate() as Date])\n .map(([td, cd]) => new Date(td.getFullYear(), td.getMonth(), td.getDate(), cd.getHours(), cd.getMinutes(), cd.getSeconds()))\n .map(d => new DateTime(d)).value;\n }\n}\n\nexport const isDateTime = (dt?: unknown): dt is DateTime => isDefined(dt) && dt instanceof DateTime;\n\nexport const dt = (dt?: DatetimeInput): DateTime => new DateTime(dt);\n"],"mappings":"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","names":["dt"]}
|