@transcend-io/cli 6.26.6 → 6.26.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cli-cron-pull-identifiers.js +21 -18
- package/build/cli-cron-pull-identifiers.js.map +1 -1
- package/build/cli-cron-pull-profiles.js +75 -42
- package/build/cli-cron-pull-profiles.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/pullChunkedCustomSiloOutstandingIdentifiers.d.ts +44 -0
- package/build/cron/pullChunkedCustomSiloOutstandingIdentifiers.d.ts.map +1 -0
- package/build/cron/{pullCustomSiloOutstandingIdentifiers.js → pullChunkedCustomSiloOutstandingIdentifiers.js} +36 -16
- package/build/cron/pullChunkedCustomSiloOutstandingIdentifiers.js.map +1 -0
- package/build/cron/pushCronIdentifiersFromCsv.d.ts +3 -1
- package/build/cron/pushCronIdentifiersFromCsv.d.ts.map +1 -1
- package/build/cron/pushCronIdentifiersFromCsv.js +31 -14
- package/build/cron/pushCronIdentifiersFromCsv.js.map +1 -1
- package/build/cron/writeCsv.d.ts +12 -0
- package/build/cron/writeCsv.d.ts.map +1 -1
- package/build/cron/writeCsv.js +17 -6
- package/build/cron/writeCsv.js.map +1 -1
- package/build/enums.d.ts +2 -2
- package/build/enums.d.ts.map +1 -1
- package/build/tsbuildinfo +1 -1
- package/package.json +1 -1
- package/build/cron/pullCustomSiloOutstandingIdentifiers.d.ts +0 -35
- package/build/cron/pullCustomSiloOutstandingIdentifiers.d.ts.map +0 -1
- package/build/cron/pullCustomSiloOutstandingIdentifiers.js.map +0 -1
|
@@ -36,7 +36,7 @@ const requests_1 = require("./requests");
|
|
|
36
36
|
*/
|
|
37
37
|
async function main() {
|
|
38
38
|
// Parse command line arguments
|
|
39
|
-
const { file = './cron-identifiers.csv', transcendUrl = constants_1.DEFAULT_TRANSCEND_API, auth, sombraAuth, dataSiloId, actions, pageLimit = '100', skipRequestCount = false, chunkSize = '
|
|
39
|
+
const { file = './cron-identifiers.csv', transcendUrl = constants_1.DEFAULT_TRANSCEND_API, auth, sombraAuth, dataSiloId, actions, pageLimit = '100', skipRequestCount = false, chunkSize = '10000', } = (0, yargs_parser_1.default)(process.argv.slice(2));
|
|
40
40
|
// Ensure auth is passed
|
|
41
41
|
if (!auth) {
|
|
42
42
|
logger_1.logger.error(colors_1.default.red('A Transcend API key must be provided. You can specify using --auth=$TRANSCEND_API_KEY'));
|
|
@@ -63,34 +63,37 @@ async function main() {
|
|
|
63
63
|
`Expected one of: \n${Object.values(privacy_types_1.RequestAction).join('\n')}`));
|
|
64
64
|
process.exit(1);
|
|
65
65
|
}
|
|
66
|
-
|
|
66
|
+
const parsedPageLimit = parseInt(pageLimit, 10);
|
|
67
67
|
const parsedChunkSize = parseInt(chunkSize, 10);
|
|
68
|
-
if (Number.isNaN(parsedChunkSize) ||
|
|
69
|
-
|
|
68
|
+
if (Number.isNaN(parsedChunkSize) ||
|
|
69
|
+
parsedChunkSize <= 0 ||
|
|
70
|
+
parsedChunkSize % parsedPageLimit !== 0) {
|
|
71
|
+
logger_1.logger.error(colors_1.default.red(`Invalid chunk size: "${chunkSize}". Must be a positive integer that is a multiple of ${parsedPageLimit}.`));
|
|
70
72
|
process.exit(1);
|
|
71
73
|
}
|
|
74
|
+
const { baseName, extension } = (0, cron_1.parseFilePath)(file);
|
|
75
|
+
let fileCount = 0;
|
|
76
|
+
const onSave = (chunk) => {
|
|
77
|
+
const numberedFileName = `${baseName}-${fileCount}${extension}`;
|
|
78
|
+
logger_1.logger.info(colors_1.default.blue(`Saving ${chunk.length} identifiers to file "${numberedFileName}"`));
|
|
79
|
+
const headers = (0, uniq_1.default)(chunk.map((d) => Object.keys(d)).flat());
|
|
80
|
+
(0, cron_1.writeCsv)(numberedFileName, chunk, headers);
|
|
81
|
+
logger_1.logger.info(colors_1.default.green(`Successfully wrote ${chunk.length} identifiers to file "${numberedFileName}"`));
|
|
82
|
+
fileCount += 1;
|
|
83
|
+
return Promise.resolve();
|
|
84
|
+
};
|
|
72
85
|
// Pull down outstanding identifiers
|
|
73
|
-
|
|
86
|
+
await (0, cron_1.pullChunkedCustomSiloOutstandingIdentifiers)({
|
|
74
87
|
transcendUrl,
|
|
75
|
-
|
|
88
|
+
apiPageSize: parsedPageLimit,
|
|
89
|
+
savePageSize: parsedChunkSize,
|
|
90
|
+
onSave,
|
|
76
91
|
actions: parsedActions,
|
|
77
92
|
auth,
|
|
78
93
|
sombraAuth,
|
|
79
94
|
dataSiloId,
|
|
80
95
|
skipRequestCount: skipRequestCount === 'true',
|
|
81
96
|
});
|
|
82
|
-
// Write CSV (split into multiple files if too large)
|
|
83
|
-
const headers = (0, uniq_1.default)(identifiersFormattedForCsv.map((d) => Object.keys(d)).flat());
|
|
84
|
-
const writtenFiles = await (0, cron_1.writeLargeCsv)(file, identifiersFormattedForCsv, headers, parsedChunkSize);
|
|
85
|
-
if (writtenFiles.length === 1) {
|
|
86
|
-
logger_1.logger.info(colors_1.default.green(`Successfully wrote ${identifiersFormattedForCsv.length} identifiers to file "${file}"`));
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
logger_1.logger.info(colors_1.default.green(`Successfully wrote ${identifiersFormattedForCsv.length} identifiers to ${writtenFiles.length} files:`));
|
|
90
|
-
writtenFiles.forEach((fileName) => {
|
|
91
|
-
logger_1.logger.info(colors_1.default.green(` - ${fileName}`));
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
97
|
}
|
|
95
98
|
main();
|
|
96
99
|
//# 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,uDAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"cli-cron-pull-identifiers.js","sourceRoot":"","sources":["../src/cli-cron-pull-identifiers.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,13 @@ const yargs_parser_1 = __importDefault(require("yargs-parser"));
|
|
|
8
8
|
const colors_1 = __importDefault(require("colors"));
|
|
9
9
|
const logger_1 = require("./logger");
|
|
10
10
|
const uniq_1 = __importDefault(require("lodash/uniq"));
|
|
11
|
-
const
|
|
11
|
+
const pullChunkedCustomSiloOutstandingIdentifiers_1 = require("./cron/pullChunkedCustomSiloOutstandingIdentifiers");
|
|
12
12
|
const privacy_types_1 = require("@transcend-io/privacy-types");
|
|
13
13
|
const constants_1 = require("./constants");
|
|
14
14
|
const requests_1 = require("./requests");
|
|
15
15
|
const bluebird_1 = require("bluebird");
|
|
16
16
|
const graphql_1 = require("./graphql");
|
|
17
|
+
const writeCsv_1 = require("./cron/writeCsv");
|
|
17
18
|
/**
|
|
18
19
|
* This is a temporary script that can be removed after the launch of workflows v2
|
|
19
20
|
* TODO: https://transcend.height.app/T-39035 - remove this
|
|
@@ -39,7 +40,7 @@ const graphql_1 = require("./graphql");
|
|
|
39
40
|
*/
|
|
40
41
|
async function main() {
|
|
41
42
|
// Parse command line arguments
|
|
42
|
-
const { file = './cron-identifiers.csv', fileTarget = './cron-identifiers-target.csv', transcendUrl = constants_1.DEFAULT_TRANSCEND_API, auth, sombraAuth, cronDataSiloId, targetDataSiloId, actions, pageLimit = '100', } = (0, yargs_parser_1.default)(process.argv.slice(2));
|
|
43
|
+
const { file = './cron-identifiers.csv', fileTarget = './cron-identifiers-target.csv', transcendUrl = constants_1.DEFAULT_TRANSCEND_API, auth, sombraAuth, cronDataSiloId, targetDataSiloId, actions, skipRequestCount = false, pageLimit = '100', chunkSize = '10000', } = (0, yargs_parser_1.default)(process.argv.slice(2));
|
|
43
44
|
// Ensure auth is passed
|
|
44
45
|
if (!auth) {
|
|
45
46
|
logger_1.logger.error(colors_1.default.red('A Transcend API key must be provided. You can specify using --auth=$TRANSCEND_API_KEY'));
|
|
@@ -60,6 +61,9 @@ async function main() {
|
|
|
60
61
|
logger_1.logger.error(colors_1.default.red('At least one action must be provided. You can specify using --actions=ERASURE'));
|
|
61
62
|
process.exit(1);
|
|
62
63
|
}
|
|
64
|
+
if (skipRequestCount === 'true') {
|
|
65
|
+
logger_1.logger.info(colors_1.default.yellow('Skipping request count as requested. This may help speed up the call.'));
|
|
66
|
+
}
|
|
63
67
|
// Validate actions
|
|
64
68
|
const parsedActions = (0, requests_1.splitCsvToList)(actions);
|
|
65
69
|
const invalidActions = parsedActions.filter(
|
|
@@ -70,50 +74,79 @@ async function main() {
|
|
|
70
74
|
`Expected one of: \n${Object.values(privacy_types_1.RequestAction).join('\n')}`));
|
|
71
75
|
process.exit(1);
|
|
72
76
|
}
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
});
|
|
82
|
-
// Grab the requestIds from the list of silos to process
|
|
83
|
-
const requestIds = identifiersFormattedForCsv.map((d) => d.requestId);
|
|
77
|
+
const parsedPageLimit = parseInt(pageLimit, 10);
|
|
78
|
+
const parsedChunkSize = parseInt(chunkSize, 10);
|
|
79
|
+
if (Number.isNaN(parsedChunkSize) ||
|
|
80
|
+
parsedChunkSize <= 0 ||
|
|
81
|
+
parsedChunkSize % parsedPageLimit !== 0) {
|
|
82
|
+
logger_1.logger.error(colors_1.default.red(`Invalid chunk size: "${chunkSize}". Must be a positive integer that is a multiple of ${parsedPageLimit}.`));
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
84
85
|
// Create GraphQL client to connect to Transcend backend
|
|
85
86
|
const client = (0, graphql_1.buildTranscendGraphQLClient)(transcendUrl, auth);
|
|
86
|
-
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
87
|
+
const { baseName, extension } = (0, writeCsv_1.parseFilePath)(file);
|
|
88
|
+
const { baseName: baseNameTarget, extension: extensionTarget } = (0, writeCsv_1.parseFilePath)(fileTarget);
|
|
89
|
+
let allIdentifiersCount = 0;
|
|
90
|
+
let allTargetIdentifiersCount = 0;
|
|
91
|
+
let fileCount = 0;
|
|
92
|
+
// Create onSave callback to handle chunked processing
|
|
93
|
+
const onSave = async (chunk) => {
|
|
94
|
+
// Add to all identifiers
|
|
95
|
+
allIdentifiersCount += chunk.length;
|
|
96
|
+
// Get unique request IDs from this chunk
|
|
97
|
+
const requestIds = chunk.map((d) => d.requestId);
|
|
98
|
+
const uniqueRequestIds = (0, uniq_1.default)(requestIds);
|
|
99
|
+
// Pull down target identifiers for this chunk
|
|
100
|
+
const results = await (0, bluebird_1.map)(uniqueRequestIds, async (requestId) => {
|
|
101
|
+
const results = await (0, graphql_1.fetchRequestFilesForRequest)(client, {
|
|
102
|
+
requestId,
|
|
103
|
+
dataSiloId: targetDataSiloId,
|
|
104
|
+
});
|
|
105
|
+
return results.map(({ fileName, remoteId }) => {
|
|
106
|
+
var _a;
|
|
107
|
+
if (!remoteId) {
|
|
108
|
+
throw new Error(`Failed to find remoteId for ${fileName} request: ${requestId}`);
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
RecordId: remoteId,
|
|
112
|
+
Object: (_a = fileName
|
|
113
|
+
.replace('.json', '')
|
|
114
|
+
.split('/')
|
|
115
|
+
.pop()) === null || _a === void 0 ? void 0 : _a.replace(' Information', ''),
|
|
116
|
+
Comment: 'Customer data deletion request submitted via transcend.io',
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
}, {
|
|
120
|
+
concurrency: 10,
|
|
105
121
|
});
|
|
106
|
-
|
|
107
|
-
|
|
122
|
+
allTargetIdentifiersCount += results.flat().length;
|
|
123
|
+
// Write the identifiers and target identifiers to CSV
|
|
124
|
+
const headers = (0, uniq_1.default)(chunk.map((d) => Object.keys(d)).flat());
|
|
125
|
+
const numberedFileName = `${baseName}-${fileCount}${extension}`;
|
|
126
|
+
const numberedFileNameTarget = `${baseNameTarget}-${fileCount}${extensionTarget}`;
|
|
127
|
+
(0, writeCsv_1.writeCsv)(numberedFileName, chunk, headers);
|
|
128
|
+
logger_1.logger.info(colors_1.default.green(`Successfully wrote ${chunk.length} identifiers to file "${file}"`));
|
|
129
|
+
const targetIdentifiers = results.flat();
|
|
130
|
+
const headers2 = (0, uniq_1.default)(targetIdentifiers.map((d) => Object.keys(d)).flat());
|
|
131
|
+
(0, writeCsv_1.writeCsv)(numberedFileNameTarget, targetIdentifiers, headers2);
|
|
132
|
+
logger_1.logger.info(colors_1.default.green(`Successfully wrote ${targetIdentifiers.length} identifiers to file "${fileTarget}"`));
|
|
133
|
+
logger_1.logger.info(colors_1.default.blue(`Processed chunk of ${chunk.length} identifiers, found ${targetIdentifiers.length} target identifiers`));
|
|
134
|
+
fileCount += 1;
|
|
135
|
+
};
|
|
136
|
+
// Pull down outstanding identifiers using the new chunked function
|
|
137
|
+
await (0, pullChunkedCustomSiloOutstandingIdentifiers_1.pullChunkedCustomSiloOutstandingIdentifiers)({
|
|
138
|
+
dataSiloId: cronDataSiloId,
|
|
139
|
+
auth,
|
|
140
|
+
sombraAuth,
|
|
141
|
+
actions: parsedActions,
|
|
142
|
+
apiPageSize: parsedPageLimit,
|
|
143
|
+
savePageSize: parsedChunkSize,
|
|
144
|
+
onSave,
|
|
145
|
+
transcendUrl,
|
|
146
|
+
skipRequestCount: skipRequestCount === 'true',
|
|
108
147
|
});
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
(0, cron_1.writeCsv)(file, identifiersFormattedForCsv, headers);
|
|
112
|
-
logger_1.logger.info(colors_1.default.green(`Successfully wrote ${identifiersFormattedForCsv.length} identifiers to file "${file}"`));
|
|
113
|
-
const targetIdentifiers = results.flat();
|
|
114
|
-
const headers2 = (0, uniq_1.default)(targetIdentifiers.map((d) => Object.keys(d)).flat());
|
|
115
|
-
(0, cron_1.writeCsv)(fileTarget, targetIdentifiers, headers2);
|
|
116
|
-
logger_1.logger.info(colors_1.default.green(`Successfully wrote ${targetIdentifiers.length} identifiers to file "${fileTarget}"`));
|
|
148
|
+
logger_1.logger.info(colors_1.default.green(`Successfully wrote ${allIdentifiersCount} identifiers to file "${file}"`));
|
|
149
|
+
logger_1.logger.info(colors_1.default.green(`Successfully wrote ${allTargetIdentifiersCount} identifiers to file "${fileTarget}"`));
|
|
117
150
|
}
|
|
118
151
|
main();
|
|
119
152
|
//# sourceMappingURL=cli-cron-pull-profiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-cron-pull-profiles.js","sourceRoot":"","sources":["../src/cli-cron-pull-profiles.ts"],"names":[],"mappings":";;;;;;AAEA,gEAAiC;AACjC,oDAA4B;AAE5B,qCAAkC;AAClC,uDAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"cli-cron-pull-profiles.js","sourceRoot":"","sources":["../src/cli-cron-pull-profiles.ts"],"names":[],"mappings":"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"}
|
package/build/cron/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from './pullCustomSiloOutstandingIdentifiers';
|
|
2
1
|
export * from './pullCronPageOfIdentifiers';
|
|
3
2
|
export * from './writeCsv';
|
|
4
3
|
export * from './pushCronIdentifiersFromCsv';
|
|
5
4
|
export * from './markCronIdentifierCompleted';
|
|
6
5
|
export * from './markRequestDataSiloIdsCompleted';
|
|
6
|
+
export * from './pullChunkedCustomSiloOutstandingIdentifiers';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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,6BAA6B,CAAC;AAC5C,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+CAA+C,CAAC"}
|
package/build/cron/index.js
CHANGED
|
@@ -14,10 +14,10 @@ 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("./pullCustomSiloOutstandingIdentifiers"), exports);
|
|
18
17
|
__exportStar(require("./pullCronPageOfIdentifiers"), exports);
|
|
19
18
|
__exportStar(require("./writeCsv"), exports);
|
|
20
19
|
__exportStar(require("./pushCronIdentifiersFromCsv"), exports);
|
|
21
20
|
__exportStar(require("./markCronIdentifierCompleted"), exports);
|
|
22
21
|
__exportStar(require("./markRequestDataSiloIdsCompleted"), exports);
|
|
22
|
+
__exportStar(require("./pullChunkedCustomSiloOutstandingIdentifiers"), exports);
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
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,8DAA4C;AAC5C,6CAA2B;AAC3B,+DAA6C;AAC7C,gEAA8C;AAC9C,oEAAkD;AAClD,gFAA8D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { CronIdentifier } from './pullCronPageOfIdentifiers';
|
|
2
|
+
import { RequestAction } from '@transcend-io/privacy-types';
|
|
3
|
+
/**
|
|
4
|
+
* A CSV formatted identifier
|
|
5
|
+
*/
|
|
6
|
+
export type CsvFormattedIdentifier = {
|
|
7
|
+
[k in string]: string | null | boolean | number;
|
|
8
|
+
};
|
|
9
|
+
export interface CronIdentifierWithAction extends CronIdentifier {
|
|
10
|
+
/** The request action that the identifier relates to */
|
|
11
|
+
action: RequestAction;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Pull the set of identifiers outstanding for a cron or AVC integration
|
|
15
|
+
*
|
|
16
|
+
* This function is designed to be used in a loop, and will call the onSave callback
|
|
17
|
+
* with a chunk of identifiers when the savePageSize is reached.
|
|
18
|
+
*
|
|
19
|
+
* @param options - Options
|
|
20
|
+
*/
|
|
21
|
+
export declare function pullChunkedCustomSiloOutstandingIdentifiers({ dataSiloId, auth, sombraAuth, actions, apiPageSize, savePageSize, onSave, transcendUrl, skipRequestCount, }: {
|
|
22
|
+
/** Transcend API key authentication */
|
|
23
|
+
auth: string;
|
|
24
|
+
/** Data Silo ID to pull down jobs for */
|
|
25
|
+
dataSiloId: string;
|
|
26
|
+
/** The request actions to fetch */
|
|
27
|
+
actions: RequestAction[];
|
|
28
|
+
/** How many identifiers to pull in a single call to the backend */
|
|
29
|
+
apiPageSize: number;
|
|
30
|
+
/** How many identifiers to save at a time (usually to a CSV file, should be a multiple of apiPageSize) */
|
|
31
|
+
savePageSize: number;
|
|
32
|
+
/** Callback function called when a chunk of identifiers is ready to be saved */
|
|
33
|
+
onSave: (chunk: CsvFormattedIdentifier[]) => Promise<void>;
|
|
34
|
+
/** API URL for Transcend backend */
|
|
35
|
+
transcendUrl?: string;
|
|
36
|
+
/** Sombra API key authentication */
|
|
37
|
+
sombraAuth?: string;
|
|
38
|
+
/** Skip request count */
|
|
39
|
+
skipRequestCount?: boolean;
|
|
40
|
+
}): Promise<{
|
|
41
|
+
/** Raw Identifiers */
|
|
42
|
+
identifiers: CronIdentifierWithAction[];
|
|
43
|
+
}>;
|
|
44
|
+
//# sourceMappingURL=pullChunkedCustomSiloOutstandingIdentifiers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pullChunkedCustomSiloOutstandingIdentifiers.d.ts","sourceRoot":"","sources":["../../src/cron/pullChunkedCustomSiloOutstandingIdentifiers.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,cAAc,EACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI5D;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;KAClC,CAAC,IAAI,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM;CAChD,CAAC;AAEF,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D,wDAAwD;IACxD,MAAM,EAAE,aAAa,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAsB,2CAA2C,CAAC,EAChE,UAAU,EACV,IAAI,EACJ,UAAU,EACV,OAAO,EACP,WAAiB,EACjB,YAAmB,EACnB,MAAM,EACN,YAAoC,EACpC,gBAAwB,GACzB,EAAE;IACD,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,0GAA0G;IAC1G,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,MAAM,EAAE,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC;IACV,sBAAsB;IACtB,WAAW,EAAE,wBAAwB,EAAE,CAAC;CACzC,CAAC,CAkID"}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.pullChunkedCustomSiloOutstandingIdentifiers = void 0;
|
|
7
7
|
const graphql_1 = require("../graphql");
|
|
8
8
|
const colors_1 = __importDefault(require("colors"));
|
|
9
9
|
const cli_progress_1 = __importDefault(require("cli-progress"));
|
|
@@ -14,9 +14,16 @@ const bluebird_1 = require("bluebird");
|
|
|
14
14
|
/**
|
|
15
15
|
* Pull the set of identifiers outstanding for a cron or AVC integration
|
|
16
16
|
*
|
|
17
|
+
* This function is designed to be used in a loop, and will call the onSave callback
|
|
18
|
+
* with a chunk of identifiers when the savePageSize is reached.
|
|
19
|
+
*
|
|
17
20
|
* @param options - Options
|
|
18
21
|
*/
|
|
19
|
-
async function
|
|
22
|
+
async function pullChunkedCustomSiloOutstandingIdentifiers({ dataSiloId, auth, sombraAuth, actions, apiPageSize = 100, savePageSize = 1000, onSave, transcendUrl = constants_1.DEFAULT_TRANSCEND_API, skipRequestCount = false, }) {
|
|
23
|
+
// Validate savePageSize
|
|
24
|
+
if (savePageSize % apiPageSize !== 0) {
|
|
25
|
+
throw new Error(`savePageSize must be a multiple of apiPageSize. savePageSize: ${savePageSize}, apiPageSize: ${apiPageSize}`);
|
|
26
|
+
}
|
|
20
27
|
// Create sombra instance to communicate with
|
|
21
28
|
const sombra = await (0, graphql_1.createSombraGotInstance)(transcendUrl, auth, sombraAuth);
|
|
22
29
|
// Create GraphQL client to connect to Transcend backend
|
|
@@ -36,6 +43,8 @@ async function pullCustomSiloOutstandingIdentifiers({ dataSiloId, auth, sombraAu
|
|
|
36
43
|
const foundRequestIds = new Set();
|
|
37
44
|
// identifiers found in total
|
|
38
45
|
const identifiers = [];
|
|
46
|
+
// current chunk of identifiers to be saved
|
|
47
|
+
let currentChunk = [];
|
|
39
48
|
// map over each action
|
|
40
49
|
if (!skipRequestCount) {
|
|
41
50
|
progressBar.start(totalRequestCount, 0);
|
|
@@ -48,19 +57,33 @@ async function pullCustomSiloOutstandingIdentifiers({ dataSiloId, auth, sombraAu
|
|
|
48
57
|
// eslint-disable-next-line no-await-in-loop
|
|
49
58
|
const pageIdentifiers = await (0, pullCronPageOfIdentifiers_1.pullCronPageOfIdentifiers)(sombra, {
|
|
50
59
|
dataSiloId,
|
|
51
|
-
limit:
|
|
60
|
+
limit: apiPageSize,
|
|
52
61
|
offset,
|
|
53
62
|
requestType: action,
|
|
54
63
|
});
|
|
55
|
-
|
|
64
|
+
const identifiersWithAction = pageIdentifiers.map((identifier) => {
|
|
56
65
|
foundRequestIds.add(identifier.requestId);
|
|
57
66
|
return {
|
|
58
67
|
...identifier,
|
|
59
68
|
action,
|
|
60
69
|
};
|
|
70
|
+
});
|
|
71
|
+
const csvFormattedIdentifiers = identifiersWithAction.map(({ attributes, ...identifier }) => ({
|
|
72
|
+
...identifier,
|
|
73
|
+
...attributes.reduce((acc, val) => Object.assign(acc, {
|
|
74
|
+
[val.key]: val.values.join(','),
|
|
75
|
+
}), {}),
|
|
61
76
|
}));
|
|
62
|
-
|
|
63
|
-
|
|
77
|
+
identifiers.push(...identifiersWithAction);
|
|
78
|
+
currentChunk.push(...csvFormattedIdentifiers);
|
|
79
|
+
// Check if we've reached the savePageSize and call the onSave callback
|
|
80
|
+
if (currentChunk.length >= savePageSize) {
|
|
81
|
+
// eslint-disable-next-line no-await-in-loop
|
|
82
|
+
await onSave(currentChunk);
|
|
83
|
+
currentChunk = [];
|
|
84
|
+
}
|
|
85
|
+
shouldContinue = pageIdentifiers.length === apiPageSize;
|
|
86
|
+
offset += apiPageSize;
|
|
64
87
|
if (!skipRequestCount) {
|
|
65
88
|
progressBar.update(foundRequestIds.size);
|
|
66
89
|
}
|
|
@@ -69,20 +92,17 @@ async function pullCustomSiloOutstandingIdentifiers({ dataSiloId, auth, sombraAu
|
|
|
69
92
|
}
|
|
70
93
|
}
|
|
71
94
|
});
|
|
95
|
+
// Save any remaining identifiers in the current chunk
|
|
96
|
+
if (currentChunk.length > 0) {
|
|
97
|
+
await onSave(currentChunk);
|
|
98
|
+
}
|
|
72
99
|
if (!skipRequestCount) {
|
|
73
100
|
progressBar.stop();
|
|
74
101
|
}
|
|
75
102
|
const t1 = new Date().getTime();
|
|
76
103
|
const totalTime = t1 - t0;
|
|
77
104
|
logger_1.logger.info(colors_1.default.green(`Successfully pulled ${identifiers.length} outstanding identifiers from ${foundRequestIds.size} requests in "${totalTime / 1000}" seconds!`));
|
|
78
|
-
|
|
79
|
-
const data = identifiers.map(({ attributes, ...identifier }) => ({
|
|
80
|
-
...identifier,
|
|
81
|
-
...attributes.reduce((acc, val) => Object.assign(acc, {
|
|
82
|
-
[val.key]: val.values.join(','),
|
|
83
|
-
}), {}),
|
|
84
|
-
}));
|
|
85
|
-
return { identifiers, identifiersFormattedForCsv: data };
|
|
105
|
+
return { identifiers };
|
|
86
106
|
}
|
|
87
|
-
exports.
|
|
88
|
-
//# sourceMappingURL=
|
|
107
|
+
exports.pullChunkedCustomSiloOutstandingIdentifiers = pullChunkedCustomSiloOutstandingIdentifiers;
|
|
108
|
+
//# sourceMappingURL=pullChunkedCustomSiloOutstandingIdentifiers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pullChunkedCustomSiloOutstandingIdentifiers.js","sourceRoot":"","sources":["../../src/cron/pullChunkedCustomSiloOutstandingIdentifiers.ts"],"names":[],"mappings":";;;;;;AAAA,wCAIoB;AACpB,oDAA4B;AAC5B,gEAAuC;AACvC,2EAGqC;AAErC,sCAAmC;AACnC,4CAAqD;AACrD,uCAAqC;AAarC;;;;;;;GAOG;AACI,KAAK,UAAU,2CAA2C,CAAC,EAChE,UAAU,EACV,IAAI,EACJ,UAAU,EACV,OAAO,EACP,WAAW,GAAG,GAAG,EACjB,YAAY,GAAG,IAAI,EACnB,MAAM,EACN,YAAY,GAAG,iCAAqB,EACpC,gBAAgB,GAAG,KAAK,GAoBzB;IAIC,wBAAwB;IACxB,IAAI,YAAY,GAAG,WAAW,KAAK,CAAC,EAAE;QACpC,MAAM,IAAI,KAAK,CACb,iEAAiE,YAAY,kBAAkB,WAAW,EAAE,CAC7G,CAAC;KACH;IAED,6CAA6C;IAC7C,MAAM,MAAM,GAAG,MAAM,IAAA,iCAAuB,EAAC,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAE7E,wDAAwD;IACxD,MAAM,MAAM,GAAG,IAAA,qCAA2B,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAE/D,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,gBAAgB,EAAE;QACrB,iBAAiB,GAAG,MAAM,IAAA,yCAA+B,EAAC,MAAM,EAAE;YAChE,UAAU;SACX,CAAC,CAAC;KACJ;IAED,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CACZ,WACE,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAC7B,mCAAmC;QACjC,mBAAmB,UAAU,4BAA4B,OAAO,CAAC,IAAI,CACnE,MAAM,CACP,GAAG,CACP,CACF,CAAC;IAEF,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;IACF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAE1C,6BAA6B;IAC7B,MAAM,WAAW,GAA+B,EAAE,CAAC;IACnD,2CAA2C;IAC3C,IAAI,YAAY,GAA6B,EAAE,CAAC;IAEhD,uBAAuB;IACvB,IAAI,CAAC,gBAAgB,EAAE;QACrB,WAAW,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;KACzC;IACD,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,WAAW;gBAClB,MAAM;gBACN,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC;YAEH,MAAM,qBAAqB,GACzB,eAAe,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBACjC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAC1C,OAAO;oBACL,GAAG,UAAU;oBACb,MAAM;iBACP,CAAC;YACJ,CAAC,CAAC,CAAC;YAEL,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,GAAG,CACvD,CAAC,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;gBAClC,GAAG,UAAU;gBACb,GAAG,UAAU,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CACX,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;oBACjB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;iBAChC,CAAC,EACJ,EAAE,CACH;aACF,CAAC,CACH,CAAC;YAEF,WAAW,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;YAC3C,YAAY,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,CAAC;YAE9C,uEAAuE;YACvE,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,EAAE;gBACvC,4CAA4C;gBAC5C,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC3B,YAAY,GAAG,EAAE,CAAC;aACnB;YAED,cAAc,GAAG,eAAe,CAAC,MAAM,KAAK,WAAW,CAAC;YACxD,MAAM,IAAI,WAAW,CAAC;YACtB,IAAI,CAAC,gBAAgB,EAAE;gBACrB,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;aAC1C;iBAAM;gBACL,eAAM,CAAC,IAAI,CACT,gBAAM,CAAC,OAAO,CACZ,UAAU,eAAe,CAAC,MAAM,gCAAgC,eAAe,CAAC,IAAI,WAAW,CAChG,CACF,CAAC;aACH;SACF;IACH,CAAC,CAAC,CAAC;IAEH,sDAAsD;IACtD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;KAC5B;IAED,IAAI,CAAC,gBAAgB,EAAE;QACrB,WAAW,CAAC,IAAI,EAAE,CAAC;KACpB;IACD,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,uBAAuB,WAAW,CAAC,MAAM,iCACvC,eAAe,CAAC,IAClB,iBAAiB,SAAS,GAAG,IAAI,YAAY,CAC9C,CACF,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC;AAlKD,kGAkKC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @param options - Options
|
|
5
5
|
* @returns Number of items marked as completed
|
|
6
6
|
*/
|
|
7
|
-
export declare function pushCronIdentifiersFromCsv({ file, dataSiloId, auth, sombraAuth, concurrency, transcendUrl, }: {
|
|
7
|
+
export declare function pushCronIdentifiersFromCsv({ file, dataSiloId, auth, sombraAuth, concurrency, transcendUrl, sleepSeconds, }: {
|
|
8
8
|
/** CSV file path */
|
|
9
9
|
file: string;
|
|
10
10
|
/** Transcend API key authentication */
|
|
@@ -17,5 +17,7 @@ export declare function pushCronIdentifiersFromCsv({ file, dataSiloId, auth, som
|
|
|
17
17
|
transcendUrl?: string;
|
|
18
18
|
/** Sombra API key authentication */
|
|
19
19
|
sombraAuth?: string;
|
|
20
|
+
/** Sleep time in seconds between chunks of concurrent calls */
|
|
21
|
+
sleepSeconds?: number;
|
|
20
22
|
}): Promise<number>;
|
|
21
23
|
//# sourceMappingURL=pushCronIdentifiersFromCsv.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushCronIdentifiersFromCsv.d.ts","sourceRoot":"","sources":["../../src/cron/pushCronIdentifiersFromCsv.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pushCronIdentifiersFromCsv.d.ts","sourceRoot":"","sources":["../../src/cron/pushCronIdentifiersFromCsv.ts"],"names":[],"mappings":"AAaA;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,EAC/C,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,UAAU,EACV,WAAiB,EACjB,YAAoC,EACpC,YAAiB,GAClB,EAAE;IACD,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,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;IACtB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0GlB"}
|
|
@@ -12,13 +12,14 @@ const cli_progress_1 = __importDefault(require("cli-progress"));
|
|
|
12
12
|
const logger_1 = require("../logger");
|
|
13
13
|
const requests_1 = require("../requests");
|
|
14
14
|
const constants_1 = require("../constants");
|
|
15
|
+
const chunk_1 = __importDefault(require("lodash/chunk"));
|
|
15
16
|
/**
|
|
16
17
|
* Given a CSV of cron job outputs, mark all requests as completed in Transcend
|
|
17
18
|
*
|
|
18
19
|
* @param options - Options
|
|
19
20
|
* @returns Number of items marked as completed
|
|
20
21
|
*/
|
|
21
|
-
async function pushCronIdentifiersFromCsv({ file, dataSiloId, auth, sombraAuth, concurrency = 100, transcendUrl = constants_1.DEFAULT_TRANSCEND_API, }) {
|
|
22
|
+
async function pushCronIdentifiersFromCsv({ file, dataSiloId, auth, sombraAuth, concurrency = 100, transcendUrl = constants_1.DEFAULT_TRANSCEND_API, sleepSeconds = 10, }) {
|
|
22
23
|
// Create sombra instance to communicate with
|
|
23
24
|
const sombra = await (0, graphql_1.createSombraGotInstance)(transcendUrl, auth, sombraAuth);
|
|
24
25
|
// Read from CSV
|
|
@@ -34,22 +35,38 @@ async function pushCronIdentifiersFromCsv({ file, dataSiloId, auth, sombraAuth,
|
|
|
34
35
|
let failureCount = 0;
|
|
35
36
|
let errorCount = 0;
|
|
36
37
|
progressBar.start(activeResults.length, 0);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
// Process in chunks with sleep intervals
|
|
39
|
+
const chunks = (0, chunk_1.default)(activeResults, concurrency);
|
|
40
|
+
const totalChunks = chunks.length;
|
|
41
|
+
const processChunk = async (items, chunkIndex) => {
|
|
42
|
+
logger_1.logger.info(colors_1.default.blue(`Processing chunk ${chunkIndex + 1}/${totalChunks} (${chunk_1.default.length} items)`));
|
|
43
|
+
// Process the items of the chunk concurrently
|
|
44
|
+
await (0, bluebird_1.map)(items, async (identifier) => {
|
|
45
|
+
try {
|
|
46
|
+
const success = await (0, markCronIdentifierCompleted_1.markCronIdentifierCompleted)(sombra, identifier);
|
|
47
|
+
if (success) {
|
|
48
|
+
successCount += 1;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
failureCount += 1;
|
|
52
|
+
}
|
|
42
53
|
}
|
|
43
|
-
|
|
44
|
-
|
|
54
|
+
catch (e) {
|
|
55
|
+
logger_1.logger.error(colors_1.default.red(`Error notifying Transcend for identifier "${identifier.identifier}" - ${e === null || e === void 0 ? void 0 : e.message}`));
|
|
56
|
+
errorCount += 1;
|
|
45
57
|
}
|
|
58
|
+
progressBar.update(successCount + failureCount);
|
|
59
|
+
});
|
|
60
|
+
// Sleep between chunks (except for the last chunk)
|
|
61
|
+
if (sleepSeconds > 0 && chunkIndex < totalChunks - 1) {
|
|
62
|
+
logger_1.logger.info(colors_1.default.yellow(`Sleeping for ${sleepSeconds}s before next chunk...`));
|
|
63
|
+
await new Promise((resolve) => {
|
|
64
|
+
setTimeout(resolve, sleepSeconds * 1000);
|
|
65
|
+
});
|
|
46
66
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
progressBar.update(successCount + failureCount);
|
|
52
|
-
}, { concurrency });
|
|
67
|
+
};
|
|
68
|
+
// Process all chunks sequentially
|
|
69
|
+
await (0, bluebird_1.mapSeries)(chunks, processChunk);
|
|
53
70
|
progressBar.stop();
|
|
54
71
|
const t1 = new Date().getTime();
|
|
55
72
|
const totalTime = t1 - t0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushCronIdentifiersFromCsv.js","sourceRoot":"","sources":["../../src/cron/pushCronIdentifiersFromCsv.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"pushCronIdentifiersFromCsv.js","sourceRoot":"","sources":["../../src/cron/pushCronIdentifiersFromCsv.ts"],"names":[],"mappings":"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"}
|
package/build/cron/writeCsv.d.ts
CHANGED
|
@@ -23,6 +23,18 @@ export declare function appendCsvSync(filePath: string, data: ObjByString[]): vo
|
|
|
23
23
|
* @param headers - Headers
|
|
24
24
|
*/
|
|
25
25
|
export declare function writeCsv(filePath: string, data: ObjByString[], headers?: boolean | string[]): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Parse a file path into a base name and extension
|
|
28
|
+
*
|
|
29
|
+
* @param filePath - File path to parse
|
|
30
|
+
* @returns Base name and extension
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseFilePath(filePath: string): {
|
|
33
|
+
/** Base name of the file */
|
|
34
|
+
baseName: string;
|
|
35
|
+
/** Extension of the file */
|
|
36
|
+
extension: string;
|
|
37
|
+
};
|
|
26
38
|
/**
|
|
27
39
|
* Write a large CSV dataset to multiple files to avoid file size limits
|
|
28
40
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeCsv.d.ts","sourceRoot":"","sources":["../../src/cron/writeCsv.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAcvD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,WAAW,EAAE,EACnB,OAAO,EAAE,MAAM,EAAE,GAChB,IAAI,CAaN;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAWzE;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,WAAW,EAAE,EACnB,OAAO,GAAE,OAAO,GAAG,MAAM,EAAS,GACjC,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,WAAW,EAAE,EACnB,OAAO,GAAE,OAAO,GAAG,MAAM,EAAS,EAClC,SAAS,SAAS,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"writeCsv.d.ts","sourceRoot":"","sources":["../../src/cron/writeCsv.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAcvD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,WAAW,EAAE,EACnB,OAAO,EAAE,MAAM,EAAE,GAChB,IAAI,CAaN;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,CAWzE;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,WAAW,EAAE,EACnB,OAAO,GAAE,OAAO,GAAG,MAAM,EAAS,GACjC,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;IAC/C,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB,CAOA;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,WAAW,EAAE,EACnB,OAAO,GAAE,OAAO,GAAG,MAAM,EAAS,EAClC,SAAS,SAAS,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CA2BnB"}
|