@memberjunction/server 5.21.0 → 5.23.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.
- package/README.md +44 -0
- package/dist/agents/skip-sdk.d.ts.map +1 -1
- package/dist/agents/skip-sdk.js +32 -2
- package/dist/agents/skip-sdk.js.map +1 -1
- package/dist/generated/generated.d.ts +172 -4
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +931 -2
- package/dist/generated/generated.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/resolvers/AutotagPipelineResolver.d.ts +21 -0
- package/dist/resolvers/AutotagPipelineResolver.d.ts.map +1 -0
- package/dist/resolvers/AutotagPipelineResolver.js +147 -0
- package/dist/resolvers/AutotagPipelineResolver.js.map +1 -0
- package/dist/resolvers/ClientToolRequestResolver.d.ts +43 -0
- package/dist/resolvers/ClientToolRequestResolver.d.ts.map +1 -0
- package/dist/resolvers/ClientToolRequestResolver.js +161 -0
- package/dist/resolvers/ClientToolRequestResolver.js.map +1 -0
- package/dist/resolvers/FetchEntityVectorsResolver.d.ts +29 -0
- package/dist/resolvers/FetchEntityVectorsResolver.d.ts.map +1 -0
- package/dist/resolvers/FetchEntityVectorsResolver.js +218 -0
- package/dist/resolvers/FetchEntityVectorsResolver.js.map +1 -0
- package/dist/resolvers/PipelineProgressResolver.d.ts +33 -0
- package/dist/resolvers/PipelineProgressResolver.d.ts.map +1 -0
- package/dist/resolvers/PipelineProgressResolver.js +138 -0
- package/dist/resolvers/PipelineProgressResolver.js.map +1 -0
- package/dist/resolvers/RunAIAgentResolver.d.ts.map +1 -1
- package/dist/resolvers/RunAIAgentResolver.js +7 -5
- package/dist/resolvers/RunAIAgentResolver.js.map +1 -1
- package/dist/resolvers/SearchKnowledgeResolver.d.ts +85 -0
- package/dist/resolvers/SearchKnowledgeResolver.d.ts.map +1 -0
- package/dist/resolvers/SearchKnowledgeResolver.js +587 -0
- package/dist/resolvers/SearchKnowledgeResolver.js.map +1 -0
- package/dist/resolvers/VectorizeEntityResolver.d.ts +21 -0
- package/dist/resolvers/VectorizeEntityResolver.d.ts.map +1 -0
- package/dist/resolvers/VectorizeEntityResolver.js +134 -0
- package/dist/resolvers/VectorizeEntityResolver.js.map +1 -0
- package/package.json +63 -62
- package/src/agents/skip-sdk.ts +31 -2
- package/src/generated/generated.ts +650 -7
- package/src/index.ts +13 -0
- package/src/resolvers/AutotagPipelineResolver.ts +146 -0
- package/src/resolvers/ClientToolRequestResolver.ts +128 -0
- package/src/resolvers/FetchEntityVectorsResolver.ts +234 -0
- package/src/resolvers/PipelineProgressResolver.ts +107 -0
- package/src/resolvers/RunAIAgentResolver.ts +7 -5
- package/src/resolvers/SearchKnowledgeResolver.ts +614 -0
- package/src/resolvers/VectorizeEntityResolver.ts +123 -0
|
@@ -0,0 +1,134 @@
|
|
|
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 __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { Resolver, Mutation, Arg, Ctx, ObjectType, Field, Float } from 'type-graphql';
|
|
14
|
+
import { LogError, LogStatus } from '@memberjunction/core';
|
|
15
|
+
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
16
|
+
import { EntityVectorSyncer } from '@memberjunction/ai-vector-sync';
|
|
17
|
+
import { PubSubManager } from '../generic/PubSubManager.js';
|
|
18
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
19
|
+
const PIPELINE_PROGRESS_TOPIC = 'PIPELINE_PROGRESS';
|
|
20
|
+
let VectorizeEntityResult = class VectorizeEntityResult {
|
|
21
|
+
};
|
|
22
|
+
__decorate([
|
|
23
|
+
Field(),
|
|
24
|
+
__metadata("design:type", Boolean)
|
|
25
|
+
], VectorizeEntityResult.prototype, "Success", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
Field({ nullable: true }),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], VectorizeEntityResult.prototype, "Status", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
Field({ nullable: true }),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], VectorizeEntityResult.prototype, "ErrorMessage", void 0);
|
|
34
|
+
__decorate([
|
|
35
|
+
Field({ nullable: true }),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], VectorizeEntityResult.prototype, "PipelineRunID", void 0);
|
|
38
|
+
VectorizeEntityResult = __decorate([
|
|
39
|
+
ObjectType()
|
|
40
|
+
], VectorizeEntityResult);
|
|
41
|
+
export { VectorizeEntityResult };
|
|
42
|
+
let VectorizeEntityResolver = class VectorizeEntityResolver extends ResolverBase {
|
|
43
|
+
async VectorizeEntity(entityDocumentID, entityID, batchSize, { userPayload } = {}) {
|
|
44
|
+
try {
|
|
45
|
+
const currentUser = this.GetUserFromPayload(userPayload);
|
|
46
|
+
if (!currentUser) {
|
|
47
|
+
return { Success: false, Status: 'Error', ErrorMessage: 'Unable to determine current user' };
|
|
48
|
+
}
|
|
49
|
+
const pipelineRunID = uuidv4();
|
|
50
|
+
LogStatus(`VectorizeEntity: starting pipeline ${pipelineRunID} for entity document ${entityDocumentID}`);
|
|
51
|
+
// Fire-and-forget: start the pipeline in the background and return immediately.
|
|
52
|
+
// Progress is delivered to the client via the PipelineProgress GraphQL subscription.
|
|
53
|
+
this.runPipelineInBackground(pipelineRunID, entityDocumentID, entityID, batchSize, currentUser);
|
|
54
|
+
return {
|
|
55
|
+
Success: true,
|
|
56
|
+
Status: 'Started',
|
|
57
|
+
PipelineRunID: pipelineRunID,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
62
|
+
LogError(`VectorizeEntity mutation failed: ${msg}`);
|
|
63
|
+
return {
|
|
64
|
+
Success: false,
|
|
65
|
+
Status: 'Error',
|
|
66
|
+
ErrorMessage: msg
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Runs the vectorization pipeline in the background, publishing progress
|
|
72
|
+
* updates via PubSub so the client can subscribe via PipelineProgress.
|
|
73
|
+
*/
|
|
74
|
+
async runPipelineInBackground(pipelineRunID, entityDocumentID, entityID, batchSize, currentUser) {
|
|
75
|
+
try {
|
|
76
|
+
const syncer = new EntityVectorSyncer();
|
|
77
|
+
await syncer.Config(true, currentUser);
|
|
78
|
+
const params = {
|
|
79
|
+
entityDocumentID,
|
|
80
|
+
entityID,
|
|
81
|
+
listBatchCount: batchSize || 50,
|
|
82
|
+
VectorizeBatchCount: batchSize || 50,
|
|
83
|
+
UpsertBatchCount: batchSize || 50,
|
|
84
|
+
OnProgress: (update) => {
|
|
85
|
+
LogStatus(`VectorizeEntity pipeline ${pipelineRunID}: ${update.Stage} ${update.ProcessedRecords}/${update.TotalRecords} (${update.PercentComplete}%)`);
|
|
86
|
+
this.publishProgress(pipelineRunID, update);
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
const result = await syncer.VectorizeEntity(params, currentUser);
|
|
90
|
+
LogStatus(`VectorizeEntity pipeline ${pipelineRunID} complete: success=${result.success}`);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
94
|
+
LogError(`VectorizeEntity pipeline ${pipelineRunID} failed: ${msg}`);
|
|
95
|
+
// Publish error notification so the client knows the pipeline failed
|
|
96
|
+
this.publishProgress(pipelineRunID, {
|
|
97
|
+
TotalRecords: 0,
|
|
98
|
+
ProcessedRecords: 0,
|
|
99
|
+
Stage: 'error',
|
|
100
|
+
PercentComplete: 0,
|
|
101
|
+
ElapsedMs: 0,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Publish a progress update to the PipelineProgress subscription topic.
|
|
107
|
+
*/
|
|
108
|
+
publishProgress(pipelineRunID, update) {
|
|
109
|
+
const notification = {
|
|
110
|
+
PipelineRunID: pipelineRunID,
|
|
111
|
+
Stage: update.Stage,
|
|
112
|
+
TotalItems: update.TotalRecords,
|
|
113
|
+
ProcessedItems: update.ProcessedRecords,
|
|
114
|
+
ElapsedMs: update.ElapsedMs,
|
|
115
|
+
PercentComplete: update.PercentComplete,
|
|
116
|
+
};
|
|
117
|
+
PubSubManager.Instance.Publish(PIPELINE_PROGRESS_TOPIC, { ...notification });
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
__decorate([
|
|
121
|
+
Mutation(() => VectorizeEntityResult),
|
|
122
|
+
__param(0, Arg('entityDocumentID')),
|
|
123
|
+
__param(1, Arg('entityID')),
|
|
124
|
+
__param(2, Arg('batchSize', () => Float, { nullable: true })),
|
|
125
|
+
__param(3, Ctx()),
|
|
126
|
+
__metadata("design:type", Function),
|
|
127
|
+
__metadata("design:paramtypes", [String, String, Number, Object]),
|
|
128
|
+
__metadata("design:returntype", Promise)
|
|
129
|
+
], VectorizeEntityResolver.prototype, "VectorizeEntity", null);
|
|
130
|
+
VectorizeEntityResolver = __decorate([
|
|
131
|
+
Resolver()
|
|
132
|
+
], VectorizeEntityResolver);
|
|
133
|
+
export { VectorizeEntityResolver };
|
|
134
|
+
//# sourceMappingURL=VectorizeEntityResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VectorizeEntityResolver.js","sourceRoot":"","sources":["../../src/resolvers/VectorizeEntityResolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/server",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.23.0",
|
|
4
4
|
"description": "MemberJunction: This project provides API access via GraphQL to the common data store.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -27,67 +27,68 @@
|
|
|
27
27
|
"@as-integrations/express5": "^1.0.0",
|
|
28
28
|
"@graphql-tools/schema": "latest",
|
|
29
29
|
"@graphql-tools/utils": "^11.0.0",
|
|
30
|
-
"@memberjunction/actions": "5.
|
|
31
|
-
"@memberjunction/actions-apollo": "5.
|
|
32
|
-
"@memberjunction/actions-base": "5.
|
|
33
|
-
"@memberjunction/actions-bizapps-accounting": "5.
|
|
34
|
-
"@memberjunction/actions-bizapps-crm": "5.
|
|
35
|
-
"@memberjunction/actions-bizapps-formbuilders": "5.
|
|
36
|
-
"@memberjunction/actions-bizapps-lms": "5.
|
|
37
|
-
"@memberjunction/actions-bizapps-social": "5.
|
|
38
|
-
"@memberjunction/ai": "5.
|
|
39
|
-
"@memberjunction/ai-agent-manager": "5.
|
|
40
|
-
"@memberjunction/ai-agent-manager-actions": "5.
|
|
41
|
-
"@memberjunction/ai-agents": "5.
|
|
42
|
-
"@memberjunction/ai-core-plus": "5.
|
|
43
|
-
"@memberjunction/ai-mcp-client": "5.
|
|
44
|
-
"@memberjunction/ai-prompts": "5.
|
|
45
|
-
"@memberjunction/ai-provider-bundle": "5.
|
|
46
|
-
"@memberjunction/ai-
|
|
47
|
-
"@memberjunction/
|
|
48
|
-
"@memberjunction/
|
|
49
|
-
"@memberjunction/
|
|
50
|
-
"@memberjunction/
|
|
51
|
-
"@memberjunction/
|
|
52
|
-
"@memberjunction/communication-
|
|
53
|
-
"@memberjunction/communication-
|
|
54
|
-
"@memberjunction/
|
|
55
|
-
"@memberjunction/
|
|
56
|
-
"@memberjunction/
|
|
57
|
-
"@memberjunction/
|
|
58
|
-
"@memberjunction/core
|
|
59
|
-
"@memberjunction/core-
|
|
60
|
-
"@memberjunction/core-entities
|
|
61
|
-
"@memberjunction/
|
|
62
|
-
"@memberjunction/data-context
|
|
63
|
-
"@memberjunction/
|
|
64
|
-
"@memberjunction/
|
|
65
|
-
"@memberjunction/
|
|
66
|
-
"@memberjunction/entity-communications-
|
|
67
|
-
"@memberjunction/
|
|
68
|
-
"@memberjunction/
|
|
69
|
-
"@memberjunction/
|
|
70
|
-
"@memberjunction/
|
|
71
|
-
"@memberjunction/
|
|
72
|
-
"@memberjunction/integration-
|
|
73
|
-
"@memberjunction/
|
|
74
|
-
"@memberjunction/
|
|
75
|
-
"@memberjunction/
|
|
76
|
-
"@memberjunction/
|
|
77
|
-
"@memberjunction/
|
|
78
|
-
"@memberjunction/
|
|
79
|
-
"@memberjunction/scheduling-
|
|
80
|
-
"@memberjunction/scheduling-
|
|
81
|
-
"@memberjunction/scheduling-engine
|
|
82
|
-
"@memberjunction/
|
|
83
|
-
"@memberjunction/
|
|
84
|
-
"@memberjunction/
|
|
85
|
-
"@memberjunction/
|
|
86
|
-
"@memberjunction/
|
|
87
|
-
"@memberjunction/
|
|
88
|
-
"@memberjunction/
|
|
89
|
-
"@memberjunction/testing-engine
|
|
90
|
-
"@memberjunction/
|
|
30
|
+
"@memberjunction/actions": "5.23.0",
|
|
31
|
+
"@memberjunction/actions-apollo": "5.23.0",
|
|
32
|
+
"@memberjunction/actions-base": "5.23.0",
|
|
33
|
+
"@memberjunction/actions-bizapps-accounting": "5.23.0",
|
|
34
|
+
"@memberjunction/actions-bizapps-crm": "5.23.0",
|
|
35
|
+
"@memberjunction/actions-bizapps-formbuilders": "5.23.0",
|
|
36
|
+
"@memberjunction/actions-bizapps-lms": "5.23.0",
|
|
37
|
+
"@memberjunction/actions-bizapps-social": "5.23.0",
|
|
38
|
+
"@memberjunction/ai": "5.23.0",
|
|
39
|
+
"@memberjunction/ai-agent-manager": "5.23.0",
|
|
40
|
+
"@memberjunction/ai-agent-manager-actions": "5.23.0",
|
|
41
|
+
"@memberjunction/ai-agents": "5.23.0",
|
|
42
|
+
"@memberjunction/ai-core-plus": "5.23.0",
|
|
43
|
+
"@memberjunction/ai-mcp-client": "5.23.0",
|
|
44
|
+
"@memberjunction/ai-prompts": "5.23.0",
|
|
45
|
+
"@memberjunction/ai-provider-bundle": "5.23.0",
|
|
46
|
+
"@memberjunction/ai-vector-sync": "5.23.0",
|
|
47
|
+
"@memberjunction/ai-vectors-pinecone": "5.23.0",
|
|
48
|
+
"@memberjunction/aiengine": "5.23.0",
|
|
49
|
+
"@memberjunction/api-keys": "5.23.0",
|
|
50
|
+
"@memberjunction/auth-providers": "5.23.0",
|
|
51
|
+
"@memberjunction/codegen-lib": "5.23.0",
|
|
52
|
+
"@memberjunction/communication-ms-graph": "5.23.0",
|
|
53
|
+
"@memberjunction/communication-sendgrid": "5.23.0",
|
|
54
|
+
"@memberjunction/communication-types": "5.23.0",
|
|
55
|
+
"@memberjunction/component-registry-client-sdk": "5.23.0",
|
|
56
|
+
"@memberjunction/computer-use-engine": "5.23.0",
|
|
57
|
+
"@memberjunction/config": "5.23.0",
|
|
58
|
+
"@memberjunction/core": "5.23.0",
|
|
59
|
+
"@memberjunction/core-actions": "5.23.0",
|
|
60
|
+
"@memberjunction/core-entities": "5.23.0",
|
|
61
|
+
"@memberjunction/core-entities-server": "5.23.0",
|
|
62
|
+
"@memberjunction/data-context": "5.23.0",
|
|
63
|
+
"@memberjunction/data-context-server": "5.23.0",
|
|
64
|
+
"@memberjunction/doc-utils": "5.23.0",
|
|
65
|
+
"@memberjunction/encryption": "5.23.0",
|
|
66
|
+
"@memberjunction/entity-communications-base": "5.23.0",
|
|
67
|
+
"@memberjunction/entity-communications-server": "5.23.0",
|
|
68
|
+
"@memberjunction/external-change-detection": "5.23.0",
|
|
69
|
+
"@memberjunction/generic-database-provider": "5.23.0",
|
|
70
|
+
"@memberjunction/global": "5.23.0",
|
|
71
|
+
"@memberjunction/graphql-dataprovider": "5.23.0",
|
|
72
|
+
"@memberjunction/integration-engine": "5.23.0",
|
|
73
|
+
"@memberjunction/integration-schema-builder": "5.23.0",
|
|
74
|
+
"@memberjunction/interactive-component-types": "5.23.0",
|
|
75
|
+
"@memberjunction/notifications": "5.23.0",
|
|
76
|
+
"@memberjunction/postgresql-dataprovider": "5.23.0",
|
|
77
|
+
"@memberjunction/queue": "5.23.0",
|
|
78
|
+
"@memberjunction/redis-provider": "5.23.0",
|
|
79
|
+
"@memberjunction/scheduling-actions": "5.23.0",
|
|
80
|
+
"@memberjunction/scheduling-base-types": "5.23.0",
|
|
81
|
+
"@memberjunction/scheduling-engine": "5.23.0",
|
|
82
|
+
"@memberjunction/scheduling-engine-base": "5.23.0",
|
|
83
|
+
"@memberjunction/server-extensions-core": "5.23.0",
|
|
84
|
+
"@memberjunction/skip-types": "5.23.0",
|
|
85
|
+
"@memberjunction/sql-dialect": "5.23.0",
|
|
86
|
+
"@memberjunction/sqlserver-dataprovider": "5.23.0",
|
|
87
|
+
"@memberjunction/storage": "5.23.0",
|
|
88
|
+
"@memberjunction/templates": "5.23.0",
|
|
89
|
+
"@memberjunction/testing-engine": "5.23.0",
|
|
90
|
+
"@memberjunction/testing-engine-base": "5.23.0",
|
|
91
|
+
"@memberjunction/version-history": "5.23.0",
|
|
91
92
|
"@types/compression": "^1.8.1",
|
|
92
93
|
"@types/cors": "^2.8.19",
|
|
93
94
|
"@types/jsonwebtoken": "9.0.10",
|
package/src/agents/skip-sdk.ts
CHANGED
|
@@ -294,8 +294,9 @@ export class SkipSDK {
|
|
|
294
294
|
LogError(`[SkipSDK] Error calling Skip API: ${error}`);
|
|
295
295
|
|
|
296
296
|
// Provide user-friendly error messages for common failures
|
|
297
|
-
|
|
298
|
-
|
|
297
|
+
const rawError = error instanceof Error ? error.message : String(error);
|
|
298
|
+
let userFriendlyError = rawError;
|
|
299
|
+
const errorStr = rawError.toLowerCase();
|
|
299
300
|
|
|
300
301
|
if (errorStr.includes('stream error') || errorStr.includes('aborted') || errorStr.includes('econnreset')) {
|
|
301
302
|
userFriendlyError = 'The Skip analysis service became unavailable during processing. Please try again.';
|
|
@@ -778,6 +779,34 @@ export class SkipSDK {
|
|
|
778
779
|
};
|
|
779
780
|
|
|
780
781
|
const req = requestFn(options, (res) => {
|
|
782
|
+
// Check for non-2xx HTTP status codes before attempting SSE parsing.
|
|
783
|
+
// The Skip API returns JSON error bodies for auth/validation failures (401, 403, etc.)
|
|
784
|
+
// which won't contain SSE `data:` lines, resulting in an empty events array
|
|
785
|
+
// and the misleading "No response received from Skip API" error.
|
|
786
|
+
if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
|
|
787
|
+
let errorBody = '';
|
|
788
|
+
res.on('data', (chunk: Buffer) => { errorBody += chunk.toString(); });
|
|
789
|
+
res.on('end', () => {
|
|
790
|
+
let errorMessage = `Skip API returned HTTP ${res.statusCode}`;
|
|
791
|
+
try {
|
|
792
|
+
const parsed = JSON.parse(errorBody);
|
|
793
|
+
if (parsed.message) {
|
|
794
|
+
errorMessage = parsed.message;
|
|
795
|
+
} else if (parsed.error) {
|
|
796
|
+
errorMessage = parsed.error;
|
|
797
|
+
}
|
|
798
|
+
} catch {
|
|
799
|
+
// Non-JSON body — use raw text if available
|
|
800
|
+
if (errorBody.trim()) {
|
|
801
|
+
errorMessage += `: ${errorBody.trim().substring(0, 200)}`;
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
LogError(`[SkipSDK] HTTP ${res.statusCode} from ${url}: ${errorMessage}`);
|
|
805
|
+
reject(new Error(errorMessage));
|
|
806
|
+
});
|
|
807
|
+
return;
|
|
808
|
+
}
|
|
809
|
+
|
|
781
810
|
const gunzip = createGunzip();
|
|
782
811
|
const stream = res.headers['content-encoding'] === 'gzip' ? res.pipe(gunzip) : res;
|
|
783
812
|
|