@outfoxx/sunday 1.0.8 → 1.1.0-alpha.10

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.
Files changed (151) hide show
  1. package/README.md +35 -2
  2. package/dist/any-type.d.ts +2 -0
  3. package/dist/class-type.d.ts +2 -2
  4. package/dist/date-time-types.d.ts +2 -7
  5. package/dist/date-time-types.js +2 -4
  6. package/dist/date-time-types.js.map +1 -1
  7. package/dist/event-parser.d.ts +17 -0
  8. package/dist/event-parser.js +140 -0
  9. package/dist/event-parser.js.map +1 -0
  10. package/dist/fetch-event-source.d.ts +12 -10
  11. package/dist/fetch-event-source.js +141 -138
  12. package/dist/fetch-event-source.js.map +1 -1
  13. package/dist/fetch-request-factory.d.ts +10 -5
  14. package/dist/fetch-request-factory.js +87 -71
  15. package/dist/fetch-request-factory.js.map +1 -1
  16. package/dist/fetch.d.ts +7 -1
  17. package/dist/fetch.js +61 -8
  18. package/dist/fetch.js.map +1 -1
  19. package/dist/header-parameters.d.ts +3 -0
  20. package/dist/header-parameters.js +40 -0
  21. package/dist/header-parameters.js.map +1 -0
  22. package/dist/index.d.ts +12 -12
  23. package/dist/index.js +12 -12
  24. package/dist/index.js.map +1 -1
  25. package/dist/{binary-decoder.d.ts → media-type-codecs/binary-decoder.d.ts} +2 -2
  26. package/dist/{binary-decoder.js → media-type-codecs/binary-decoder.js} +0 -0
  27. package/dist/media-type-codecs/binary-decoder.js.map +1 -0
  28. package/dist/{binary-encoder.d.ts → media-type-codecs/binary-encoder.d.ts} +0 -0
  29. package/dist/{binary-encoder.js → media-type-codecs/binary-encoder.js} +0 -0
  30. package/dist/media-type-codecs/binary-encoder.js.map +1 -0
  31. package/dist/media-type-codecs/cbor-decoder.d.ts +39 -0
  32. package/dist/media-type-codecs/cbor-decoder.js +413 -0
  33. package/dist/media-type-codecs/cbor-decoder.js.map +1 -0
  34. package/dist/media-type-codecs/cbor-encoder.d.ts +43 -0
  35. package/dist/media-type-codecs/cbor-encoder.js +226 -0
  36. package/dist/media-type-codecs/cbor-encoder.js.map +1 -0
  37. package/dist/media-type-codecs/cbor-tags.d.ts +4 -0
  38. package/dist/media-type-codecs/cbor-tags.js +5 -0
  39. package/dist/media-type-codecs/cbor-tags.js.map +1 -0
  40. package/dist/media-type-codecs/json-decoder.d.ts +39 -0
  41. package/dist/media-type-codecs/json-decoder.js +367 -0
  42. package/dist/media-type-codecs/json-decoder.js.map +1 -0
  43. package/dist/media-type-codecs/json-encoder.d.ts +44 -0
  44. package/dist/media-type-codecs/json-encoder.js +263 -0
  45. package/dist/media-type-codecs/json-encoder.js.map +1 -0
  46. package/dist/media-type-codecs/media-type-decoder.d.ts +11 -0
  47. package/dist/media-type-codecs/media-type-decoder.js +6 -0
  48. package/dist/media-type-codecs/media-type-decoder.js.map +1 -0
  49. package/dist/{media-type-decoders.d.ts → media-type-codecs/media-type-decoders.d.ts} +5 -4
  50. package/dist/{media-type-decoders.js → media-type-codecs/media-type-decoders.js} +6 -6
  51. package/dist/media-type-codecs/media-type-decoders.js.map +1 -0
  52. package/dist/{media-type-encoder.d.ts → media-type-codecs/media-type-encoder.d.ts} +5 -1
  53. package/dist/media-type-codecs/media-type-encoder.js +11 -0
  54. package/dist/media-type-codecs/media-type-encoder.js.map +1 -0
  55. package/dist/{media-type-encoders.d.ts → media-type-codecs/media-type-encoders.d.ts} +5 -4
  56. package/dist/{media-type-encoders.js → media-type-codecs/media-type-encoders.js} +8 -8
  57. package/dist/media-type-codecs/media-type-encoders.js.map +1 -0
  58. package/dist/{url-encoder.d.ts → media-type-codecs/www-form-url-encoder.d.ts} +8 -8
  59. package/dist/{url-encoder.js → media-type-codecs/www-form-url-encoder.js} +38 -37
  60. package/dist/media-type-codecs/www-form-url-encoder.js.map +1 -0
  61. package/dist/media-type.d.ts +91 -13
  62. package/dist/media-type.js +273 -15
  63. package/dist/media-type.js.map +1 -1
  64. package/dist/problem.d.ts +24 -9
  65. package/dist/problem.js +140 -6
  66. package/dist/problem.js.map +1 -1
  67. package/dist/request-factory.d.ts +10 -10
  68. package/dist/sunday-error.d.ts +11 -0
  69. package/dist/sunday-error.js +18 -0
  70. package/dist/sunday-error.js.map +1 -0
  71. package/dist/util/any.d.ts +2 -0
  72. package/dist/util/any.js +11 -0
  73. package/dist/util/any.js.map +1 -0
  74. package/dist/util/error.d.ts +2 -0
  75. package/dist/util/error.js +13 -0
  76. package/dist/util/error.js.map +1 -0
  77. package/dist/util/hex.js +3 -2
  78. package/dist/util/hex.js.map +1 -1
  79. package/dist/util/rxjs.d.ts +3 -0
  80. package/dist/util/rxjs.js +9 -5
  81. package/dist/util/rxjs.js.map +1 -1
  82. package/dist/util/temporal.d.ts +2 -0
  83. package/dist/util/temporal.js +18 -0
  84. package/dist/util/temporal.js.map +1 -0
  85. package/package.json +27 -21
  86. package/src/any-type.ts +4 -0
  87. package/src/class-type.ts +6 -2
  88. package/src/date-time-types.ts +22 -9
  89. package/src/event-parser.ts +190 -0
  90. package/src/fetch-event-source.ts +149 -159
  91. package/src/fetch-request-factory.ts +129 -101
  92. package/src/fetch.ts +65 -14
  93. package/src/header-parameters.ts +52 -0
  94. package/src/index.ts +12 -12
  95. package/src/{binary-decoder.ts → media-type-codecs/binary-decoder.ts} +3 -3
  96. package/src/{binary-encoder.ts → media-type-codecs/binary-encoder.ts} +0 -0
  97. package/src/media-type-codecs/cbor-decoder.ts +515 -0
  98. package/src/media-type-codecs/cbor-encoder.ts +307 -0
  99. package/src/media-type-codecs/cbor-tags.ts +4 -0
  100. package/src/media-type-codecs/json-decoder.ts +470 -0
  101. package/src/media-type-codecs/json-encoder.ts +328 -0
  102. package/src/media-type-codecs/media-type-decoder.ts +20 -0
  103. package/src/{media-type-decoders.ts → media-type-codecs/media-type-decoders.ts} +21 -13
  104. package/src/media-type-codecs/media-type-encoder.ts +31 -0
  105. package/src/{media-type-encoders.ts → media-type-codecs/media-type-encoders.ts} +23 -15
  106. package/src/{url-encoder.ts → media-type-codecs/www-form-url-encoder.ts} +53 -47
  107. package/src/media-type.ts +326 -22
  108. package/src/problem.ts +144 -12
  109. package/src/request-factory.ts +21 -12
  110. package/src/sunday-error.ts +37 -0
  111. package/src/util/any.ts +10 -0
  112. package/src/util/error.ts +14 -0
  113. package/src/util/hex.ts +3 -2
  114. package/src/util/rxjs.ts +16 -5
  115. package/src/util/temporal.ts +18 -0
  116. package/dist/binary-decoder.js.map +0 -1
  117. package/dist/binary-encoder.js.map +0 -1
  118. package/dist/cbor-decoder.d.ts +0 -15
  119. package/dist/cbor-decoder.js +0 -126
  120. package/dist/cbor-decoder.js.map +0 -1
  121. package/dist/cbor-encoder.d.ts +0 -29
  122. package/dist/cbor-encoder.js +0 -81
  123. package/dist/cbor-encoder.js.map +0 -1
  124. package/dist/cbor-tags.d.ts +0 -3
  125. package/dist/cbor-tags.js +0 -4
  126. package/dist/cbor-tags.js.map +0 -1
  127. package/dist/http-error.d.ts +0 -10
  128. package/dist/http-error.js +0 -45
  129. package/dist/http-error.js.map +0 -1
  130. package/dist/json-decoder.d.ts +0 -31
  131. package/dist/json-decoder.js +0 -139
  132. package/dist/json-decoder.js.map +0 -1
  133. package/dist/json-encoder.d.ts +0 -35
  134. package/dist/json-encoder.js +0 -116
  135. package/dist/json-encoder.js.map +0 -1
  136. package/dist/media-type-decoder.d.ts +0 -4
  137. package/dist/media-type-decoder.js +0 -2
  138. package/dist/media-type-decoder.js.map +0 -1
  139. package/dist/media-type-decoders.js.map +0 -1
  140. package/dist/media-type-encoder.js +0 -6
  141. package/dist/media-type-encoder.js.map +0 -1
  142. package/dist/media-type-encoders.js.map +0 -1
  143. package/dist/url-encoder.js.map +0 -1
  144. package/src/cbor-decoder.ts +0 -148
  145. package/src/cbor-encoder.ts +0 -95
  146. package/src/cbor-tags.ts +0 -3
  147. package/src/http-error.ts +0 -55
  148. package/src/json-decoder.ts +0 -164
  149. package/src/json-encoder.ts +0 -144
  150. package/src/media-type-decoder.ts +0 -5
  151. package/src/media-type-encoder.ts +0 -16
