@thisisagile/easy 7.36.0 → 7.37.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.
@@ -0,0 +1,15 @@
1
+ export declare class CacheControl {
2
+ private age;
3
+ private stale?;
4
+ readonly enabled: boolean;
5
+ private constructor();
6
+ static disabled: () => CacheControl;
7
+ static OneSecond: () => CacheControl;
8
+ static fiveSeconds: () => CacheControl;
9
+ static tenSeconds: () => CacheControl;
10
+ static custom: (maxAge: number, staleWhileRevalidate?: number | undefined) => CacheControl;
11
+ maxAge: (a: number) => this;
12
+ staleWhileRevalidate: (s?: number | undefined) => this;
13
+ value: () => string;
14
+ name: string;
15
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheControl = void 0;
4
+ const types_1 = require("../types");
5
+ class CacheControl {
6
+ constructor(age = 1, stale, enabled = true) {
7
+ this.age = age;
8
+ this.stale = stale;
9
+ this.enabled = enabled;
10
+ this.maxAge = (a) => {
11
+ this.age = Math.abs(a);
12
+ return this;
13
+ };
14
+ this.staleWhileRevalidate = (s) => {
15
+ this.stale = (0, types_1.isDefined)(s) ? Math.abs(s) : undefined;
16
+ return this;
17
+ };
18
+ this.value = () => {
19
+ const swr = (0, types_1.isDefined)(this.stale) ? `, stale-while-revalidate=${this.stale}` : '';
20
+ return this.enabled ? `max-age=${this.age}${swr}` : '';
21
+ };
22
+ this.name = 'Cache-Control';
23
+ }
24
+ }
25
+ exports.CacheControl = CacheControl;
26
+ CacheControl.disabled = () => new CacheControl(0, 0, false);
27
+ CacheControl.OneSecond = () => new CacheControl().maxAge(1).staleWhileRevalidate(1);
28
+ CacheControl.fiveSeconds = () => new CacheControl().maxAge(5).staleWhileRevalidate(5);
29
+ CacheControl.tenSeconds = () => new CacheControl().maxAge(10).staleWhileRevalidate(10);
30
+ CacheControl.custom = (maxAge, staleWhileRevalidate) => new CacheControl().maxAge(maxAge).staleWhileRevalidate(staleWhileRevalidate);
31
+ //# sourceMappingURL=CacheControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheControl.js","sourceRoot":"","sources":["../../src/http/CacheControl.ts"],"names":[],"mappings":";;;AAAA,oCAAqC;AAErC,MAAa,YAAY;IAEvB,YAA4B,MAAc,CAAC,EAAU,KAAc,EAAW,UAAU,IAAI;QAAhE,QAAG,GAAH,GAAG,CAAY;QAAU,UAAK,GAAL,KAAK,CAAS;QAAW,YAAO,GAAP,OAAO,CAAO;QAS5F,WAAM,GAAG,CAAC,CAAS,EAAQ,EAAE;YAC3B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,yBAAoB,GAAG,CAAC,CAAU,EAAQ,EAAE;YAC1C,IAAI,CAAC,KAAK,GAAG,IAAA,iBAAS,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,UAAK,GAAG,GAAW,EAAE;YACnB,MAAM,GAAG,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,4BAA4B,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,CAAC,CAAC;QAEF,SAAI,GAAG,eAAe,CAAC;IAvBvB,CAAC;;AAHH,oCA4BC;AAvBQ,qBAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/C,sBAAS,GAAG,GAAG,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACvE,wBAAW,GAAG,GAAG,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACzE,uBAAU,GAAG,GAAG,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;AAC1E,mBAAM,GAAG,CAAC,MAAc,EAAE,oBAA6B,EAAE,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC"}
@@ -1,9 +1,10 @@
1
- import { ContentType, HttpStatus, HttpVerb } from './index';
1
+ import { CacheControl, ContentType, HttpStatus, HttpVerb } from './index';
2
2
  export declare type VerbOptions = {
3
3
  onOk?: HttpStatus;
4
4
  onNotFound?: HttpStatus;
5
5
  onError?: HttpStatus;
6
6
  type?: ContentType;
7
+ cache?: CacheControl;
7
8
  };
8
9
  export declare type Verb = {
9
10
  verb: HttpVerb;
package/dist/http/Verb.js CHANGED
@@ -8,6 +8,7 @@ const toVerbOptions = (options) => ({
8
8
  onNotFound: options?.onNotFound ?? index_1.HttpStatus.NotFound,
9
9
  onError: options?.onError ?? index_1.HttpStatus.BadRequest,
10
10
  type: options?.type ?? index_1.ContentType.Json,
11
+ cache: options?.cache ?? index_1.CacheControl.disabled()
11
12
  });
12
13
  exports.toVerbOptions = toVerbOptions;
13
14
  const toVerb = (verb, options) => (subject, property) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Verb.js","sourceRoot":"","sources":["../../src/http/Verb.ts"],"names":[],"mappings":";;;AAAA,oCAAgC;AAChC,mCAA4D;AAKrD,MAAM,aAAa,GAAG,CAAC,OAAqB,EAAyB,EAAE,CAAC,CAAC;IAC9E,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,kBAAU,CAAC,EAAE;IACpC,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,kBAAU,CAAC,QAAQ;IACtD,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,kBAAU,CAAC,UAAU;IAClD,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,mBAAW,CAAC,IAAI;CACxC,CAAC,CAAC;AALU,QAAA,aAAa,iBAKvB;AAEH,MAAM,MAAM,GACV,CAAI,IAAc,EAAE,OAAqB,EAAqB,EAAE,CAChE,CAAC,OAAgB,EAAE,QAAyB,EAAQ,EAAE;IACpD,IAAA,YAAI,EAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC;AAEG,MAAM,GAAG,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAAlF,QAAA,GAAG,OAA+E;AAExF,MAAM,MAAM,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,kBAAU,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAAvH,QAAA,MAAM,UAAiH;AAE7H,MAAM,GAAG,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAAlF,QAAA,GAAG,OAA+E;AAExF,MAAM,KAAK,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAAtF,QAAA,KAAK,SAAiF;AAE5F,MAAM,IAAI,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,kBAAU,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAArH,QAAA,IAAI,QAAiH;AAE3H,MAAM,GAAG,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAU,CAAC,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAAxH,QAAA,GAAG,OAAqH;AAE9H,MAAM,MAAM,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,mBAAW,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAAtH,QAAA,MAAM,UAAgH"}
1
+ {"version":3,"file":"Verb.js","sourceRoot":"","sources":["../../src/http/Verb.ts"],"names":[],"mappings":";;;AAAA,oCAAgC;AAChC,mCAA0E;AAKnE,MAAM,aAAa,GAAG,CAAC,OAAqB,EAAyB,EAAE,CAAC,CAAC;IAC9E,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,kBAAU,CAAC,EAAE;IACpC,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,kBAAU,CAAC,QAAQ;IACtD,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,kBAAU,CAAC,UAAU;IAClD,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,mBAAW,CAAC,IAAI;IACvC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,oBAAY,CAAC,QAAQ,EAAE;CACjD,CAAC,CAAC;AANU,QAAA,aAAa,iBAMvB;AAEH,MAAM,MAAM,GACV,CAAI,IAAc,EAAE,OAAqB,EAAqB,EAAE,CAChE,CAAC,OAAgB,EAAE,QAAyB,EAAQ,EAAE;IACpD,IAAA,YAAI,EAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC;AAEG,MAAM,GAAG,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAAlF,QAAA,GAAG,OAA+E;AAExF,MAAM,MAAM,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,kBAAU,CAAC,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAAvH,QAAA,MAAM,UAAiH;AAE7H,MAAM,GAAG,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAAlF,QAAA,GAAG,OAA+E;AAExF,MAAM,KAAK,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAAtF,QAAA,KAAK,SAAiF;AAE5F,MAAM,IAAI,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,kBAAU,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAArH,QAAA,IAAI,QAAiH;AAE3H,MAAM,GAAG,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAU,CAAC,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAAxH,QAAA,GAAG,OAAqH;AAE9H,MAAM,MAAM,GAAG,CAAC,OAAqB,EAAqB,EAAE,CAAC,MAAM,CAAC,gBAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,mBAAW,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAAtH,QAAA,MAAM,UAAgH"}
@@ -1,3 +1,4 @@
1
+ export * from './CacheControl';
1
2
  export * from './ContentType';
2
3
  export * from './HttpHeader';
3
4
  export * from './HttpStatus';
@@ -10,6 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./CacheControl"), exports);
13
14
  __exportStar(require("./ContentType"), exports);
14
15
  __exportStar(require("./HttpHeader"), exports);
15
16
  __exportStar(require("./HttpStatus"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,oDAAkC;AAClC,4CAA0B;AAC1B,mDAAiC;AACjC,oDAAkC;AAClC,6CAA2B;AAC3B,+CAA6B;AAC7B,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA8B;AAC9B,gDAA8B;AAC9B,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,oDAAkC;AAClC,4CAA0B;AAC1B,mDAAiC;AACjC,oDAAkC;AAClC,6CAA2B;AAC3B,+CAA6B;AAC7B,yCAAuB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thisisagile/easy",
3
- "version": "7.36.0",
3
+ "version": "7.37.3",
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": "7.36.0",
34
+ "@thisisagile/easy-test": "7.37.3",
35
35
  "@types/form-urlencoded": "^4.4.0",
36
36
  "@types/jsonwebtoken": "^8.5.5",
37
37
  "@types/validator": "^13.6.5"
@@ -0,0 +1,31 @@
1
+ import { isDefined } from '../types';
2
+
3
+ export class CacheControl {
4
+
5
+ private constructor(private age: number = 1, private stale?: number, readonly enabled = true) {
6
+ }
7
+
8
+ static disabled = () => new CacheControl(0, 0, false);
9
+ static OneSecond = () => new CacheControl().maxAge(1).staleWhileRevalidate(1);
10
+ static fiveSeconds = () => new CacheControl().maxAge(5).staleWhileRevalidate(5);
11
+ static tenSeconds = () => new CacheControl().maxAge(10).staleWhileRevalidate(10);
12
+ static custom = (maxAge: number, staleWhileRevalidate?: number) => new CacheControl().maxAge(maxAge).staleWhileRevalidate(staleWhileRevalidate);
13
+
14
+ maxAge = (a: number): this => {
15
+ this.age = Math.abs(a);
16
+ return this;
17
+ };
18
+
19
+ staleWhileRevalidate = (s?: number): this => {
20
+ this.stale = isDefined(s) ? Math.abs(s) : undefined;
21
+ return this;
22
+ };
23
+
24
+ value = (): string => {
25
+ const swr = isDefined(this.stale) ? `, stale-while-revalidate=${this.stale}` : '';
26
+ return this.enabled ? `max-age=${this.age}${swr}` : '';
27
+ };
28
+
29
+ name = 'Cache-Control';
30
+
31
+ }
package/src/http/Verb.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { meta } from '../types';
2
- import { ContentType, HttpStatus, HttpVerb } from './index';
2
+ import { CacheControl, ContentType, HttpStatus, HttpVerb } from './index';
3
3
 
4
- export type VerbOptions = { onOk?: HttpStatus; onNotFound?: HttpStatus; onError?: HttpStatus; type?: ContentType };
4
+ export type VerbOptions = { onOk?: HttpStatus; onNotFound?: HttpStatus; onError?: HttpStatus; type?: ContentType, cache?: CacheControl };
5
5
  export type Verb = { verb: HttpVerb; options: VerbOptions };
6
6
 
7
7
  export const toVerbOptions = (options?: VerbOptions): Required<VerbOptions> => ({
@@ -9,6 +9,7 @@ export const toVerbOptions = (options?: VerbOptions): Required<VerbOptions> => (
9
9
  onNotFound: options?.onNotFound ?? HttpStatus.NotFound,
10
10
  onError: options?.onError ?? HttpStatus.BadRequest,
11
11
  type: options?.type ?? ContentType.Json,
12
+ cache: options?.cache ?? CacheControl.disabled()
12
13
  });
13
14
 
14
15
  const toVerb =
package/src/http/index.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './CacheControl'
1
2
  export * from './ContentType';
2
3
  export * from './HttpHeader';
3
4
  export * from './HttpStatus';