@transcend-io/cli 4.11.1 → 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/codecs.d.ts +32 -0
- package/build/codecs.d.ts.map +1 -1
- 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 +267 -1
- package/build/requests/constants.d.ts.map +1 -1
- package/build/requests/constants.js +85 -2
- package/build/requests/constants.js.map +1 -1
- package/build/requests/filterRows.d.ts +10 -0
- package/build/requests/filterRows.d.ts.map +1 -0
- package/build/requests/filterRows.js +61 -0
- package/build/requests/filterRows.js.map +1 -0
- 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 +12 -3
- package/build/requests/index.d.ts.map +1 -1
- package/build/requests/index.js +12 -3
- 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 +16 -0
- package/build/requests/mapCsvColumnsToApi.d.ts.map +1 -0
- package/build/requests/mapCsvColumnsToApi.js +44 -0
- package/build/requests/mapCsvColumnsToApi.js.map +1 -0
- package/build/requests/mapCsvRowsToRequestInputs.d.ts +68 -0
- package/build/requests/mapCsvRowsToRequestInputs.d.ts.map +1 -0
- package/build/requests/mapCsvRowsToRequestInputs.js +127 -0
- package/build/requests/mapCsvRowsToRequestInputs.js.map +1 -0
- package/build/requests/mapEnumValues.d.ts +14 -0
- package/build/requests/mapEnumValues.d.ts.map +1 -0
- package/build/requests/mapEnumValues.js +42 -0
- package/build/requests/mapEnumValues.js.map +1 -0
- package/build/requests/mapRequestEnumValues.d.ts +21 -0
- package/build/requests/mapRequestEnumValues.d.ts.map +1 -0
- package/build/requests/mapRequestEnumValues.js +46 -0
- package/build/requests/mapRequestEnumValues.js.map +1 -0
- package/build/requests/submitPrivacyRequest.d.ts +5468 -0
- package/build/requests/submitPrivacyRequest.d.ts.map +1 -0
- package/build/requests/submitPrivacyRequest.js +98 -0
- package/build/requests/submitPrivacyRequest.js.map +1 -0
- package/build/requests/tests/mapCsvRowsToRequestInputs.test.d.ts +1 -0
- package/build/requests/tests/mapCsvRowsToRequestInputs.test.d.ts.map +1 -0
- package/build/requests/tests/mapCsvRowsToRequestInputs.test.js +3 -0
- package/build/requests/tests/mapCsvRowsToRequestInputs.test.js.map +1 -0
- 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 +7 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submitPrivacyRequest.d.ts","sourceRoot":"","sources":["../../src/requests/submitPrivacyRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAS3B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBjC,CAAC;AAEH,oBAAoB;AACpB,oBAAY,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE7E;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,mBAAmB,EAC1B,EACE,OAAY,EACZ,MAAc,EACd,eAAsB,EACtB,QAAe,EACf,oBAAyB,GAC1B,GAAE;IACD,mDAAmD;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,oBAAoB,CAAC,EAAE,cAAc,EAAE,CAAC;CACpC,GACL,OAAO,CAAC,sBAAsB,CAAC,CA+CjC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
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.submitPrivacyRequest = exports.PrivacyRequestResponse = void 0;
|
|
26
|
+
const t = __importStar(require("io-ts"));
|
|
27
|
+
const uniq_1 = __importDefault(require("lodash/uniq"));
|
|
28
|
+
const type_utils_1 = require("@transcend-io/type-utils");
|
|
29
|
+
const privacy_types_1 = require("@transcend-io/privacy-types");
|
|
30
|
+
exports.PrivacyRequestResponse = t.type({
|
|
31
|
+
id: t.string,
|
|
32
|
+
link: t.string,
|
|
33
|
+
status: (0, type_utils_1.valuesOf)(privacy_types_1.RequestStatus),
|
|
34
|
+
type: (0, type_utils_1.valuesOf)(privacy_types_1.RequestAction),
|
|
35
|
+
subjectType: t.string,
|
|
36
|
+
email: t.string,
|
|
37
|
+
coreIdentifier: t.string,
|
|
38
|
+
isSilent: t.boolean,
|
|
39
|
+
isTest: t.boolean,
|
|
40
|
+
country: t.union([t.null, (0, type_utils_1.valuesOf)(privacy_types_1.IsoCountryCode)]),
|
|
41
|
+
countrySubDivision: t.union([t.null, (0, type_utils_1.valuesOf)(privacy_types_1.IsoCountrySubdivisionCode)]),
|
|
42
|
+
attributeValues: t.array(t.type({
|
|
43
|
+
attributeKey: t.type({ name: t.string }),
|
|
44
|
+
name: t.string,
|
|
45
|
+
})),
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* Submit a privacy request to the Transcend API
|
|
49
|
+
*
|
|
50
|
+
* @param sombra - Sombra instance configured to make requests
|
|
51
|
+
* @param input - Request input
|
|
52
|
+
* @param options - Additional options
|
|
53
|
+
* @returns Successfully submitted request
|
|
54
|
+
*/
|
|
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
|
+
});
|
|
69
|
+
// Make the GraphQL request
|
|
70
|
+
const response = await sombra
|
|
71
|
+
.post('v1/data-subject-request', {
|
|
72
|
+
json: {
|
|
73
|
+
type: input.requestType,
|
|
74
|
+
subject: {
|
|
75
|
+
coreIdentifier: input.coreIdentifier,
|
|
76
|
+
email: input.email,
|
|
77
|
+
emailIsVerified,
|
|
78
|
+
attestedExtraIdentifiers: input.attestedExtraIdentifiers,
|
|
79
|
+
},
|
|
80
|
+
subjectType: input.subjectType,
|
|
81
|
+
isSilent,
|
|
82
|
+
isTest,
|
|
83
|
+
...(input.locale ? { locale: input.locale } : {}),
|
|
84
|
+
details,
|
|
85
|
+
attributes: mergedAttributes,
|
|
86
|
+
...(input.createdAt ? { createdAt: input.createdAt } : {}),
|
|
87
|
+
...(input.dataSiloIds ? { dataSiloIds: input.dataSiloIds } : {}),
|
|
88
|
+
...(input.status ? { completedRequestStatus: input.status } : {}),
|
|
89
|
+
},
|
|
90
|
+
})
|
|
91
|
+
.json();
|
|
92
|
+
const { request: requestResponse } = (0, type_utils_1.decodeCodec)(t.type({
|
|
93
|
+
request: exports.PrivacyRequestResponse,
|
|
94
|
+
}), response);
|
|
95
|
+
return requestResponse;
|
|
96
|
+
}
|
|
97
|
+
exports.submitPrivacyRequest = submitPrivacyRequest;
|
|
98
|
+
//# sourceMappingURL=submitPrivacyRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submitPrivacyRequest.js","sourceRoot":"","sources":["../../src/requests/submitPrivacyRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=mapCsvRowsToRequestInputs.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapCsvRowsToRequestInputs.test.d.ts","sourceRoot":"","sources":["../../../src/requests/tests/mapCsvRowsToRequestInputs.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapCsvRowsToRequestInputs.test.js","sourceRoot":"","sources":["../../../src/requests/tests/mapCsvRowsToRequestInputs.test.ts"],"names":[],"mappings":";AAAA,8EAA8E"}
|
|
@@ -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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"}
|