@transcend-io/cli 4.12.0 → 4.13.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 +137 -14
- package/build/cli-request-upload.d.ts +3 -0
- package/build/cli-request-upload.d.ts.map +1 -0
- package/build/cli-request-upload.js +57 -0
- package/build/cli-request-upload.js.map +1 -0
- package/build/graphql/fetchAllAttributeKeys.d.ts +15 -0
- package/build/graphql/fetchAllAttributeKeys.d.ts.map +1 -0
- package/build/graphql/fetchAllAttributeKeys.js +32 -0
- package/build/graphql/fetchAllAttributeKeys.js.map +1 -0
- package/build/graphql/gqls/attributeKey.d.ts +2 -0
- package/build/graphql/gqls/attributeKey.d.ts.map +1 -0
- package/build/graphql/gqls/attributeKey.js +19 -0
- package/build/graphql/gqls/attributeKey.js.map +1 -0
- package/build/graphql/gqls/enricher.d.ts +10 -0
- package/build/graphql/gqls/enricher.d.ts.map +1 -1
- package/build/graphql/gqls/enricher.js +11 -1
- package/build/graphql/gqls/enricher.js.map +1 -1
- package/build/graphql/gqls/index.d.ts +1 -0
- package/build/graphql/gqls/index.d.ts.map +1 -1
- package/build/graphql/gqls/index.js +1 -0
- package/build/graphql/gqls/index.js.map +1 -1
- package/build/graphql/index.d.ts +1 -0
- package/build/graphql/index.d.ts.map +1 -1
- package/build/graphql/index.js +1 -0
- package/build/graphql/index.js.map +1 -1
- package/build/requests/constants.d.ts +32 -5
- package/build/requests/constants.d.ts.map +1 -1
- package/build/requests/constants.js +21 -3
- package/build/requests/constants.js.map +1 -1
- package/build/requests/fuzzyMatchColumns.d.ts +3 -2
- package/build/requests/fuzzyMatchColumns.d.ts.map +1 -1
- package/build/requests/fuzzyMatchColumns.js +4 -2
- package/build/requests/fuzzyMatchColumns.js.map +1 -1
- package/build/requests/index.d.ts +3 -0
- package/build/requests/index.d.ts.map +1 -1
- package/build/requests/index.js +3 -0
- package/build/requests/index.js.map +1 -1
- package/build/requests/mapColumnsToAttributes.d.ts +20 -0
- package/build/requests/mapColumnsToAttributes.d.ts.map +1 -0
- package/build/requests/mapColumnsToAttributes.js +46 -0
- package/build/requests/mapColumnsToAttributes.js.map +1 -0
- package/build/requests/mapColumnsToIdentifiers.d.ts +20 -0
- package/build/requests/mapColumnsToIdentifiers.d.ts.map +1 -0
- package/build/requests/mapColumnsToIdentifiers.js +48 -0
- package/build/requests/mapColumnsToIdentifiers.js.map +1 -0
- package/build/requests/mapCsvColumnsToApi.d.ts.map +1 -1
- package/build/requests/mapCsvColumnsToApi.js +1 -1
- package/build/requests/mapCsvColumnsToApi.js.map +1 -1
- package/build/requests/mapCsvRowsToRequestInputs.d.ts +25 -7
- package/build/requests/mapCsvRowsToRequestInputs.d.ts.map +1 -1
- package/build/requests/mapCsvRowsToRequestInputs.js +108 -38
- package/build/requests/mapCsvRowsToRequestInputs.js.map +1 -1
- package/build/requests/submitPrivacyRequest.d.ts +6 -4
- package/build/requests/submitPrivacyRequest.d.ts.map +1 -1
- package/build/requests/submitPrivacyRequest.js +22 -5
- package/build/requests/submitPrivacyRequest.js.map +1 -1
- package/build/requests/uploadPrivacyRequestsFromCsv.d.ts +32 -0
- package/build/requests/uploadPrivacyRequestsFromCsv.d.ts.map +1 -0
- package/build/requests/uploadPrivacyRequestsFromCsv.js +139 -0
- package/build/requests/uploadPrivacyRequestsFromCsv.js.map +1 -0
- package/build/tsbuildinfo +1 -1
- package/package.json +3 -2
|
@@ -18,9 +18,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
18
18
|
__setModuleDefault(result, mod);
|
|
19
19
|
return result;
|
|
20
20
|
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
21
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
25
|
exports.submitPrivacyRequest = exports.PrivacyRequestResponse = void 0;
|
|
23
26
|
const t = __importStar(require("io-ts"));
|
|
27
|
+
const uniq_1 = __importDefault(require("lodash/uniq"));
|
|
24
28
|
const type_utils_1 = require("@transcend-io/type-utils");
|
|
25
29
|
const privacy_types_1 = require("@transcend-io/privacy-types");
|
|
26
30
|
exports.PrivacyRequestResponse = t.type({
|
|
@@ -48,7 +52,20 @@ exports.PrivacyRequestResponse = t.type({
|
|
|
48
52
|
* @param options - Additional options
|
|
49
53
|
* @returns Successfully submitted request
|
|
50
54
|
*/
|
|
51
|
-
async function submitPrivacyRequest(sombra, input, {
|
|
55
|
+
async function submitPrivacyRequest(sombra, input, { details = '', isTest = false, emailIsVerified = true, isSilent = true, additionalAttributes = [], } = {}) {
|
|
56
|
+
// Merge the per-request attributes with the
|
|
57
|
+
// global attributes
|
|
58
|
+
const mergedAttributes = [...additionalAttributes];
|
|
59
|
+
(input.attributes || []).forEach((attribute) => {
|
|
60
|
+
const existing = mergedAttributes.find((attr) => attr.key === attribute.key);
|
|
61
|
+
if (existing) {
|
|
62
|
+
existing.values.push(...attribute.values);
|
|
63
|
+
existing.values = (0, uniq_1.default)(existing.values);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
mergedAttributes.push(attribute);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
52
69
|
// Make the GraphQL request
|
|
53
70
|
const response = await sombra
|
|
54
71
|
.post('v1/data-subject-request', {
|
|
@@ -57,15 +74,15 @@ async function submitPrivacyRequest(sombra, input, { attestedExtraIdentifiers =
|
|
|
57
74
|
subject: {
|
|
58
75
|
coreIdentifier: input.coreIdentifier,
|
|
59
76
|
email: input.email,
|
|
60
|
-
emailIsVerified
|
|
61
|
-
attestedExtraIdentifiers,
|
|
77
|
+
emailIsVerified,
|
|
78
|
+
attestedExtraIdentifiers: input.attestedExtraIdentifiers,
|
|
62
79
|
},
|
|
63
80
|
subjectType: input.subjectType,
|
|
64
|
-
isSilent
|
|
81
|
+
isSilent,
|
|
65
82
|
isTest,
|
|
66
83
|
...(input.locale ? { locale: input.locale } : {}),
|
|
67
84
|
details,
|
|
68
|
-
attributes:
|
|
85
|
+
attributes: mergedAttributes,
|
|
69
86
|
...(input.createdAt ? { createdAt: input.createdAt } : {}),
|
|
70
87
|
...(input.dataSiloIds ? { dataSiloIds: input.dataSiloIds } : {}),
|
|
71
88
|
...(input.status ? { completedRequestStatus: input.status } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submitPrivacyRequest.js","sourceRoot":"","sources":["../../src/requests/submitPrivacyRequest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"submitPrivacyRequest.js","sourceRoot":"","sources":["../../src/requests/submitPrivacyRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upload a set of privacy requests from CSV
|
|
3
|
+
*
|
|
4
|
+
* @param options - Options
|
|
5
|
+
*/
|
|
6
|
+
export declare function uploadPrivacyRequestsFromCsv({ cacheFilepath, file, auth, sombraAuth, concurrency, transcendApiUrl, attributes, emailIsVerified, skipFilterStep, isTest, isSilent, dryRun, }: {
|
|
7
|
+
/** File to cache metadata about mapping of CSV shape to script */
|
|
8
|
+
cacheFilepath: string;
|
|
9
|
+
/** CSV file path */
|
|
10
|
+
file: string;
|
|
11
|
+
/** Transcend API key authentication */
|
|
12
|
+
auth: string;
|
|
13
|
+
/** Concurrency to upload in */
|
|
14
|
+
concurrency?: number;
|
|
15
|
+
/** API URL for Transcend backend */
|
|
16
|
+
transcendApiUrl?: string;
|
|
17
|
+
/** Sombra API key authentication */
|
|
18
|
+
sombraAuth?: string;
|
|
19
|
+
/** Skip the step where requests are filtered */
|
|
20
|
+
skipFilterStep?: boolean;
|
|
21
|
+
/** Whether test requests are being uploaded */
|
|
22
|
+
isTest?: boolean;
|
|
23
|
+
/** Whether requests are uploaded in silent mode */
|
|
24
|
+
isSilent?: boolean;
|
|
25
|
+
/** Whether the email was verified up front */
|
|
26
|
+
emailIsVerified?: boolean;
|
|
27
|
+
/** Attributes string pre-parse */
|
|
28
|
+
attributes?: string[];
|
|
29
|
+
/** Whether a dry run is happening */
|
|
30
|
+
dryRun?: boolean;
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
//# sourceMappingURL=uploadPrivacyRequestsFromCsv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadPrivacyRequestsFromCsv.d.ts","sourceRoot":"","sources":["../../src/requests/uploadPrivacyRequestsFromCsv.ts"],"names":[],"mappings":"AAsBA;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,EACjD,aAAa,EACb,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,WAAgB,EAChB,eAA4C,EAC5C,UAAe,EACf,eAAsB,EACtB,cAAsB,EACtB,MAAc,EACd,QAAe,EACf,MAAc,GACf,EAAE;IACD,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,+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,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,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,CAyJhB"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.uploadPrivacyRequestsFromCsv = void 0;
|
|
26
|
+
const colors_1 = __importDefault(require("colors"));
|
|
27
|
+
const bluebird_1 = require("bluebird");
|
|
28
|
+
const t = __importStar(require("io-ts"));
|
|
29
|
+
const uniq_1 = __importDefault(require("lodash/uniq"));
|
|
30
|
+
const persisted_state_1 = require("@transcend-io/persisted-state");
|
|
31
|
+
const logger_1 = require("../logger");
|
|
32
|
+
const graphql_1 = require("../graphql");
|
|
33
|
+
const mapRequestEnumValues_1 = require("./mapRequestEnumValues");
|
|
34
|
+
const constants_1 = require("./constants");
|
|
35
|
+
const mapCsvColumnsToApi_1 = require("./mapCsvColumnsToApi");
|
|
36
|
+
const parseAttributesFromString_1 = require("./parseAttributesFromString");
|
|
37
|
+
const readCsv_1 = require("./readCsv");
|
|
38
|
+
const submitPrivacyRequest_1 = require("./submitPrivacyRequest");
|
|
39
|
+
const mapColumnsToAttributes_1 = require("./mapColumnsToAttributes");
|
|
40
|
+
const mapColumnsToIdentifiers_1 = require("./mapColumnsToIdentifiers");
|
|
41
|
+
const mapCsvRowsToRequestInputs_1 = require("./mapCsvRowsToRequestInputs");
|
|
42
|
+
const filterRows_1 = require("./filterRows");
|
|
43
|
+
/**
|
|
44
|
+
* Upload a set of privacy requests from CSV
|
|
45
|
+
*
|
|
46
|
+
* @param options - Options
|
|
47
|
+
*/
|
|
48
|
+
async function uploadPrivacyRequestsFromCsv({ cacheFilepath, file, auth, sombraAuth, concurrency = 20, transcendApiUrl = 'https://api.transcend.io', attributes = [], emailIsVerified = true, skipFilterStep = false, isTest = false, isSilent = true, dryRun = false, }) {
|
|
49
|
+
// Parse out the extra attributes to apply to all requests uploaded
|
|
50
|
+
const parsedAttributes = (0, parseAttributesFromString_1.parseAttributesFromString)(attributes);
|
|
51
|
+
// Create a new state to persist the metadata that
|
|
52
|
+
// maps the request inputs to the Transcend API shape
|
|
53
|
+
const state = new persisted_state_1.PersistedState(cacheFilepath, constants_1.CachedState, {});
|
|
54
|
+
let cached = state.getValue(file) || {
|
|
55
|
+
columnNames: {},
|
|
56
|
+
requestTypeToRequestAction: {},
|
|
57
|
+
subjectTypeToSubjectName: {},
|
|
58
|
+
languageToLocale: {},
|
|
59
|
+
statusToRequestStatus: {},
|
|
60
|
+
identifierNames: {},
|
|
61
|
+
attributeNames: {},
|
|
62
|
+
failingRequests: [],
|
|
63
|
+
};
|
|
64
|
+
// Create sombra instance to communicate with
|
|
65
|
+
const sombra = await (0, graphql_1.createSombraGotInstance)(transcendApiUrl, auth, sombraAuth);
|
|
66
|
+
// Read in the list of integration requests
|
|
67
|
+
const requestsList = (0, readCsv_1.readCsv)(file, t.record(t.string, t.string));
|
|
68
|
+
const columnNames = (0, uniq_1.default)(requestsList.map((x) => Object.keys(x)).flat());
|
|
69
|
+
// Log out an example request
|
|
70
|
+
if (requestsList.length === 0) {
|
|
71
|
+
throw new Error('No Requests found in list! Ensure the first row of the CSV is a header and the rest are requests.');
|
|
72
|
+
}
|
|
73
|
+
const firstRequest = requestsList[0];
|
|
74
|
+
logger_1.logger.info(colors_1.default.magenta(`First request: ${JSON.stringify(firstRequest, null, 2)}`));
|
|
75
|
+
// Determine what rows in the CSV should be imported
|
|
76
|
+
// Choose columns that contain metadata to filter the requests
|
|
77
|
+
const filteredRequestList = skipFilterStep
|
|
78
|
+
? requestsList
|
|
79
|
+
: await (0, filterRows_1.filterRows)(requestsList);
|
|
80
|
+
// Build a GraphQL client
|
|
81
|
+
const client = (0, graphql_1.buildTranscendGraphQLClient)(transcendApiUrl, auth);
|
|
82
|
+
// Determine the columns that should be mapped
|
|
83
|
+
const columnNameMap = await (0, mapCsvColumnsToApi_1.mapCsvColumnsToApi)(columnNames, cached);
|
|
84
|
+
state.setValue(cached, file);
|
|
85
|
+
const identifierNameMap = await (0, mapColumnsToIdentifiers_1.mapColumnsToIdentifiers)(client, columnNames, cached);
|
|
86
|
+
state.setValue(cached, file);
|
|
87
|
+
const attributeNameMap = await (0, mapColumnsToAttributes_1.mapColumnsToAttributes)(client, columnNames, cached);
|
|
88
|
+
await (0, mapRequestEnumValues_1.mapRequestEnumValues)(client, filteredRequestList, {
|
|
89
|
+
fileName: file,
|
|
90
|
+
state,
|
|
91
|
+
columnNameMap,
|
|
92
|
+
});
|
|
93
|
+
cached = state.getValue(file);
|
|
94
|
+
// map the CSV to request input
|
|
95
|
+
const requestInputs = (0, mapCsvRowsToRequestInputs_1.mapCsvRowsToRequestInputs)(filteredRequestList, cached, {
|
|
96
|
+
columnNameMap,
|
|
97
|
+
identifierNameMap,
|
|
98
|
+
attributeNameMap,
|
|
99
|
+
});
|
|
100
|
+
// Submit each request
|
|
101
|
+
await (0, bluebird_1.map)(requestInputs, async ([rawRow, requestInput], ind) => {
|
|
102
|
+
var _a;
|
|
103
|
+
logger_1.logger.info(colors_1.default.magenta(`[${ind}/${requestInputs.length}] Importing: ${JSON.stringify(requestInput, null, 2)}`));
|
|
104
|
+
// Skip on dry run
|
|
105
|
+
if (dryRun) {
|
|
106
|
+
logger_1.logger.info(colors_1.default.magenta('Bailing out on dry run because dryRun is set'));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
// Make the GraphQL request to submit the privacy request
|
|
111
|
+
const requestResponse = await (0, submitPrivacyRequest_1.submitPrivacyRequest)(sombra, requestInput, {
|
|
112
|
+
details: `Uploaded by Transcend Cli: "tr-request-upload" : ${JSON.stringify(rawRow, null, 2)}`,
|
|
113
|
+
isTest,
|
|
114
|
+
emailIsVerified,
|
|
115
|
+
isSilent,
|
|
116
|
+
additionalAttributes: parsedAttributes,
|
|
117
|
+
});
|
|
118
|
+
logger_1.logger.info(colors_1.default.green(
|
|
119
|
+
// eslint-disable-next-line max-len
|
|
120
|
+
`[${ind}/${requestInputs.length}] Successfully submitted the test data subject request for email: "${requestInput.email}"`));
|
|
121
|
+
logger_1.logger.info(colors_1.default.green(`[${ind}/${requestInputs.length}] View it at: "${requestResponse.link}"`));
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
const msg = `${err.message} - ${JSON.stringify((_a = err.response) === null || _a === void 0 ? void 0 : _a.body, null, 2)}`;
|
|
125
|
+
cached.failingRequests.push({
|
|
126
|
+
...requestInput,
|
|
127
|
+
error: msg,
|
|
128
|
+
attemptedAt: new Date().toISOString(),
|
|
129
|
+
});
|
|
130
|
+
state.setValue(cached, file);
|
|
131
|
+
logger_1.logger.error(colors_1.default.red(msg));
|
|
132
|
+
logger_1.logger.error(colors_1.default.red(`[${ind}/${requestInputs.length}] Failed to submit request for: "${requestInput.email}"`));
|
|
133
|
+
}
|
|
134
|
+
}, {
|
|
135
|
+
concurrency,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
exports.uploadPrivacyRequestsFromCsv = uploadPrivacyRequestsFromCsv;
|
|
139
|
+
//# sourceMappingURL=uploadPrivacyRequestsFromCsv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadPrivacyRequestsFromCsv.js","sourceRoot":"","sources":["../../src/requests/uploadPrivacyRequestsFromCsv.ts"],"names":[],"mappings":"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"}
|