@qualtrics/plugin-client 1.8.19
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/create-npm-package.js +39 -0
- package/dist/package.json +33 -0
- package/dist/src/constants.d.ts +12 -0
- package/dist/src/constants.js +21 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/deferred.d.ts +6 -0
- package/dist/src/deferred.js +28 -0
- package/dist/src/deferred.js.map +1 -0
- package/dist/src/errors/encoder.d.ts +15 -0
- package/dist/src/errors/encoder.js +130 -0
- package/dist/src/errors/encoder.js.map +1 -0
- package/dist/src/errors/errorMessages.d.ts +4 -0
- package/dist/src/errors/errorMessages.js +14 -0
- package/dist/src/errors/errorMessages.js.map +1 -0
- package/dist/src/errors/errorTypes.d.ts +67 -0
- package/dist/src/errors/errorTypes.js +166 -0
- package/dist/src/errors/errorTypes.js.map +1 -0
- package/dist/src/errors/interfaceValidator.d.ts +30 -0
- package/dist/src/errors/interfaceValidator.js +54 -0
- package/dist/src/errors/interfaceValidator.js.map +1 -0
- package/dist/src/lib/messages/messageChannel.d.ts +126 -0
- package/dist/src/lib/messages/messageChannel.js +390 -0
- package/dist/src/lib/messages/messageChannel.js.map +1 -0
- package/dist/src/lib/plugin/buildConfig.d.ts +1 -0
- package/dist/src/lib/plugin/buildConfig.js +3 -0
- package/dist/src/lib/plugin/buildConfig.js.map +1 -0
- package/dist/src/lib/plugin/index.d.ts +3 -0
- package/dist/src/lib/plugin/index.js +4 -0
- package/dist/src/lib/plugin/index.js.map +1 -0
- package/dist/src/lib/plugin/models.d.ts +13 -0
- package/dist/src/lib/plugin/models.js +9 -0
- package/dist/src/lib/plugin/models.js.map +1 -0
- package/dist/src/lib/plugin/pluginClient.d.ts +155 -0
- package/dist/src/lib/plugin/pluginClient.js +436 -0
- package/dist/src/lib/plugin/pluginClient.js.map +1 -0
- package/dist/src/lib/plugin/translations.d.ts +15 -0
- package/dist/src/lib/plugin/translations.js +49 -0
- package/dist/src/lib/plugin/translations.js.map +1 -0
- package/dist/src/modelUtils.d.ts +6 -0
- package/dist/src/modelUtils.js +21 -0
- package/dist/src/modelUtils.js.map +1 -0
- package/dist/src/models.d.ts +125 -0
- package/dist/src/models.js +130 -0
- package/dist/src/models.js.map +1 -0
- package/dist/src/utils.d.ts +3 -0
- package/dist/src/utils.js +23 -0
- package/dist/src/utils.js.map +1 -0
- package/package.json +25 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Create a valid package.json file by merging the base package.json with an
|
|
5
|
+
* overlay.
|
|
6
|
+
*
|
|
7
|
+
* Also inject the correct version.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const overlay = {
|
|
11
|
+
private: false,
|
|
12
|
+
main: 'src/lib/plugin/index.js',
|
|
13
|
+
types: 'src/lib/plugin/index.d.ts',
|
|
14
|
+
files: ['src'],
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const version = require('../plugin-sdk/webpackConstants').CLIENT_VERSION
|
|
18
|
+
|
|
19
|
+
const JSON_INDENT_SPACES = 2
|
|
20
|
+
|
|
21
|
+
const fs = require('fs')
|
|
22
|
+
|
|
23
|
+
const src = `${__dirname}`
|
|
24
|
+
const dest = `${src}/dist`
|
|
25
|
+
|
|
26
|
+
// Write package.json
|
|
27
|
+
const basePackage = JSON.parse(fs.readFileSync(`${src}/package.json`).toString())
|
|
28
|
+
const pkgJson = Object.assign({}, basePackage, overlay, {version})
|
|
29
|
+
|
|
30
|
+
fs.writeFileSync(`${dest}/package.json`, JSON.stringify(pkgJson, null, JSON_INDENT_SPACES))
|
|
31
|
+
|
|
32
|
+
fs.access(`${dest}/src/lib/host`, fs.constants.R_OK, (err) => {
|
|
33
|
+
if (!err) {
|
|
34
|
+
process.stderr.write(
|
|
35
|
+
`Error: Client package includes lib/host! This bloats the package unnecessarily.\n`,
|
|
36
|
+
)
|
|
37
|
+
process.exit(1)
|
|
38
|
+
}
|
|
39
|
+
})
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@qualtrics/plugin-client",
|
|
3
|
+
"description": "Interface for XM Plugins to communicate with the environment they're rendered in",
|
|
4
|
+
"scripts": {
|
|
5
|
+
"ci-build": "yarn clean && yarn build",
|
|
6
|
+
"build": "tspc && ./create-npm-package.js && depcheck dist",
|
|
7
|
+
"clean": "rm -rf dist"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "ssh://git@gitlab-app.eng.qops.net:10022/developer-platform/app-framework/plugin-sdk.git"
|
|
12
|
+
},
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"registry": "https://registry.npmjs.org/"
|
|
15
|
+
},
|
|
16
|
+
"author": "",
|
|
17
|
+
"license": "ISC",
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"depcheck": "1.4.7",
|
|
20
|
+
"ts-patch": "3.1.2"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"fp-ts": "^2.10.5",
|
|
24
|
+
"io-ts": "^2.2.16",
|
|
25
|
+
"lodash": "^4.17.21"
|
|
26
|
+
},
|
|
27
|
+
"main": "src/lib/plugin/index.js",
|
|
28
|
+
"types": "src/lib/plugin/index.d.ts",
|
|
29
|
+
"private": false,
|
|
30
|
+
"files": [
|
|
31
|
+
"src"
|
|
32
|
+
]
|
|
33
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const CONNECTION_SCHEMES: Readonly<{
|
|
2
|
+
API_KEY: "apikey";
|
|
3
|
+
BASIC: "basic";
|
|
4
|
+
OAUTH: "oauth2";
|
|
5
|
+
SFTP: "sftp";
|
|
6
|
+
ADOBE: "adobe";
|
|
7
|
+
OAUTH_CLIENT_JWT: "oauth2ClientJWT";
|
|
8
|
+
AWSSIGV4: "awsSigV4";
|
|
9
|
+
SUCCESS_FACTORS: "successfactors";
|
|
10
|
+
INTERNAL: "internal";
|
|
11
|
+
NONE: "none";
|
|
12
|
+
}>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// All current connection schemes supported by App Framework
|
|
2
|
+
export var CONNECTION_SCHEMES = Object.freeze({
|
|
3
|
+
API_KEY: 'apikey',
|
|
4
|
+
BASIC: 'basic',
|
|
5
|
+
OAUTH: 'oauth2',
|
|
6
|
+
SFTP: 'sftp',
|
|
7
|
+
ADOBE: 'adobe',
|
|
8
|
+
OAUTH_CLIENT_JWT: 'oauth2ClientJWT',
|
|
9
|
+
AWSSIGV4: 'awsSigV4',
|
|
10
|
+
// NOTE: The successfactors scheme is NOT recognized by the credential service. It
|
|
11
|
+
// instead uses the oauth2ClientSAML scheme under the hood.
|
|
12
|
+
SUCCESS_FACTORS: 'successfactors',
|
|
13
|
+
// NOTE: The internal scheme is NOT recognized by the credential service. It
|
|
14
|
+
// is only for use by first-party apps, to access UDS endpoints.
|
|
15
|
+
// See APP-1290.
|
|
16
|
+
INTERNAL: 'internal',
|
|
17
|
+
// NOTE: The none scheme is NOT recognized by the credential service. It
|
|
18
|
+
// instead uses the mtls scheme under the hood.
|
|
19
|
+
NONE: 'none',
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../plugin-sdk/src/constants.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,MAAM,CAAC,IAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,gBAAgB,EAAE,iBAAiB;IACnC,QAAQ,EAAE,UAAU;IAEpB,kFAAkF;IAClF,2DAA2D;IAC3D,eAAe,EAAE,gBAAgB;IAEjC,4EAA4E;IAC5E,gEAAgE;IAChE,gBAAgB;IAChB,QAAQ,EAAE,UAAU;IAEpB,wEAAwE;IACxE,+CAA+C;IAC/C,IAAI,EAAE,MAAM;CACb,CAAC,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Deferred represents a Promise and its associated resolve and reject
|
|
2
|
+
// functions.
|
|
3
|
+
//
|
|
4
|
+
// Deferreds should always be private, since they allow changing the contained
|
|
5
|
+
// Promise. Callers interested in the values should be given access to the
|
|
6
|
+
// Promise only.
|
|
7
|
+
var Deferred = /** @class */ (function () {
|
|
8
|
+
function Deferred() {
|
|
9
|
+
var resolve = undefined;
|
|
10
|
+
var reject = undefined;
|
|
11
|
+
var promise = new Promise(function (res, rej) {
|
|
12
|
+
resolve = res;
|
|
13
|
+
reject = rej;
|
|
14
|
+
});
|
|
15
|
+
if (!resolve) {
|
|
16
|
+
throw new Error("resolve wasn't set!");
|
|
17
|
+
}
|
|
18
|
+
if (!reject) {
|
|
19
|
+
throw new Error("reject wasn't set!");
|
|
20
|
+
}
|
|
21
|
+
this.promise = promise;
|
|
22
|
+
this.resolve = resolve;
|
|
23
|
+
this.reject = reject;
|
|
24
|
+
}
|
|
25
|
+
return Deferred;
|
|
26
|
+
}());
|
|
27
|
+
export { Deferred };
|
|
28
|
+
//# sourceMappingURL=deferred.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferred.js","sourceRoot":"","sources":["../../../plugin-sdk/src/deferred.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,aAAa;AACb,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,gBAAgB;AAEhB;IAKE;QACE,IAAI,OAAO,GAAuD,SAAS,CAAA;QAC3E,IAAI,MAAM,GAA4C,SAAS,CAAA;QAC/D,IAAM,OAAO,GAAG,IAAI,OAAO,CAAI,UAAC,GAAG,EAAE,GAAG;YACtC,OAAO,GAAG,GAAG,CAAA;YACb,MAAM,GAAG,GAAG,CAAA;QACd,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACxC,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACvC,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IACH,eAAC;AAAD,CAAC,AAtBD,IAsBC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare enum knownErrorTypes {
|
|
2
|
+
fetchError = "fetchError",
|
|
3
|
+
egressServiceError = "egressServiceError",
|
|
4
|
+
egressUnexpectedResponseError = "egressUnexpectedResponseError",
|
|
5
|
+
timeoutError = "timeoutError"
|
|
6
|
+
}
|
|
7
|
+
export type EncodedError = {
|
|
8
|
+
message: string;
|
|
9
|
+
props: Partial<Record<string, string>>;
|
|
10
|
+
errorType?: knownErrorTypes;
|
|
11
|
+
};
|
|
12
|
+
export declare function isEncodedError(u: unknown): u is EncodedError;
|
|
13
|
+
export declare function encodeError(e: Error): EncodedError;
|
|
14
|
+
export declare function decodeError(e: EncodedError): Error;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { EgressServiceError, EgressUnexpectedResponseError, FetchError, TimeoutError, } from "./errorTypes";
|
|
13
|
+
var knownErrorTypes;
|
|
14
|
+
(function (knownErrorTypes) {
|
|
15
|
+
knownErrorTypes["fetchError"] = "fetchError";
|
|
16
|
+
knownErrorTypes["egressServiceError"] = "egressServiceError";
|
|
17
|
+
knownErrorTypes["egressUnexpectedResponseError"] = "egressUnexpectedResponseError";
|
|
18
|
+
knownErrorTypes["timeoutError"] = "timeoutError";
|
|
19
|
+
})(knownErrorTypes || (knownErrorTypes = {}));
|
|
20
|
+
function getErrorType(e) {
|
|
21
|
+
if (e instanceof FetchError)
|
|
22
|
+
return knownErrorTypes.fetchError;
|
|
23
|
+
if (e instanceof EgressServiceError)
|
|
24
|
+
return knownErrorTypes.egressServiceError;
|
|
25
|
+
if (e instanceof EgressUnexpectedResponseError)
|
|
26
|
+
return knownErrorTypes.egressUnexpectedResponseError;
|
|
27
|
+
if (e instanceof TimeoutError)
|
|
28
|
+
return knownErrorTypes.timeoutError;
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
export function isEncodedError(u) {
|
|
32
|
+
if (!u || typeof u !== 'object')
|
|
33
|
+
return false;
|
|
34
|
+
var o = u;
|
|
35
|
+
if (!('message' in o))
|
|
36
|
+
return false;
|
|
37
|
+
if (typeof o.message !== 'string')
|
|
38
|
+
return false;
|
|
39
|
+
if ('errorType' in o && typeof o.errorType !== 'string')
|
|
40
|
+
return false;
|
|
41
|
+
if (!('props' in o))
|
|
42
|
+
return false;
|
|
43
|
+
if (!o.props)
|
|
44
|
+
return false;
|
|
45
|
+
if (typeof o.props !== 'object')
|
|
46
|
+
return false;
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
function isEncodedFetchError(u) {
|
|
50
|
+
if (!isEncodedError(u))
|
|
51
|
+
return false;
|
|
52
|
+
var se = u;
|
|
53
|
+
if (se.errorType != knownErrorTypes.fetchError)
|
|
54
|
+
return false;
|
|
55
|
+
if (!('status' in se.props))
|
|
56
|
+
return false;
|
|
57
|
+
if (typeof se.props.status !== 'number')
|
|
58
|
+
return false;
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
function isEncodedEgressServiceError(u) {
|
|
62
|
+
if (!isEncodedError(u))
|
|
63
|
+
return false;
|
|
64
|
+
var se = u;
|
|
65
|
+
if (se.errorType != knownErrorTypes.egressServiceError)
|
|
66
|
+
return false;
|
|
67
|
+
if (!('errorCode' in se.props))
|
|
68
|
+
return false;
|
|
69
|
+
if (typeof se.props.errorCode !== 'string')
|
|
70
|
+
return false;
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
function isEncodedEgressUnexpectedResponseError(u) {
|
|
74
|
+
if (!isEncodedError(u))
|
|
75
|
+
return false;
|
|
76
|
+
var se = u;
|
|
77
|
+
if (se.errorType != knownErrorTypes.egressUnexpectedResponseError)
|
|
78
|
+
return false;
|
|
79
|
+
if (!('httpStatusCode' in se.props))
|
|
80
|
+
return false;
|
|
81
|
+
if (typeof se.props.httpStatusCode !== 'number')
|
|
82
|
+
return false;
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
function isEncodedTimeoutError(u) {
|
|
86
|
+
if (!isEncodedError(u))
|
|
87
|
+
return false;
|
|
88
|
+
var se = u;
|
|
89
|
+
if (se.errorType != knownErrorTypes.timeoutError)
|
|
90
|
+
return false;
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
function decodeGenericError(e) {
|
|
94
|
+
var error = new Error(e.message);
|
|
95
|
+
Object.assign(error, e.props);
|
|
96
|
+
return error;
|
|
97
|
+
}
|
|
98
|
+
function decodeFetchError(e) {
|
|
99
|
+
return new FetchError(e.message, e.props.status, e.props.responseData, e.props.responseHeaders);
|
|
100
|
+
}
|
|
101
|
+
function decodeEgressServiceError(e) {
|
|
102
|
+
return new EgressServiceError(e.props.errorCode, e.message);
|
|
103
|
+
}
|
|
104
|
+
function decodeEgressUnexpectedResponseError(e) {
|
|
105
|
+
return new EgressUnexpectedResponseError(e.props.httpStatusCode, e.message);
|
|
106
|
+
}
|
|
107
|
+
function decodeTimeoutError(e) {
|
|
108
|
+
return new TimeoutError(e.message);
|
|
109
|
+
}
|
|
110
|
+
export function encodeError(e) {
|
|
111
|
+
return {
|
|
112
|
+
message: e.message,
|
|
113
|
+
props: __assign({}, e),
|
|
114
|
+
errorType: getErrorType(e),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
export function decodeError(e) {
|
|
118
|
+
if (!isEncodedError(e))
|
|
119
|
+
throw new Error('not a valid encoded error');
|
|
120
|
+
if (isEncodedFetchError(e))
|
|
121
|
+
return decodeFetchError(e);
|
|
122
|
+
if (isEncodedEgressServiceError(e))
|
|
123
|
+
return decodeEgressServiceError(e);
|
|
124
|
+
if (isEncodedEgressUnexpectedResponseError(e))
|
|
125
|
+
return decodeEgressUnexpectedResponseError(e);
|
|
126
|
+
if (isEncodedTimeoutError(e))
|
|
127
|
+
return decodeTimeoutError(e);
|
|
128
|
+
return decodeGenericError(e);
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=encoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoder.js","sourceRoot":"","sources":["../../../../plugin-sdk/src/errors/encoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as t from 'io-ts';
|
|
2
|
+
export declare function missingVariable(variableName: string): Error;
|
|
3
|
+
export declare function invalidParameter(variableName: string, errorMsg: string): TypeError;
|
|
4
|
+
export declare function invalidInterface<A, O, I>(variableName: string, codec: t.Type<A, O, I>, invalidObject: unknown): TypeError;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { getInvalidInterfacePaths } from './interfaceValidator';
|
|
2
|
+
export function missingVariable(variableName) {
|
|
3
|
+
return new Error("Required parameter not provided: ".concat(variableName));
|
|
4
|
+
}
|
|
5
|
+
export function invalidParameter(variableName, errorMsg) {
|
|
6
|
+
return new TypeError("Invalid parameter ".concat(variableName, ": ").concat(errorMsg));
|
|
7
|
+
}
|
|
8
|
+
export function invalidInterface(variableName, codec, invalidObject) {
|
|
9
|
+
var configErrors = getInvalidInterfacePaths(codec.decode(invalidObject));
|
|
10
|
+
var configErrorsWithPrefix = configErrors.map(function (error) { return "\n\t- ".concat(error); });
|
|
11
|
+
var configErrorMsg = configErrorsWithPrefix.length !== 0 ? "Invalid keys:".concat(configErrorsWithPrefix.join('')) : '';
|
|
12
|
+
return new TypeError("Invalid collection ".concat(variableName, ". ").concat(configErrorMsg));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=errorMessages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorMessages.js","sourceRoot":"","sources":["../../../../plugin-sdk/src/errors/errorMessages.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,wBAAwB,EAAC,MAAM,sBAAsB,CAAA;AAE7D,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,OAAO,IAAI,KAAK,CAAC,2CAAoC,YAAY,CAAE,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,YAAoB,EAAE,QAAgB;IACrE,OAAO,IAAI,SAAS,CAAC,4BAAqB,YAAY,eAAK,QAAQ,CAAE,CAAC,CAAA;AACxE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,YAAoB,EACpB,KAAsB,EACtB,aAAsB;IAEtB,IAAM,YAAY,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,aAAkB,CAAC,CAAC,CAAA;IAC/E,IAAM,sBAAsB,GAAG,YAAY,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,gBAAS,KAAK,CAAE,EAAhB,CAAgB,CAAC,CAAA;IAC5E,IAAM,cAAc,GAClB,sBAAsB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,uBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9F,OAAO,IAAI,SAAS,CAAC,6BAAsB,YAAY,eAAK,cAAc,CAAE,CAAC,CAAA;AAC/E,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Special implementation of Error for when there is a failed fetch (API or normal)
|
|
3
|
+
*/
|
|
4
|
+
export declare class FetchError extends Error {
|
|
5
|
+
status?: number | undefined;
|
|
6
|
+
responseData?: unknown;
|
|
7
|
+
responseHeaders?: Record<string, string> | undefined;
|
|
8
|
+
axiosErrorCode?: string | undefined;
|
|
9
|
+
constructor(errorMessage: string, status?: number | undefined, responseData?: unknown, responseHeaders?: Record<string, string> | undefined, axiosErrorCode?: string | undefined);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Special implementation of Error for when there is a timeout
|
|
13
|
+
*/
|
|
14
|
+
export declare class TimeoutError extends Error {
|
|
15
|
+
constructor(errorMessage: string);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Error class to indicate a missing credential
|
|
19
|
+
*/
|
|
20
|
+
export declare class MissingCredentialError extends Error {
|
|
21
|
+
constructor(credentialId: string | undefined);
|
|
22
|
+
}
|
|
23
|
+
export declare const USER_ERROR_CONTEXTS: Readonly<{
|
|
24
|
+
ACCOUNT: "account selector";
|
|
25
|
+
PLUGIN: "plugin selector";
|
|
26
|
+
EXTENSION: "extension selector";
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Error class to indicate a user cancellation
|
|
30
|
+
*/
|
|
31
|
+
export declare class UserCancelError extends Error {
|
|
32
|
+
constructor(selectorType: string);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Error class to indicate a user went back
|
|
36
|
+
*/
|
|
37
|
+
export declare class UserBackError extends Error {
|
|
38
|
+
constructor(selectorType: string);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Error class to indicate wrong scheme
|
|
42
|
+
*/
|
|
43
|
+
export declare class WrongSchemeError extends Error {
|
|
44
|
+
constructor(scheme: string);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Representation of an error from Egress Gateway, which takes the following form:
|
|
48
|
+
* {
|
|
49
|
+
* meta: ...
|
|
50
|
+
* error: {
|
|
51
|
+
* errorCode: "ERR_X.X"
|
|
52
|
+
* errorMessage: "message"
|
|
53
|
+
* }
|
|
54
|
+
* }
|
|
55
|
+
*/
|
|
56
|
+
export declare class EgressServiceError extends Error {
|
|
57
|
+
errorCode: string;
|
|
58
|
+
constructor(errorCode: string, errorMessage: string);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Represents error thrown when a (successful) EgressResponse does not
|
|
62
|
+
* match the expected response.
|
|
63
|
+
*/
|
|
64
|
+
export declare class EgressUnexpectedResponseError extends Error {
|
|
65
|
+
httpStatusCode: number;
|
|
66
|
+
constructor(httpStatusCode: number, errorMessage: string);
|
|
67
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
/**
|
|
17
|
+
* Special implementation of Error for when there is a failed fetch (API or normal)
|
|
18
|
+
*/
|
|
19
|
+
var FetchError = /** @class */ (function (_super) {
|
|
20
|
+
__extends(FetchError, _super);
|
|
21
|
+
function FetchError(errorMessage, status, responseData, responseHeaders, axiosErrorCode) {
|
|
22
|
+
var _newTarget = this.constructor;
|
|
23
|
+
var _this = _super.call(this, errorMessage) || this;
|
|
24
|
+
_this.status = status;
|
|
25
|
+
_this.responseData = responseData;
|
|
26
|
+
_this.responseHeaders = responseHeaders;
|
|
27
|
+
_this.axiosErrorCode = axiosErrorCode;
|
|
28
|
+
// Error breaks the prototype chain, so restore it manually. See:
|
|
29
|
+
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
|
|
30
|
+
Object.setPrototypeOf(_this, _newTarget.prototype);
|
|
31
|
+
return _this;
|
|
32
|
+
}
|
|
33
|
+
return FetchError;
|
|
34
|
+
}(Error));
|
|
35
|
+
export { FetchError };
|
|
36
|
+
/**
|
|
37
|
+
* Special implementation of Error for when there is a timeout
|
|
38
|
+
*/
|
|
39
|
+
var TimeoutError = /** @class */ (function (_super) {
|
|
40
|
+
__extends(TimeoutError, _super);
|
|
41
|
+
function TimeoutError(errorMessage) {
|
|
42
|
+
var _newTarget = this.constructor;
|
|
43
|
+
var _this = _super.call(this, errorMessage) || this;
|
|
44
|
+
// Error breaks the prototype chain, so restore it manually. See:
|
|
45
|
+
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
|
|
46
|
+
Object.setPrototypeOf(_this, _newTarget.prototype);
|
|
47
|
+
return _this;
|
|
48
|
+
}
|
|
49
|
+
return TimeoutError;
|
|
50
|
+
}(Error));
|
|
51
|
+
export { TimeoutError };
|
|
52
|
+
/**
|
|
53
|
+
* Error class to indicate a missing credential
|
|
54
|
+
*/
|
|
55
|
+
var MissingCredentialError = /** @class */ (function (_super) {
|
|
56
|
+
__extends(MissingCredentialError, _super);
|
|
57
|
+
function MissingCredentialError(credentialId) {
|
|
58
|
+
var _newTarget = this.constructor;
|
|
59
|
+
var _this = _super.call(this, "The provided credential ID \"".concat(credentialId || 'undefined', "\" is not available to the current user.")) || this;
|
|
60
|
+
// Error breaks the prototype chain, so restore it manually. See:
|
|
61
|
+
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
|
|
62
|
+
Object.setPrototypeOf(_this, _newTarget.prototype);
|
|
63
|
+
return _this;
|
|
64
|
+
}
|
|
65
|
+
return MissingCredentialError;
|
|
66
|
+
}(Error));
|
|
67
|
+
export { MissingCredentialError };
|
|
68
|
+
export var USER_ERROR_CONTEXTS = Object.freeze({
|
|
69
|
+
ACCOUNT: 'account selector',
|
|
70
|
+
PLUGIN: 'plugin selector',
|
|
71
|
+
EXTENSION: 'extension selector',
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* Error class to indicate a user cancellation
|
|
75
|
+
*/
|
|
76
|
+
var UserCancelError = /** @class */ (function (_super) {
|
|
77
|
+
__extends(UserCancelError, _super);
|
|
78
|
+
function UserCancelError(selectorType) {
|
|
79
|
+
var _newTarget = this.constructor;
|
|
80
|
+
var _this = _super.call(this, "The user canceled the ".concat(selectorType)) || this;
|
|
81
|
+
_this.name = 'UserCancelError';
|
|
82
|
+
// Error breaks the prototype chain, so restore it manually. See:
|
|
83
|
+
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
|
|
84
|
+
Object.setPrototypeOf(_this, _newTarget.prototype);
|
|
85
|
+
return _this;
|
|
86
|
+
}
|
|
87
|
+
return UserCancelError;
|
|
88
|
+
}(Error));
|
|
89
|
+
export { UserCancelError };
|
|
90
|
+
/**
|
|
91
|
+
* Error class to indicate a user went back
|
|
92
|
+
*/
|
|
93
|
+
var UserBackError = /** @class */ (function (_super) {
|
|
94
|
+
__extends(UserBackError, _super);
|
|
95
|
+
function UserBackError(selectorType) {
|
|
96
|
+
var _newTarget = this.constructor;
|
|
97
|
+
var _this = _super.call(this, "The user backed out of the ".concat(selectorType)) || this;
|
|
98
|
+
_this.name = 'UserBackError';
|
|
99
|
+
// Error breaks the prototype chain, so restore it manually. See:
|
|
100
|
+
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
|
|
101
|
+
Object.setPrototypeOf(_this, _newTarget.prototype);
|
|
102
|
+
return _this;
|
|
103
|
+
}
|
|
104
|
+
return UserBackError;
|
|
105
|
+
}(Error));
|
|
106
|
+
export { UserBackError };
|
|
107
|
+
/**
|
|
108
|
+
* Error class to indicate wrong scheme
|
|
109
|
+
*/
|
|
110
|
+
var WrongSchemeError = /** @class */ (function (_super) {
|
|
111
|
+
__extends(WrongSchemeError, _super);
|
|
112
|
+
function WrongSchemeError(scheme) {
|
|
113
|
+
var _newTarget = this.constructor;
|
|
114
|
+
var _this = _super.call(this, "This function require scheme: ".concat(scheme)) || this;
|
|
115
|
+
_this.name = 'WrongSchemeError';
|
|
116
|
+
// Error breaks the prototype chain, so restore it manually. See:
|
|
117
|
+
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
|
|
118
|
+
Object.setPrototypeOf(_this, _newTarget.prototype);
|
|
119
|
+
return _this;
|
|
120
|
+
}
|
|
121
|
+
return WrongSchemeError;
|
|
122
|
+
}(Error));
|
|
123
|
+
export { WrongSchemeError };
|
|
124
|
+
/**
|
|
125
|
+
* Representation of an error from Egress Gateway, which takes the following form:
|
|
126
|
+
* {
|
|
127
|
+
* meta: ...
|
|
128
|
+
* error: {
|
|
129
|
+
* errorCode: "ERR_X.X"
|
|
130
|
+
* errorMessage: "message"
|
|
131
|
+
* }
|
|
132
|
+
* }
|
|
133
|
+
*/
|
|
134
|
+
var EgressServiceError = /** @class */ (function (_super) {
|
|
135
|
+
__extends(EgressServiceError, _super);
|
|
136
|
+
function EgressServiceError(errorCode, errorMessage) {
|
|
137
|
+
var _newTarget = this.constructor;
|
|
138
|
+
var _this = _super.call(this, errorMessage) || this;
|
|
139
|
+
_this.errorCode = errorCode;
|
|
140
|
+
// Error breaks the prototype chain, so restore it manually. See:
|
|
141
|
+
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
|
|
142
|
+
Object.setPrototypeOf(_this, _newTarget.prototype);
|
|
143
|
+
return _this;
|
|
144
|
+
}
|
|
145
|
+
return EgressServiceError;
|
|
146
|
+
}(Error));
|
|
147
|
+
export { EgressServiceError };
|
|
148
|
+
/**
|
|
149
|
+
* Represents error thrown when a (successful) EgressResponse does not
|
|
150
|
+
* match the expected response.
|
|
151
|
+
*/
|
|
152
|
+
var EgressUnexpectedResponseError = /** @class */ (function (_super) {
|
|
153
|
+
__extends(EgressUnexpectedResponseError, _super);
|
|
154
|
+
function EgressUnexpectedResponseError(httpStatusCode, errorMessage) {
|
|
155
|
+
var _newTarget = this.constructor;
|
|
156
|
+
var _this = _super.call(this, errorMessage) || this;
|
|
157
|
+
_this.httpStatusCode = httpStatusCode;
|
|
158
|
+
// Error breaks the prototype chain, so restore it manually. See:
|
|
159
|
+
// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
|
|
160
|
+
Object.setPrototypeOf(_this, _newTarget.prototype);
|
|
161
|
+
return _this;
|
|
162
|
+
}
|
|
163
|
+
return EgressUnexpectedResponseError;
|
|
164
|
+
}(Error));
|
|
165
|
+
export { EgressUnexpectedResponseError };
|
|
166
|
+
//# sourceMappingURL=errorTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorTypes.js","sourceRoot":"","sources":["../../../../plugin-sdk/src/errors/errorTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as t from 'io-ts';
|
|
2
|
+
/**
|
|
3
|
+
* Function parses out invalid object paths for an invalid interface type. For example, if you have the codec:
|
|
4
|
+
* const Person = t.type({
|
|
5
|
+
* name: t.string,
|
|
6
|
+
* age: t.number,
|
|
7
|
+
* livesIn: {
|
|
8
|
+
* city: t.string,
|
|
9
|
+
* zipCode: t.number
|
|
10
|
+
* }
|
|
11
|
+
* })
|
|
12
|
+
*
|
|
13
|
+
* and you want to validate the object
|
|
14
|
+
*
|
|
15
|
+
* const max = {
|
|
16
|
+
* name: "Max Lloyd",
|
|
17
|
+
* age: "Don't worry about it", // invalid type
|
|
18
|
+
* livesIn: {
|
|
19
|
+
* zipCode: 12345, // not providing required 'city' parameter
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* running Person.decode(max) returns a io-ts validator and
|
|
24
|
+
*
|
|
25
|
+
* const validatorForMax = Person.validate(max)
|
|
26
|
+
* getInvalidInterfacePaths(validatorForMax) => ['age', 'livesIn.city']
|
|
27
|
+
*
|
|
28
|
+
* @param v io-ts Validator (returned if `decode` is called on any io-ts codec)
|
|
29
|
+
*/
|
|
30
|
+
export declare const getInvalidInterfacePaths: <A>(v: t.Validation<A>) => Array<string>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { fold } from 'fp-ts/lib/Either';
|
|
2
|
+
import { pipe } from 'fp-ts/lib/pipeable';
|
|
3
|
+
import _ from 'lodash';
|
|
4
|
+
var isValidContext = function (context) {
|
|
5
|
+
return !!context.key && isNaN(parseInt(context.key));
|
|
6
|
+
};
|
|
7
|
+
var getErrorMessageFromContext = function (context) {
|
|
8
|
+
var keyPath = context.filter(isValidContext);
|
|
9
|
+
if (!keyPath.length) {
|
|
10
|
+
return '';
|
|
11
|
+
}
|
|
12
|
+
var desiredVariableType = keyPath[keyPath.length - 1].type.name;
|
|
13
|
+
return keyPath.map(function (_a) {
|
|
14
|
+
var key = _a.key;
|
|
15
|
+
return key;
|
|
16
|
+
}).join('.') + " | should be type: ".concat(desiredVariableType);
|
|
17
|
+
};
|
|
18
|
+
var getInvalidPathsForErrors = function (errors) {
|
|
19
|
+
var allPaths = errors.map(function (error) { return getErrorMessageFromContext(error.context); });
|
|
20
|
+
var allNonEmptyPaths = allPaths.filter(function (path) { return !!path; });
|
|
21
|
+
return _.uniq(allNonEmptyPaths);
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Function parses out invalid object paths for an invalid interface type. For example, if you have the codec:
|
|
25
|
+
* const Person = t.type({
|
|
26
|
+
* name: t.string,
|
|
27
|
+
* age: t.number,
|
|
28
|
+
* livesIn: {
|
|
29
|
+
* city: t.string,
|
|
30
|
+
* zipCode: t.number
|
|
31
|
+
* }
|
|
32
|
+
* })
|
|
33
|
+
*
|
|
34
|
+
* and you want to validate the object
|
|
35
|
+
*
|
|
36
|
+
* const max = {
|
|
37
|
+
* name: "Max Lloyd",
|
|
38
|
+
* age: "Don't worry about it", // invalid type
|
|
39
|
+
* livesIn: {
|
|
40
|
+
* zipCode: 12345, // not providing required 'city' parameter
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
*
|
|
44
|
+
* running Person.decode(max) returns a io-ts validator and
|
|
45
|
+
*
|
|
46
|
+
* const validatorForMax = Person.validate(max)
|
|
47
|
+
* getInvalidInterfacePaths(validatorForMax) => ['age', 'livesIn.city']
|
|
48
|
+
*
|
|
49
|
+
* @param v io-ts Validator (returned if `decode` is called on any io-ts codec)
|
|
50
|
+
*/
|
|
51
|
+
export var getInvalidInterfacePaths = function (v) {
|
|
52
|
+
return pipe(v, fold(getInvalidPathsForErrors, function () { return ['no errors']; }));
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=interfaceValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaceValidator.js","sourceRoot":"","sources":["../../../../plugin-sdk/src/errors/interfaceValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAA;AACrC,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAA;AAEvC,OAAO,CAAC,MAAM,QAAQ,CAAA;AAEtB,IAAM,cAAc,GAAG,UAAC,OAAuB;IAC7C,OAAA,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAA7C,CAA6C,CAAA;AAE/C,IAAM,0BAA0B,GAAG,UAAC,OAAkB;IACpD,IAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IACjE,OAAO,OAAO,CAAC,GAAG,CAAC,UAAC,EAAK;YAAJ,GAAG,SAAA;QAAM,OAAA,GAAG;IAAH,CAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,6BAAsB,mBAAmB,CAAE,CAAA;AAC5F,CAAC,CAAA;AAED,IAAM,wBAAwB,GAAG,UAAC,MAAgB;IAChD,IAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,0BAA0B,CAAC,KAAK,CAAC,OAAO,CAAC,EAAzC,CAAyC,CAAC,CAAA;IACjF,IAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAA;IAC1D,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;AACjC,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,IAAM,wBAAwB,GAAG,UAAI,CAAkB;IAC5D,OAAO,IAAI,CACT,CAAC,EACD,IAAI,CAAC,wBAAwB,EAAE,cAAM,OAAA,CAAC,WAAW,CAAC,EAAb,CAAa,CAAC,CACpD,CAAA;AACH,CAAC,CAAA"}
|