@thisisagile/easy 12.7.3 → 12.7.9

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,5 @@
1
+ export declare type CacheAge = `${number}${'ms' | 's' | 'm' | 'h' | 'd'}` | number;
2
+ export declare const cacheAge: {
3
+ toMilliseconds: (ca: CacheAge) => number;
4
+ toSeconds: (ca: CacheAge) => number;
5
+ };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cacheAge = void 0;
4
+ const types_1 = require("../types");
5
+ const ageNumber = (s) => (0, types_1.asNumber)(s.replace(/[a-z]/g, ''));
6
+ exports.cacheAge = {
7
+ toMilliseconds: (ca) => (0, types_1.choose)((0, types_1.asString)(ca))
8
+ .case(c => c.endsWith('ms'), c => ageNumber(c))
9
+ .case(c => c.endsWith('s'), c => ageNumber(c) * 1000)
10
+ .case(c => c.endsWith('m'), c => ageNumber(c) * 60 * 1000)
11
+ .case(c => c.endsWith('h'), c => ageNumber(c) * 3600 * 1000)
12
+ .case(c => c.endsWith('d'), c => ageNumber(c) * 24 * 3600 * 1000)
13
+ .else(ca),
14
+ toSeconds: (ca) => (0, types_1.choose)((0, types_1.asString)(ca))
15
+ .case(c => c.endsWith('ms'), c => ageNumber(c) / 1000)
16
+ .case(c => c.endsWith('s'), c => ageNumber(c))
17
+ .case(c => c.endsWith('m'), c => ageNumber(c) * 60)
18
+ .case(c => c.endsWith('h'), c => ageNumber(c) * 3600)
19
+ .case(c => c.endsWith('d'), c => ageNumber(c) * 24 * 3600)
20
+ .else(ca)
21
+ };
22
+ //# sourceMappingURL=CacheAge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheAge.js","sourceRoot":"","sources":["../../src/http/CacheAge.ts"],"names":[],"mappings":";;;AAAA,oCAAoD;AAIpD,MAAM,SAAS,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAE9D,QAAA,QAAQ,GAAG;IACpB,cAAc,EAAE,CAAC,EAAY,EAAU,EAAE,CACrC,IAAA,cAAM,EAAC,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;SACf,IAAI,CACD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EACrB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CACpB;SACA,IAAI,CACD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EACpB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAC3B;SACA,IAAI,CACD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EACpB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAChC;SACA,IAAI,CACD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EACpB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAClC;SACA,IAAI,CACD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EACpB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CACvC;SACA,IAAI,CAAC,EAAY,CAAC;IAE3B,SAAS,EAAE,CAAC,EAAY,EAAU,EAAE,CAChC,IAAA,cAAM,EAAC,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;SACf,IAAI,CACD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EACrB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAC3B;SACA,IAAI,CACD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EACpB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CACpB;SACA,IAAI,CACD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EACpB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CACzB;SACA,IAAI,CACD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EACpB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAC3B;SACA,IAAI,CACD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EACpB,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAChC;SACA,IAAI,CAAC,EAAY,CAAC;CAC9B,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { CacheAge } from "./CacheAge";
1
2
  export declare class CacheControl {
2
3
  readonly enabled: boolean;
3
4
  protected constructor(enabled?: boolean);
@@ -15,9 +16,9 @@ export declare class CacheControl {
15
16
  static tenSeconds: () => CacheControl;
16
17
  static thirtySeconds: () => CacheControl;
17
18
  static sixtySeconds: () => CacheControl;
18
- static custom: (maxAge?: number, staleWhileRevalidate?: number) => CacheControl;
19
- readonly maxAge: (a?: number) => this;
20
- readonly sharedMaxAge: (a?: number) => this;
19
+ static custom: (maxAge?: CacheAge, staleWhileRevalidate?: number) => CacheControl;
20
+ readonly maxAge: (ca?: CacheAge) => this;
21
+ readonly sharedMaxAge: (ca?: CacheAge) => this;
21
22
  readonly noCache: (a?: boolean) => this;
22
23
  readonly mustRevalidate: (a?: boolean) => this;
23
24
  readonly private: (a?: boolean) => this;
@@ -2,15 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CacheControl = void 0;
4
4
  const types_1 = require("../types");
5
+ const CacheAge_1 = require("./CacheAge");
5
6
  class CacheControl {
6
7
  constructor(enabled = true) {
7
8
  this.enabled = enabled;
8
- this.maxAge = (a) => {
9
- this._maxAge = a;
9
+ this.maxAge = (ca) => {
10
+ this._maxAge = ca ? CacheAge_1.cacheAge.toSeconds(ca) : ca;
10
11
  return this;
11
12
  };
12
- this.sharedMaxAge = (a) => {
13
- this._sharedMaxAge = a;
13
+ this.sharedMaxAge = (ca) => {
14
+ this._sharedMaxAge = ca ? CacheAge_1.cacheAge.toSeconds(ca) : ca;
14
15
  return this;
15
16
  };
16
17
  this.noCache = (a) => {
@@ -1 +1 @@
1
- {"version":3,"file":"CacheControl.js","sourceRoot":"","sources":["../../src/http/CacheControl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CacheControl.js","sourceRoot":"","sources":["../../src/http/CacheControl.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export * from './CacheAge';
1
2
  export * from './CacheControl';
2
3
  export * from './ContentType';
3
4
  export * from './HttpHeader';
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./CacheAge"), exports);
17
18
  __exportStar(require("./CacheControl"), exports);
18
19
  __exportStar(require("./ContentType"), exports);
19
20
  __exportStar(require("./HttpHeader"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,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,6CAA2B;AAC3B,iDAA+B;AAC/B,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": "12.7.3",
3
+ "version": "12.7.9",
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": "12.7.3",
34
+ "@thisisagile/easy-test": "12.7.9",
35
35
  "@types/form-urlencoded": "^4.4.0",
36
36
  "@types/jsonwebtoken": "^8.5.9",
37
37
  "@types/luxon": "3.0.2",
@@ -0,0 +1,55 @@
1
+ import {asNumber, asString, choose} from "../types";
2
+
3
+ export type CacheAge = `${number}${'ms' | 's' | 'm' | 'h' | 'd'}` | number;
4
+
5
+ const ageNumber = (s: string): number => asNumber(s.replace(/[a-z]/g, ''));
6
+
7
+ export const cacheAge = {
8
+ toMilliseconds: (ca: CacheAge): number =>
9
+ choose(asString(ca))
10
+ .case(
11
+ c => c.endsWith('ms'),
12
+ c => ageNumber(c)
13
+ )
14
+ .case(
15
+ c => c.endsWith('s'),
16
+ c => ageNumber(c) * 1000
17
+ )
18
+ .case(
19
+ c => c.endsWith('m'),
20
+ c => ageNumber(c) * 60 * 1000
21
+ )
22
+ .case(
23
+ c => c.endsWith('h'),
24
+ c => ageNumber(c) * 3600 * 1000
25
+ )
26
+ .case(
27
+ c => c.endsWith('d'),
28
+ c => ageNumber(c) * 24 * 3600 * 1000
29
+ )
30
+ .else(ca as number),
31
+
32
+ toSeconds: (ca: CacheAge): number =>
33
+ choose(asString(ca))
34
+ .case(
35
+ c => c.endsWith('ms'),
36
+ c => ageNumber(c) / 1000
37
+ )
38
+ .case(
39
+ c => c.endsWith('s'),
40
+ c => ageNumber(c)
41
+ )
42
+ .case(
43
+ c => c.endsWith('m'),
44
+ c => ageNumber(c) * 60
45
+ )
46
+ .case(
47
+ c => c.endsWith('h'),
48
+ c => ageNumber(c) * 3600
49
+ )
50
+ .case(
51
+ c => c.endsWith('d'),
52
+ c => ageNumber(c) * 24 * 3600
53
+ )
54
+ .else(ca as number)
55
+ }
@@ -1,4 +1,5 @@
1
1
  import { isDefined } from '../types';
2
+ import {cacheAge, CacheAge} from "./CacheAge";
2
3
 
3
4
  export class CacheControl {
4
5
  protected constructor(readonly enabled = true) {}
@@ -18,15 +19,15 @@ export class CacheControl {
18
19
  static tenSeconds = () => new CacheControl().maxAge(10).staleWhileRevalidate(10);
19
20
  static thirtySeconds = () => new CacheControl().maxAge(30).staleWhileRevalidate(30);
20
21
  static sixtySeconds = () => new CacheControl().maxAge(60).staleWhileRevalidate(60);
21
- static custom = (maxAge?: number, staleWhileRevalidate?: number) => new CacheControl().maxAge(maxAge).staleWhileRevalidate(staleWhileRevalidate);
22
+ static custom = (maxAge?: CacheAge, staleWhileRevalidate?: number) => new CacheControl().maxAge(maxAge).staleWhileRevalidate(staleWhileRevalidate);
22
23
 
23
- readonly maxAge = (a?: number): this => {
24
- this._maxAge = a;
24
+ readonly maxAge = (ca?: CacheAge): this => {
25
+ this._maxAge = ca ? cacheAge.toSeconds(ca) : ca;
25
26
  return this;
26
27
  };
27
28
 
28
- readonly sharedMaxAge = (a?: number): this => {
29
- this._sharedMaxAge = a;
29
+ readonly sharedMaxAge = (ca?: CacheAge): this => {
30
+ this._sharedMaxAge = ca ? cacheAge.toSeconds(ca) : ca;
30
31
  return this;
31
32
  };
32
33
 
package/src/http/index.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './CacheAge';
1
2
  export * from './CacheControl';
2
3
  export * from './ContentType';
3
4
  export * from './HttpHeader';