@automattic/vip 2.12.0 → 2.14.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 +27 -3
- package/dist/bin/vip-cache-purge-url.js +93 -0
- package/{package/dist/bin/vip-config.js → dist/bin/vip-cache.js} +6 -3
- package/dist/bin/vip-dev-env-exec.js +9 -2
- package/dist/bin/vip-dev-env-import-sql.js +8 -1
- package/dist/bin/vip-dev-env-start.js +2 -1
- package/dist/bin/vip-dev-env-update.js +1 -0
- package/dist/bin/vip.js +1 -1
- package/dist/lib/api/cache-purge.js +76 -0
- package/dist/lib/dev-environment/dev-environment-cli.js +2 -2
- package/dist/lib/dev-environment/dev-environment-core.js +3 -3
- package/dist/lib/dev-environment/dev-environment-lando.js +38 -7
- package/dist/lib/envvar/read-file.js +2 -18
- package/{package/dist/lib/envvar → dist/lib}/read-file.js +3 -6
- package/dist/lib/validations/sql.js +175 -53
- package/npm-shrinkwrap.json +82 -82
- package/package.json +5 -3
- package/.circleci/config.yml +0 -67
- package/package/dist/bin/vip-app-list.js +0 -73
- package/package/dist/bin/vip-app.js +0 -76
- package/package/dist/bin/vip-config-envvar-delete.js +0 -97
- package/package/dist/bin/vip-config-envvar-get-all.js +0 -94
- package/package/dist/bin/vip-config-envvar-get.js +0 -79
- package/package/dist/bin/vip-config-envvar-list.js +0 -91
- package/package/dist/bin/vip-config-envvar-set.js +0 -123
- package/package/dist/bin/vip-config-envvar.js +0 -23
- package/package/dist/bin/vip-dev-env-create.js +0 -105
- package/package/dist/bin/vip-dev-env-destroy.js +0 -56
- package/package/dist/bin/vip-dev-env-exec.js +0 -67
- package/package/dist/bin/vip-dev-env-import-media.js +0 -51
- package/package/dist/bin/vip-dev-env-import-sql.js +0 -83
- package/package/dist/bin/vip-dev-env-import.js +0 -32
- package/package/dist/bin/vip-dev-env-info.js +0 -61
- package/package/dist/bin/vip-dev-env-list.js +0 -46
- package/package/dist/bin/vip-dev-env-start.js +0 -77
- package/package/dist/bin/vip-dev-env-stop.js +0 -52
- package/package/dist/bin/vip-dev-env-update.js +0 -89
- package/package/dist/bin/vip-dev-env.js +0 -23
- package/package/dist/bin/vip-import-media-abort.js +0 -132
- package/package/dist/bin/vip-import-media-status.js +0 -84
- package/package/dist/bin/vip-import-media.js +0 -168
- package/package/dist/bin/vip-import-sql-status.js +0 -83
- package/package/dist/bin/vip-import-sql.js +0 -580
- package/package/dist/bin/vip-import-validate-files.js +0 -191
- package/package/dist/bin/vip-import-validate-sql.js +0 -34
- package/package/dist/bin/vip-import.js +0 -20
- package/package/dist/bin/vip-logs.js +0 -232
- package/package/dist/bin/vip-search-replace.js +0 -71
- package/package/dist/bin/vip-sync.js +0 -191
- package/package/dist/bin/vip-whoami.js +0 -67
- package/package/dist/bin/vip-wp.js +0 -555
- package/package/dist/bin/vip.js +0 -149
- package/package/dist/lib/analytics/clients/client.js +0 -1
- package/package/dist/lib/analytics/clients/pendo.js +0 -92
- package/package/dist/lib/analytics/clients/stub.js +0 -19
- package/package/dist/lib/analytics/clients/tracks.js +0 -128
- package/package/dist/lib/analytics/index.js +0 -45
- package/package/dist/lib/api/app.js +0 -70
- package/package/dist/lib/api/feature-flags.js +0 -39
- package/package/dist/lib/api/user.js +0 -58
- package/package/dist/lib/api.js +0 -136
- package/package/dist/lib/app-logs/app-logs.js +0 -70
- package/package/dist/lib/cli/apiConfig.js +0 -90
- package/package/dist/lib/cli/command.js +0 -606
- package/package/dist/lib/cli/envAlias.js +0 -60
- package/package/dist/lib/cli/exit.js +0 -33
- package/package/dist/lib/cli/format.js +0 -213
- package/package/dist/lib/cli/pager.js +0 -52
- package/package/dist/lib/cli/progress.js +0 -208
- package/package/dist/lib/cli/prompt.js +0 -37
- package/package/dist/lib/cli/repo.js +0 -77
- package/package/dist/lib/client-file-uploader.js +0 -602
- package/package/dist/lib/constants/dev-environment.js +0 -42
- package/package/dist/lib/constants/file-size.js +0 -14
- package/package/dist/lib/dev-environment/dev-environment-cli.js +0 -508
- package/package/dist/lib/dev-environment/dev-environment-core.js +0 -620
- package/package/dist/lib/dev-environment/dev-environment-lando.js +0 -330
- package/package/dist/lib/dev-environment/types.js +0 -1
- package/package/dist/lib/env.js +0 -36
- package/package/dist/lib/envvar/api-delete.js +0 -56
- package/package/dist/lib/envvar/api-get-all.js +0 -59
- package/package/dist/lib/envvar/api-get.js +0 -24
- package/package/dist/lib/envvar/api-list.js +0 -60
- package/package/dist/lib/envvar/api-set.js +0 -58
- package/package/dist/lib/envvar/api.js +0 -104
- package/package/dist/lib/envvar/input.js +0 -55
- package/package/dist/lib/envvar/logging.js +0 -33
- package/package/dist/lib/http/socks-proxy-agent.js +0 -25
- package/package/dist/lib/keychain/browser.js +0 -35
- package/package/dist/lib/keychain/insecure.js +0 -63
- package/package/dist/lib/keychain/keychain.js +0 -1
- package/package/dist/lib/keychain/secure.js +0 -36
- package/package/dist/lib/keychain.js +0 -36
- package/package/dist/lib/media-import/media-file-import.js +0 -34
- package/package/dist/lib/media-import/progress.js +0 -86
- package/package/dist/lib/media-import/status.js +0 -335
- package/package/dist/lib/rollbar.js +0 -35
- package/package/dist/lib/search-and-replace.js +0 -203
- package/package/dist/lib/site-import/db-file-import.js +0 -46
- package/package/dist/lib/site-import/status.js +0 -444
- package/package/dist/lib/token.js +0 -132
- package/package/dist/lib/tracker.js +0 -96
- package/package/dist/lib/validations/is-multi-site-sql-dump.js +0 -59
- package/package/dist/lib/validations/is-multi-site.js +0 -99
- package/package/dist/lib/validations/line-by-line.js +0 -92
- package/package/dist/lib/validations/site-type.js +0 -66
- package/package/dist/lib/validations/sql.js +0 -371
- package/package/dist/lib/vip-import-validate-files.js +0 -548
- package/package/vip.iml +0 -11
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _api = _interopRequireDefault(require("../../api"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* External dependencies
|
|
16
|
-
*/
|
|
17
|
-
const debug = require('debug')('@automattic/vip:analytics:clients:pendo');
|
|
18
|
-
/**
|
|
19
|
-
* Internal dependencies
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Pendo analytics client.
|
|
25
|
-
*/
|
|
26
|
-
class Pendo {
|
|
27
|
-
static get ENDPOINT() {
|
|
28
|
-
return '/pendo';
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
constructor({
|
|
32
|
-
userId,
|
|
33
|
-
eventPrefix,
|
|
34
|
-
env
|
|
35
|
-
}) {
|
|
36
|
-
_defineProperty(this, "context", {});
|
|
37
|
-
|
|
38
|
-
this.eventPrefix = eventPrefix;
|
|
39
|
-
this.userAgent = env.userAgent;
|
|
40
|
-
this.userId = userId;
|
|
41
|
-
this.context = { ...env
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
async trackEvent(eventName, eventProps = {}) {
|
|
46
|
-
if (!eventName.startsWith(this.eventPrefix)) {
|
|
47
|
-
eventName = this.eventPrefix + eventName;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
debug('trackEvent()', eventProps);
|
|
51
|
-
this.context = { ...this.context,
|
|
52
|
-
org_id: eventProps.org_slug,
|
|
53
|
-
org_slug: eventProps.org_slug,
|
|
54
|
-
userAgent: this.userAgent,
|
|
55
|
-
userId: this.userId
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
try {
|
|
59
|
-
return await this.send(eventName, eventProps);
|
|
60
|
-
} catch (error) {
|
|
61
|
-
debug(error);
|
|
62
|
-
} // Resolve to false instead of rejecting
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return Promise.resolve(false);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
async send(eventName, eventProps) {
|
|
69
|
-
const body = {
|
|
70
|
-
context: this.context,
|
|
71
|
-
event: eventName,
|
|
72
|
-
properties: eventProps,
|
|
73
|
-
timestamp: Date.now(),
|
|
74
|
-
type: 'track',
|
|
75
|
-
visitorId: `${this.context.userId}`
|
|
76
|
-
};
|
|
77
|
-
debug('send()', body);
|
|
78
|
-
const {
|
|
79
|
-
apiFetch
|
|
80
|
-
} = await (0, _api.default)();
|
|
81
|
-
const response = await apiFetch(Pendo.ENDPOINT, {
|
|
82
|
-
method: 'POST',
|
|
83
|
-
body
|
|
84
|
-
});
|
|
85
|
-
const responseText = await response.text();
|
|
86
|
-
debug('response', responseText);
|
|
87
|
-
return responseText;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
exports.default = Pendo;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Internal dependencies
|
|
10
|
-
*/
|
|
11
|
-
class AnalyticsClientStub {
|
|
12
|
-
// eslint-disable-next-line no-unused-vars
|
|
13
|
-
trackEvent(name, props) {
|
|
14
|
-
return new Promise(resolve => resolve());
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
exports.default = AnalyticsClientStub;
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _nodeFetch = _interopRequireDefault(require("node-fetch"));
|
|
9
|
-
|
|
10
|
-
var _querystring = _interopRequireDefault(require("querystring"));
|
|
11
|
-
|
|
12
|
-
var _apiConfig = require("../../cli/apiConfig");
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* External dependencies
|
|
18
|
-
*/
|
|
19
|
-
const debug = require('debug')('@automattic/vip:analytics:clients:tracks');
|
|
20
|
-
/**
|
|
21
|
-
* Internal dependencies
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const validEventOrPropNamePattern = /^[a-z_][a-z0-9_]*$/;
|
|
26
|
-
/**
|
|
27
|
-
* Simple class for tracking using Automattic Tracks.
|
|
28
|
-
*
|
|
29
|
-
* Implementation reference can be found in the Field Guide.
|
|
30
|
-
*/
|
|
31
|
-
// TODO: add batch support (can include multiples in `events` array)
|
|
32
|
-
|
|
33
|
-
class Tracks {
|
|
34
|
-
static get ENDPOINT() {
|
|
35
|
-
return 'https://public-api.wordpress.com/rest/v1.1/tracks/record';
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
constructor(userId, userType, eventPrefix, env) {
|
|
39
|
-
this.eventPrefix = eventPrefix;
|
|
40
|
-
this.userAgent = env.userAgent;
|
|
41
|
-
this.baseParams = {
|
|
42
|
-
'commonProps[_ui]': userId,
|
|
43
|
-
'commonProps[_ut]': userType,
|
|
44
|
-
'commonProps[_via_ua]': this.userAgent
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
async trackEvent(name, eventProps = {}) {
|
|
49
|
-
if (!name.startsWith(this.eventPrefix)) {
|
|
50
|
-
name = this.eventPrefix + name;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (!validEventOrPropNamePattern.test(name)) {
|
|
54
|
-
debug(`Error: Invalid event name detected: ${name} -- this event will be rejected during ETL`);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
Object.keys(eventProps).forEach(propName => {
|
|
58
|
-
if (!validEventOrPropNamePattern.test(propName)) {
|
|
59
|
-
debug(`Error: Invalid prop name detected: ${propName} -- this event will be rejected during ETL`);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
eventProps.is_vip = await (0, _apiConfig.checkIfUserIsVip)(); // Add `is_vip` flag to every Tracks event recorded
|
|
63
|
-
|
|
64
|
-
const event = Object.assign({
|
|
65
|
-
_en: name
|
|
66
|
-
}, eventProps); // For when we want to support batched events
|
|
67
|
-
|
|
68
|
-
const events = [event];
|
|
69
|
-
/**
|
|
70
|
-
* The API expects an indexed events array with event data.
|
|
71
|
-
*
|
|
72
|
-
* `querystring.stringify` does not handle nested arrays and objects very well.
|
|
73
|
-
*
|
|
74
|
-
* So we can just do it ourselves instead.
|
|
75
|
-
*
|
|
76
|
-
* Should end up with something like:
|
|
77
|
-
* - events[0][_en]=clickButton // event name
|
|
78
|
-
* - events[0][buttonName]=Deploy // event custom prop
|
|
79
|
-
* - events[1][_en]=loadPage
|
|
80
|
-
*/
|
|
81
|
-
|
|
82
|
-
const params = events.reduce((reduced, ev, index) => {
|
|
83
|
-
Object.keys(ev).forEach(key => {
|
|
84
|
-
const param = `events[${index}][${key}]`;
|
|
85
|
-
const value = event[key];
|
|
86
|
-
reduced[param] = value;
|
|
87
|
-
});
|
|
88
|
-
return reduced;
|
|
89
|
-
}, {});
|
|
90
|
-
debug('trackEvent()', params);
|
|
91
|
-
|
|
92
|
-
try {
|
|
93
|
-
return await this.send(params);
|
|
94
|
-
} catch (error) {
|
|
95
|
-
debug(error);
|
|
96
|
-
} // Resolve to false instead of rejecting
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
return Promise.resolve(false);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
send(extraParams) {
|
|
103
|
-
if (process.env.DO_NOT_TRACK) {
|
|
104
|
-
debug('send() => skipping per DO_NOT_TRACK variable');
|
|
105
|
-
return Promise.resolve('tracks disabled per DO_NOT_TRACK variable');
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const params = Object.assign({}, this.baseParams, extraParams);
|
|
109
|
-
const method = 'POST';
|
|
110
|
-
|
|
111
|
-
const body = _querystring.default.stringify(params);
|
|
112
|
-
|
|
113
|
-
const headers = {
|
|
114
|
-
'Content-Type': 'application/x-www-form-urlencoded',
|
|
115
|
-
'User-Agent': this.userAgent
|
|
116
|
-
};
|
|
117
|
-
debug('send()', body); // eslint-disable-next-line no-undef
|
|
118
|
-
|
|
119
|
-
return (0, _nodeFetch.default)(Tracks.ENDPOINT, {
|
|
120
|
-
method,
|
|
121
|
-
body,
|
|
122
|
-
headers
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
exports.default = Tracks;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _stub = _interopRequireDefault(require("./clients/stub"));
|
|
9
|
-
|
|
10
|
-
var _env = _interopRequireDefault(require("../env"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Internal dependencies
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
/* eslint-disable camelcase */
|
|
19
|
-
const client_info = {
|
|
20
|
-
cli_version: _env.default.app.version,
|
|
21
|
-
os_name: _env.default.os.name,
|
|
22
|
-
os_version: _env.default.os.version,
|
|
23
|
-
node_version: _env.default.node.version
|
|
24
|
-
};
|
|
25
|
-
/* eslint-enable camelcase */
|
|
26
|
-
|
|
27
|
-
class Analytics {
|
|
28
|
-
constructor({
|
|
29
|
-
clients = new _stub.default()
|
|
30
|
-
}) {
|
|
31
|
-
this.clients = clients;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
async trackEvent(name, props = {}) {
|
|
35
|
-
return Promise.all(this.clients.map(client => {
|
|
36
|
-
return client.trackEvent(name, { // eslint-disable-next-line camelcase
|
|
37
|
-
...client_info,
|
|
38
|
-
...props
|
|
39
|
-
});
|
|
40
|
-
}));
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
exports.default = Analytics;
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = _default;
|
|
7
|
-
|
|
8
|
-
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
9
|
-
|
|
10
|
-
var _api = _interopRequireDefault(require("../api"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* External dependencies
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Internal dependencies
|
|
20
|
-
*/
|
|
21
|
-
async function _default(app, fields) {
|
|
22
|
-
if (!fields) {
|
|
23
|
-
fields = 'id,name';
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const api = await (0, _api.default)();
|
|
27
|
-
|
|
28
|
-
if (isNaN(app)) {
|
|
29
|
-
const res = await api.query({
|
|
30
|
-
// $FlowFixMe: gql template is not supported by flow
|
|
31
|
-
query: (0, _graphqlTag.default)`query App( $name: String ) {
|
|
32
|
-
apps( first: 1, name: $name ) {
|
|
33
|
-
total,
|
|
34
|
-
nextCursor,
|
|
35
|
-
edges {
|
|
36
|
-
${fields}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}`,
|
|
40
|
-
variables: {
|
|
41
|
-
name: app
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
if (!res || !res.data || !res.data.apps || !res.data.apps.edges || !res.data.apps.edges.length) {
|
|
46
|
-
return {};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return res.data.apps.edges[0];
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
app = parseInt(app, 10);
|
|
53
|
-
const res = await api.query({
|
|
54
|
-
// $FlowFixMe: gql template is not supported by flow
|
|
55
|
-
query: (0, _graphqlTag.default)`query App( $id: Int ) {
|
|
56
|
-
app( id: $id ){
|
|
57
|
-
${fields}
|
|
58
|
-
}
|
|
59
|
-
}`,
|
|
60
|
-
variables: {
|
|
61
|
-
id: app
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
if (!res || !res.data || !res.data.app) {
|
|
66
|
-
return {};
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return res.data.app;
|
|
70
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.get = get;
|
|
7
|
-
|
|
8
|
-
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
9
|
-
|
|
10
|
-
var _api = _interopRequireDefault(require("../api"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* External dependencies
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Internal dependencies
|
|
20
|
-
*/
|
|
21
|
-
let api;
|
|
22
|
-
(0, _api.default)().then(client => {
|
|
23
|
-
api = client;
|
|
24
|
-
});
|
|
25
|
-
const isVipQuery = (0, _graphqlTag.default)`
|
|
26
|
-
query isVIP {
|
|
27
|
-
me {
|
|
28
|
-
isVIP
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
`;
|
|
32
|
-
|
|
33
|
-
async function get() {
|
|
34
|
-
const res = await api.query({
|
|
35
|
-
query: isVipQuery,
|
|
36
|
-
fetchPolicy: 'cache-first'
|
|
37
|
-
});
|
|
38
|
-
return res;
|
|
39
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getCurrentUserInfo = getCurrentUserInfo;
|
|
7
|
-
|
|
8
|
-
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
9
|
-
|
|
10
|
-
var _api = _interopRequireDefault(require("../api"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* @format
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* External dependencies
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Internal dependencies
|
|
25
|
-
*/
|
|
26
|
-
const QUERY_CURRENT_USER = (0, _graphqlTag.default)`
|
|
27
|
-
query Me {
|
|
28
|
-
me {
|
|
29
|
-
id
|
|
30
|
-
displayName
|
|
31
|
-
isVIP
|
|
32
|
-
organizationRoles {
|
|
33
|
-
nodes {
|
|
34
|
-
organizationId
|
|
35
|
-
roleId
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
`;
|
|
41
|
-
|
|
42
|
-
async function getCurrentUserInfo() {
|
|
43
|
-
const api = await (0, _api.default)();
|
|
44
|
-
const response = await api.query({
|
|
45
|
-
query: QUERY_CURRENT_USER
|
|
46
|
-
});
|
|
47
|
-
const {
|
|
48
|
-
data: {
|
|
49
|
-
me
|
|
50
|
-
}
|
|
51
|
-
} = response;
|
|
52
|
-
|
|
53
|
-
if (!me) {
|
|
54
|
-
throw new Error('The API did not return any information about the user.');
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return me;
|
|
58
|
-
}
|
package/package/dist/lib/api.js
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.disableGlobalGraphQLErrorHandling = disableGlobalGraphQLErrorHandling;
|
|
7
|
-
exports.default = API;
|
|
8
|
-
exports.API_URL = exports.API_HOST = exports.PRODUCTION_API_HOST = void 0;
|
|
9
|
-
|
|
10
|
-
var _nodeFetch = _interopRequireDefault(require("node-fetch"));
|
|
11
|
-
|
|
12
|
-
var _core = require("@apollo/client/core");
|
|
13
|
-
|
|
14
|
-
var _core2 = require("@apollo/client/link/core");
|
|
15
|
-
|
|
16
|
-
var _context = require("@apollo/client/link/context");
|
|
17
|
-
|
|
18
|
-
var _error = require("@apollo/client/link/error");
|
|
19
|
-
|
|
20
|
-
var _chalk = _interopRequireDefault(require("chalk"));
|
|
21
|
-
|
|
22
|
-
var _token = _interopRequireDefault(require("./token"));
|
|
23
|
-
|
|
24
|
-
var _env = _interopRequireDefault(require("./env"));
|
|
25
|
-
|
|
26
|
-
var _socksProxyAgent = _interopRequireDefault(require("./http/socks-proxy-agent"));
|
|
27
|
-
|
|
28
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
*
|
|
32
|
-
* @format
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* External dependencies
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Internal dependencies
|
|
41
|
-
*/
|
|
42
|
-
// Config
|
|
43
|
-
const PRODUCTION_API_HOST = 'https://api.wpvip.com';
|
|
44
|
-
exports.PRODUCTION_API_HOST = PRODUCTION_API_HOST;
|
|
45
|
-
const API_HOST = process.env.API_HOST || PRODUCTION_API_HOST;
|
|
46
|
-
exports.API_HOST = API_HOST;
|
|
47
|
-
const API_URL = `${API_HOST}/graphql`;
|
|
48
|
-
exports.API_URL = API_URL;
|
|
49
|
-
let globalGraphQLErrorHandlingEnabled = true;
|
|
50
|
-
|
|
51
|
-
function disableGlobalGraphQLErrorHandling() {
|
|
52
|
-
globalGraphQLErrorHandlingEnabled = false;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
async function API({
|
|
56
|
-
exitOnError = true
|
|
57
|
-
} = {}) {
|
|
58
|
-
const authToken = await _token.default.get();
|
|
59
|
-
const headers = {
|
|
60
|
-
'User-Agent': _env.default.userAgent,
|
|
61
|
-
Authorization: authToken ? `Bearer ${authToken.raw}` : null
|
|
62
|
-
};
|
|
63
|
-
const errorLink = (0, _error.onError)(({
|
|
64
|
-
networkError,
|
|
65
|
-
graphQLErrors
|
|
66
|
-
}) => {
|
|
67
|
-
if (networkError && networkError.statusCode === 401) {
|
|
68
|
-
console.error(_chalk.default.red('Unauthorized:'), 'You are unauthorized to perform this request, please logout with `vip logout` then try again.');
|
|
69
|
-
process.exit();
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (graphQLErrors && graphQLErrors.length && globalGraphQLErrorHandlingEnabled) {
|
|
73
|
-
graphQLErrors.forEach(error => {
|
|
74
|
-
console.error(_chalk.default.red('Error:'), error.message);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
if (exitOnError) {
|
|
78
|
-
process.exit();
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
const withToken = (0, _context.setContext)(async () => {
|
|
83
|
-
const token = await _token.default.get();
|
|
84
|
-
return {
|
|
85
|
-
token
|
|
86
|
-
};
|
|
87
|
-
});
|
|
88
|
-
const authLink = new _core2.ApolloLink((operation, forward) => {
|
|
89
|
-
const {
|
|
90
|
-
token
|
|
91
|
-
} = operation.getContext();
|
|
92
|
-
operation.setContext({
|
|
93
|
-
headers: {
|
|
94
|
-
Authorization: token ? `Bearer ${token.raw}` : null
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
return forward(operation);
|
|
98
|
-
});
|
|
99
|
-
const proxyAgent = (0, _socksProxyAgent.default)();
|
|
100
|
-
const httpLink = new _core.HttpLink({
|
|
101
|
-
uri: API_URL,
|
|
102
|
-
headers,
|
|
103
|
-
fetch: _nodeFetch.default,
|
|
104
|
-
fetchOptions: {
|
|
105
|
-
agent: proxyAgent
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
const apiClient = new _core.ApolloClient({
|
|
109
|
-
link: _core2.ApolloLink.from([withToken, errorLink, authLink, httpLink]),
|
|
110
|
-
cache: new _core.InMemoryCache()
|
|
111
|
-
});
|
|
112
|
-
/**
|
|
113
|
-
* Call the Public API with an arbitrary path (e.g. to connect to REST endpoints).
|
|
114
|
-
* This will include the token in an Authorization header so requests are "logged-in."
|
|
115
|
-
* @param {string} path API path to pass to `fetch` -- will be prefixed by the API_HOST
|
|
116
|
-
* @param {object} options options to pass to `fetch`
|
|
117
|
-
* @returns {Promise} Return value of the `fetch` call
|
|
118
|
-
*/
|
|
119
|
-
|
|
120
|
-
apiClient.apiFetch = (path, options = {}) => (0, _nodeFetch.default)(`${API_HOST}${path}`, { ...options,
|
|
121
|
-
...{
|
|
122
|
-
agent: proxyAgent,
|
|
123
|
-
headers: { ...headers,
|
|
124
|
-
...{
|
|
125
|
-
'Content-Type': 'application/json'
|
|
126
|
-
},
|
|
127
|
-
...options.headers
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
...{
|
|
131
|
-
body: typeof options.body === 'object' ? JSON.stringify(options.body) : options.body
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
return apiClient;
|
|
136
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getRecentLogs = getRecentLogs;
|
|
7
|
-
exports.LIMIT_MAX = void 0;
|
|
8
|
-
|
|
9
|
-
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
10
|
-
|
|
11
|
-
var _api = _interopRequireDefault(require("../api"));
|
|
12
|
-
|
|
13
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
*
|
|
17
|
-
* @format
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* External dependencies
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Internal dependencies
|
|
26
|
-
*/
|
|
27
|
-
const LIMIT_MAX = 5000;
|
|
28
|
-
exports.LIMIT_MAX = LIMIT_MAX;
|
|
29
|
-
const QUERY_ENVIRONMENT_LOGS = (0, _graphqlTag.default)`
|
|
30
|
-
query GetAppLogs( $appId: Int, $envId: Int, $type: AppEnvironmentLogType, $limit: Int, $after: String ) {
|
|
31
|
-
app( id: $appId ) {
|
|
32
|
-
environments( id: $envId ) {
|
|
33
|
-
id
|
|
34
|
-
logs( type: $type, limit: $limit, after: $after ) {
|
|
35
|
-
nodes {
|
|
36
|
-
timestamp
|
|
37
|
-
message
|
|
38
|
-
}
|
|
39
|
-
nextCursor
|
|
40
|
-
pollingDelaySeconds
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
`;
|
|
46
|
-
|
|
47
|
-
async function getRecentLogs(appId, envId, type, limit, after) {
|
|
48
|
-
var _response$data, _response$data$app, _response$data$app$en;
|
|
49
|
-
|
|
50
|
-
const api = await (0, _api.default)({
|
|
51
|
-
exitOnError: false
|
|
52
|
-
});
|
|
53
|
-
const response = await api.query({
|
|
54
|
-
query: QUERY_ENVIRONMENT_LOGS,
|
|
55
|
-
variables: {
|
|
56
|
-
appId,
|
|
57
|
-
envId,
|
|
58
|
-
type,
|
|
59
|
-
limit,
|
|
60
|
-
after
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
const logs = response === null || response === void 0 ? void 0 : (_response$data = response.data) === null || _response$data === void 0 ? void 0 : (_response$data$app = _response$data.app) === null || _response$data$app === void 0 ? void 0 : (_response$data$app$en = _response$data$app.environments[0]) === null || _response$data$app$en === void 0 ? void 0 : _response$data$app$en.logs;
|
|
64
|
-
|
|
65
|
-
if (!(logs !== null && logs !== void 0 && logs.nodes)) {
|
|
66
|
-
throw new Error('Unable to query logs');
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return logs;
|
|
70
|
-
}
|