@thisisagile/easy 8.18.0 → 8.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,6 +6,7 @@ export declare class RouteGateway extends Gateway {
6
6
  readonly api: Api;
7
7
  constructor(route: Func<Uri>, routeId: Func<Uri>, api?: Api);
8
8
  get(uri: Uri): Promise<List<Json>>;
9
+ getOne(uri: Uri): Promise<Json | undefined>;
9
10
  all(): Promise<List<Json>>;
10
11
  byId(id: Id): Promise<Json | undefined>;
11
12
  search(q: JsonValue): Promise<List<Json>>;
@@ -14,11 +14,14 @@ class RouteGateway extends types_1.Gateway {
14
14
  get(uri) {
15
15
  return this.api.get(uri).then(r => r.body.data?.items ?? (0, types_1.toList)());
16
16
  }
17
+ getOne(uri) {
18
+ return this.get(uri).then(r => r.first());
19
+ }
17
20
  all() {
18
21
  return this.get(this.route());
19
22
  }
20
23
  byId(id) {
21
- return this.get(this.routeId().id(id)).then(r => r.first());
24
+ return this.getOne(this.routeId().id(id));
22
25
  }
23
26
  search(q) {
24
27
  return this.get(this.route().query(q));
@@ -1 +1 @@
1
- {"version":3,"file":"RouteGateway.js","sourceRoot":"","sources":["../../src/services/RouteGateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RouteGateway.js","sourceRoot":"","sources":["../../src/services/RouteGateway.ts"],"names":[],"mappings":"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"}
@@ -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,11 +23,11 @@ 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
- get token(): unknown;
31
- set token(token: unknown);
29
+ get token(): any;
30
+ set token(token: any);
32
31
  get identity(): Identity;
33
32
  get jwt(): string;
34
33
  set jwt(jwt: string);
@@ -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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"}
@@ -13,6 +13,7 @@ export declare abstract class Enum implements Validatable {
13
13
  static byId<E extends Enum>(id: Id, alt?: Get<E, unknown>): E;
14
14
  static byIds<T extends Enum>(ids?: Id[]): List<T>;
15
15
  static filter<E extends Enum>(p: (value: E, index: number, array: E[]) => unknown, params?: unknown): List<E>;
16
+ static first<E extends Enum>(p?: (value: E, index: number, array: E[]) => unknown, params?: unknown): E;
16
17
  equals<E extends Enum | Id>(other: E): boolean;
17
18
  isIn<E extends Enum>(...items: E[]): boolean;
18
19
  toJSON(): JsonValue;
@@ -32,6 +32,9 @@ class Enum {
32
32
  static filter(p, params) {
33
33
  return this.all().filter(p, params);
34
34
  }
35
+ static first(p, params) {
36
+ return this.all().first(p, params);
37
+ }
35
38
  equals(other) {
36
39
  return this.id === ((0, exports.isEnum)(other) ? other.id : other);
37
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Enum.js","sourceRoot":"","sources":["../../src/types/Enum.ts"],"names":[],"mappings":";;;AAEA,+BAA6B;AAC7B,iCAA8B;AAC9B,6BAAiC;AAGjC,+BAAmC;AAEnC,MAAsB,IAAI;IACxB,YAA+B,IAAY,EAAW,KAAS,IAAI,CAAC,WAAW,EAAE,EAAW,OAAe,EAAE,CAAC,QAAQ,EAAE;QAAzF,SAAI,GAAJ,IAAI,CAAQ;QAAW,OAAE,GAAF,EAAE,CAAyB;QAAW,SAAI,GAAJ,IAAI,CAAwB;IAAG,CAAC;IAE5H,IAAI,OAAO;QACT,OAAO,IAAA,cAAS,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC;aACd,MAAM,EAAK;aACX,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,IAAI,CAAiB,EAAM,EAAE,GAAqB;QACvD,OAAO,CACL,IAAA,WAAI,EAAC,IAAI,CAAC;aACP,MAAM,EAAK;aACX,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,IAAA,cAAM,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,IAAA,WAAK,EAAC,GAAG,CAAC,CAClE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAiB,GAAU;QACrC,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC;aACd,MAAM,EAAK;aACX,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,IAAA,cAAM,EAAC,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,MAAM,CAAiB,CAAmD,EAAE,MAAgB;QACjG,OAAO,IAAI,CAAC,GAAG,EAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAsB,KAAQ;QAClC,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAiB,GAAG,KAAU,IAAa,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAExF,MAAM;QACJ,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;CACF;AA5CD,oBA4CC;AAEM,MAAM,MAAM,GAAG,CAAC,CAAW,EAAa,EAAE,CAAC,IAAA,cAAS,EAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,IAAA,UAAI,EAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAA9G,QAAA,MAAM,UAAwG"}
1
+ {"version":3,"file":"Enum.js","sourceRoot":"","sources":["../../src/types/Enum.ts"],"names":[],"mappings":";;;AAEA,+BAA6B;AAC7B,iCAA8B;AAC9B,6BAAiC;AAGjC,+BAAmC;AAEnC,MAAsB,IAAI;IACxB,YAA+B,IAAY,EAAW,KAAS,IAAI,CAAC,WAAW,EAAE,EAAW,OAAe,EAAE,CAAC,QAAQ,EAAE;QAAzF,SAAI,GAAJ,IAAI,CAAQ;QAAW,OAAE,GAAF,EAAE,CAAyB;QAAW,SAAI,GAAJ,IAAI,CAAwB;IAAG,CAAC;IAE5H,IAAI,OAAO;QACT,OAAO,IAAA,cAAS,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC;aACd,MAAM,EAAK;aACX,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,IAAA,cAAM,EAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,IAAI,CAAiB,EAAM,EAAE,GAAqB;QACvD,OAAO,CACL,IAAA,WAAI,EAAC,IAAI,CAAC;aACP,MAAM,EAAK;aACX,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,IAAA,cAAM,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,IAAA,WAAK,EAAC,GAAG,CAAC,CAClE,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAiB,GAAU;QACrC,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC;aACd,MAAM,EAAK;aACX,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,IAAA,cAAM,EAAC,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,MAAM,CAAiB,CAAmD,EAAE,MAAgB;QACjG,OAAO,IAAI,CAAC,GAAG,EAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,KAAK,CAAiB,CAAoD,EAAE,MAAgB;QACjG,OAAQ,IAAI,CAAC,GAAG,EAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAEC,MAAM,CAAsB,KAAQ;QAClC,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAiB,GAAG,KAAU,IAAa,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAExF,MAAM;QACJ,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;CACF;AAhDD,oBAgDC;AAEM,MAAM,MAAM,GAAG,CAAC,CAAW,EAAa,EAAE,CAAC,IAAA,cAAS,EAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,IAAA,UAAI,EAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAA9G,QAAA,MAAM,UAAwG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "8.18.0",
3
+ "version": "8.20.0",
4
4
  "description": "Straightforward library for building domain-driven microservice architectures",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
@@ -31,9 +31,9 @@
31
31
  "access": "public"
32
32
  },
33
33
  "devDependencies": {
34
- "@thisisagile/easy-test": "8.18.0",
34
+ "@thisisagile/easy-test": "8.20.0",
35
35
  "@types/form-urlencoded": "^4.4.0",
36
- "@types/jsonwebtoken": "^8.5.6",
36
+ "@types/jsonwebtoken": "^8.5.8",
37
37
  "@types/validator": "^13.7.0"
38
38
  },
39
39
  "dependencies": {
@@ -11,12 +11,16 @@ export class RouteGateway extends Gateway {
11
11
  return this.api.get(uri).then(r => r.body.data?.items ?? toList());
12
12
  }
13
13
 
14
+ getOne(uri: Uri): Promise<Json | undefined> {
15
+ return this.get(uri).then(r => r.first());
16
+ }
17
+
14
18
  all(): Promise<List<Json>> {
15
19
  return this.get(this.route());
16
20
  }
17
21
 
18
22
  byId(id: Id): Promise<Json | undefined> {
19
- return this.get(this.routeId().id(id)).then(r => r.first());
23
+ return this.getOne(this.routeId().id(id));
20
24
  }
21
25
 
22
26
  search(q: JsonValue): Promise<List<Json>> {
@@ -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,16 +35,16 @@ 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(): unknown {
43
+ get token(): any {
45
44
  return this.get('token');
46
45
  }
47
46
 
48
- set token(token: unknown) {
47
+ set token(token: any) {
49
48
  this.set('token', token);
50
49
  }
51
50
 
@@ -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();
package/src/types/Enum.ts CHANGED
@@ -38,6 +38,10 @@ export abstract class Enum implements Validatable {
38
38
  return this.all<E>().filter(p, params);
39
39
  }
40
40
 
41
+ static first<E extends Enum>(p?: (value: E, index: number, array: E[]) => unknown, params?: unknown) : E {
42
+ return this.all<E>().first(p, params);
43
+ }
44
+
41
45
  equals<E extends Enum | Id>(other: E): boolean {
42
46
  return this.id === (isEnum(other) ? other.id : other);
43
47
  }