@transcend-io/cli 4.15.0 → 4.16.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/build/cli-request-upload.js +2 -1
- package/build/cli-request-upload.js.map +1 -1
- package/build/requests/constants.d.ts +4 -128
- package/build/requests/constants.d.ts.map +1 -1
- package/build/requests/constants.js +4 -2
- package/build/requests/constants.js.map +1 -1
- package/build/requests/mapColumnsToAttributes.d.ts +3 -2
- package/build/requests/mapColumnsToAttributes.d.ts.map +1 -1
- package/build/requests/mapColumnsToAttributes.js +5 -6
- package/build/requests/mapColumnsToAttributes.js.map +1 -1
- package/build/requests/mapColumnsToIdentifiers.d.ts +3 -2
- package/build/requests/mapColumnsToIdentifiers.d.ts.map +1 -1
- package/build/requests/mapColumnsToIdentifiers.js +6 -6
- package/build/requests/mapColumnsToIdentifiers.js.map +1 -1
- package/build/requests/mapCsvColumnsToApi.d.ts +3 -2
- package/build/requests/mapCsvColumnsToApi.d.ts.map +1 -1
- package/build/requests/mapCsvColumnsToApi.js +4 -5
- package/build/requests/mapCsvColumnsToApi.js.map +1 -1
- package/build/requests/mapCsvRowsToRequestInputs.d.ts +3 -2
- package/build/requests/mapCsvRowsToRequestInputs.d.ts.map +1 -1
- package/build/requests/mapCsvRowsToRequestInputs.js +10 -10
- package/build/requests/mapCsvRowsToRequestInputs.js.map +1 -1
- package/build/requests/mapRequestEnumValues.d.ts +3 -5
- package/build/requests/mapRequestEnumValues.d.ts.map +1 -1
- package/build/requests/mapRequestEnumValues.js +10 -16
- package/build/requests/mapRequestEnumValues.js.map +1 -1
- package/build/requests/uploadPrivacyRequestsFromCsv.d.ts +3 -1
- package/build/requests/uploadPrivacyRequestsFromCsv.d.ts.map +1 -1
- package/build/requests/uploadPrivacyRequestsFromCsv.js +29 -27
- package/build/requests/uploadPrivacyRequestsFromCsv.js.map +1 -1
- package/build/tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapRequestEnumValues.js","sourceRoot":"","sources":["../../src/requests/mapRequestEnumValues.ts"],"names":[],"mappings":";;;;;;AACA,oDAA4B;AAE5B,+DAGqC;AACrC,6EAAiE;AAEjE,sCAAmC;AACnC,wCAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"mapRequestEnumValues.js","sourceRoot":"","sources":["../../src/requests/mapRequestEnumValues.ts"],"names":[],"mappings":";;;;;;AACA,oDAA4B;AAE5B,+DAGqC;AACrC,6EAAiE;AAEjE,sCAAmC;AACnC,wCAA4E;AAC5E,2CAAgE;AAChE,mDAAgD;AAEhD,yEAAsE;AAEtE;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,MAAqB,EACrB,QAAuB,EACvB,EACE,KAAK,EACL,aAAa,GAMd;IAED,mBAAmB;IACnB,MAAM,aAAa,GAAG,CAAC,SAAqB,EAAU,EAAE,CACtD,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,aAAa,CAAC,SAAS,CAAE,CAAC;IAExE,8CAA8C;IAC9C,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAA,4BAAkB,EAGlD,MAAM,EAAE,uBAAa,CAAC,CAAC;IAE1B,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CAAC,mDAAmD,CAAC,CACpE,CAAC;IACF,MAAM,0BAA0B,GAC9B,MAAM,IAAA,6BAAa,EACjB,IAAA,mDAAwB,EAAC,QAAQ,EAAE,aAAa,CAAC,sBAAU,CAAC,WAAW,CAAC,CAAC,EACzE,MAAM,CAAC,MAAM,CAAC,6BAAa,CAAC,EAC5B,KAAK,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAC7C,CAAC;IACJ,KAAK,CAAC,QAAQ,CAAC,0BAA0B,EAAE,4BAA4B,CAAC,CAAC;IACzE,eAAM,CAAC,IAAI,CAAC,gBAAM,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,CAAC;IAC1E,MAAM,wBAAwB,GAC5B,MAAM,IAAA,6BAAa,EACjB,IAAA,mDAAwB,EAAC,QAAQ,EAAE,aAAa,CAAC,sBAAU,CAAC,WAAW,CAAC,CAAC,EACzE,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EACxC,KAAK,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAC3C,CAAC;IACJ,KAAK,CAAC,QAAQ,CAAC,wBAAwB,EAAE,0BAA0B,CAAC,CAAC;IACrE,eAAM,CAAC,IAAI,CAAC,gBAAM,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAmC,MAAM,IAAA,6BAAa,EAC1E,IAAA,mDAAwB,EAAC,QAAQ,EAAE,aAAa,CAAC,sBAAU,CAAC,MAAM,CAAC,CAAC,EACpE,MAAM,CAAC,MAAM,CAAC,kCAAW,CAAC,EAC1B,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CACnC,CAAC;IACF,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;IACrD,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CAAC,mDAAmD,CAAC,CACpE,CAAC;IACF,MAAM,mBAAmB,GAAG,aAAa,CAAC,sBAAU,CAAC,aAAa,CAAC,CAAC;IACpE,MAAM,qBAAqB,GAGzB,mBAAmB,KAAK,gBAAI;QAC1B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,MAAM,IAAA,6BAAa,EACjB,IAAA,mDAAwB,EAAC,QAAQ,EAAE,mBAAmB,CAAC,EACvD,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,sCAAsB,CAAC,EAAE,gBAAI,CAAC,EAChD,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CACxC,CAAC;IACR,KAAK,CAAC,QAAQ,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;AACjE,CAAC;AA/DD,oDA+DC"}
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @param options - Options
|
|
5
5
|
*/
|
|
6
|
-
export declare function uploadPrivacyRequestsFromCsv({ cacheFilepath, file, auth, sombraAuth, concurrency, defaultPhoneCountryCode, // USA
|
|
6
|
+
export declare function uploadPrivacyRequestsFromCsv({ cacheFilepath, requestReceiptFolder, file, auth, sombraAuth, concurrency, defaultPhoneCountryCode, // USA
|
|
7
7
|
transcendApiUrl, attributes, emailIsVerified, clearSuccessfulRequests, clearFailingRequests, clearDuplicateRequests, skipFilterStep, isTest, isSilent, debug, dryRun, }: {
|
|
8
8
|
/** File to cache metadata about mapping of CSV shape to script */
|
|
9
9
|
cacheFilepath: string;
|
|
10
|
+
/** File where request receipts are stored */
|
|
11
|
+
requestReceiptFolder: string;
|
|
10
12
|
/** CSV file path */
|
|
11
13
|
file: string;
|
|
12
14
|
/** Transcend API key authentication */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadPrivacyRequestsFromCsv.d.ts","sourceRoot":"","sources":["../../src/requests/uploadPrivacyRequestsFromCsv.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uploadPrivacyRequestsFromCsv.d.ts","sourceRoot":"","sources":["../../src/requests/uploadPrivacyRequestsFromCsv.ts"],"names":[],"mappings":"AA0BA;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,EACjD,aAAa,EACb,oBAAoB,EACpB,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,WAAgB,EAChB,uBAA6B,EAAE,MAAM;AACrC,eAA4C,EAC5C,UAAe,EACf,eAAsB,EACtB,uBAA+B,EAC/B,oBAA4B,EAC5B,sBAA8B,EAC9B,cAAsB,EACtB,MAAc,EACd,QAAe,EACf,KAAa,EACb,MAAc,GACf,EAAE;IACD,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8DAA8D;IAC9D,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,yDAAyD;IACzD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+QhB"}
|
|
@@ -23,11 +23,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
25
|
exports.uploadPrivacyRequestsFromCsv = void 0;
|
|
26
|
+
/* eslint-disable max-lines */
|
|
26
27
|
const colors_1 = __importDefault(require("colors"));
|
|
27
28
|
const bluebird_1 = require("bluebird");
|
|
28
29
|
const t = __importStar(require("io-ts"));
|
|
29
30
|
const uniq_1 = __importDefault(require("lodash/uniq"));
|
|
30
31
|
const cli_progress_1 = __importDefault(require("cli-progress"));
|
|
32
|
+
const path_1 = require("path");
|
|
31
33
|
const persisted_state_1 = require("@transcend-io/persisted-state");
|
|
32
34
|
const logger_1 = require("../logger");
|
|
33
35
|
const graphql_1 = require("../graphql");
|
|
@@ -47,7 +49,7 @@ const extractClientError_1 = require("./extractClientError");
|
|
|
47
49
|
*
|
|
48
50
|
* @param options - Options
|
|
49
51
|
*/
|
|
50
|
-
async function uploadPrivacyRequestsFromCsv({ cacheFilepath, file, auth, sombraAuth, concurrency = 20, defaultPhoneCountryCode = '1', // USA
|
|
52
|
+
async function uploadPrivacyRequestsFromCsv({ cacheFilepath, requestReceiptFolder, file, auth, sombraAuth, concurrency = 20, defaultPhoneCountryCode = '1', // USA
|
|
51
53
|
transcendApiUrl = 'https://api.transcend.io', attributes = [], emailIsVerified = true, clearSuccessfulRequests = false, clearFailingRequests = false, clearDuplicateRequests = false, skipFilterStep = false, isTest = false, isSilent = true, debug = false, dryRun = false, }) {
|
|
52
54
|
// Time duration
|
|
53
55
|
const t0 = new Date().getTime();
|
|
@@ -57,8 +59,7 @@ transcendApiUrl = 'https://api.transcend.io', attributes = [], emailIsVerified =
|
|
|
57
59
|
const parsedAttributes = (0, parseAttributesFromString_1.parseAttributesFromString)(attributes);
|
|
58
60
|
// Create a new state to persist the metadata that
|
|
59
61
|
// maps the request inputs to the Transcend API shape
|
|
60
|
-
const state = new persisted_state_1.PersistedState(cacheFilepath, constants_1.
|
|
61
|
-
let cached = state.getValue(file) || {
|
|
62
|
+
const state = new persisted_state_1.PersistedState(cacheFilepath, constants_1.CachedFileState, {
|
|
62
63
|
columnNames: {},
|
|
63
64
|
requestTypeToRequestAction: {},
|
|
64
65
|
subjectTypeToSubjectName: {},
|
|
@@ -66,20 +67,22 @@ transcendApiUrl = 'https://api.transcend.io', attributes = [], emailIsVerified =
|
|
|
66
67
|
statusToRequestStatus: {},
|
|
67
68
|
identifierNames: {},
|
|
68
69
|
attributeNames: {},
|
|
70
|
+
});
|
|
71
|
+
// Create a new state file to store the requests from this run
|
|
72
|
+
const requestState = new persisted_state_1.PersistedState((0, path_1.join)(requestReceiptFolder, `tr-request-upload-${new Date().toISOString()}-${file.split('/').pop()}`), constants_1.CachedRequestState, {
|
|
69
73
|
successfulRequests: [],
|
|
70
74
|
duplicateRequests: [],
|
|
71
75
|
failingRequests: [],
|
|
72
|
-
};
|
|
76
|
+
});
|
|
73
77
|
if (clearFailingRequests) {
|
|
74
|
-
|
|
78
|
+
requestState.setValue([], 'failingRequests');
|
|
75
79
|
}
|
|
76
80
|
if (clearSuccessfulRequests) {
|
|
77
|
-
|
|
81
|
+
requestState.setValue([], 'successfulRequests');
|
|
78
82
|
}
|
|
79
83
|
if (clearDuplicateRequests) {
|
|
80
|
-
|
|
84
|
+
requestState.setValue([], 'duplicateRequests');
|
|
81
85
|
}
|
|
82
|
-
state.setValue(cached, file);
|
|
83
86
|
// Create sombra instance to communicate with
|
|
84
87
|
const sombra = await (0, graphql_1.createSombraGotInstance)(transcendApiUrl, auth, sombraAuth);
|
|
85
88
|
// Read in the list of integration requests
|
|
@@ -103,20 +106,15 @@ transcendApiUrl = 'https://api.transcend.io', attributes = [], emailIsVerified =
|
|
|
103
106
|
// Grab the request attributes
|
|
104
107
|
const requestAttributeKeys = await (0, graphql_1.fetchAllRequestAttributeKeys)(client);
|
|
105
108
|
// Determine the columns that should be mapped
|
|
106
|
-
const columnNameMap = await (0, mapCsvColumnsToApi_1.mapCsvColumnsToApi)(columnNames,
|
|
107
|
-
|
|
108
|
-
const
|
|
109
|
-
state.setValue(cached, file);
|
|
110
|
-
const attributeNameMap = await (0, mapColumnsToAttributes_1.mapColumnsToAttributes)(client, columnNames, cached, requestAttributeKeys);
|
|
111
|
-
state.setValue(cached, file);
|
|
109
|
+
const columnNameMap = await (0, mapCsvColumnsToApi_1.mapCsvColumnsToApi)(columnNames, state);
|
|
110
|
+
const identifierNameMap = await (0, mapColumnsToIdentifiers_1.mapColumnsToIdentifiers)(client, columnNames, state);
|
|
111
|
+
const attributeNameMap = await (0, mapColumnsToAttributes_1.mapColumnsToAttributes)(client, columnNames, state, requestAttributeKeys);
|
|
112
112
|
await (0, mapRequestEnumValues_1.mapRequestEnumValues)(client, filteredRequestList, {
|
|
113
|
-
fileName: file,
|
|
114
113
|
state,
|
|
115
114
|
columnNameMap,
|
|
116
115
|
});
|
|
117
|
-
cached = state.getValue(file);
|
|
118
116
|
// map the CSV to request input
|
|
119
|
-
const requestInputs = (0, mapCsvRowsToRequestInputs_1.mapCsvRowsToRequestInputs)(filteredRequestList,
|
|
117
|
+
const requestInputs = (0, mapCsvRowsToRequestInputs_1.mapCsvRowsToRequestInputs)(filteredRequestList, state, {
|
|
120
118
|
defaultPhoneCountryCode,
|
|
121
119
|
columnNameMap,
|
|
122
120
|
identifierNameMap,
|
|
@@ -158,13 +156,14 @@ transcendApiUrl = 'https://api.transcend.io', attributes = [], emailIsVerified =
|
|
|
158
156
|
logger_1.logger.info(colors_1.default.green(`[${ind}/${requestInputs.length}] View it at: "${requestResponse.link}"`));
|
|
159
157
|
}
|
|
160
158
|
// Cache successful upload
|
|
161
|
-
|
|
159
|
+
const successfulRequests = requestState.getValue('successfulRequests');
|
|
160
|
+
successfulRequests.push({
|
|
162
161
|
id: requestResponse.id,
|
|
163
162
|
link: requestResponse.link,
|
|
164
163
|
coreIdentifier: requestResponse.coreIdentifier,
|
|
165
164
|
attemptedAt: new Date().toISOString(),
|
|
166
165
|
});
|
|
167
|
-
|
|
166
|
+
requestState.setValue(successfulRequests, 'successfulRequests');
|
|
168
167
|
}
|
|
169
168
|
catch (err) {
|
|
170
169
|
const msg = `${err.message} - ${JSON.stringify((_a = err.response) === null || _a === void 0 ? void 0 : _a.body, null, 2)}`;
|
|
@@ -173,19 +172,21 @@ transcendApiUrl = 'https://api.transcend.io', attributes = [], emailIsVerified =
|
|
|
173
172
|
if (debug) {
|
|
174
173
|
logger_1.logger.info(colors_1.default.yellow(`[${ind}/${requestInputs.length}] Skipping request as it is a duplicate`));
|
|
175
174
|
}
|
|
176
|
-
|
|
175
|
+
const duplicateRequests = requestState.getValue('duplicateRequests');
|
|
176
|
+
duplicateRequests.push({
|
|
177
177
|
coreIdentifier: requestInput.coreIdentifier,
|
|
178
178
|
attemptedAt: new Date().toISOString(),
|
|
179
179
|
});
|
|
180
|
-
|
|
180
|
+
requestState.setValue(duplicateRequests, 'duplicateRequests');
|
|
181
181
|
}
|
|
182
182
|
else {
|
|
183
|
-
|
|
183
|
+
const failingRequests = requestState.getValue('failingRequests');
|
|
184
|
+
failingRequests.push({
|
|
184
185
|
...requestInput,
|
|
185
186
|
error: clientError || msg,
|
|
186
187
|
attemptedAt: new Date().toISOString(),
|
|
187
188
|
});
|
|
188
|
-
|
|
189
|
+
requestState.setValue(failingRequests, 'failingRequests');
|
|
189
190
|
if (debug) {
|
|
190
191
|
logger_1.logger.error(colors_1.default.red(clientError || msg));
|
|
191
192
|
logger_1.logger.error(colors_1.default.red(`[${ind}/${requestInputs.length}] Failed to submit request for: "${requestLogId}"`));
|
|
@@ -205,16 +206,17 @@ transcendApiUrl = 'https://api.transcend.io', attributes = [], emailIsVerified =
|
|
|
205
206
|
// Log completion time
|
|
206
207
|
logger_1.logger.info(colors_1.default.green(`Completed upload in "${totalTime / 1000}" seconds.`));
|
|
207
208
|
// Log duplicates
|
|
208
|
-
if (
|
|
209
|
-
logger_1.logger.info(colors_1.default.magenta(`Encountered "${
|
|
209
|
+
if (requestState.getValue('duplicateRequests').length > 0) {
|
|
210
|
+
logger_1.logger.info(colors_1.default.magenta(`Encountered "${requestState.getValue('duplicateRequests').length}" duplicate requests. ` +
|
|
210
211
|
`See "${cacheFilepath}" to review the core identifiers for these requests.`));
|
|
211
212
|
}
|
|
212
213
|
// Log errors
|
|
213
|
-
if (
|
|
214
|
-
logger_1.logger.error(colors_1.default.red(`Encountered "${
|
|
214
|
+
if (requestState.getValue('failingRequests').length > 0) {
|
|
215
|
+
logger_1.logger.error(colors_1.default.red(`Encountered "${requestState.getValue('failingRequests').length}" errors. ` +
|
|
215
216
|
`See "${cacheFilepath}" to review the error messages and inputs.`));
|
|
216
217
|
process.exit(1);
|
|
217
218
|
}
|
|
218
219
|
}
|
|
219
220
|
exports.uploadPrivacyRequestsFromCsv = uploadPrivacyRequestsFromCsv;
|
|
221
|
+
/* eslint-enable max-lines */
|
|
220
222
|
//# sourceMappingURL=uploadPrivacyRequestsFromCsv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadPrivacyRequestsFromCsv.js","sourceRoot":"","sources":["../../src/requests/uploadPrivacyRequestsFromCsv.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAC5B,uCAA+B;AAC/B,yCAA2B;AAC3B,uDAA+B;AAC/B,gEAAuC;
|
|
1
|
+
{"version":3,"file":"uploadPrivacyRequestsFromCsv.js","sourceRoot":"","sources":["../../src/requests/uploadPrivacyRequestsFromCsv.ts"],"names":[],"mappings":"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"}
|