@transcend-io/cli 4.85.0 → 4.86.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 +24 -23
- package/build/cli-cron-pull-identifiers.js +18 -10
- package/build/cli-cron-pull-identifiers.js.map +1 -1
- package/build/cli-mark-request-data-silos-completed.js +32 -1
- package/build/cli-mark-request-data-silos-completed.js.map +1 -1
- package/build/cli-request-export.js +7 -2
- package/build/cli-request-export.js.map +1 -1
- package/build/cron/index.d.ts +1 -1
- package/build/cron/index.d.ts.map +1 -1
- package/build/cron/index.js +1 -1
- package/build/cron/index.js.map +1 -1
- package/build/cron/markRequestDataSiloIdsCompleted.d.ts +6 -3
- package/build/cron/markRequestDataSiloIdsCompleted.d.ts.map +1 -1
- package/build/cron/markRequestDataSiloIdsCompleted.js +8 -38
- package/build/cron/markRequestDataSiloIdsCompleted.js.map +1 -1
- package/build/cron/pullCustomSiloOutstandingIdentifiers.d.ts +33 -0
- package/build/cron/pullCustomSiloOutstandingIdentifiers.d.ts.map +1 -0
- package/build/cron/pullCustomSiloOutstandingIdentifiers.js +56 -0
- package/build/cron/pullCustomSiloOutstandingIdentifiers.js.map +1 -0
- package/build/requests/index.d.ts +1 -1
- package/build/requests/index.d.ts.map +1 -1
- package/build/requests/index.js +1 -1
- package/build/requests/index.js.map +1 -1
- package/build/requests/{pullRequestsToCsv.d.ts → pullPrivacyRequests.d.ts} +11 -6
- package/build/requests/pullPrivacyRequests.d.ts.map +1 -0
- package/build/requests/{pullRequestsToCsv.js → pullPrivacyRequests.js} +7 -12
- package/build/requests/pullPrivacyRequests.js.map +1 -0
- package/build/tsbuildinfo +1 -1
- package/package.json +1 -1
- package/build/cron/pullCronIdentifiersToCsv.d.ts +0 -24
- package/build/cron/pullCronIdentifiersToCsv.d.ts.map +0 -1
- package/build/cron/pullCronIdentifiersToCsv.js +0 -53
- package/build/cron/pullCronIdentifiersToCsv.js.map +0 -1
- package/build/requests/pullRequestsToCsv.d.ts.map +0 -1
- package/build/requests/pullRequestsToCsv.js.map +0 -1
package/README.md
CHANGED
|
@@ -1157,47 +1157,47 @@ The API key must be associated to the ID of the integration/data silo that is be
|
|
|
1157
1157
|
|
|
1158
1158
|
#### Arguments
|
|
1159
1159
|
|
|
1160
|
-
| Argument | Description
|
|
1161
|
-
| ------------ |
|
|
1162
|
-
| auth | The Transcend API key with the scopes necessary for the command.
|
|
1163
|
-
| dataSiloId | The ID of the data silo to pull in.
|
|
1164
|
-
|
|
|
1165
|
-
| file | Path to the CSV file where identifiers will be written to.
|
|
1166
|
-
| transcendUrl | URL of the Transcend backend. Use https://api.us.transcend.io for US hosting.
|
|
1167
|
-
| sombraAuth | The sombra internal key, use for additional authentication when self-hosting sombra.
|
|
1168
|
-
| pageLimit | The page limit to use when pulling in pages of identifiers.
|
|
1160
|
+
| Argument | Description | Type | Default | Required |
|
|
1161
|
+
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------ | -------- |
|
|
1162
|
+
| auth | The Transcend API key with the scopes necessary for the command. | string | N/A | true |
|
|
1163
|
+
| dataSiloId | The ID of the data silo to pull in. | string - UUID | N/A | true |
|
|
1164
|
+
| actions | The [request action](https://docs.transcend.io/docs/privacy-requests/configuring-requests/data-subject-requests#data-actions) to restart. | RequestAction[] | N/A | true |
|
|
1165
|
+
| file | Path to the CSV file where identifiers will be written to. | string - file-path | ./cron-identifiers.csv | false |
|
|
1166
|
+
| transcendUrl | URL of the Transcend backend. Use https://api.us.transcend.io for US hosting. | string - URL | https://api.transcend.io | false |
|
|
1167
|
+
| sombraAuth | The sombra internal key, use for additional authentication when self-hosting sombra. | string | N/A | false |
|
|
1168
|
+
| pageLimit | The page limit to use when pulling in pages of identifiers. | number | 100 | false |
|
|
1169
1169
|
|
|
1170
1170
|
#### Usage
|
|
1171
1171
|
|
|
1172
1172
|
```sh
|
|
1173
|
-
yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --
|
|
1173
|
+
yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --actions=ERASURE
|
|
1174
1174
|
```
|
|
1175
1175
|
|
|
1176
1176
|
Pull to a specific file location
|
|
1177
1177
|
|
|
1178
1178
|
```sh
|
|
1179
|
-
yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --
|
|
1179
|
+
yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --actions=ERASURE \
|
|
1180
1180
|
--file=/Users/transcend/Desktop/test.csv
|
|
1181
1181
|
```
|
|
1182
1182
|
|
|
1183
1183
|
For self-hosted sombras that use an internal key:
|
|
1184
1184
|
|
|
1185
1185
|
```sh
|
|
1186
|
-
yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --
|
|
1186
|
+
yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --actions=ERASURE \
|
|
1187
1187
|
--sombraAuth=$SOMBRA_INTERNAL_KEY
|
|
1188
1188
|
```
|
|
1189
1189
|
|
|
1190
1190
|
Specifying the backend URL, needed for US hosted backend infrastructure.
|
|
1191
1191
|
|
|
1192
1192
|
```sh
|
|
1193
|
-
yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --
|
|
1193
|
+
yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --actions=ERASURE \
|
|
1194
1194
|
--transcendUrl=https://api.us.transcend.io
|
|
1195
1195
|
```
|
|
1196
1196
|
|
|
1197
1197
|
Specifying the page limit, defaults to 100.
|
|
1198
1198
|
|
|
1199
1199
|
```sh
|
|
1200
|
-
yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --
|
|
1200
|
+
yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --actions=ERASURE \
|
|
1201
1201
|
--pageLimit=300
|
|
1202
1202
|
```
|
|
1203
1203
|
|
|
@@ -1207,7 +1207,7 @@ This command takes the output of `tr-cron-pull-identifiers` and notifies Transce
|
|
|
1207
1207
|
This is used in the workflow like:
|
|
1208
1208
|
|
|
1209
1209
|
1. Pull identifiers to CSV:
|
|
1210
|
-
`yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --
|
|
1210
|
+
`yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --actions=ERASURE --file=./outstanding-requests.csv`
|
|
1211
1211
|
2. Run your process to operate on that CSV of requests.
|
|
1212
1212
|
3. Notify Transcend of completion
|
|
1213
1213
|
`yarn tr-cron-mark-identifiers-completed --auth=$TRANSCEND_API_KEY --dataSiloId=70810f2e-cf90-43f6-9776-901a5950599f --file=./outstanding-requests.csv`
|
|
@@ -1280,13 +1280,14 @@ The API key must have the following scopes:
|
|
|
1280
1280
|
|
|
1281
1281
|
#### Arguments
|
|
1282
1282
|
|
|
1283
|
-
| Argument | Description
|
|
1284
|
-
| ------------ |
|
|
1285
|
-
| auth | The Transcend API key with the scopes necessary for the command.
|
|
1286
|
-
| transcendUrl | URL of the Transcend backend. Use https://api.us.transcend.io for US hosting.
|
|
1287
|
-
| file | Path to the CSV file where requests will be written to.
|
|
1288
|
-
| actions | The
|
|
1289
|
-
|
|
1283
|
+
| Argument | Description | Type | Default | Required |
|
|
1284
|
+
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------ | ----------------------------------- | -------- |
|
|
1285
|
+
| auth | The Transcend API key with the scopes necessary for the command. | string | N/A | true |
|
|
1286
|
+
| transcendUrl | URL of the Transcend backend. Use https://api.us.transcend.io for US hosting. | string - URL | https://api.transcend.io | false |
|
|
1287
|
+
| file | Path to the CSV file where requests will be written to. | string - file-path | ./manual-enrichment-identifiers.csv | false |
|
|
1288
|
+
| actions | The [request action](https://docs.transcend.io/docs/privacy-requests/configuring-requests/data-subject-requests#data-actions) to pull for. | RequestAction[] | N/A | false |
|
|
1289
|
+
|
|
1290
|
+
| concurrency | The concurrency to use when uploading requests in parallel. | number | 100 | false |
|
|
1290
1291
|
|
|
1291
1292
|
#### Usage
|
|
1292
1293
|
|
|
@@ -1390,7 +1391,7 @@ yarn tr-manual-enrichment-push-identifiers --auth=$TRANSCEND_API_KEY --enricherI
|
|
|
1390
1391
|
### tr-mark-request-data-silos-completed
|
|
1391
1392
|
|
|
1392
1393
|
This command takes in a CSV of Request IDs as well as a Data Silo ID and marks all associated privacy request jobs as completed.
|
|
1393
|
-
This command is useful with the "Bulk Response" UI.
|
|
1394
|
+
This command is useful with the "Bulk Response" UI. The CSV is expected to have 1 column named "Request Id".
|
|
1394
1395
|
|
|
1395
1396
|
#### Authentication
|
|
1396
1397
|
|
|
@@ -7,9 +7,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
const yargs_parser_1 = __importDefault(require("yargs-parser"));
|
|
8
8
|
const colors_1 = __importDefault(require("colors"));
|
|
9
9
|
const logger_1 = require("./logger");
|
|
10
|
+
const uniq_1 = __importDefault(require("lodash/uniq"));
|
|
10
11
|
const cron_1 = require("./cron");
|
|
11
12
|
const privacy_types_1 = require("@transcend-io/privacy-types");
|
|
12
13
|
const constants_1 = require("./constants");
|
|
14
|
+
const requests_1 = require("./requests");
|
|
13
15
|
/**
|
|
14
16
|
* Pull the set of active identifiers for a cron job silo.
|
|
15
17
|
*
|
|
@@ -18,40 +20,46 @@ const constants_1 = require("./constants");
|
|
|
18
20
|
* Dev Usage:
|
|
19
21
|
* yarn ts-node ./src/cli-cron-pull-identifiers.ts --auth=$TRANSCEND_API_KEY \
|
|
20
22
|
* --dataSiloId=92636cda-b7c6-48c6-b1b1-2df574596cbc \
|
|
21
|
-
* --
|
|
23
|
+
* --actions=ERASURE \
|
|
22
24
|
* --file=/Users/michaelfarrell/Desktop/test.csv
|
|
23
25
|
*
|
|
24
26
|
* Standard usage:
|
|
25
27
|
* yarn tr-cron-pull-identifiers --auth=$TRANSCEND_API_KEY \
|
|
26
28
|
* --dataSiloId=92636cda-b7c6-48c6-b1b1-2df574596cbc \
|
|
27
|
-
* --
|
|
29
|
+
* --actions=ERASURE \
|
|
28
30
|
* --file=/Users/michaelfarrell/Desktop/test.csv
|
|
29
31
|
*/
|
|
30
32
|
async function main() {
|
|
31
33
|
// Parse command line arguments
|
|
32
|
-
const { file = './cron-identifiers.csv', transcendUrl = constants_1.DEFAULT_TRANSCEND_API, auth, sombraAuth, dataSiloId,
|
|
34
|
+
const { file = './cron-identifiers.csv', transcendUrl = constants_1.DEFAULT_TRANSCEND_API, auth, sombraAuth, dataSiloId, actions, pageLimit = '100', } = (0, yargs_parser_1.default)(process.argv.slice(2));
|
|
33
35
|
// Ensure auth is passed
|
|
34
36
|
if (!auth) {
|
|
35
37
|
logger_1.logger.error(colors_1.default.red('A Transcend API key must be provided. You can specify using --auth=$TRANSCEND_API_KEY'));
|
|
36
38
|
process.exit(1);
|
|
37
39
|
}
|
|
38
|
-
// Validate
|
|
40
|
+
// Validate actions
|
|
41
|
+
const parsedActions = (0, requests_1.splitCsvToList)(actions);
|
|
42
|
+
const invalidActions = parsedActions.filter(
|
|
39
43
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
(type) => !Object.values(privacy_types_1.RequestAction).includes(type));
|
|
45
|
+
if (invalidActions.length > 0) {
|
|
46
|
+
logger_1.logger.error(colors_1.default.red(`Failed to parse actions:"${invalidActions.join(',')}".\n` +
|
|
42
47
|
`Expected one of: \n${Object.values(privacy_types_1.RequestAction).join('\n')}`));
|
|
43
48
|
process.exit(1);
|
|
44
49
|
}
|
|
45
|
-
//
|
|
46
|
-
await (0, cron_1.
|
|
47
|
-
file,
|
|
50
|
+
// Pull down outstanding identifiers
|
|
51
|
+
const { identifiersFormattedForCsv } = await (0, cron_1.pullCustomSiloOutstandingIdentifiers)({
|
|
48
52
|
transcendUrl,
|
|
49
53
|
pageLimit: parseInt(pageLimit, 10),
|
|
50
|
-
|
|
54
|
+
actions: parsedActions,
|
|
51
55
|
auth,
|
|
52
56
|
sombraAuth,
|
|
53
57
|
dataSiloId,
|
|
54
58
|
});
|
|
59
|
+
// Write CSV
|
|
60
|
+
const headers = (0, uniq_1.default)(identifiersFormattedForCsv.map((d) => Object.keys(d)).flat());
|
|
61
|
+
(0, cron_1.writeCsv)(file, identifiersFormattedForCsv, headers);
|
|
62
|
+
logger_1.logger.info(colors_1.default.green(`Successfully wrote ${identifiersFormattedForCsv.length} identifiers to file "${file}"`));
|
|
55
63
|
}
|
|
56
64
|
main();
|
|
57
65
|
//# sourceMappingURL=cli-cron-pull-identifiers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-cron-pull-identifiers.js","sourceRoot":"","sources":["../src/cli-cron-pull-identifiers.ts"],"names":[],"mappings":";;;;;;AAEA,gEAAiC;AACjC,oDAA4B;AAE5B,qCAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"cli-cron-pull-identifiers.js","sourceRoot":"","sources":["../src/cli-cron-pull-identifiers.ts"],"names":[],"mappings":";;;;;;AAEA,gEAAiC;AACjC,oDAA4B;AAE5B,qCAAkC;AAClC,uDAA+B;AAC/B,iCAAwE;AACxE,+DAA4D;AAC5D,2CAAoD;AACpD,yCAA4C;AAE5C;;;;;;;;;;;;;;;;GAgBG;AACH,KAAK,UAAU,IAAI;IACjB,+BAA+B;IAC/B,MAAM,EACJ,IAAI,GAAG,wBAAwB,EAC/B,YAAY,GAAG,iCAAqB,EACpC,IAAI,EACJ,UAAU,EACV,UAAU,EACV,OAAO,EACP,SAAS,GAAG,KAAK,GAClB,GAAG,IAAA,sBAAK,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAA8B,CAAC;IAE9D,wBAAwB;IACxB,IAAI,CAAC,IAAI,EAAE;QACT,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,uFAAuF,CACxF,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,mBAAmB;IACnB,MAAM,aAAa,GAAG,IAAA,yBAAc,EAAC,OAAO,CAAoB,CAAC;IACjE,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM;IACzC,8DAA8D;IAC9D,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,6BAAa,CAAC,CAAC,QAAQ,CAAC,IAAW,CAAC,CAC9D,CAAC;IACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7B,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,4BAA4B,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;YACxD,sBAAsB,MAAM,CAAC,MAAM,CAAC,6BAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClE,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,oCAAoC;IACpC,MAAM,EAAE,0BAA0B,EAAE,GAClC,MAAM,IAAA,2CAAoC,EAAC;QACzC,YAAY;QACZ,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;QAClC,OAAO,EAAE,aAAa;QACtB,IAAI;QACJ,UAAU;QACV,UAAU;KACX,CAAC,CAAC;IAEL,YAAY;IACZ,MAAM,OAAO,GAAG,IAAA,cAAI,EAClB,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAC7D,CAAC;IACF,IAAA,eAAQ,EAAC,IAAI,EAAE,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACpD,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,KAAK,CACV,sBAAsB,0BAA0B,CAAC,MAAM,yBAAyB,IAAI,GAAG,CACxF,CACF,CAAC;AACJ,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -1,14 +1,42 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
20
|
+
if (mod && mod.__esModule) return mod;
|
|
21
|
+
var result = {};
|
|
22
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
23
|
+
__setModuleDefault(result, mod);
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
3
26
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
27
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
28
|
};
|
|
6
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
30
|
const yargs_parser_1 = __importDefault(require("yargs-parser"));
|
|
8
31
|
const colors_1 = __importDefault(require("colors"));
|
|
32
|
+
const t = __importStar(require("io-ts"));
|
|
9
33
|
const logger_1 = require("./logger");
|
|
10
34
|
const cron_1 = require("./cron");
|
|
11
35
|
const constants_1 = require("./constants");
|
|
36
|
+
const requests_1 = require("./requests");
|
|
37
|
+
const RequestIdRow = t.type({
|
|
38
|
+
'Request Id': t.string,
|
|
39
|
+
});
|
|
12
40
|
/**
|
|
13
41
|
* Given a set of Request IDs and a Data Silo ID, mark the RequestDataSilos as completed
|
|
14
42
|
*
|
|
@@ -38,9 +66,12 @@ async function main() {
|
|
|
38
66
|
logger_1.logger.error(colors_1.default.red('A Data Silo ID must be provided. You can specify using --dataSiloId=2560bb81-b837-4c6f-a57e-dcef87069d43'));
|
|
39
67
|
process.exit(1);
|
|
40
68
|
}
|
|
69
|
+
// Read from CSV
|
|
70
|
+
logger_1.logger.info(colors_1.default.magenta(`Reading "${file}" from disk`));
|
|
71
|
+
const activeResults = (0, requests_1.readCsv)(file, RequestIdRow);
|
|
41
72
|
// Upload privacy requests
|
|
42
73
|
await (0, cron_1.markRequestDataSiloIdsCompleted)({
|
|
43
|
-
|
|
74
|
+
requestIds: activeResults.map((request) => request['Request Id']),
|
|
44
75
|
transcendUrl,
|
|
45
76
|
auth,
|
|
46
77
|
dataSiloId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-mark-request-data-silos-completed.js","sourceRoot":"","sources":["../src/cli-mark-request-data-silos-completed.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-mark-request-data-silos-completed.js","sourceRoot":"","sources":["../src/cli-mark-request-data-silos-completed.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,gEAAiC;AACjC,oDAA4B;AAC5B,yCAA2B;AAE3B,qCAAkC;AAClC,iCAAyD;AACzD,2CAAoD;AACpD,yCAAqC;AAErC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC;IAC1B,YAAY,EAAE,CAAC,CAAC,MAAM;CACvB,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,IAAI;IACjB,+BAA+B;IAC/B,MAAM,EACJ,IAAI,GAAG,2BAA2B,EAClC,YAAY,GAAG,iCAAqB,EACpC,IAAI,EACJ,UAAU,GACX,GAAG,IAAA,sBAAK,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAA8B,CAAC;IAE9D,wBAAwB;IACxB,IAAI,CAAC,IAAI,EAAE;QACT,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,uFAAuF,CACxF,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,gCAAgC;IAChC,IAAI,CAAC,UAAU,EAAE;QACf,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,0GAA0G,CAC3G,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,gBAAgB;IAChB,eAAM,CAAC,IAAI,CAAC,gBAAM,CAAC,OAAO,CAAC,YAAY,IAAI,aAAa,CAAC,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,IAAA,kBAAO,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAElD,0BAA0B;IAC1B,MAAM,IAAA,sCAA+B,EAAC;QACpC,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACjE,YAAY;QACZ,IAAI;QACJ,UAAU;KACX,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -7,9 +7,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
const yargs_parser_1 = __importDefault(require("yargs-parser"));
|
|
8
8
|
const colors_1 = __importDefault(require("colors"));
|
|
9
9
|
const logger_1 = require("./logger");
|
|
10
|
+
const uniq_1 = __importDefault(require("lodash/uniq"));
|
|
10
11
|
const privacy_types_1 = require("@transcend-io/privacy-types");
|
|
11
12
|
const requests_1 = require("./requests");
|
|
12
13
|
const constants_1 = require("./constants");
|
|
14
|
+
const cron_1 = require("./cron");
|
|
13
15
|
/**
|
|
14
16
|
* Pull down the metadata for a set of Privacy requests.
|
|
15
17
|
*
|
|
@@ -56,8 +58,7 @@ async function main() {
|
|
|
56
58
|
process.exit(1);
|
|
57
59
|
}
|
|
58
60
|
// Pull privacy requests
|
|
59
|
-
await (0, requests_1.
|
|
60
|
-
file,
|
|
61
|
+
const { requestsFormattedForCsv } = await (0, requests_1.pullPrivacyRequests)({
|
|
61
62
|
transcendUrl,
|
|
62
63
|
pageLimit: parseInt(pageLimit, 10),
|
|
63
64
|
actions: parsedActions,
|
|
@@ -67,6 +68,10 @@ async function main() {
|
|
|
67
68
|
createdAtAfter: createdAtAfter ? new Date(createdAtAfter) : undefined,
|
|
68
69
|
showTests: showTests === 'true' ? true : showTests === 'false' ? false : undefined,
|
|
69
70
|
});
|
|
71
|
+
// Write to CSV
|
|
72
|
+
const headers = (0, uniq_1.default)(requestsFormattedForCsv.map((d) => Object.keys(d)).flat());
|
|
73
|
+
(0, cron_1.writeCsv)(file, requestsFormattedForCsv, headers);
|
|
74
|
+
logger_1.logger.info(colors_1.default.green(`Successfully wrote ${requestsFormattedForCsv.length} requests to file "${file}"`));
|
|
70
75
|
}
|
|
71
76
|
main();
|
|
72
77
|
//# sourceMappingURL=cli-request-export.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-request-export.js","sourceRoot":"","sources":["../src/cli-request-export.ts"],"names":[],"mappings":";;;;;;AAEA,gEAAiC;AACjC,oDAA4B;AAE5B,qCAAkC;AAClC,+DAA2E;AAC3E,
|
|
1
|
+
{"version":3,"file":"cli-request-export.js","sourceRoot":"","sources":["../src/cli-request-export.ts"],"names":[],"mappings":"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"}
|
package/build/cron/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cron/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cron/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC"}
|
package/build/cron/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./pullCustomSiloOutstandingIdentifiers"), exports);
|
|
18
18
|
__exportStar(require("./pullCronPageOfIdentifiers"), exports);
|
|
19
19
|
__exportStar(require("./writeCsv"), exports);
|
|
20
20
|
__exportStar(require("./pushCronIdentifiersFromCsv"), exports);
|
package/build/cron/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cron/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cron/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yEAAuD;AACvD,8DAA4C;AAC5C,6CAA2B;AAC3B,+DAA6C;AAC7C,gEAA8C;AAC9C,oEAAkD"}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
+
import { RequestDataSiloStatus } from '@transcend-io/privacy-types';
|
|
1
2
|
/**
|
|
2
3
|
* Given a CSV of Request IDs, mark associated RequestDataSilos as completed
|
|
3
4
|
*
|
|
4
5
|
* @param options - Options
|
|
5
6
|
* @returns Number of items marked as completed
|
|
6
7
|
*/
|
|
7
|
-
export declare function markRequestDataSiloIdsCompleted({
|
|
8
|
-
/**
|
|
9
|
-
|
|
8
|
+
export declare function markRequestDataSiloIdsCompleted({ requestIds, dataSiloId, auth, concurrency, status, transcendUrl, }: {
|
|
9
|
+
/** The list of request ids to mark as completed */
|
|
10
|
+
requestIds: string[];
|
|
10
11
|
/** Transcend API key authentication */
|
|
11
12
|
auth: string;
|
|
12
13
|
/** Data Silo ID to pull down jobs for */
|
|
13
14
|
dataSiloId: string;
|
|
15
|
+
/** Status to update requests to */
|
|
16
|
+
status?: RequestDataSiloStatus;
|
|
14
17
|
/** Upload concurrency */
|
|
15
18
|
concurrency?: number;
|
|
16
19
|
/** API URL for Transcend backend */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markRequestDataSiloIdsCompleted.d.ts","sourceRoot":"","sources":["../../src/cron/markRequestDataSiloIdsCompleted.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markRequestDataSiloIdsCompleted.d.ts","sourceRoot":"","sources":["../../src/cron/markRequestDataSiloIdsCompleted.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE;;;;;GAKG;AACH,wBAAsB,+BAA+B,CAAC,EACpD,UAAU,EACV,UAAU,EACV,IAAI,EACJ,WAAiB,EACjB,MAAuC,EACvC,YAAoC,GACrC,EAAE;IACD,oDAAoD;IACpD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqDlB"}
|
|
@@ -1,27 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
4
|
};
|
|
@@ -30,42 +7,35 @@ exports.markRequestDataSiloIdsCompleted = void 0;
|
|
|
30
7
|
const bluebird_1 = require("bluebird");
|
|
31
8
|
const colors_1 = __importDefault(require("colors"));
|
|
32
9
|
const logger_1 = require("../logger");
|
|
33
|
-
const requests_1 = require("../requests");
|
|
34
10
|
const graphql_1 = require("../graphql");
|
|
35
|
-
const t = __importStar(require("io-ts"));
|
|
36
11
|
const cli_progress_1 = __importDefault(require("cli-progress"));
|
|
37
12
|
const constants_1 = require("../constants");
|
|
38
|
-
const
|
|
39
|
-
'Request Id': t.string,
|
|
40
|
-
});
|
|
13
|
+
const privacy_types_1 = require("@transcend-io/privacy-types");
|
|
41
14
|
/**
|
|
42
15
|
* Given a CSV of Request IDs, mark associated RequestDataSilos as completed
|
|
43
16
|
*
|
|
44
17
|
* @param options - Options
|
|
45
18
|
* @returns Number of items marked as completed
|
|
46
19
|
*/
|
|
47
|
-
async function markRequestDataSiloIdsCompleted({
|
|
20
|
+
async function markRequestDataSiloIdsCompleted({ requestIds, dataSiloId, auth, concurrency = 100, status = privacy_types_1.RequestDataSiloStatus.Resolved, transcendUrl = constants_1.DEFAULT_TRANSCEND_API, }) {
|
|
48
21
|
// Find all requests made before createdAt that are in a removing data state
|
|
49
22
|
const client = (0, graphql_1.buildTranscendGraphQLClient)(transcendUrl, auth);
|
|
50
23
|
// Time duration
|
|
51
24
|
const t0 = new Date().getTime();
|
|
52
25
|
// create a new progress bar instance and use shades_classic theme
|
|
53
26
|
const progressBar = new cli_progress_1.default.SingleBar({}, cli_progress_1.default.Presets.shades_classic);
|
|
54
|
-
// Read from CSV
|
|
55
|
-
logger_1.logger.info(colors_1.default.magenta(`Reading "${file}" from disk`));
|
|
56
|
-
const activeResults = (0, requests_1.readCsv)(file, RequestIdRow);
|
|
57
27
|
// Notify Transcend
|
|
58
|
-
logger_1.logger.info(colors_1.default.magenta(`Notifying Transcend for data silo "${dataSiloId}" marking "${
|
|
28
|
+
logger_1.logger.info(colors_1.default.magenta(`Notifying Transcend for data silo "${dataSiloId}" marking "${requestIds.length}" requests as completed.`));
|
|
59
29
|
let total = 0;
|
|
60
|
-
progressBar.start(
|
|
61
|
-
await (0, bluebird_1.map)(
|
|
30
|
+
progressBar.start(requestIds.length, 0);
|
|
31
|
+
await (0, bluebird_1.map)(requestIds, async (requestId) => {
|
|
62
32
|
const requestDataSilo = await (0, graphql_1.fetchRequestDataSilo)(client, {
|
|
63
|
-
requestId
|
|
33
|
+
requestId,
|
|
64
34
|
dataSiloId,
|
|
65
35
|
});
|
|
66
36
|
await (0, graphql_1.makeGraphQLRequest)(client, graphql_1.CHANGE_REQUEST_DATA_SILO_STATUS, {
|
|
67
37
|
requestDataSiloId: requestDataSilo.id,
|
|
68
|
-
status
|
|
38
|
+
status,
|
|
69
39
|
});
|
|
70
40
|
total += 1;
|
|
71
41
|
progressBar.update(total);
|
|
@@ -74,7 +44,7 @@ async function markRequestDataSiloIdsCompleted({ file, dataSiloId, auth, concurr
|
|
|
74
44
|
const t1 = new Date().getTime();
|
|
75
45
|
const totalTime = t1 - t0;
|
|
76
46
|
logger_1.logger.info(colors_1.default.green(`Successfully notified Transcend in "${totalTime / 1000}" seconds!`));
|
|
77
|
-
return
|
|
47
|
+
return requestIds.length;
|
|
78
48
|
}
|
|
79
49
|
exports.markRequestDataSiloIdsCompleted = markRequestDataSiloIdsCompleted;
|
|
80
50
|
//# sourceMappingURL=markRequestDataSiloIdsCompleted.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markRequestDataSiloIdsCompleted.js","sourceRoot":"","sources":["../../src/cron/markRequestDataSiloIdsCompleted.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markRequestDataSiloIdsCompleted.js","sourceRoot":"","sources":["../../src/cron/markRequestDataSiloIdsCompleted.ts"],"names":[],"mappings":";;;;;;AAAA,uCAA+B;AAC/B,oDAA4B;AAC5B,sCAAmC;AACnC,wCAKoB;AACpB,gEAAuC;AACvC,4CAAqD;AACrD,+DAAoE;AAEpE;;;;;GAKG;AACI,KAAK,UAAU,+BAA+B,CAAC,EACpD,UAAU,EACV,UAAU,EACV,IAAI,EACJ,WAAW,GAAG,GAAG,EACjB,MAAM,GAAG,qCAAqB,CAAC,QAAQ,EACvC,YAAY,GAAG,iCAAqB,GAcrC;IACC,4EAA4E;IAC5E,MAAM,MAAM,GAAG,IAAA,qCAA2B,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAE/D,gBAAgB;IAChB,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAChC,kEAAkE;IAClE,MAAM,WAAW,GAAG,IAAI,sBAAW,CAAC,SAAS,CAC3C,EAAE,EACF,sBAAW,CAAC,OAAO,CAAC,cAAc,CACnC,CAAC;IAEF,mBAAmB;IACnB,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CACZ,sCAAsC,UAAU,cAAc,UAAU,CAAC,MAAM,0BAA0B,CAC1G,CACF,CAAC;IAEF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxC,MAAM,IAAA,cAAG,EACP,UAAU,EACV,KAAK,EAAE,SAAS,EAAE,EAAE;QAClB,MAAM,eAAe,GAAG,MAAM,IAAA,8BAAoB,EAAC,MAAM,EAAE;YACzD,SAAS;YACT,UAAU;SACX,CAAC,CAAC;QAEH,MAAM,IAAA,4BAAkB,EAGrB,MAAM,EAAE,yCAA+B,EAAE;YAC1C,iBAAiB,EAAE,eAAe,CAAC,EAAE;YACrC,MAAM;SACP,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,CAAC;QACX,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC,EACD,EAAE,WAAW,EAAE,CAChB,CAAC;IAEF,WAAW,CAAC,IAAI,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAChC,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC;IAE1B,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,KAAK,CACV,uCAAuC,SAAS,GAAG,IAAI,YAAY,CACpE,CACF,CAAC;IACF,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC;AAzED,0EAyEC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { CronIdentifier } from './pullCronPageOfIdentifiers';
|
|
2
|
+
import { RequestAction } from '@transcend-io/privacy-types';
|
|
3
|
+
export interface CronIdentifierWithAction extends CronIdentifier {
|
|
4
|
+
/** The request action that the identifier relates to */
|
|
5
|
+
action: RequestAction;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Pull the set of identifiers outstanding for a cron or AVC integration
|
|
9
|
+
*
|
|
10
|
+
* @param options - Options
|
|
11
|
+
*/
|
|
12
|
+
export declare function pullCustomSiloOutstandingIdentifiers({ dataSiloId, auth, sombraAuth, actions, pageLimit, transcendUrl, }: {
|
|
13
|
+
/** Transcend API key authentication */
|
|
14
|
+
auth: string;
|
|
15
|
+
/** Data Silo ID to pull down jobs for */
|
|
16
|
+
dataSiloId: string;
|
|
17
|
+
/** The request actions to fetch */
|
|
18
|
+
actions: RequestAction[];
|
|
19
|
+
/** Page limit when fetching identifiers */
|
|
20
|
+
pageLimit?: number;
|
|
21
|
+
/** API URL for Transcend backend */
|
|
22
|
+
transcendUrl?: string;
|
|
23
|
+
/** Sombra API key authentication */
|
|
24
|
+
sombraAuth?: string;
|
|
25
|
+
}): Promise<{
|
|
26
|
+
/** Raw Identifiers */
|
|
27
|
+
identifiers: CronIdentifierWithAction[];
|
|
28
|
+
/** Identifiers formatted for CSV */
|
|
29
|
+
identifiersFormattedForCsv: {
|
|
30
|
+
[k in string]: string | null | boolean | number;
|
|
31
|
+
}[];
|
|
32
|
+
}>;
|
|
33
|
+
//# sourceMappingURL=pullCustomSiloOutstandingIdentifiers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pullCustomSiloOutstandingIdentifiers.d.ts","sourceRoot":"","sources":["../../src/cron/pullCustomSiloOutstandingIdentifiers.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,cAAc,EACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAK5D,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D,wDAAwD;IACxD,MAAM,EAAE,aAAa,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,oCAAoC,CAAC,EACzD,UAAU,EACV,IAAI,EACJ,UAAU,EACV,OAAO,EACP,SAAe,EACf,YAAoC,GACrC,EAAE;IACD,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC;IACV,sBAAsB;IACtB,WAAW,EAAE,wBAAwB,EAAE,CAAC;IACxC,oCAAoC;IACpC,0BAA0B,EAAE;SACzB,CAAC,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM;KAChD,EAAE,CAAC;CACL,CAAC,CA2DD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.pullCustomSiloOutstandingIdentifiers = void 0;
|
|
7
|
+
const graphql_1 = require("../graphql");
|
|
8
|
+
const colors_1 = __importDefault(require("colors"));
|
|
9
|
+
const pullCronPageOfIdentifiers_1 = require("./pullCronPageOfIdentifiers");
|
|
10
|
+
const logger_1 = require("../logger");
|
|
11
|
+
const constants_1 = require("../constants");
|
|
12
|
+
const bluebird_1 = require("bluebird");
|
|
13
|
+
/**
|
|
14
|
+
* Pull the set of identifiers outstanding for a cron or AVC integration
|
|
15
|
+
*
|
|
16
|
+
* @param options - Options
|
|
17
|
+
*/
|
|
18
|
+
async function pullCustomSiloOutstandingIdentifiers({ dataSiloId, auth, sombraAuth, actions, pageLimit = 100, transcendUrl = constants_1.DEFAULT_TRANSCEND_API, }) {
|
|
19
|
+
// Create sombra instance to communicate with
|
|
20
|
+
const sombra = await (0, graphql_1.createSombraGotInstance)(transcendUrl, auth, sombraAuth);
|
|
21
|
+
logger_1.logger.info(colors_1.default.magenta(`Pulling outstanding request identifiers for data silo: "${dataSiloId}" for requests of types "${actions.join('", "')}"`));
|
|
22
|
+
// identifiers found in total
|
|
23
|
+
const identifiers = [];
|
|
24
|
+
// map over each action
|
|
25
|
+
await (0, bluebird_1.mapSeries)(actions, async (action) => {
|
|
26
|
+
let offset = 0;
|
|
27
|
+
let shouldContinue = true;
|
|
28
|
+
// Fetch a page of identifiers
|
|
29
|
+
while (shouldContinue) {
|
|
30
|
+
// eslint-disable-next-line no-await-in-loop
|
|
31
|
+
const pageIdentifiers = await (0, pullCronPageOfIdentifiers_1.pullCronPageOfIdentifiers)(sombra, {
|
|
32
|
+
dataSiloId,
|
|
33
|
+
limit: pageLimit,
|
|
34
|
+
offset,
|
|
35
|
+
requestType: action,
|
|
36
|
+
});
|
|
37
|
+
identifiers.push(...pageIdentifiers.map((identifier) => ({
|
|
38
|
+
...identifier,
|
|
39
|
+
action,
|
|
40
|
+
})));
|
|
41
|
+
shouldContinue = pageIdentifiers.length === pageLimit;
|
|
42
|
+
offset += pageLimit;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
logger_1.logger.info(colors_1.default.magenta(`Found: ${identifiers.length} outstanding identifiers to parse`));
|
|
46
|
+
// Write out to CSV
|
|
47
|
+
const data = identifiers.map(({ attributes, ...identifier }) => ({
|
|
48
|
+
...identifier,
|
|
49
|
+
...attributes.reduce((acc, val) => Object.assign(acc, {
|
|
50
|
+
[val.key]: val.values.join(','),
|
|
51
|
+
}), {}),
|
|
52
|
+
}));
|
|
53
|
+
return { identifiers, identifiersFormattedForCsv: data };
|
|
54
|
+
}
|
|
55
|
+
exports.pullCustomSiloOutstandingIdentifiers = pullCustomSiloOutstandingIdentifiers;
|
|
56
|
+
//# sourceMappingURL=pullCustomSiloOutstandingIdentifiers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pullCustomSiloOutstandingIdentifiers.js","sourceRoot":"","sources":["../../src/cron/pullCustomSiloOutstandingIdentifiers.ts"],"names":[],"mappings":";;;;;;AAAA,wCAAqD;AACrD,oDAA4B;AAC5B,2EAGqC;AAErC,sCAAmC;AACnC,4CAAqD;AACrD,uCAAqC;AAOrC;;;;GAIG;AACI,KAAK,UAAU,oCAAoC,CAAC,EACzD,UAAU,EACV,IAAI,EACJ,UAAU,EACV,OAAO,EACP,SAAS,GAAG,GAAG,EACf,YAAY,GAAG,iCAAqB,GAcrC;IAQC,6CAA6C;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAuB,EAAC,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAE7E,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CACZ,2DAA2D,UAAU,4BAA4B,OAAO,CAAC,IAAI,CAC3G,MAAM,CACP,GAAG,CACL,CACF,CAAC;IAEF,6BAA6B;IAC7B,MAAM,WAAW,GAA+B,EAAE,CAAC;IAEnD,uBAAuB;IACvB,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,cAAc,GAAG,IAAI,CAAC;QAE1B,8BAA8B;QAC9B,OAAO,cAAc,EAAE;YACrB,4CAA4C;YAC5C,MAAM,eAAe,GAAG,MAAM,IAAA,qDAAyB,EAAC,MAAM,EAAE;gBAC9D,UAAU;gBACV,KAAK,EAAE,SAAS;gBAChB,MAAM;gBACN,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC;YACH,WAAW,CAAC,IAAI,CACd,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACtC,GAAG,UAAU;gBACb,MAAM;aACP,CAAC,CAAC,CACJ,CAAC;YACF,cAAc,GAAG,eAAe,CAAC,MAAM,KAAK,SAAS,CAAC;YACtD,MAAM,IAAI,SAAS,CAAC;SACrB;IACH,CAAC,CAAC,CAAC;IAEH,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CACZ,UAAU,WAAW,CAAC,MAAM,mCAAmC,CAChE,CACF,CAAC;IAEF,mBAAmB;IACnB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,GAAG,UAAU;QACb,GAAG,UAAU,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CACX,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SAChC,CAAC,EACJ,EAAE,CACH;KACF,CAAC,CAAC,CAAC;IAEJ,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC;AAC3D,CAAC;AAtFD,oFAsFC"}
|
|
@@ -20,6 +20,6 @@ export * from './uploadPrivacyRequestsFromCsv';
|
|
|
20
20
|
export * from './bulkRestartRequests';
|
|
21
21
|
export * from './restartPrivacyRequest';
|
|
22
22
|
export * from './retryRequestDataSilos';
|
|
23
|
-
export * from './
|
|
23
|
+
export * from './pullPrivacyRequests';
|
|
24
24
|
export * from './skipRequestDataSilos';
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/requests/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/requests/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC"}
|
package/build/requests/index.js
CHANGED
|
@@ -36,6 +36,6 @@ __exportStar(require("./uploadPrivacyRequestsFromCsv"), exports);
|
|
|
36
36
|
__exportStar(require("./bulkRestartRequests"), exports);
|
|
37
37
|
__exportStar(require("./restartPrivacyRequest"), exports);
|
|
38
38
|
__exportStar(require("./retryRequestDataSilos"), exports);
|
|
39
|
-
__exportStar(require("./
|
|
39
|
+
__exportStar(require("./pullPrivacyRequests"), exports);
|
|
40
40
|
__exportStar(require("./skipRequestDataSilos"), exports);
|
|
41
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/requests/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,8CAA4B;AAC5B,kDAAgC;AAChC,mDAAiC;AACjC,8DAA4C;AAC5C,4CAA0B;AAC1B,6DAA2C;AAC3C,+CAA6B;AAC7B,8DAA4C;AAC5C,uDAAqC;AACrC,yDAAuC;AACvC,8DAA4C;AAC5C,yDAAuC;AACvC,2DAAyC;AACzC,4DAA0C;AAC1C,0DAAwC;AACxC,2DAAyC;AACzC,uDAAqC;AACrC,iEAA+C;AAC/C,wDAAsC;AACtC,0DAAwC;AACxC,0DAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/requests/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,8CAA4B;AAC5B,kDAAgC;AAChC,mDAAiC;AACjC,8DAA4C;AAC5C,4CAA0B;AAC1B,6DAA2C;AAC3C,+CAA6B;AAC7B,8DAA4C;AAC5C,uDAAqC;AACrC,yDAAuC;AACvC,8DAA4C;AAC5C,yDAAuC;AACvC,2DAAyC;AACzC,4DAA0C;AAC1C,0DAAwC;AACxC,2DAAyC;AACzC,uDAAqC;AACrC,iEAA+C;AAC/C,wDAAsC;AACtC,0DAAwC;AACxC,0DAAwC;AACxC,wDAAsC;AACtC,yDAAuC"}
|
|
@@ -5,13 +5,11 @@ export interface ExportedPrivacyRequest extends PrivacyRequest {
|
|
|
5
5
|
requestIdentifiers: RequestIdentifier[];
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
|
-
* Pull
|
|
8
|
+
* Pull down a list of privacy requests
|
|
9
9
|
*
|
|
10
10
|
* @param options - Options
|
|
11
11
|
*/
|
|
12
|
-
export declare function
|
|
13
|
-
/** CSV file path */
|
|
14
|
-
file: string;
|
|
12
|
+
export declare function pullPrivacyRequests({ auth, actions, statuses, pageLimit, transcendUrl, createdAtBefore, createdAtAfter, showTests, }: {
|
|
15
13
|
/** Transcend API key authentication */
|
|
16
14
|
auth: string;
|
|
17
15
|
/** API URL for Transcend backend */
|
|
@@ -28,5 +26,12 @@ export declare function pullRequestsToCsv({ file, auth, actions, statuses, pageL
|
|
|
28
26
|
createdAtAfter?: Date;
|
|
29
27
|
/** Return test requests */
|
|
30
28
|
showTests?: boolean;
|
|
31
|
-
}): Promise<
|
|
32
|
-
|
|
29
|
+
}): Promise<{
|
|
30
|
+
/** All request information with attached identifiers */
|
|
31
|
+
requestsWithRequestIdentifiers: ExportedPrivacyRequest[];
|
|
32
|
+
/** Requests that are formatted for CSV */
|
|
33
|
+
requestsFormattedForCsv: {
|
|
34
|
+
[k in string]: string | null | boolean;
|
|
35
|
+
}[];
|
|
36
|
+
}>;
|
|
37
|
+
//# sourceMappingURL=pullPrivacyRequests.d.ts.map
|