package/dist/problem.js CHANGED
@@ -1,11 +1,145 @@
1
- export class Problem extends Error {
2
- constructor(json) {
3
- super(`${json.status} ${json.type} - ${json.title}`);
4
- this.type = json.type;
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var Problem_1;
11
+ import { ResponseExample } from './fetch';
12
+ import { JsonAnyGetter, JsonAnySetter, JsonClassType, JsonCreator, JsonCreatorMode, JsonIgnore, JsonProperty, } from '@outfoxx/jackson-js';
13
+ let Problem = Problem_1 = class Problem extends Error {
14
+ constructor(spec) {
15
+ var _a;
16
+ super(`${spec.status.toString()} ${spec.type} - ${spec.title}`);
17
+ const src = spec;
18
+ const json = Object.assign({}, src);
19
+ this.type = (_a = Problem_1.parseURL(json.type)) !== null && _a !== void 0 ? _a : new URL('about:blank');
20
+ delete json.type;
5
21
  this.status = json.status;
22
+ delete json.status;
6
23
  this.title = json.title;
24
+ delete json.title;
7
25
  this.detail = json.detail;
8
- this.instance = json.instance;
26
+ delete json.detail;
27
+ this.instance = Problem_1.parseURL(json.instance);
28
+ delete json.instance;
29
+ if (Object.keys(json).length != 0) {
30
+ this._parameters = json;
31
+ }
9
32
  }
10
- }
33
+ get parameters() {
34
+ return this._parameters;
35
+ }
36
+ setParameter(key, value) {
37
+ var _a;
38
+ this._parameters = (_a = this._parameters) !== null && _a !== void 0 ? _a : {};
39
+ this._parameters[key] = value;
40
+ }
41
+ toString() {
42
+ var _a, _b;
43
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
44
+ const self = this;
45
+ const url = self.request ? (_a = self.request) === null || _a === void 0 ? void 0 : _a.url : undefined;
46
+ const response = (_b = self.response) === null || _b === void 0 ? void 0 : _b.example;
47
+ return JSON.stringify({
48
+ type: this.type,
49
+ status: this.status,
50
+ title: this.title,
51
+ detail: this.detail,
52
+ instance: this.instance,
53
+ url,
54
+ response,
55
+ });
56
+ }
57
+ static fromStatus(status, title) {
58
+ return new Problem_1({
59
+ type: 'about:blank',
60
+ title,
61
+ status,
62
+ });
63
+ }
64
+ static async fromResponse(response) {
65
+ const [bodyExcerpt, body] = await ResponseExample.bodyExcerpt(response, 256);
66
+ return new Problem_1({
67
+ type: 'about:blank',
68
+ title: response.statusText,
69
+ status: response.status,
70
+ request: {
71
+ url: response.url,
72
+ },
73
+ response: {
74
+ headers: response.headers,
75
+ ok: response.ok,
76
+ redirected: response.redirected,
77
+ status: response.status,
78
+ statusText: response.statusText,
79
+ type: response.type,
80
+ url: response.url,
81
+ body,
82
+ example: ResponseExample.build(response, bodyExcerpt),
83
+ },
84
+ });
85
+ }
86
+ static parseURL(value) {
87
+ if (value == null) {
88
+ return undefined;
89
+ }
90
+ if (value instanceof URL) {
91
+ return value;
92
+ }
93
+ if (typeof value == 'string') {
94
+ return new URL(value);
95
+ }
96
+ return new URL(`${value}`);
97
+ }
98
+ };
99
+ __decorate([
100
+ JsonProperty(),
101
+ JsonClassType({ type: () => [URL] }),
102
+ __metadata("design:type", URL)
103
+ ], Problem.prototype, "type", void 0);
104
+ __decorate([
105
+ JsonProperty(),
106
+ JsonClassType({ type: () => [String] }),
107
+ __metadata("design:type", String)
108
+ ], Problem.prototype, "title", void 0);
109
+ __decorate([
110
+ JsonProperty(),
111
+ JsonClassType({ type: () => [Number] }),
112
+ __metadata("design:type", Number)
113
+ ], Problem.prototype, "status", void 0);
114
+ __decorate([
115
+ JsonProperty(),
116
+ JsonClassType({ type: () => [String] }),
117
+ __metadata("design:type", String)
118
+ ], Problem.prototype, "detail", void 0);
119
+ __decorate([
120
+ JsonProperty(),
121
+ JsonClassType({ type: () => [URL] }),
122
+ __metadata("design:type", URL)
123
+ ], Problem.prototype, "instance", void 0);
124
+ __decorate([
125
+ JsonIgnore(),
126
+ __metadata("design:type", Object)
127
+ ], Problem.prototype, "_parameters", void 0);
128
+ __decorate([
129
+ JsonClassType({ type: () => [Object] }),
130
+ JsonAnyGetter(),
131
+ __metadata("design:type", Object),
132
+ __metadata("design:paramtypes", [])
133
+ ], Problem.prototype, "parameters", null);
134
+ __decorate([
135
+ JsonAnySetter(),
136
+ __metadata("design:type", Function),
137
+ __metadata("design:paramtypes", [String, Object]),
138
+ __metadata("design:returntype", void 0)
139
+ ], Problem.prototype, "setParameter", null);
140
+ Problem = Problem_1 = __decorate([
141
+ JsonCreator({ mode: JsonCreatorMode.DELEGATING }),
142
+ __metadata("design:paramtypes", [Object])
143
+ ], Problem);
144
+ export { Problem };
11
145
  //# sourceMappingURL=problem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"problem.js","sourceRoot":"","sources":["../src/problem.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,OAAQ,SAAQ,KAAK;IAOhC,YAAY,IAA6B;QACvC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAe,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAkB,CAAC;IAC1C,CAAC;CACF"}
1
+ {"version":3,"file":"problem.js","sourceRoot":"","sources":["../src/problem.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
- import { ClassList } from '@outfoxx/jackson-js/dist/@types';
2
1
  import { Observable } from 'rxjs';
3
2
  import { AnyType } from './any-type';
4
- import { ClassType } from './class-type';
3
+ import { ClassType, ConstructableClassType } from './class-type';
5
4
  import { MediaType } from './media-type';
5
+ import { TextMediaTypeDecoder } from './media-type-codecs/media-type-decoder';
6
+ import { Problem } from './problem';
6
7
  import { URLTemplate } from './url-template';
8
+ import { Logger } from './logger';
7
9
  export interface RequestFactory {
8
10
  readonly baseUrl: URLTemplate;
11
+ registerProblem(type: URL | string, problemType: ConstructableClassType<Problem>): void;
9
12
  request(requestSpec: RequestSpec<unknown>): Observable<Request>;
10
13
  response(request: Request, dataExpected?: boolean): Observable<Response>;
11
14
  response<B>(requestSpec: RequestSpec<B>, dataExpected?: boolean): Observable<Response>;
@@ -14,8 +17,8 @@ export interface RequestFactory {
14
17
  result<B, R>(requestSpec: RequestSpec<B>, resultType: [ClassType<Set<unknown>>, ClassType<R>]): Observable<Set<R>>;
15
18
  result<B, R>(requestSpec: RequestSpec<B>, resultType: AnyType): Observable<R>;
16
19
  result<B>(requestSpec: RequestSpec<B>): Observable<void>;
17
- events(requestSpec: RequestSpec<void>): ExtEventSource;
18
- events<E>(requestSpec: RequestSpec<void>, eventTypes: EventTypes<E>): Observable<E>;
20
+ eventSource(requestSpec: RequestSpec<void>): ExtEventSource;
21
+ eventStream<E>(requestSpec: RequestSpec<void>, decoder: (decoder: TextMediaTypeDecoder, event: string | undefined, id: string | undefined, data: string, logger?: Logger) => E | undefined): Observable<E>;
19
22
  }
20
23
  export interface ExtEventSource extends EventSource {
21
24
  connect(): void;
@@ -28,11 +31,8 @@ export interface RequestSpec<B> {
28
31
  queryParameters?: Record<string, unknown>;
29
32
  body?: B;
30
33
  bodyType?: AnyType;
31
- contentTypes?: (MediaType | string)[];
32
- acceptTypes?: (MediaType | string)[];
33
- headers?: HeadersInit;
34
- }
35
- export interface EventTypes<E> {
36
- [key: string]: ClassList<ClassType<E>>;
34
+ contentTypes?: MediaType[];
35
+ acceptTypes?: MediaType[];
36
+ headers?: Record<string, unknown>;
37
37
  }
38
38
  export declare type RequestAdapter = (request: Request) => Observable<Request>;
@@ -0,0 +1,11 @@
1
+ export declare class SundayError extends Error {
2
+ url: string;
3
+ httpVersion: string;
4
+ status: number;
5
+ statusText: string;
6
+ headers: Headers;
7
+ body: unknown | undefined;
8
+ responseExample: string;
9
+ constructor(message: string, url: string, httpVersion: string, status: number, statusText: string, headers: Headers, body: unknown | undefined, responseExample: string);
10
+ static fromResponse(message: string, response: Response): Promise<SundayError>;
11
+ }
@@ -0,0 +1,18 @@
1
+ import { ResponseExample } from './fetch';
2
+ export class SundayError extends Error {
3
+ constructor(message, url, httpVersion, status, statusText, headers, body, responseExample) {
4
+ super(message);
5
+ this.url = url;
6
+ this.httpVersion = httpVersion;
7
+ this.status = status;
8
+ this.statusText = statusText;
9
+ this.headers = headers;
10
+ this.body = body;
11
+ this.responseExample = responseExample;
12
+ }
13
+ static async fromResponse(message, response) {
14
+ const [bodyExcerpt, body] = await ResponseExample.bodyExcerpt(response, 256);
15
+ return new SundayError(message, response.url, '?.?', response.status, response.statusText, response.headers, body, ResponseExample.build(response, bodyExcerpt));
16
+ }
17
+ }
18
+ //# sourceMappingURL=sunday-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sunday-error.js","sourceRoot":"","sources":["../src/sunday-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YACE,OAAe,EACR,GAAW,EACX,WAAmB,EACnB,MAAc,EACd,UAAkB,EAClB,OAAgB,EAChB,IAAyB,EACzB,eAAuB;QAE9B,KAAK,CAAC,OAAO,CAAC,CAAC;QARR,QAAG,GAAH,GAAG,CAAQ;QACX,gBAAW,GAAX,WAAW,CAAQ;QACnB,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAS;QAChB,SAAI,GAAJ,IAAI,CAAqB;QACzB,oBAAe,GAAf,eAAe,CAAQ;IAGhC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,CACvB,OAAe,EACf,QAAkB;QAElB,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,MAAM,eAAe,CAAC,WAAW,CAC3D,QAAQ,EACR,GAAG,CACJ,CAAC;QAEF,OAAO,IAAI,WAAW,CACpB,OAAO,EACP,QAAQ,CAAC,GAAG,EACZ,KAAK,EACL,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,UAAU,EACnB,QAAQ,CAAC,OAAO,EAChB,IAAI,EACJ,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAC7C,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare function unknownGet<T = unknown>(obj: unknown, key: string): T;
2
+ export declare function unknownSet<T>(obj: unknown, key: string, value: T): void;
@@ -0,0 +1,11 @@
1
+ export function unknownGet(obj, key) {
2
+ var _a;
3
+ return (_a = obj) === null || _a === void 0 ? void 0 : _a[key];
4
+ }
5
+ export function unknownSet(obj, key, value) {
6
+ if (obj == null) {
7
+ return;
8
+ }
9
+ obj[key] = value;
10
+ }
11
+ //# sourceMappingURL=any.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"any.js","sourceRoot":"","sources":["../../src/util/any.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CAAc,GAAY,EAAE,GAAW;;IAC/D,OAAO,MAAC,GAA+B,0CAAG,GAAG,CAAM,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,UAAU,CAAI,GAAY,EAAE,GAAW,EAAE,KAAQ;IAC/D,IAAI,GAAG,IAAI,IAAI,EAAE;QACf,OAAO;KACR;IACA,GAA+B,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function isError(value: unknown): value is Error;
2
+ export declare function errorToMessage(value: unknown, defMsg?: string): string;
@@ -0,0 +1,13 @@
1
+ export function isError(value) {
2
+ return value instanceof Error;
3
+ }
4
+ export function errorToMessage(value, defMsg) {
5
+ return isError(value) ? value.message : defMsg !== null && defMsg !== void 0 ? defMsg : `${fmtMsg(value)}`;
6
+ }
7
+ function fmtMsg(value) {
8
+ if (value instanceof Object) {
9
+ return JSON.stringify(value);
10
+ }
11
+ return `${value}`;
12
+ }
13
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/util/error.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,YAAY,KAAK,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,MAAe;IAC5D,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,KAAK,YAAY,MAAM,EAAE;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KAC9B;IACD,OAAO,GAAG,KAAK,EAAE,CAAC;AACpB,CAAC"}
package/dist/util/hex.js CHANGED
@@ -1,9 +1,10 @@
1
1
  export var Hex;
2
2
  (function (Hex) {
3
3
  function decode(hex) {
4
+ hex = hex.replace(/^0x/, '').replace(/\s/g, '');
4
5
  const values = hex.match(/[\da-f]{2}/gi);
5
- if (!values) {
6
- throw Error('Invalid hex string');
6
+ if (!values || values.length != hex.length / 2) {
7
+ throw Error(`Invalid hex string`);
7
8
  }
8
9
  return new Uint8Array(values.map((b) => parseInt(b, 16))).buffer;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hex.js","sourceRoot":"","sources":["../../src/util/hex.ts"],"names":[],"mappings":"AAAA,MAAM,KAAW,GAAG,CAcnB;AAdD,WAAiB,GAAG;IAClB,SAAgB,MAAM,CAAC,GAAW;QAChC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACnC;QACD,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnE,CAAC;IANe,UAAM,SAMrB,CAAA;IAED,SAAgB,MAAM,CAAC,MAAmB,EAAE,SAAS,GAAG,EAAE;QACxD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aACnD,IAAI,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC;IAJe,UAAM,SAIrB,CAAA;AACH,CAAC,EAdgB,GAAG,KAAH,GAAG,QAcnB"}
1
+ {"version":3,"file":"hex.js","sourceRoot":"","sources":["../../src/util/hex.ts"],"names":[],"mappings":"AAAA,MAAM,KAAW,GAAG,CAenB;AAfD,WAAiB,GAAG;IAClB,SAAgB,MAAM,CAAC,GAAW;QAChC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9C,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACnC;QACD,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnE,CAAC;IAPe,UAAM,SAOrB,CAAA;IAED,SAAgB,MAAM,CAAC,MAAmB,EAAE,SAAS,GAAG,EAAE;QACxD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;aACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aACnD,IAAI,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC;IAJe,UAAM,SAIrB,CAAA;AACH,CAAC,EAfgB,GAAG,KAAH,GAAG,QAenB"}
@@ -1,2 +1,5 @@
1
1
  import { Observable } from 'rxjs';
2
+ import { ClassType } from '../class-type';
3
+ import { Problem } from '../problem';
2
4
  export declare function nullifyNotFound<T>(): (source: Observable<T>) => Observable<T | null>;
5
+ export declare function nullifyResponse<T>(statuses: number[], problemTypes: ClassType<Problem>[]): (source: Observable<T>) => Observable<T | null>;
package/dist/util/rxjs.js CHANGED
@@ -1,13 +1,17 @@
1
- import { from, throwError } from 'rxjs';
2
- import { catchError } from 'rxjs/operators';
1
+ import { catchError, from, throwError } from 'rxjs';
3
2
  import { Problem } from '../problem';
4
3
  export function nullifyNotFound() {
4
+ return nullifyResponse([404], []);
5
+ }
6
+ export function nullifyResponse(statuses, problemTypes) {
5
7
  return function (source) {
6
8
  return source.pipe(catchError((error) => {
7
- if (!(error instanceof Problem) || error.status !== 404) {
8
- return throwError(error);
9
+ const errorType = error.constructor;
10
+ if (error instanceof Problem &&
11
+ (statuses.includes(error.status) || problemTypes.includes(errorType))) {
12
+ return from([null]);
9
13
  }
10
- return from([null]);
14
+ return throwError(error);
11
15
  }));
12
16
  };
13
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rxjs.js","sourceRoot":"","sources":["../../src/util/rxjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAc,UAAU,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,UAAU,eAAe;IAG7B,OAAO,UAAa,MAAqB;QACvC,OAAO,MAAM,CAAC,IAAI,CAChB,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,CAAC,CAAC,KAAK,YAAY,OAAO,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;gBACvD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;aAC1B;YACD,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"rxjs.js","sourceRoot":"","sources":["../../src/util/rxjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAc,UAAU,EAAE,MAAM,MAAM,CAAC;AAEhE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,UAAU,eAAe;IAG7B,OAAO,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,QAAkB,EAClB,YAAkC;IAElC,OAAO,UAAa,MAAqB;QACvC,OAAO,MAAM,CAAC,IAAI,CAChB,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,SAAS,GAAG,KAAK,CAAC,WAAiC,CAAC;YAC1D,IACE,KAAK,YAAY,OAAO;gBACxB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EACrE;gBACA,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;aACrB;YACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function secondsToNumber(seconds: number, nanos: number): number;
2
+ export declare function encodeSeconds(seconds: number, fraction: number): unknown[];
@@ -0,0 +1,18 @@
1
+ export function secondsToNumber(seconds, nanos) {
2
+ if (nanos == 0) {
3
+ return seconds;
4
+ }
5
+ const nanoStr = nanos.toString();
6
+ return parseFloat(`${seconds}.${'0'.repeat(9 - nanoStr.length)}${nanos}`);
7
+ }
8
+ export function encodeSeconds(seconds, fraction) {
9
+ const result = [];
10
+ if (seconds != 0 || fraction != 0) {
11
+ result.push(seconds);
12
+ if (fraction != 0) {
13
+ result.push(fraction);
14
+ }
15
+ }
16
+ return result;
17
+ }
18
+ //# sourceMappingURL=temporal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal.js","sourceRoot":"","sources":["../../src/util/temporal.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,KAAa;IAC5D,IAAI,KAAK,IAAI,CAAC,EAAE;QACd,OAAO,OAAO,CAAC;KAChB;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjC,OAAO,UAAU,CAAC,GAAG,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,QAAgB;IAC7D,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,OAAO,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE;QACjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,QAAQ,IAAI,CAAC,EAAE;YACjB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACvB;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@outfoxx/sunday",
3
- "version": "1.0.8",
4
- "description": "Sunday - The framework of REST 🙏",
3
+ "version": "1.1.0-alpha.10",
4
+ "description": "Sunday 🙏 The framework of REST for TypeScript/JavaScript",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "type": "module",
@@ -10,7 +10,7 @@
10
10
  "test:watch": "karma start karma.conf.cjs",
11
11
  "build": "tsc --build tsconfig.dist.json",
12
12
  "clean": "rimraf build dist",
13
- "prepublishOnly": "npm run clean && npm run pretty -- -c && npm run lint && npm run build && npm run test",
13
+ "prepublishOnly": "npm run clean && npm run lint && npm run build && npm run test",
14
14
  "lint": "eslint src test",
15
15
  "pretty": "prettier src test"
16
16
  },
@@ -28,37 +28,43 @@
28
28
  "author": "kdubb",
29
29
  "license": "outfox",
30
30
  "dependencies": {
31
+ "@js-joda/core": "^5.2.0",
31
32
  "@outfoxx/cbor-redux": "^0.3.1",
32
- "@outfoxx/jackson-js": "^1.2.20",
33
- "luxon": "^1.25.0",
34
- "rxjs": "^6.6.3",
35
- "uri-template-lite": "^20.5.0"
33
+ "@outfoxx/jackson-js": "^1.2.22",
34
+ "@types/jasmine": "^4.0.3",
35
+ "common-tags": "^1.8.2",
36
+ "tslib": "^2.4.0",
37
+ "uri-template-lite": "^22.1.0"
38
+ },
39
+ "peerDependencies": {
40
+ "rxjs": "^7.5.5"
36
41
  },
37
42
  "devDependencies": {
38
- "@types/eslint": "^7.2.2",
39
- "@types/eslint-plugin-prettier": "^3.1.0",
40
- "@types/jasmine": "^3.5.14",
41
- "@types/luxon": "^1.24.4",
43
+ "@types/common-tags": "^1.8.0",
42
44
  "@types/uri-template-lite": "^19.12.0",
43
- "@typescript-eslint/eslint-plugin": "^4.1.1",
44
- "@typescript-eslint/parser": "^4.1.1",
45
- "eslint": "^7.9.0",
46
- "eslint-config-prettier": "^6.11.0",
47
- "eslint-plugin-prettier": "^3.1.4",
48
- "fetch-mock": "^9.10.7",
45
+ "@typescript-eslint/eslint-plugin": "^5.25.0",
46
+ "@typescript-eslint/parser": "^5.25.0",
47
+ "eslint": "^8.15.0",
48
+ "eslint-config-prettier": "^8.5.0",
49
+ "eslint-plugin-prettier": "^4.0.0",
50
+ "fetch-mock": "^9.11.0",
49
51
  "fsevents": "^2.1.3",
50
52
  "husky": "^4.3.0",
51
- "karma": "^5.2.2",
53
+ "install": "^0.13.0",
54
+ "karma": "^6.3.2",
52
55
  "karma-chrome-launcher": "^3.1.0",
53
56
  "karma-cli": "^2.0.0",
57
+ "karma-coverage": "^2.0.3",
54
58
  "karma-jasmine": "^4.0.1",
55
- "karma-typescript": "^5.2.0",
56
- "karma-typescript-es6-transform": "^5.2.0",
59
+ "karma-source-map-support": "^1.4.0",
60
+ "karma-sourcemap-loader": "^0.3.8",
61
+ "karma-typescript": "^5.5.1",
62
+ "karma-typescript-es6-transform": "^5.5.1",
57
63
  "lint-staged": "^10.4.0",
58
64
  "prettier": "^2.1.2",
59
65
  "pretty-quick": "^3.0.2",
60
66
  "rimraf": "^3.0.2",
61
- "typescript": "^4.0.2",
67
+ "typescript": "~4.4",
62
68
  "web-streams-polyfill": "^3.0.0"
63
69
  },
64
70
  "files": [
package/src/any-type.ts CHANGED
@@ -1,4 +1,8 @@
1
1
  import { ClassList, ClassType } from '@outfoxx/jackson-js/dist/@types';
2
+ import { ConstructableClassType } from './class-type';
2
3
 
3
4
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
5
  export type AnyType = ClassList<ClassType<any>>;
6
+
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ export type AnyConstructableType = ClassList<ConstructableClassType<any>>;
package/src/class-type.ts CHANGED
@@ -1,3 +1,7 @@
1
- import { ClassType as CT } from '@outfoxx/jackson-js/dist/@types';
1
+ export type ClassType<T> =
2
+ | (abstract new () => T) // eslint-disable-line prettier/prettier
3
+ | (abstract new (...args: any[]) => T); // eslint-disable-line @typescript-eslint/no-explicit-any
2
4
 
3
- export type ClassType<T> = CT<T>;
5
+ export declare type ConstructableClassType<T> =
6
+ | (new () => T) // eslint-disable-line prettier/prettier
7
+ | (new (...args: any[]) => T); // eslint-disable-line @typescript-eslint/no-explicit-any
@@ -1,10 +1,23 @@
1
- import { DateTime as luxonDateTime } from 'luxon';
1
+ import {
2
+ Duration,
3
+ Instant,
4
+ LocalDate,
5
+ LocalDateTime,
6
+ LocalTime,
7
+ OffsetDateTime,
8
+ OffsetTime,
9
+ Period,
10
+ ZonedDateTime,
11
+ } from '@js-joda/core';
2
12
 
3
- export type Date = luxonDateTime;
4
- export const Date = luxonDateTime;
5
-
6
- export type Time = luxonDateTime;
7
- export const Time = luxonDateTime;
8
-
9
- export type DateTime = luxonDateTime;
10
- export const DateTime = luxonDateTime;
13
+ export {
14
+ Duration,
15
+ Instant,
16
+ LocalDate,
17
+ LocalTime,
18
+ LocalDateTime,
19
+ OffsetDateTime,
20
+ OffsetTime,
21
+ Period,
22
+ ZonedDateTime,
23
+ };