@thisisagile/easy 8.19.0 → 8.22.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.
@@ -5,4 +5,8 @@ export declare class Weight extends Struct {
5
5
  readonly uow: UnitOfWeight;
6
6
  sizeInG: () => number;
7
7
  gte: (w: Weight) => boolean;
8
+ lte: (w: Weight) => boolean;
9
+ between: (lower: Weight, upper?: Weight) => boolean;
10
+ sum: (add: Weight) => Weight;
8
11
  }
12
+ export declare const weight: (value: number, uow?: UnitOfWeight | undefined) => Weight;
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.Weight = void 0;
12
+ exports.weight = exports.Weight = void 0;
13
13
  const enums_1 = require("../enums");
14
14
  const validation_1 = require("../../validation");
15
15
  const Struct_1 = require("../Struct");
@@ -20,6 +20,9 @@ class Weight extends Struct_1.Struct {
20
20
  this.uow = enums_1.UnitOfWeight.byId(this.state.uow, enums_1.UnitOfWeight.G);
21
21
  this.sizeInG = () => this.value * this.uow.gMultiplier;
22
22
  this.gte = (w) => this.sizeInG() >= w.sizeInG();
23
+ this.lte = (w) => this.sizeInG() <= w.sizeInG();
24
+ this.between = (lower, upper = (0, exports.weight)(Number.MAX_VALUE, this.uow)) => this.gte(lower) && this.lte(upper);
25
+ this.sum = (add) => (0, exports.weight)((this.sizeInG() + add.sizeInG()) / this.uow.gMultiplier, this.uow);
23
26
  }
24
27
  }
