@transcend-io/cli 4.58.0 → 4.60.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 +43 -4
- package/build/api-keys/validateTranscendAuth.js +1 -1
- package/build/api-keys/validateTranscendAuth.js.map +1 -1
- package/build/cli-cron-mark-identifiers-completed.js +3 -3
- package/build/cli-cron-mark-identifiers-completed.js.map +1 -1
- package/build/cli-cron-pull-identifiers.js +3 -3
- package/build/cli-cron-pull-identifiers.js.map +1 -1
- package/build/cli-discover-silos.js +3 -3
- package/build/cli-discover-silos.js.map +1 -1
- package/build/cli-manual-enrichment-pull-identifiers.js +3 -3
- package/build/cli-manual-enrichment-pull-identifiers.js.map +1 -1
- package/build/cli-manual-enrichment-push-identifiers.js +3 -3
- package/build/cli-manual-enrichment-push-identifiers.js.map +1 -1
- package/build/cli-mark-request-data-silos-completed.js +8 -3
- package/build/cli-mark-request-data-silos-completed.js.map +1 -1
- package/build/cli-pull.js +2 -2
- package/build/cli-push.js +2 -2
- package/build/cli-request-approve.js +3 -3
- package/build/cli-request-approve.js.map +1 -1
- package/build/cli-request-cancel.js +3 -3
- package/build/cli-request-cancel.js.map +1 -1
- package/build/cli-request-export.js +3 -3
- package/build/cli-request-export.js.map +1 -1
- package/build/cli-request-restart.js +3 -3
- package/build/cli-request-restart.js.map +1 -1
- package/build/cli-request-upload.js +3 -3
- package/build/cli-request-upload.js.map +1 -1
- package/build/cli-retry-request-data-silos.js +3 -3
- package/build/cli-retry-request-data-silos.js.map +1 -1
- package/build/cli-skip-request-data-silos.d.ts +3 -0
- package/build/cli-skip-request-data-silos.d.ts.map +1 -0
- package/build/cli-skip-request-data-silos.js +46 -0
- package/build/cli-skip-request-data-silos.js.map +1 -0
- package/build/cli-update-consent-manager-to-latest.js +2 -2
- package/build/cli-upload-data-flows-from-csv.js +3 -3
- package/build/cli-upload-data-flows-from-csv.js.map +1 -1
- package/build/graphql/fetchRequestDataSilo.d.ts +20 -0
- package/build/graphql/fetchRequestDataSilo.d.ts.map +1 -1
- package/build/graphql/fetchRequestDataSilo.js +36 -3
- package/build/graphql/fetchRequestDataSilo.js.map +1 -1
- package/build/graphql/gqls/RequestDataSilo.d.ts.map +1 -1
- package/build/graphql/gqls/RequestDataSilo.js +6 -4
- package/build/graphql/gqls/RequestDataSilo.js.map +1 -1
- package/build/graphql/gqls/consentManager.d.ts +2 -0
- package/build/graphql/gqls/consentManager.d.ts.map +1 -1
- package/build/graphql/gqls/consentManager.js +15 -1
- package/build/graphql/gqls/consentManager.js.map +1 -1
- package/build/graphql/syncConsentManager.d.ts +8 -1
- package/build/graphql/syncConsentManager.d.ts.map +1 -1
- package/build/graphql/syncConsentManager.js +88 -1
- package/build/graphql/syncConsentManager.js.map +1 -1
- package/build/plugins/findFilesToScan.d.ts +1 -1
- package/build/plugins/findFilesToScan.d.ts.map +1 -1
- package/build/requests/index.d.ts +1 -0
- package/build/requests/index.d.ts.map +1 -1
- package/build/requests/index.js +1 -0
- package/build/requests/index.js.map +1 -1
- package/build/requests/skipRequestDataSilos.d.ts +17 -0
- package/build/requests/skipRequestDataSilos.d.ts.map +1 -0
- package/build/requests/skipRequestDataSilos.js +58 -0
- package/build/requests/skipRequestDataSilos.js.map +1 -0
- package/build/tsbuildinfo +1 -1
- package/package.json +3 -2
|
@@ -17,10 +17,10 @@ const api_keys_1 = require("./api-keys");
|
|
|
17
17
|
* Requires an API key with scope "Manage Consent Manager Developer Settings".
|
|
18
18
|
*
|
|
19
19
|
* Dev Usage:
|
|
20
|
-
* yarn ts-node ./src/cli-update-consent-manager-to-latest.ts --auth
|
|
20
|
+
* yarn ts-node ./src/cli-update-consent-manager-to-latest.ts --auth=$TRANSCEND_API_KEY
|
|
21
21
|
*
|
|
22
22
|
* Standard usage:
|
|
23
|
-
* yarn tr-update-consent-manager --auth
|
|
23
|
+
* yarn tr-update-consent-manager --auth=$TRANSCEND_API_KEY
|
|
24
24
|
*/
|
|
25
25
|
async function main() {
|
|
26
26
|
// Parse command line arguments
|
|
@@ -16,12 +16,12 @@ const privacy_types_1 = require("@transcend-io/privacy-types");
|
|
|
16
16
|
* - "Manage Data Flows"
|
|
17
17
|
*
|
|
18
18
|
* Dev Usage:
|
|
19
|
-
* yarn ts-node ./src/cli-upload-data-flows-from-csv.ts --auth
|
|
19
|
+
* yarn ts-node ./src/cli-upload-data-flows-from-csv.ts --auth=$TRANSCEND_API_KEY \
|
|
20
20
|
* --file=/Users/michaelfarrell/Desktop/test.csv \
|
|
21
21
|
* --trackerStatus=LIVE
|
|
22
22
|
*
|
|
23
23
|
* Standard usage:
|
|
24
|
-
* yarn tr-upload-data-flows-from-csv --auth
|
|
24
|
+
* yarn tr-upload-data-flows-from-csv --auth=$TRANSCEND_API_KEY \
|
|
25
25
|
* --file=/Users/michaelfarrell/Desktop/test.csv \
|
|
26
26
|
* --trackerStatus=LIVE
|
|
27
27
|
*/
|
|
@@ -30,7 +30,7 @@ async function main() {
|
|
|
30
30
|
const { auth, trackerStatus, classifyService = 'false', file = './data-flows.csv', transcendUrl = 'https://api.transcend.io', } = (0, yargs_parser_1.default)(process.argv.slice(2));
|
|
31
31
|
// Ensure auth is passed
|
|
32
32
|
if (!auth) {
|
|
33
|
-
logger_1.logger.error(colors_1.default.red('A Transcend API key must be provided. You can specify using --auth
|
|
33
|
+
logger_1.logger.error(colors_1.default.red('A Transcend API key must be provided. You can specify using --auth=$TRANSCEND_API_KEY'));
|
|
34
34
|
process.exit(1);
|
|
35
35
|
}
|
|
36
36
|
// Ensure trackerStatus is passed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-upload-data-flows-from-csv.js","sourceRoot":"","sources":["../src/cli-upload-data-flows-from-csv.ts"],"names":[],"mappings":";;;;;;AAEA,gEAAiC;AACjC,oDAA4B;AAE5B,qCAAkC;AAClC,uDAA2D;AAC3D,+DAAmE;AAEnE;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,IAAI;IACjB,+BAA+B;IAC/B,MAAM,EACJ,IAAI,EACJ,aAAa,EACb,eAAe,GAAG,OAAO,EACzB,IAAI,GAAG,kBAAkB,EACzB,YAAY,GAAG,0BAA0B,GAC1C,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,
|
|
1
|
+
{"version":3,"file":"cli-upload-data-flows-from-csv.js","sourceRoot":"","sources":["../src/cli-upload-data-flows-from-csv.ts"],"names":[],"mappings":";;;;;;AAEA,gEAAiC;AACjC,oDAA4B;AAE5B,qCAAkC;AAClC,uDAA2D;AAC3D,+DAAmE;AAEnE;;;;;;;;;;;;;;;GAeG;AACH,KAAK,UAAU,IAAI;IACjB,+BAA+B;IAC/B,MAAM,EACJ,IAAI,EACJ,aAAa,EACb,eAAe,GAAG,OAAO,EACzB,IAAI,GAAG,kBAAkB,EACzB,YAAY,GAAG,0BAA0B,GAC1C,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,iCAAiC;IACjC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,oCAAoB,CAAC,CAAC;IAClE,IAAI,CAAC,aAAa,EAAE;QAClB,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,kFAAkF;YAChF,0BAA0B,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC9D,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,MAAM,oBAAoB,GAAG,aAAqC,CAAC;IACnE,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;QACzD,eAAM,CAAC,KAAK,CACV,gBAAM,CAAC,GAAG,CACR,+CAA+C,aAAa,iDAAiD;YAC3G,0BAA0B,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC9D,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,oBAAoB;IACpB,MAAM,IAAA,wCAAsB,EAAC;QAC3B,IAAI;QACJ,aAAa,EAAE,oBAAoB;QACnC,IAAI;QACJ,eAAe,EAAE,eAAe,KAAK,MAAM;QAC3C,YAAY;KACb,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -1,8 +1,28 @@
|
|
|
1
1
|
import { GraphQLClient } from 'graphql-request';
|
|
2
|
+
import { RequestDataSiloStatus, RequestStatus } from '@transcend-io/privacy-types';
|
|
2
3
|
export interface RequestDataSilo {
|
|
3
4
|
/** ID of RequestDataSilo */
|
|
4
5
|
id: string;
|
|
5
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Fetch all request data silos by some filter criteria
|
|
9
|
+
*
|
|
10
|
+
* @param client - GraphQL client
|
|
11
|
+
* @param options - Filter options
|
|
12
|
+
* @returns List of request identifiers
|
|
13
|
+
*/
|
|
14
|
+
export declare function fetchRequestDataSilos(client: GraphQLClient, { requestId, dataSiloId, requestStatuses, statuses, }: {
|
|
15
|
+
/** ID of request to filter on */
|
|
16
|
+
requestId?: string;
|
|
17
|
+
/** Data silo ID */
|
|
18
|
+
dataSiloId?: string;
|
|
19
|
+
/**
|
|
20
|
+
* The statuses to filter on
|
|
21
|
+
*/
|
|
22
|
+
statuses?: RequestDataSiloStatus[];
|
|
23
|
+
/** The request statuses to filter on */
|
|
24
|
+
requestStatuses?: RequestStatus[];
|
|
25
|
+
}): Promise<RequestDataSilo[]>;
|
|
6
26
|
/**
|
|
7
27
|
* Fetch all request identifiers for a particular request
|
|
8
28
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchRequestDataSilo.d.ts","sourceRoot":"","sources":["../../src/graphql/fetchRequestDataSilo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetchRequestDataSilo.d.ts","sourceRoot":"","sources":["../../src/graphql/fetchRequestDataSilo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EACL,qBAAqB,EACrB,aAAa,EACd,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;CACZ;AAID;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EACE,SAAS,EACT,UAAU,EACV,eAAe,EACf,QAAQ,GACT,EAAE;IACD,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACnC,wCAAwC;IACxC,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;CACnC,GACA,OAAO,CAAC,eAAe,EAAE,CAAC,CAgC5B;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EACE,SAAS,EACT,UAAU,GACX,EAAE;IACD,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,GACA,OAAO,CAAC,eAAe,CAAC,CAY1B"}
|
|
@@ -1,8 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fetchRequestDataSilo = void 0;
|
|
3
|
+
exports.fetchRequestDataSilo = exports.fetchRequestDataSilos = void 0;
|
|
4
4
|
const gqls_1 = require("./gqls");
|
|
5
5
|
const makeGraphQLRequest_1 = require("./makeGraphQLRequest");
|
|
6
|
+
const PAGE_SIZE = 100;
|
|
7
|
+
/**
|
|
8
|
+
* Fetch all request data silos by some filter criteria
|
|
9
|
+
*
|
|
10
|
+
* @param client - GraphQL client
|
|
11
|
+
* @param options - Filter options
|
|
12
|
+
* @returns List of request identifiers
|
|
13
|
+
*/
|
|
14
|
+
async function fetchRequestDataSilos(client, { requestId, dataSiloId, requestStatuses, statuses, }) {
|
|
15
|
+
const requestDataSilos = [];
|
|
16
|
+
let offset = 0;
|
|
17
|
+
// Try to fetch an DataFlow with the same title
|
|
18
|
+
let shouldContinue = false;
|
|
19
|
+
do {
|
|
20
|
+
const { requestDataSilos: { nodes },
|
|
21
|
+
// eslint-disable-next-line no-await-in-loop
|
|
22
|
+
} = await (0, makeGraphQLRequest_1.makeGraphQLRequest)(client, gqls_1.REQUEST_DATA_SILOS, {
|
|
23
|
+
first: PAGE_SIZE,
|
|
24
|
+
offset,
|
|
25
|
+
filterBy: {
|
|
26
|
+
dataSiloId,
|
|
27
|
+
requestId,
|
|
28
|
+
status: statuses,
|
|
29
|
+
requestStatus: requestStatuses,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
requestDataSilos.push(...nodes);
|
|
33
|
+
offset += PAGE_SIZE;
|
|
34
|
+
shouldContinue = nodes.length === PAGE_SIZE;
|
|
35
|
+
} while (shouldContinue);
|
|
36
|
+
return requestDataSilos;
|
|
37
|
+
}
|
|
38
|
+
exports.fetchRequestDataSilos = fetchRequestDataSilos;
|
|
6
39
|
/**
|
|
7
40
|
* Fetch all request identifiers for a particular request
|
|
8
41
|
*
|
|
@@ -11,9 +44,9 @@ const makeGraphQLRequest_1 = require("./makeGraphQLRequest");
|
|
|
11
44
|
* @returns List of request identifiers
|
|
12
45
|
*/
|
|
13
46
|
async function fetchRequestDataSilo(client, { requestId, dataSiloId, }) {
|
|
14
|
-
const
|
|
15
|
-
dataSiloId,
|
|
47
|
+
const nodes = await fetchRequestDataSilos(client, {
|
|
16
48
|
requestId,
|
|
49
|
+
dataSiloId,
|
|
17
50
|
});
|
|
18
51
|
if (nodes.length !== 1) {
|
|
19
52
|
throw new Error(`Failed to find RequestDataSilo with requestId:${requestId},dataSiloId:${dataSiloId}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchRequestDataSilo.js","sourceRoot":"","sources":["../../src/graphql/fetchRequestDataSilo.ts"],"names":[],"mappings":";;;AACA,iCAA4C;AAC5C,6DAA0D;
|
|
1
|
+
{"version":3,"file":"fetchRequestDataSilo.js","sourceRoot":"","sources":["../../src/graphql/fetchRequestDataSilo.ts"],"names":[],"mappings":";;;AACA,iCAA4C;AAC5C,6DAA0D;AAW1D,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB;;;;;;GAMG;AACI,KAAK,UAAU,qBAAqB,CACzC,MAAqB,EACrB,EACE,SAAS,EACT,UAAU,EACV,eAAe,EACf,QAAQ,GAYT;IAED,MAAM,gBAAgB,GAAsB,EAAE,CAAC;IAC/C,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,+CAA+C;IAC/C,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,GAAG;QACD,MAAM,EACJ,gBAAgB,EAAE,EAAE,KAAK,EAAE;QAC3B,4CAA4C;UAC7C,GAAG,MAAM,IAAA,uCAAkB,EAMzB,MAAM,EAAE,yBAAkB,EAAE;YAC7B,KAAK,EAAE,SAAS;YAChB,MAAM;YACN,QAAQ,EAAE;gBACR,UAAU;gBACV,SAAS;gBACT,MAAM,EAAE,QAAQ;gBAChB,aAAa,EAAE,eAAe;aAC/B;SACF,CAAC,CAAC;QACH,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC;QACpB,cAAc,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC;KAC7C,QAAQ,cAAc,EAAE;IAEzB,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAnDD,sDAmDC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,oBAAoB,CACxC,MAAqB,EACrB,EACE,SAAS,EACT,UAAU,GAMX;IAED,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE;QAChD,SAAS;QACT,UAAU;KACX,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,MAAM,IAAI,KAAK,CACb,iDAAiD,SAAS,eAAe,UAAU,EAAE,CACtF,CAAC;KACH;IAED,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAvBD,oDAuBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestDataSilo.d.ts","sourceRoot":"","sources":["../../../src/graphql/gqls/RequestDataSilo.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"RequestDataSilo.d.ts","sourceRoot":"","sources":["../../../src/graphql/gqls/RequestDataSilo.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,QAY9B,CAAC;AAEF,eAAO,MAAM,+BAA+B,QAa3C,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAQnC,CAAC"}
|
|
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.RETRY_REQUEST_DATA_SILO = exports.CHANGE_REQUEST_DATA_SILO_STATUS = exports.REQUEST_DATA_SILOS = void 0;
|
|
4
4
|
const graphql_request_1 = require("graphql-request");
|
|
5
5
|
exports.REQUEST_DATA_SILOS = (0, graphql_request_1.gql) `
|
|
6
|
-
query TranscendCliRequestDataSilos(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
query TranscendCliRequestDataSilos(
|
|
7
|
+
$first: Int!
|
|
8
|
+
$offset: Int!
|
|
9
|
+
$filterBy: RequestDataSiloFiltersInput!
|
|
10
|
+
) {
|
|
11
|
+
requestDataSilos(filterBy: $filterBy, first: $first, offset: $offset) {
|
|
10
12
|
nodes {
|
|
11
13
|
id
|
|
12
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestDataSilo.js","sourceRoot":"","sources":["../../../src/graphql/gqls/RequestDataSilo.ts"],"names":[],"mappings":";;;AAAA,qDAAsC;AAEzB,QAAA,kBAAkB,GAAG,IAAA,qBAAG,EAAA
|
|
1
|
+
{"version":3,"file":"RequestDataSilo.js","sourceRoot":"","sources":["../../../src/graphql/gqls/RequestDataSilo.ts"],"names":[],"mappings":";;;AAAA,qDAAsC;AAEzB,QAAA,kBAAkB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;CAYpC,CAAC;AAEW,QAAA,+BAA+B,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;CAajD,CAAC;AAEW,QAAA,uBAAuB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQzC,CAAC"}
|
|
@@ -17,4 +17,6 @@ export declare const TOGGLE_UNKNOWN_REQUEST_POLICY: string;
|
|
|
17
17
|
export declare const TOGGLE_UNKNOWN_COOKIE_POLICY: string;
|
|
18
18
|
export declare const TOGGLE_TELEMETRY_PARTITION_STRATEGY: string;
|
|
19
19
|
export declare const TOGGLE_CONSENT_PRECEDENCE: string;
|
|
20
|
+
export declare const UPDATE_CONSENT_EXPERIENCE: string;
|
|
21
|
+
export declare const CREATE_CONSENT_EXPERIENCE: string;
|
|
20
22
|
//# sourceMappingURL=consentManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consentManager.d.ts","sourceRoot":"","sources":["../../../src/graphql/gqls/consentManager.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,QASpB,CAAC;AAEF,eAAO,MAAM,WAAW,QAyBvB,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAkB7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAkB7B,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAWpC,CAAC;AAEF,eAAO,MAAM,UAAU,QAwCtB,CAAC;AAEF,eAAO,MAAM,OAAO,QAuCnB,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAQpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAsBjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAQlC,CAAC;AAEF,eAAO,MAAM,gCAAgC,QAY5C,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAYlC,CAAC;AAEF,eAAO,MAAM,8BAA8B,QAW1C,CAAC;AAEF,eAAO,MAAM,gCAAgC,QAW5C,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAMjC,CAAC;AAEF,eAAO,MAAM,6BAA6B,QAQzC,CAAC;AAEF,eAAO,MAAM,4BAA4B,QAQxC,CAAC;AAEF,eAAO,MAAM,mCAAmC,QAQ/C,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAQrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"consentManager.d.ts","sourceRoot":"","sources":["../../../src/graphql/gqls/consentManager.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,QASpB,CAAC;AAEF,eAAO,MAAM,WAAW,QAyBvB,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAkB7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAkB7B,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAWpC,CAAC;AAEF,eAAO,MAAM,UAAU,QAwCtB,CAAC;AAEF,eAAO,MAAM,OAAO,QAuCnB,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAQpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAsBjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAQlC,CAAC;AAEF,eAAO,MAAM,gCAAgC,QAY5C,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAYlC,CAAC;AAEF,eAAO,MAAM,8BAA8B,QAW1C,CAAC;AAEF,eAAO,MAAM,gCAAgC,QAW5C,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAMjC,CAAC;AAEF,eAAO,MAAM,6BAA6B,QAQzC,CAAC;AAEF,eAAO,MAAM,4BAA4B,QAQxC,CAAC;AAEF,eAAO,MAAM,mCAAmC,QAQ/C,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAQrC,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAMrC,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAMrC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TOGGLE_CONSENT_PRECEDENCE = exports.TOGGLE_TELEMETRY_PARTITION_STRATEGY = exports.TOGGLE_UNKNOWN_COOKIE_POLICY = exports.TOGGLE_UNKNOWN_REQUEST_POLICY = exports.UPDATE_TOGGLE_USP_API = exports.UPDATE_CONSENT_MANAGER_PARTITION = exports.UPDATE_CONSENT_MANAGER_DOMAINS = exports.DEPLOY_CONSENT_MANAGER = exports.UPDATE_CONSENT_MANAGER_TO_LATEST = exports.CREATE_CONSENT_MANAGER = exports.FETCH_CONSENT_MANAGER = exports.FETCH_CONSENT_MANAGER_ID = exports.COOKIES = exports.DATA_FLOWS = exports.UPDATE_OR_CREATE_COOKIES = exports.UPDATE_DATA_FLOWS = exports.CREATE_DATA_FLOWS = exports.EXPERIENCES = exports.PURPOSES = void 0;
|
|
3
|
+
exports.CREATE_CONSENT_EXPERIENCE = exports.UPDATE_CONSENT_EXPERIENCE = exports.TOGGLE_CONSENT_PRECEDENCE = exports.TOGGLE_TELEMETRY_PARTITION_STRATEGY = exports.TOGGLE_UNKNOWN_COOKIE_POLICY = exports.TOGGLE_UNKNOWN_REQUEST_POLICY = exports.UPDATE_TOGGLE_USP_API = exports.UPDATE_CONSENT_MANAGER_PARTITION = exports.UPDATE_CONSENT_MANAGER_DOMAINS = exports.DEPLOY_CONSENT_MANAGER = exports.UPDATE_CONSENT_MANAGER_TO_LATEST = exports.CREATE_CONSENT_MANAGER = exports.FETCH_CONSENT_MANAGER = exports.FETCH_CONSENT_MANAGER_ID = exports.COOKIES = exports.DATA_FLOWS = exports.UPDATE_OR_CREATE_COOKIES = exports.UPDATE_DATA_FLOWS = exports.CREATE_DATA_FLOWS = exports.EXPERIENCES = exports.PURPOSES = void 0;
|
|
4
4
|
const graphql_request_1 = require("graphql-request");
|
|
5
5
|
exports.PURPOSES = (0, graphql_request_1.gql) `
|
|
6
6
|
query TranscendCliPurposes {
|
|
@@ -303,4 +303,18 @@ exports.TOGGLE_CONSENT_PRECEDENCE = (0, graphql_request_1.gql) `
|
|
|
303
303
|
}
|
|
304
304
|
}
|
|
305
305
|
`;
|
|
306
|
+
exports.UPDATE_CONSENT_EXPERIENCE = (0, graphql_request_1.gql) `
|
|
307
|
+
mutation TranscendCliUpdateConsentExperience($input: UpdateExperienceInput!) {
|
|
308
|
+
updateExperience(input: $input) {
|
|
309
|
+
clientMutationId
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
`;
|
|
313
|
+
exports.CREATE_CONSENT_EXPERIENCE = (0, graphql_request_1.gql) `
|
|
314
|
+
mutation TranscendCliCreateConsentExperience($input: CreateExperienceInput!) {
|
|
315
|
+
createExperience(input: $input) {
|
|
316
|
+
clientMutationId
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
`;
|
|
306
320
|
//# sourceMappingURL=consentManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consentManager.js","sourceRoot":"","sources":["../../../src/graphql/gqls/consentManager.ts"],"names":[],"mappings":";;;AAAA,qDAAsC;AAEzB,QAAA,QAAQ,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;CAS1B,CAAC;AAEW,QAAA,WAAW,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;CAyB7B,CAAC;AAEW,QAAA,iBAAiB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;CAkBnC,CAAC;AAEW,QAAA,iBAAiB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;CAkBnC,CAAC;AAEW,QAAA,wBAAwB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;CAW1C,CAAC;AAEW,QAAA,UAAU,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC5B,CAAC;AAEW,QAAA,OAAO,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCzB,CAAC;AAEW,QAAA,wBAAwB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQ1C,CAAC;AAEW,QAAA,qBAAqB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;CAsBvC,CAAC;AAEW,QAAA,sBAAsB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQxC,CAAC;AAEW,QAAA,gCAAgC,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;CAYlD,CAAC;AAEW,QAAA,sBAAsB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;CAYxC,CAAC;AAEW,QAAA,8BAA8B,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;CAWhD,CAAC;AAEW,QAAA,gCAAgC,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;CAWlD,CAAC;AAEW,QAAA,qBAAqB,GAAG,IAAA,qBAAG,EAAA;;;;;;CAMvC,CAAC;AAEW,QAAA,6BAA6B,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQ/C,CAAC;AAEW,QAAA,4BAA4B,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQ9C,CAAC;AAEW,QAAA,mCAAmC,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQrD,CAAC;AAEW,QAAA,yBAAyB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQ3C,CAAC"}
|
|
1
|
+
{"version":3,"file":"consentManager.js","sourceRoot":"","sources":["../../../src/graphql/gqls/consentManager.ts"],"names":[],"mappings":";;;AAAA,qDAAsC;AAEzB,QAAA,QAAQ,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;CAS1B,CAAC;AAEW,QAAA,WAAW,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;CAyB7B,CAAC;AAEW,QAAA,iBAAiB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;CAkBnC,CAAC;AAEW,QAAA,iBAAiB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;CAkBnC,CAAC;AAEW,QAAA,wBAAwB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;CAW1C,CAAC;AAEW,QAAA,UAAU,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC5B,CAAC;AAEW,QAAA,OAAO,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCzB,CAAC;AAEW,QAAA,wBAAwB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQ1C,CAAC;AAEW,QAAA,qBAAqB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;CAsBvC,CAAC;AAEW,QAAA,sBAAsB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQxC,CAAC;AAEW,QAAA,gCAAgC,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;CAYlD,CAAC;AAEW,QAAA,sBAAsB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;CAYxC,CAAC;AAEW,QAAA,8BAA8B,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;CAWhD,CAAC;AAEW,QAAA,gCAAgC,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;CAWlD,CAAC;AAEW,QAAA,qBAAqB,GAAG,IAAA,qBAAG,EAAA;;;;;;CAMvC,CAAC;AAEW,QAAA,6BAA6B,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQ/C,CAAC;AAEW,QAAA,4BAA4B,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQ9C,CAAC;AAEW,QAAA,mCAAmC,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQrD,CAAC;AAEW,QAAA,yBAAyB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;CAQ3C,CAAC;AAEW,QAAA,yBAAyB,GAAG,IAAA,qBAAG,EAAA;;;;;;CAM3C,CAAC;AAEW,QAAA,yBAAyB,GAAG,IAAA,qBAAG,EAAA;;;;;;CAM3C,CAAC"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import { ConsentManagerInput } from '../codecs';
|
|
1
|
+
import { ConsentManageExperienceInput, ConsentManagerInput } from '../codecs';
|
|
2
2
|
import { GraphQLClient } from 'graphql-request';
|
|
3
|
+
/**
|
|
4
|
+
* Sync consent manager experiences up to Transcend
|
|
5
|
+
*
|
|
6
|
+
* @param client - GraphQL client
|
|
7
|
+
* @param experiences - The experience inputs
|
|
8
|
+
*/
|
|
9
|
+
export declare function syncConsentManagerExperiences(client: GraphQLClient, experiences: ConsentManageExperienceInput[]): Promise<void>;
|
|
3
10
|
/**
|
|
4
11
|
* Sync the consent manager
|
|
5
12
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncConsentManager.d.ts","sourceRoot":"","sources":["../../src/graphql/syncConsentManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"syncConsentManager.d.ts","sourceRoot":"","sources":["../../src/graphql/syncConsentManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA4BhD;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,4BAA4B,EAAE,GAC1C,OAAO,CAAC,IAAI,CAAC,CA8Ef;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,mBAAmB,GAClC,OAAO,CAAC,IAAI,CAAC,CA4Hf"}
|
|
@@ -1,9 +1,92 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.syncConsentManager = void 0;
|
|
6
|
+
exports.syncConsentManager = exports.syncConsentManagerExperiences = void 0;
|
|
4
7
|
const gqls_1 = require("./gqls");
|
|
5
8
|
const makeGraphQLRequest_1 = require("./makeGraphQLRequest");
|
|
6
9
|
const fetchConsentManagerId_1 = require("./fetchConsentManagerId");
|
|
10
|
+
const keyBy_1 = __importDefault(require("lodash/keyBy"));
|
|
11
|
+
const bluebird_1 = require("bluebird");
|
|
12
|
+
const airgap_js_types_1 = require("@transcend-io/airgap.js-types");
|
|
13
|
+
const PURPOSES_LINK = 'https://app.transcend.io/consent-manager/regional-experiences/purposes';
|
|
14
|
+
/**
|
|
15
|
+
* Sync consent manager experiences up to Transcend
|
|
16
|
+
*
|
|
17
|
+
* @param client - GraphQL client
|
|
18
|
+
* @param experiences - The experience inputs
|
|
19
|
+
*/
|
|
20
|
+
async function syncConsentManagerExperiences(client, experiences) {
|
|
21
|
+
// Fetch existing experiences
|
|
22
|
+
const existingExperiences = await (0, fetchConsentManagerId_1.fetchConsentManagerExperiences)(client);
|
|
23
|
+
const experienceLookup = (0, keyBy_1.default)(existingExperiences, 'name');
|
|
24
|
+
// Fetch existing purposes
|
|
25
|
+
const purposes = await (0, fetchConsentManagerId_1.fetchPurposes)(client);
|
|
26
|
+
const purposeLookup = (0, keyBy_1.default)(purposes, 'name');
|
|
27
|
+
// Bulk update or create experiences
|
|
28
|
+
await (0, bluebird_1.map)(experiences, async (exp, ind) => {
|
|
29
|
+
var _a, _b;
|
|
30
|
+
// Purpose IDs
|
|
31
|
+
const purposeIds = (_a = exp.purposes) === null || _a === void 0 ? void 0 : _a.map((purpose, ind2) => {
|
|
32
|
+
const existingPurpose = purposeLookup[purpose.name];
|
|
33
|
+
if (!existingPurpose) {
|
|
34
|
+
throw new Error(`Invalid purpose name provided at consentManager.experiences[${ind}].purposes[${ind2}]: ` +
|
|
35
|
+
`${purpose.name}. See list of valid purposes ${PURPOSES_LINK}`);
|
|
36
|
+
}
|
|
37
|
+
return existingPurpose.id;
|
|
38
|
+
});
|
|
39
|
+
const optedOutPurposeIds = (_b = exp.optedOutPurposes) === null || _b === void 0 ? void 0 : _b.map((purpose, ind2) => {
|
|
40
|
+
const existingPurpose = purposeLookup[purpose.name];
|
|
41
|
+
if (!existingPurpose) {
|
|
42
|
+
throw new Error(`Invalid purpose name provided at consentManager.experiences[${ind}].optedOutPurposes[${ind2}]: ` +
|
|
43
|
+
`${purpose.name}. See list of valid purposes ${PURPOSES_LINK}`);
|
|
44
|
+
}
|
|
45
|
+
return existingPurpose.id;
|
|
46
|
+
});
|
|
47
|
+
// update experience
|
|
48
|
+
const existingExperience = experienceLookup[exp.name];
|
|
49
|
+
if (existingExperience) {
|
|
50
|
+
await (0, makeGraphQLRequest_1.makeGraphQLRequest)(client, gqls_1.UPDATE_CONSENT_EXPERIENCE, {
|
|
51
|
+
input: {
|
|
52
|
+
id: existingExperience.id,
|
|
53
|
+
name: exp.name,
|
|
54
|
+
displayName: exp.displayName,
|
|
55
|
+
regions: exp.regions,
|
|
56
|
+
operator: exp.operator,
|
|
57
|
+
displayPriority: exp.displayPriority !== existingExperience.displayPriority
|
|
58
|
+
? exp.displayPriority
|
|
59
|
+
: undefined,
|
|
60
|
+
viewState: exp.viewState,
|
|
61
|
+
purposes: purposeIds,
|
|
62
|
+
optedOutPurposes: optedOutPurposeIds,
|
|
63
|
+
browserLanguages: exp.browserLanguages,
|
|
64
|
+
browserTimeZones: exp.browserTimeZones,
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// create new experience
|
|
70
|
+
await (0, makeGraphQLRequest_1.makeGraphQLRequest)(client, gqls_1.CREATE_CONSENT_EXPERIENCE, {
|
|
71
|
+
input: {
|
|
72
|
+
name: exp.name,
|
|
73
|
+
displayName: exp.displayName,
|
|
74
|
+
regions: exp.regions,
|
|
75
|
+
operator: exp.operator,
|
|
76
|
+
displayPriority: exp.displayPriority,
|
|
77
|
+
viewState: exp.viewState || airgap_js_types_1.InitialViewState.Hidden,
|
|
78
|
+
purposes: purposeIds || [],
|
|
79
|
+
optedOutPurposes: optedOutPurposeIds || [],
|
|
80
|
+
browserLanguages: exp.browserLanguages,
|
|
81
|
+
browserTimeZones: exp.browserTimeZones,
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}, {
|
|
86
|
+
concurrency: 10,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
exports.syncConsentManagerExperiences = syncConsentManagerExperiences;
|
|
7
90
|
/**
|
|
8
91
|
* Sync the consent manager
|
|
9
92
|
*
|
|
@@ -95,6 +178,10 @@ async function syncConsentManager(client, consentManager) {
|
|
|
95
178
|
},
|
|
96
179
|
});
|
|
97
180
|
}
|
|
181
|
+
// Update experience configurations
|
|
182
|
+
if (consentManager.experiences) {
|
|
183
|
+
await syncConsentManagerExperiences(client, consentManager.experiences);
|
|
184
|
+
}
|
|
98
185
|
// TODO: https://transcend.height.app/T-23875
|
|
99
186
|
// syncEndpoint: string;
|
|
100
187
|
// TODO: https://transcend.height.app/T-23919
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncConsentManager.js","sourceRoot":"","sources":["../../src/graphql/syncConsentManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"syncConsentManager.js","sourceRoot":"","sources":["../../src/graphql/syncConsentManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findFilesToScan.d.ts","sourceRoot":"","sources":["../../src/plugins/findFilesToScan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"findFilesToScan.d.ts","sourceRoot":"","sources":["../../src/plugins/findFilesToScan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAEvE;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,aAChB,MAAM,aACL,MAAM,cACL,MAAM,UACV,mBAAmB,KAC1B,QAAQ,uBAAuB,EAAE,CAoCnC,CAAC"}
|
|
@@ -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,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,qBAAqB,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,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,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
|
package/build/requests/index.js
CHANGED
|
@@ -36,4 +36,5 @@ __exportStar(require("./bulkRestartRequests"), exports);
|
|
|
36
36
|
__exportStar(require("./restartPrivacyRequest"), exports);
|
|
37
37
|
__exportStar(require("./retryRequestDataSilos"), exports);
|
|
38
38
|
__exportStar(require("./pullRequestsToCsv"), exports);
|
|
39
|
+
__exportStar(require("./skipRequestDataSilos"), exports);
|
|
39
40
|
//# 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,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,sDAAoC"}
|
|
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,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,sDAAoC;AACpC,yDAAuC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Given a data silo ID, mark all open request data silos as skipped
|
|
3
|
+
*
|
|
4
|
+
* @param options - Options
|
|
5
|
+
* @returns Number of items skipped
|
|
6
|
+
*/
|
|
7
|
+
export declare function skipRequestDataSilos({ dataSiloId, auth, concurrency, transcendUrl, }: {
|
|
8
|
+
/** Transcend API key authentication */
|
|
9
|
+
auth: string;
|
|
10
|
+
/** Data Silo ID to pull down jobs for */
|
|
11
|
+
dataSiloId: string;
|
|
12
|
+
/** Upload concurrency */
|
|
13
|
+
concurrency?: number;
|
|
14
|
+
/** API URL for Transcend backend */
|
|
15
|
+
transcendUrl?: string;
|
|
16
|
+
}): Promise<number>;
|
|
17
|
+
//# sourceMappingURL=skipRequestDataSilos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skipRequestDataSilos.d.ts","sourceRoot":"","sources":["../../src/requests/skipRequestDataSilos.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,UAAU,EACV,IAAI,EACJ,WAAiB,EACjB,YAAyC,GAC1C,EAAE;IACD,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiElB"}
|
|
@@ -0,0 +1,58 @@
|
|
|
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.skipRequestDataSilos = void 0;
|
|
7
|
+
const bluebird_1 = require("bluebird");
|
|
8
|
+
const colors_1 = __importDefault(require("colors"));
|
|
9
|
+
const logger_1 = require("../logger");
|
|
10
|
+
const graphql_1 = require("../graphql");
|
|
11
|
+
const cli_progress_1 = __importDefault(require("cli-progress"));
|
|
12
|
+
const privacy_types_1 = require("@transcend-io/privacy-types");
|
|
13
|
+
/**
|
|
14
|
+
* Given a data silo ID, mark all open request data silos as skipped
|
|
15
|
+
*
|
|
16
|
+
* @param options - Options
|
|
17
|
+
* @returns Number of items skipped
|
|
18
|
+
*/
|
|
19
|
+
async function skipRequestDataSilos({ dataSiloId, auth, concurrency = 100, transcendUrl = 'https://api.transcend.io', }) {
|
|
20
|
+
// Find all requests made before createdAt that are in a removing data state
|
|
21
|
+
const client = (0, graphql_1.buildTranscendGraphQLClient)(transcendUrl, auth);
|
|
22
|
+
// Time duration
|
|
23
|
+
const t0 = new Date().getTime();
|
|
24
|
+
// fetch all RequestDataSilos that are open
|
|
25
|
+
const requestDataSilos = await (0, graphql_1.fetchRequestDataSilos)(client, {
|
|
26
|
+
dataSiloId,
|
|
27
|
+
// all active RequestDataSilos
|
|
28
|
+
statuses: [
|
|
29
|
+
privacy_types_1.RequestDataSiloStatus.Queued,
|
|
30
|
+
privacy_types_1.RequestDataSiloStatus.Waiting,
|
|
31
|
+
privacy_types_1.RequestDataSiloStatus.Error,
|
|
32
|
+
privacy_types_1.RequestDataSiloStatus.ActionRequired,
|
|
33
|
+
privacy_types_1.RequestDataSiloStatus.RemoteProcessing,
|
|
34
|
+
],
|
|
35
|
+
requestStatuses: [privacy_types_1.RequestStatus.Compiling, privacy_types_1.RequestStatus.Secondary],
|
|
36
|
+
});
|
|
37
|
+
// Notify Transcend
|
|
38
|
+
logger_1.logger.info(colors_1.default.magenta(`Processing data silo: "${dataSiloId}" marking "${requestDataSilos.length}" requests as skipped.`));
|
|
39
|
+
// create a new progress bar instance and use shades_classic theme
|
|
40
|
+
const progressBar = new cli_progress_1.default.SingleBar({}, cli_progress_1.default.Presets.shades_classic);
|
|
41
|
+
let total = 0;
|
|
42
|
+
progressBar.start(requestDataSilos.length, 0);
|
|
43
|
+
await (0, bluebird_1.map)(requestDataSilos, async (requestDataSilo) => {
|
|
44
|
+
await (0, graphql_1.makeGraphQLRequest)(client, graphql_1.CHANGE_REQUEST_DATA_SILO_STATUS, {
|
|
45
|
+
requestDataSiloId: requestDataSilo.id,
|
|
46
|
+
status: 'SKIPPED',
|
|
47
|
+
});
|
|
48
|
+
total += 1;
|
|
49
|
+
progressBar.update(total);
|
|
50
|
+
}, { concurrency });
|
|
51
|
+
progressBar.stop();
|
|
52
|
+
const t1 = new Date().getTime();
|
|
53
|
+
const totalTime = t1 - t0;
|
|
54
|
+
logger_1.logger.info(colors_1.default.green(`Successfully skipped "${requestDataSilos.length}" requests in "${totalTime / 1000}" seconds!`));
|
|
55
|
+
return requestDataSilos.length;
|
|
56
|
+
}
|
|
57
|
+
exports.skipRequestDataSilos = skipRequestDataSilos;
|
|
58
|
+
//# sourceMappingURL=skipRequestDataSilos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skipRequestDataSilos.js","sourceRoot":"","sources":["../../src/requests/skipRequestDataSilos.ts"],"names":[],"mappings":";;;;;;AAAA,uCAA+B;AAC/B,oDAA4B;AAC5B,sCAAmC;AACnC,wCAKoB;AACpB,gEAAuC;AACvC,+DAGqC;AAErC;;;;;GAKG;AACI,KAAK,UAAU,oBAAoB,CAAC,EACzC,UAAU,EACV,IAAI,EACJ,WAAW,GAAG,GAAG,EACjB,YAAY,GAAG,0BAA0B,GAU1C;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;IAEhC,2CAA2C;IAC3C,MAAM,gBAAgB,GAAG,MAAM,IAAA,+BAAqB,EAAC,MAAM,EAAE;QAC3D,UAAU;QACV,8BAA8B;QAC9B,QAAQ,EAAE;YACR,qCAAqB,CAAC,MAAM;YAC5B,qCAAqB,CAAC,OAAO;YAC7B,qCAAqB,CAAC,KAAK;YAC3B,qCAAqB,CAAC,cAAc;YACpC,qCAAqB,CAAC,gBAAgB;SACvC;QACD,eAAe,EAAE,CAAC,6BAAa,CAAC,SAAS,EAAE,6BAAa,CAAC,SAAS,CAAC;KACpE,CAAC,CAAC;IAEH,mBAAmB;IACnB,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CACZ,0BAA0B,UAAU,cAAc,gBAAgB,CAAC,MAAM,wBAAwB,CAClG,CACF,CAAC;IAEF,kEAAkE;IAClE,MAAM,WAAW,GAAG,IAAI,sBAAW,CAAC,SAAS,CAC3C,EAAE,EACF,sBAAW,CAAC,OAAO,CAAC,cAAc,CACnC,CAAC;IAEF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,IAAA,cAAG,EACP,gBAAgB,EAChB,KAAK,EAAE,eAAe,EAAE,EAAE;QACxB,MAAM,IAAA,4BAAkB,EAGrB,MAAM,EAAE,yCAA+B,EAAE;YAC1C,iBAAiB,EAAE,eAAe,CAAC,EAAE;YACrC,MAAM,EAAE,SAAS;SAClB,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,0BAA0B,gBAAgB,CAAC,MAAM,kBAC/C,SAAS,GAAG,IACd,YAAY,CACb,CACF,CAAC;IACF,OAAO,gBAAgB,CAAC,MAAM,CAAC;AACjC,CAAC;AA/ED,oDA+EC"}
|