@conduit-client/command-http-cache-control 3.19.1 → 3.19.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.
|
@@ -16,6 +16,10 @@ export declare abstract class HttpCacheControlCommand<Data, ExtraServices extend
|
|
|
16
16
|
constructor(services: NamedCacheControllerService & Partial<NamedPubSubService> & NamedFetchService & ExtraServices);
|
|
17
17
|
requestFromNetwork(): SyncOrAsync<Result<NetworkResult, Error>>;
|
|
18
18
|
fetch(): SyncOrAsync<Result<NetworkResult, Error>>;
|
|
19
|
+
protected readonly additionalNullResponses: ReadonlyArray<number>;
|
|
20
|
+
protected isSemanticNullResponse(response: Response): boolean;
|
|
21
|
+
protected isProtocolNoBodyStatus(status: number): boolean;
|
|
22
|
+
private isUndeclaredNoBodyResponse;
|
|
19
23
|
protected coerceError(errorResponse: Response): Promise<Error>;
|
|
20
24
|
protected processFetchReturnValue(json: NetworkResult): Result<NetworkResult, Error>;
|
|
21
25
|
protected convertFetchResponseToData(response: PromiseLike<Response>): PromiseLike<Result<NetworkResult, Error>>;
|
package/dist/v1/index.js
CHANGED
|
@@ -9,6 +9,7 @@ class HttpCacheControlCommand extends CacheControlCommand {
|
|
|
9
9
|
constructor(services) {
|
|
10
10
|
super(services);
|
|
11
11
|
this.services = services;
|
|
12
|
+
this.additionalNullResponses = [];
|
|
12
13
|
}
|
|
13
14
|
requestFromNetwork() {
|
|
14
15
|
return this.fetch();
|
|
@@ -20,6 +21,15 @@ class HttpCacheControlCommand extends CacheControlCommand {
|
|
|
20
21
|
return resolvedPromiseLike(err(toError(reason)));
|
|
21
22
|
}
|
|
22
23
|
}
|
|
24
|
+
isSemanticNullResponse(response) {
|
|
25
|
+
return this.additionalNullResponses.includes(response.status);
|
|
26
|
+
}
|
|
27
|
+
isProtocolNoBodyStatus(status) {
|
|
28
|
+
return status === 204 || status === 205;
|
|
29
|
+
}
|
|
30
|
+
isUndeclaredNoBodyResponse(response) {
|
|
31
|
+
return this.isProtocolNoBodyStatus(response.status) && !this.isSemanticNullResponse(response);
|
|
32
|
+
}
|
|
23
33
|
async coerceError(errorResponse) {
|
|
24
34
|
return toError(errorResponse.statusText);
|
|
25
35
|
}
|
|
@@ -30,12 +40,26 @@ class HttpCacheControlCommand extends CacheControlCommand {
|
|
|
30
40
|
return response.then(
|
|
31
41
|
(response2) => {
|
|
32
42
|
if (response2.ok) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
43
|
+
let resultPromise;
|
|
44
|
+
if (this.isSemanticNullResponse(response2)) {
|
|
45
|
+
resultPromise = Promise.resolve(ok(null));
|
|
46
|
+
} else if (this.isUndeclaredNoBodyResponse(response2)) {
|
|
47
|
+
resultPromise = Promise.resolve(
|
|
48
|
+
err(
|
|
49
|
+
toError(
|
|
50
|
+
`Unexpected ${response2.status} response: no-content status was not declared in the API specification. Declare this response in your OAS without a content property.`
|
|
51
|
+
)
|
|
52
|
+
)
|
|
53
|
+
);
|
|
54
|
+
} else {
|
|
55
|
+
resultPromise = response2.json().then(
|
|
56
|
+
(json) => {
|
|
57
|
+
return this.processFetchReturnValue(json);
|
|
58
|
+
},
|
|
59
|
+
(reason) => err(toError(reason))
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
return resultPromise.finally(() => {
|
|
39
63
|
try {
|
|
40
64
|
this.afterRequestHooks({ statusCode: response2.status });
|
|
41
65
|
} catch {
|
package/dist/v1/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/v1/http-cache-control-command.ts","../../src/v1/index.ts"],"sourcesContent":["import { CacheControlCommand } from '@conduit-client/command-cache-control/v1';\nimport {\n err,\n ok,\n resolvedPromiseLike,\n toError,\n type Result,\n type SyncOrAsync,\n} from '@conduit-client/utils';\nimport { type NamedPubSubService } from '@conduit-client/service-pubsub/v1';\nimport type { NamedCacheControllerService } from '@conduit-client/service-cache-control/v1';\nimport type { NamedFetchService, FetchService } from '@conduit-client/service-fetch-network/v1';\n\n/**\n * An implementation of BaseCommand that allows for extending abstract cache methods\n *\n * @typeParam Data cache result for read operations\n * @typeParam NetworkResult cache result including network metadata\n * @typeParam ExtraServices additional named services needed by a subclass\n */\nexport abstract class HttpCacheControlCommand<\n Data,\n ExtraServices extends object = object,\n NetworkResult = Data,\n> extends CacheControlCommand<Data, NetworkResult, ExtraServices> {\n protected abstract readonly fetchParams: Parameters<FetchService>;\n\n constructor(\n protected services: NamedCacheControllerService &\n Partial<NamedPubSubService> &\n NamedFetchService &\n ExtraServices\n ) {\n super(services);\n }\n\n requestFromNetwork(): SyncOrAsync<Result<NetworkResult, Error>> {\n return this.fetch();\n }\n\n fetch(): SyncOrAsync<Result<NetworkResult, Error>> {\n try {\n return this.convertFetchResponseToData(this.services.fetch(...this.fetchParams));\n } catch (reason) {\n return resolvedPromiseLike(err(toError(reason)));\n }\n }\n\n protected async coerceError(errorResponse: Response): Promise<Error> {\n return toError(errorResponse.statusText); // Default Behavior\n }\n\n protected processFetchReturnValue(json: NetworkResult): Result<NetworkResult, Error> {\n return ok(json);\n }\n\n protected convertFetchResponseToData(\n response: PromiseLike<Response>\n ): PromiseLike<Result<NetworkResult, Error>> {\n return response.then(\n (response) => {\n if (response.ok) {\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/v1/http-cache-control-command.ts","../../src/v1/index.ts"],"sourcesContent":["import { CacheControlCommand } from '@conduit-client/command-cache-control/v1';\nimport {\n err,\n ok,\n resolvedPromiseLike,\n toError,\n type Result,\n type SyncOrAsync,\n} from '@conduit-client/utils';\nimport { type NamedPubSubService } from '@conduit-client/service-pubsub/v1';\nimport type { NamedCacheControllerService } from '@conduit-client/service-cache-control/v1';\nimport type { NamedFetchService, FetchService } from '@conduit-client/service-fetch-network/v1';\n\n/**\n * An implementation of BaseCommand that allows for extending abstract cache methods\n *\n * @typeParam Data cache result for read operations\n * @typeParam NetworkResult cache result including network metadata\n * @typeParam ExtraServices additional named services needed by a subclass\n */\nexport abstract class HttpCacheControlCommand<\n Data,\n ExtraServices extends object = object,\n NetworkResult = Data,\n> extends CacheControlCommand<Data, NetworkResult, ExtraServices> {\n protected abstract readonly fetchParams: Parameters<FetchService>;\n\n constructor(\n protected services: NamedCacheControllerService &\n Partial<NamedPubSubService> &\n NamedFetchService &\n ExtraServices\n ) {\n super(services);\n }\n\n requestFromNetwork(): SyncOrAsync<Result<NetworkResult, Error>> {\n return this.fetch();\n }\n\n fetch(): SyncOrAsync<Result<NetworkResult, Error>> {\n try {\n return this.convertFetchResponseToData(this.services.fetch(...this.fetchParams));\n } catch (reason) {\n return resolvedPromiseLike(err(toError(reason)));\n }\n }\n\n protected readonly additionalNullResponses: ReadonlyArray<number> = [];\n\n protected isSemanticNullResponse(response: Response): boolean {\n return this.additionalNullResponses.includes(response.status);\n }\n\n protected isProtocolNoBodyStatus(status: number): boolean {\n return status === 204 || status === 205;\n }\n\n private isUndeclaredNoBodyResponse(response: Response): boolean {\n return (\n this.isProtocolNoBodyStatus(response.status) && !this.isSemanticNullResponse(response)\n );\n }\n\n protected async coerceError(errorResponse: Response): Promise<Error> {\n return toError(errorResponse.statusText); // Default Behavior\n }\n\n protected processFetchReturnValue(json: NetworkResult): Result<NetworkResult, Error> {\n return ok(json);\n }\n\n protected convertFetchResponseToData(\n response: PromiseLike<Response>\n ): PromiseLike<Result<NetworkResult, Error>> {\n return response.then(\n (response) => {\n if (response.ok) {\n let resultPromise: Promise<Result<NetworkResult, Error>>;\n if (this.isSemanticNullResponse(response)) {\n resultPromise = Promise.resolve(ok(null as NetworkResult));\n } else if (this.isUndeclaredNoBodyResponse(response)) {\n resultPromise = Promise.resolve(\n err(\n toError(\n `Unexpected ${response.status} response: no-content status was not declared in the API specification. Declare this response in your OAS without a content property.`\n )\n )\n );\n } else {\n resultPromise = response.json().then(\n (json: NetworkResult) => {\n return this.processFetchReturnValue(json);\n },\n (reason: any) => err(toError(reason))\n );\n }\n return resultPromise.finally(() => {\n try {\n this.afterRequestHooks({ statusCode: response.status });\n } catch {\n // intentionally do nothing\n }\n });\n } else {\n return this.coerceError(response)\n .then((coercedError) => {\n return err(coercedError);\n })\n .finally(() => {\n try {\n this.afterRequestHooks({ statusCode: response.status });\n } catch {\n // intentionally do nothing\n }\n });\n }\n },\n (reason) => err(toError(reason))\n );\n }\n}\n","import { type NamedService, type ServiceDescriptor } from '@conduit-client/utils';\nimport { HttpCacheControlCommand } from './http-cache-control-command';\n\nexport { HttpCacheControlCommand } from './http-cache-control-command';\n\nexport type HttpCacheControlCommandServiceDescriptor = ServiceDescriptor<\n typeof HttpCacheControlCommand,\n 'httpCacheControlCommand',\n '1.0'\n>;\n\nexport type NamedAuraCacheControlCommand = NamedService<\n 'httpCacheControlCommand',\n typeof HttpCacheControlCommand\n>;\n\nexport function buildServiceDescriptor(): HttpCacheControlCommandServiceDescriptor {\n return {\n type: 'httpCacheControlCommand',\n version: '1.0',\n service: HttpCacheControlCommand,\n };\n}\n"],"names":["response"],"mappings":";;;;;;;AAoBO,MAAe,gCAIZ,oBAAwD;AAAA,EAG9D,YACc,UAIZ;AACE,UAAM,QAAQ;AALJ,SAAA,WAAA;AAoBd,SAAmB,0BAAiD,CAAA;AAAA,EAdpE;AAAA,EAEA,qBAAgE;AAC5D,WAAO,KAAK,MAAA;AAAA,EAChB;AAAA,EAEA,QAAmD;AAC/C,QAAI;AACA,aAAO,KAAK,2BAA2B,KAAK,SAAS,MAAM,GAAG,KAAK,WAAW,CAAC;AAAA,IACnF,SAAS,QAAQ;AACb,aAAO,oBAAoB,IAAI,QAAQ,MAAM,CAAC,CAAC;AAAA,IACnD;AAAA,EACJ;AAAA,EAIU,uBAAuB,UAA6B;AAC1D,WAAO,KAAK,wBAAwB,SAAS,SAAS,MAAM;AAAA,EAChE;AAAA,EAEU,uBAAuB,QAAyB;AACtD,WAAO,WAAW,OAAO,WAAW;AAAA,EACxC;AAAA,EAEQ,2BAA2B,UAA6B;AAC5D,WACI,KAAK,uBAAuB,SAAS,MAAM,KAAK,CAAC,KAAK,uBAAuB,QAAQ;AAAA,EAE7F;AAAA,EAEA,MAAgB,YAAY,eAAyC;AACjE,WAAO,QAAQ,cAAc,UAAU;AAAA,EAC3C;AAAA,EAEU,wBAAwB,MAAmD;AACjF,WAAO,GAAG,IAAI;AAAA,EAClB;AAAA,EAEU,2BACN,UACyC;AACzC,WAAO,SAAS;AAAA,MACZ,CAACA,cAAa;AACV,YAAIA,UAAS,IAAI;AACb,cAAI;AACJ,cAAI,KAAK,uBAAuBA,SAAQ,GAAG;AACvC,4BAAgB,QAAQ,QAAQ,GAAG,IAAqB,CAAC;AAAA,UAC7D,WAAW,KAAK,2BAA2BA,SAAQ,GAAG;AAClD,4BAAgB,QAAQ;AAAA,cACpB;AAAA,gBACI;AAAA,kBACI,cAAcA,UAAS,MAAM;AAAA,gBAAA;AAAA,cACjC;AAAA,YACJ;AAAA,UAER,OAAO;AACH,4BAAgBA,UAAS,OAAO;AAAA,cAC5B,CAAC,SAAwB;AACrB,uBAAO,KAAK,wBAAwB,IAAI;AAAA,cAC5C;AAAA,cACA,CAAC,WAAgB,IAAI,QAAQ,MAAM,CAAC;AAAA,YAAA;AAAA,UAE5C;AACA,iBAAO,cAAc,QAAQ,MAAM;AAC/B,gBAAI;AACA,mBAAK,kBAAkB,EAAE,YAAYA,UAAS,QAAQ;AAAA,YAC1D,QAAQ;AAAA,YAER;AAAA,UACJ,CAAC;AAAA,QACL,OAAO;AACH,iBAAO,KAAK,YAAYA,SAAQ,EAC3B,KAAK,CAAC,iBAAiB;AACpB,mBAAO,IAAI,YAAY;AAAA,UAC3B,CAAC,EACA,QAAQ,MAAM;AACX,gBAAI;AACA,mBAAK,kBAAkB,EAAE,YAAYA,UAAS,QAAQ;AAAA,YAC1D,QAAQ;AAAA,YAER;AAAA,UACJ,CAAC;AAAA,QACT;AAAA,MACJ;AAAA,MACA,CAAC,WAAW,IAAI,QAAQ,MAAM,CAAC;AAAA,IAAA;AAAA,EAEvC;AACJ;ACzGO,SAAS,yBAAmE;AAC/E,SAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,EAAA;AAEjB;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@conduit-client/command-http-cache-control",
|
|
3
|
-
"version": "3.19.
|
|
3
|
+
"version": "3.19.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "OneStore HTTP Cache Control Command",
|
|
6
6
|
"type": "module",
|
|
@@ -31,13 +31,13 @@
|
|
|
31
31
|
"watch": "npm run build --watch"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@conduit-client/command-base": "3.19.
|
|
35
|
-
"@conduit-client/command-cache-control": "3.19.
|
|
36
|
-
"@conduit-client/service-aura-network": "3.19.
|
|
37
|
-
"@conduit-client/service-cache-control": "3.19.
|
|
38
|
-
"@conduit-client/service-fetch-network": "3.19.
|
|
39
|
-
"@conduit-client/service-pubsub": "3.19.
|
|
40
|
-
"@conduit-client/utils": "3.19.
|
|
34
|
+
"@conduit-client/command-base": "3.19.2",
|
|
35
|
+
"@conduit-client/command-cache-control": "3.19.2",
|
|
36
|
+
"@conduit-client/service-aura-network": "3.19.2",
|
|
37
|
+
"@conduit-client/service-cache-control": "3.19.2",
|
|
38
|
+
"@conduit-client/service-fetch-network": "3.19.2",
|
|
39
|
+
"@conduit-client/service-pubsub": "3.19.2",
|
|
40
|
+
"@conduit-client/utils": "3.19.2"
|
|
41
41
|
},
|
|
42
42
|
"volta": {
|
|
43
43
|
"extends": "../../../../package.json"
|