25
28
  __decorate([
@@ -27,4 +30,6 @@ __decorate([
27
30
  __metadata("design:type", Number)
28
31
  ], Weight.prototype, "value", void 0);
29
32
  exports.Weight = Weight;
33
+ const weight = (value, uow) => new Weight({ value, uow });
34
+ exports.weight = weight;
30
35
  //# sourceMappingURL=Weight.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Weight.js","sourceRoot":"","sources":["../../../src/domain/structs/Weight.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAAwC;AACxC,iDAA4C;AAC5C,sCAAmC;AAEnC,MAAa,MAAO,SAAQ,eAAM;IAAlC;;QACuB,UAAK,GAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7C,QAAG,GAAiB,oBAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAY,CAAC,CAAC,CAAC,CAAC;QAC/E,YAAO,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;QAE1D,QAAG,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9D,CAAC;CAAA;AALa;IAAX,IAAA,qBAAQ,GAAE;;qCAA2C;AADxD,wBAMC"}
1
+ {"version":3,"file":"Weight.js","sourceRoot":"","sources":["../../../src/domain/structs/Weight.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAAwC;AACxC,iDAA4C;AAC5C,sCAAmC;AAEnC,MAAa,MAAO,SAAQ,eAAM;IAAlC;;QACuB,UAAK,GAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7C,QAAG,GAAiB,oBAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,oBAAY,CAAC,CAAC,CAAC,CAAC;QAC/E,YAAO,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;QAE1D,QAAG,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAE5D,QAAG,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAG5D,YAAO,GAAG,CAAC,KAAa,EAAE,KAAK,GAAG,IAAA,cAAM,EAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5G,QAAG,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,IAAA,cAAM,EAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3G,CAAC;CAAA;AAXa;IAAX,IAAA,qBAAQ,GAAE;;qCAA2C;AADxD,wBAYC;AAEM,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,GAAkB,EAAU,EAAE,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAAnF,QAAA,MAAM,UAA6E"}
@@ -1,13 +1,12 @@
1
1
  import { Uuid } from './Uuid';
2
2
  import { Identity } from './Identity';
3
- import { Construct } from './Constructor';
4
- export declare type EnvContext = {
3
+ export interface EnvContext {
5
4
  readonly domain: string;
6
5
  readonly name: string;
7
6
  readonly host: string;
8
7
  readonly port: number;
9
8
  get(key: string, alt?: string): string | undefined;
10
- };
9
+ }
11
10
  export declare class DotEnvContext implements EnvContext {
12
11
  readonly domain: string;
13
12
  readonly name: string;
@@ -15,7 +14,7 @@ export declare class DotEnvContext implements EnvContext {
15
14
  readonly port: number;
16
15
  readonly get: (key: string, alt?: string | undefined) => string | undefined;
17
16
  }
18
- export declare type RequestContext = {
17
+ export interface RequestContext {
19
18
  token?: any;
20
19
  identity?: Identity;
21
20
  jwt: string;
@@ -24,8 +23,8 @@ export declare type RequestContext = {
24
23
  get<T>(key: string): T;
25
24
  set<T>(key: string, value: T): T;
26
25
  create: (f: () => void) => void;
27
- };
28
- export declare class BaseContext implements RequestContext {
26
+ }
27
+ export declare class BaseRequestContext implements RequestContext {
29
28
  private state;
30
29
  get token(): any;
31
30
  set token(token: any);
@@ -40,23 +39,20 @@ export declare class BaseContext implements RequestContext {
40
39
  set<T>(key: string, value: T): T;
41
40
  readonly create: (f: () => void) => void;
42
41
  }
43
- export declare type Contexts<E extends EnvContext, R extends RequestContext> = {
44
- env?: E;
45
- request?: R;
42
+ export declare class BaseContext extends BaseRequestContext {
43
+ }
44
+ export interface Contexts {
45
+ env?: EnvContext;
46
+ request?: RequestContext;
46
47
  other?: any;
47
- };
48
- export declare class Context<E extends EnvContext, R extends RequestContext> {
49
- protected state: Contexts<E, R>;
50
- constructor(state?: Contexts<E, R>);
51
- get env(): E;
52
- set env(env: E);
53
- get request(): R;
54
- set request(request: R);
48
+ }
49
+ export declare class Context {
50
+ protected state: Contexts;
51
+ constructor(state?: Contexts);
52
+ get env(): EnvContext;
53
+ set env(env: EnvContext);
54
+ get request(): RequestContext;
55
+ set request(request: RequestContext);
55
56
  get other(): any;
56
- static use: <E_1 extends EnvContext, R_1 extends RequestContext>({ env, request, other, }: {
57
- env?: Construct<E_1> | undefined;
58
- request?: Construct<R_1> | undefined;
59
- other?: any;
60
- }) => Context<E_1, R_1>;
61
57
  }
62
- export declare const ctx: Context<EnvContext, RequestContext>;
58
+ export declare const ctx: Context;
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ctx = exports.Context = exports.BaseContext = exports.DotEnvContext = void 0;
3
+ exports.ctx = exports.Context = exports.BaseContext = exports.BaseRequestContext = exports.DotEnvContext = void 0;
4
4
  const Text_1 = require("./Text");
5
5
  const Try_1 = require("./Try");
6
- const Constructor_1 = require("./Constructor");
7
6
  class DotEnvContext {
8
7
  constructor() {
9
8
  this.domain = process.env.DOMAIN ?? 'easy';
@@ -16,7 +15,7 @@ class DotEnvContext {
16
15
  }
17
16
  }
18
17
  exports.DotEnvContext = DotEnvContext;
19
- class BaseContext {
18
+ class BaseRequestContext {
20
19
  constructor() {
21
20
  this.state = {};
22
21
  this.create = (f) => f();
@@ -55,16 +54,20 @@ class BaseContext {
55
54
  return (this.state[key] = value);
56
55
  }
57
56
  }
57
+ exports.BaseRequestContext = BaseRequestContext;
58
+ class BaseContext extends BaseRequestContext {
59
+ }
58
60
  exports.BaseContext = BaseContext;
59
61
  class Context {
60
62
  constructor(state = {}) {
61
63
  this.state = state;
62
64
  this.state = {
63
- ...({
65
+ ...{
64
66
  env: new DotEnvContext(),
65
- request: new BaseContext(),
67
+ request: new BaseRequestContext(),
66
68
  other: {},
67
- }), ...this.state,
69
+ },
70
+ ...this.state,
68
71
  };
69
72
  }
70
73
  get env() {
@@ -84,10 +87,5 @@ class Context {
84
87
  }
85
88
  }
86
89
  exports.Context = Context;
87
- Context.use = ({ env, request, other, }) => new Context({
88
- env: env && (0, Constructor_1.ofConstruct)(env),
89
- request: request && (0, Constructor_1.ofConstruct)(request),
90
- other,
91
- });
92
90
  exports.ctx = new Context();
93
91
  //# sourceMappingURL=Context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../src/types/Context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../src/types/Context.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Id, Text } from '../types';
2
- export declare class Sentence {
2
+ export declare class Sentence implements Text {
3
3
  private sentence;
4
4
  constructor(word: Text, pre?: Sentence, sentence?: Text[]);
5
5
  toString(): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "8.19.0",
3
+ "version": "8.22.2",
4
4
  "description": "Straightforward library for building domain-driven microservice architectures",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
@@ -31,7 +31,7 @@
31
31
  "access": "public"
32
32
  },
33
33
  "devDependencies": {
34
- "@thisisagile/easy-test": "8.19.0",
34
+ "@thisisagile/easy-test": "8.22.2",
35
35
  "@types/form-urlencoded": "^4.4.0",
36
36
  "@types/jsonwebtoken": "^8.5.8",
37
37
  "@types/validator": "^13.7.0"
@@ -8,4 +8,12 @@ export class Weight extends Struct {
8
8
  sizeInG = (): number => this.value * this.uow.gMultiplier;
9
9
 
10
10
  gte = (w: Weight): boolean => this.sizeInG() >= w.sizeInG();
11
- }
11
+ // gt = (w: Weight): boolean => this.sizeInG() > w.sizeInG();
12
+ lte = (w: Weight): boolean => this.sizeInG() <= w.sizeInG();
13
+ // lt = (w: Weight): boolean => this.sizeInG() < w.sizeInG();
14
+
15
+ between = (lower: Weight, upper = weight(Number.MAX_VALUE, this.uow)) => this.gte(lower) && this.lte(upper);
16
+ sum = (add: Weight): Weight => weight((this.sizeInG() + add.sizeInG()) / this.uow.gMultiplier, this.uow);
17
+ }
18
+
19
+ export const weight = (value: number, uow?: UnitOfWeight): Weight => new Weight({ value, uow });
@@ -2,16 +2,15 @@ import { Uuid } from './Uuid';
2
2
  import { text } from './Text';
3
3
  import { Identity } from './Identity';
4
4
  import { tryTo } from './Try';
5
- import { Construct, ofConstruct } from './Constructor';
6
5
 
7
- export type EnvContext = {
6
+ export interface EnvContext {
8
7
  readonly domain: string;
9
8
  readonly name: string;
10
9
  readonly host: string;
11
10
  readonly port: number;
12
11
 
13
12
  get(key: string, alt?: string): string | undefined;
14
- };
13
+ }
15
14
 
16
15
  export class DotEnvContext implements EnvContext {
17
16
  readonly domain = process.env.DOMAIN ?? 'easy';
@@ -23,11 +22,11 @@ export class DotEnvContext implements EnvContext {
23
22
  tryTo(() =>
24
23
  text(key)
25
24
  .map(k => k.replace(/([a-z])([A-Z])/g, '$1 $2'))
26
- .snake.toString(),
25
+ .snake.toString()
27
26
  ).map(k => process.env[k] ?? alt).value;
28
27
  }
29
28
 
30
- export type RequestContext = {
29
+ export interface RequestContext {
31
30
  token?: any;
32
31
  identity?: Identity;
33
32
  jwt: string;
@@ -36,12 +35,12 @@ export type RequestContext = {
36
35
  get<T>(key: string): T;
37
36
  set<T>(key: string, value: T): T;
38
37
  create: (f: () => void) => void;
39
- };
38
+ }
40
39
 
41
- export class BaseContext implements RequestContext {
40
+ export class BaseRequestContext implements RequestContext {
42
41
  private state: any = {};
43
42
 
44
- get token(): any {
43
+ get token(): any {
45
44
  return this.get('token');
46
45
  }
47
46
 
@@ -88,52 +87,48 @@ export class BaseContext implements RequestContext {
88
87
  public readonly create = (f: () => void): void => f();
89
88
  }
90
89
 
91
- export type Contexts<E extends EnvContext, R extends RequestContext> = {
92
- env?: E;
93
- request?: R;
90
+ /**
91
+ * @deprecated Renamed to BaseRequestContext
92
+ */
93
+ export class BaseContext extends BaseRequestContext {}
94
+
95
+ export interface Contexts {
96
+ env?: EnvContext;
97
+ request?: RequestContext;
94
98
  other?: any;
95
99
  }
96
100
 
97
- export class Context<E extends EnvContext, R extends RequestContext> {
98
- constructor(protected state: Contexts<E, R> = {}) {
101
+ export class Context {
102
+ constructor(protected state: Contexts = {}) {
99
103
  this.state = {
100
- ...({
101
- env: new DotEnvContext() as E,
102
- request: new BaseContext() as RequestContext as R,
104
+ ...{
105
+ env: new DotEnvContext(),
106
+ request: new BaseRequestContext(),
103
107
  other: {},
104
- }), ...this.state,
108
+ },
109
+ ...this.state,
105
110
  };
106
111
  }
107
112
 
108
- get env(): E {
109
- return this.state.env as E;
113
+ get env(): EnvContext {
114
+ return this.state.env as EnvContext;
110
115
  }
111
116
 
112
- set env(env: E) {
117
+ set env(env: EnvContext) {
113
118
  this.state.env = env;
114
119
  }
115
120
 
116
- get request(): R {
117
- return this.state.request as R;
121
+ get request(): RequestContext {
122
+ return this.state.request as RequestContext;
118
123
  }
119
124
 
120
- set request(request: R) {
125
+ set request(request: RequestContext) {
121
126
  this.state.request = request;
122
127
  }
123
128
 
124
129
  get other(): any {
125
130
  return this.state.other;
126
131
  }
127
-
128
- static use = <E extends EnvContext, R extends RequestContext>({
129
- env,
130
- request,
131
- other,
132
- }: { env?: Construct<E>, request?: Construct<R>, other?: any }): Context<E, R> => new Context<E, R>({
133
- env: env && ofConstruct(env),
134
- request: request && ofConstruct(request),
135
- other,
136
- });
137
132
  }
138
133
 
139
134
  export const ctx = new Context();
@@ -1,6 +1,6 @@
1
1
  import { Id, text, Text } from '../types';
2
2
 
3
- export class Sentence {
3
+ export class Sentence implements Text {
4
4
  constructor(word: Text, pre?: Sentence, private sentence: Text[] = (pre?.sentence ?? []).concat(word)) {}
5
5
 
6
6
  toString(): string {