@ellipticltd/aml-utils 0.15.19 → 0.15.20
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/.eslintrc.js +22 -0
- package/dist/libs/aml-utils/libs/aml-utils/README.md +19 -0
- package/jest.config.ts +13 -0
- package/lib/errors/errors.js +30 -19
- package/lib/errors/errors.spec.js +49 -0
- package/lib/file-parser/__tests/parse-row.spec.js +34 -0
- package/lib/file-parser/__tests/sanitize-rows.spec.js +85 -0
- package/lib/file-parser/errors.ts +6 -0
- package/lib/file-parser/file-parser.ts +67 -0
- package/lib/file-parser/parse-row.ts +46 -0
- package/lib/file-parser/sanitizeRows.ts +22 -0
- package/lib/formatting/formatting.js +12 -11
- package/lib/formatting/formatting.spec.js +47 -0
- package/lib/{index.d.ts → index.ts} +1 -0
- package/lib/middleware/middleware.js +17 -14
- package/lib/orm-helpers/ormHelpers.js +9 -7
- package/lib/orm-helpers/ormHelpers.spec.js +47 -0
- package/lib/structured-file-parser/errors.ts +25 -0
- package/lib/structured-file-parser/parse-row.ts +46 -0
- package/lib/structured-file-parser/sanitize-rows.ts +17 -0
- package/lib/structured-file-parser/structured-file-parser.ts +129 -0
- package/lib/types/types.js +200 -190
- package/lib/validations/validations.js +465 -452
- package/lib/validations/validations.spec.js +869 -0
- package/package.json +1 -15
- package/project.json +55 -0
- package/tsconfig.json +13 -0
- package/tsconfig.lib.json +13 -0
- package/tsconfig.spec.json +10 -0
- package/lib/errors/errors.d.ts +0 -9
- package/lib/errors/errors.js.map +0 -1
- package/lib/file-parser/errors.d.ts +0 -3
- package/lib/file-parser/errors.js +0 -11
- package/lib/file-parser/errors.js.map +0 -1
- package/lib/file-parser/file-parser.d.ts +0 -6
- package/lib/file-parser/file-parser.js +0 -60
- package/lib/file-parser/file-parser.js.map +0 -1
- package/lib/file-parser/parse-row.d.ts +0 -2
- package/lib/file-parser/parse-row.js +0 -40
- package/lib/file-parser/parse-row.js.map +0 -1
- package/lib/file-parser/sanitizeRows.d.ts +0 -5
- package/lib/file-parser/sanitizeRows.js +0 -15
- package/lib/file-parser/sanitizeRows.js.map +0 -1
- package/lib/formatting/formatting.d.ts +0 -2
- package/lib/formatting/formatting.js.map +0 -1
- package/lib/index.js +0 -21
- package/lib/index.js.map +0 -1
- package/lib/middleware/middleware.d.ts +0 -4
- package/lib/middleware/middleware.js.map +0 -1
- package/lib/orm-helpers/ormHelpers.d.ts +0 -1
- package/lib/orm-helpers/ormHelpers.js.map +0 -1
- package/lib/structured-file-parser/errors.d.ts +0 -12
- package/lib/structured-file-parser/errors.js +0 -33
- package/lib/structured-file-parser/errors.js.map +0 -1
- package/lib/structured-file-parser/parse-row.d.ts +0 -2
- package/lib/structured-file-parser/parse-row.js +0 -40
- package/lib/structured-file-parser/parse-row.js.map +0 -1
- package/lib/structured-file-parser/sanitize-rows.d.ts +0 -2
- package/lib/structured-file-parser/sanitize-rows.js +0 -14
- package/lib/structured-file-parser/sanitize-rows.js.map +0 -1
- package/lib/structured-file-parser/structured-file-parser.d.ts +0 -10
- package/lib/structured-file-parser/structured-file-parser.js +0 -96
- package/lib/structured-file-parser/structured-file-parser.js.map +0 -1
- package/lib/types/types.d.ts +0 -11
- package/lib/types/types.js.map +0 -1
- package/lib/validations/validations.d.ts +0 -155
- package/lib/validations/validations.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,18 +1,4 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ellipticltd/aml-utils",
|
|
3
|
-
"version": "0.15.
|
|
4
|
-
"dependencies": {
|
|
5
|
-
"@zilliqa-js/util": "^0.8.8",
|
|
6
|
-
"bitcore-lib": "^8.22.2",
|
|
7
|
-
"create-error": "0.3.1",
|
|
8
|
-
"lodash": "^4.17.21",
|
|
9
|
-
"multicoin-address-validator": "^0.5.2",
|
|
10
|
-
"stellar-sdk": "4.0.2",
|
|
11
|
-
"type-check": "0.3.2",
|
|
12
|
-
"validator": "10.10.0",
|
|
13
|
-
"web3-utils": "1.0.0",
|
|
14
|
-
"tslib": "2.5.0"
|
|
15
|
-
},
|
|
16
|
-
"main": "./lib/index.js",
|
|
17
|
-
"types": "./lib/index.d.ts"
|
|
3
|
+
"version": "0.15.20"
|
|
18
4
|
}
|
package/project.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "aml-utils",
|
|
3
|
+
"$schema": "../../node_modules/nx/schemas/project-schema.json",
|
|
4
|
+
"sourceRoot": "libs/aml-utils/lib",
|
|
5
|
+
"projectType": "library",
|
|
6
|
+
"targets": {
|
|
7
|
+
"build": {
|
|
8
|
+
"executor": "@nrwl/js:tsc",
|
|
9
|
+
"outputs": ["{options.outputPath}"],
|
|
10
|
+
"options": {
|
|
11
|
+
"outputPath": "dist/libs/aml-utils",
|
|
12
|
+
"main": "libs/aml-utils/lib/index.ts",
|
|
13
|
+
"packageJson": "libs/aml-utils/package.json",
|
|
14
|
+
"tsConfig": "libs/aml-utils/tsconfig.lib.json",
|
|
15
|
+
"assets": ["libs/aml-utils/*.md"],
|
|
16
|
+
"updateBuildableProjectDepsInPackageJson": true,
|
|
17
|
+
"buildableProjectDepsInPackageJsonType": "dependencies"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"lint": {
|
|
21
|
+
"executor": "@nx/linter:eslint",
|
|
22
|
+
"outputs": ["{options.outputFile}"],
|
|
23
|
+
"options": {
|
|
24
|
+
"lintFilePatterns": ["libs/aml-utils/**/*.{ts,tsx,js,jsx}"]
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"lint:fix": {
|
|
28
|
+
"executor": "@nx/linter:eslint",
|
|
29
|
+
"outputs": ["{options.outputFile}"],
|
|
30
|
+
"options": {
|
|
31
|
+
"lintFilePatterns": ["libs/aml-utils/**/*.{ts,tsx,js,jsx}"]
|
|
32
|
+
},
|
|
33
|
+
"fix": true
|
|
34
|
+
},
|
|
35
|
+
"test": {
|
|
36
|
+
"executor": "@nx/jest:jest",
|
|
37
|
+
"outputs": ["{workspaceRoot}/coverage/libs/aml-utils"],
|
|
38
|
+
"options": {
|
|
39
|
+
"jestConfig": "libs/aml-utils/jest.config.ts",
|
|
40
|
+
"testPathPattern": ["libs/aml-utils/lib/"],
|
|
41
|
+
"codeCoverage": true,
|
|
42
|
+
"reporters": ["default"],
|
|
43
|
+
"passWithNoTests": true,
|
|
44
|
+
"verbose": true
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"publish": {
|
|
48
|
+
"executor": "nx:run-commands",
|
|
49
|
+
"options": {
|
|
50
|
+
"command": "npm publish dist/libs/aml-utils"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"tags": []
|
|
55
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"module": "commonjs",
|
|
5
|
+
"outDir": "../../dist/out-tsc",
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"types": ["node"],
|
|
8
|
+
"allowJs": true,
|
|
9
|
+
"esModuleInterop": true
|
|
10
|
+
},
|
|
11
|
+
"exclude": ["jest.config.ts", "**/*.spec.js"],
|
|
12
|
+
"include": ["**/*.ts", "**/*.js"]
|
|
13
|
+
}
|
package/lib/errors/errors.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export const RequestError: any;
|
|
2
|
-
export const ServerError: any;
|
|
3
|
-
export const Forbidden: any;
|
|
4
|
-
export const Unauthorized: any;
|
|
5
|
-
export const BadRequest: any;
|
|
6
|
-
export const NotFound: any;
|
|
7
|
-
export const ConflictError: any;
|
|
8
|
-
export const InvalidArguments: any;
|
|
9
|
-
export const ServerTimeout: any;
|
package/lib/errors/errors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/errors/errors.js"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAEvC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAEpC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAEtD,YAAY,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC;IAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;CACtB,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,gBAAgB,EAAE;IACvD,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,mBAAmB,EAAE;IAC7D,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,iBAAiB,EAAE;IACzD,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE;IACrD,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE;IAC1D,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE;IACtD,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,EAAE,uBAAuB,EAAE;IACrE,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,oBAAoB,EAAE;IAC/D,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,OAAO,GAAG;IACf,YAAY;IACZ,WAAW;IACX,SAAS;IACT,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,aAAa;IACb,gBAAgB;IAChB,aAAa;CACd,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TooManyRowsError = void 0;
|
|
4
|
-
class TooManyRowsError extends Error {
|
|
5
|
-
constructor() {
|
|
6
|
-
super('More than configured number of rows imported');
|
|
7
|
-
this.name = 'TooManyRowsError';
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.TooManyRowsError = TooManyRowsError;
|
|
11
|
-
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/file-parser/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAiB,SAAQ,KAAK;IACzC;QACE,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AALD,4CAKC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ProcessingEntry } from './sanitizeRows';
|
|
2
|
-
type Dependencies<T extends ProcessingEntry> = {
|
|
3
|
-
processRow: (cells: string[]) => T;
|
|
4
|
-
};
|
|
5
|
-
declare function parseFile<T extends ProcessingEntry>(fileContent: string, maxRows: number, dependencies: Dependencies<T>): Promise<T[]>;
|
|
6
|
-
export default parseFile;
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const parse_row_1 = tslib_1.__importDefault(require("./parse-row"));
|
|
5
|
-
const errors_1 = require("./errors");
|
|
6
|
-
const sanitizeRows_1 = tslib_1.__importDefault(require("./sanitizeRows"));
|
|
7
|
-
function chunk(array, size) {
|
|
8
|
-
if (!array.length) {
|
|
9
|
-
return [];
|
|
10
|
-
}
|
|
11
|
-
const head = array.slice(0, size);
|
|
12
|
-
const tail = array.slice(size);
|
|
13
|
-
return [head, ...chunk(tail, size)];
|
|
14
|
-
}
|
|
15
|
-
function processChunk(parsedRows, dependencies) {
|
|
16
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
const { processRow } = dependencies;
|
|
18
|
-
return new Promise((resolve, reject) => {
|
|
19
|
-
setTimeout(() => {
|
|
20
|
-
try {
|
|
21
|
-
const processedRows = parsedRows.map(processRow);
|
|
22
|
-
resolve(processedRows);
|
|
23
|
-
}
|
|
24
|
-
catch (ex) {
|
|
25
|
-
if (ex instanceof Error) {
|
|
26
|
-
reject(ex);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}, 0);
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
function parseFile(fileContent, maxRows, dependencies) {
|
|
34
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
const { processRow } = dependencies;
|
|
36
|
-
if (fileContent === 'invalidFileType') {
|
|
37
|
-
throw Error('Invalid file type');
|
|
38
|
-
}
|
|
39
|
-
const rows = fileContent.split('\n');
|
|
40
|
-
const parsedRows = rows.map(parse_row_1.default);
|
|
41
|
-
const sanitizedRows = (0, sanitizeRows_1.default)(parsedRows, processRow);
|
|
42
|
-
if (sanitizedRows.length > maxRows) {
|
|
43
|
-
throw new errors_1.TooManyRowsError();
|
|
44
|
-
}
|
|
45
|
-
if (sanitizedRows.length === 0) {
|
|
46
|
-
throw new Error('No rows');
|
|
47
|
-
}
|
|
48
|
-
const parsedRowChunks = chunk(sanitizedRows, 30);
|
|
49
|
-
let results = [];
|
|
50
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
51
|
-
for (const currentRowChunk of parsedRowChunks) {
|
|
52
|
-
// eslint-disable-next-line no-await-in-loop
|
|
53
|
-
const chunkResult = yield processChunk(currentRowChunk, dependencies);
|
|
54
|
-
results = results.concat(chunkResult);
|
|
55
|
-
}
|
|
56
|
-
return results;
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
exports.default = parseFile;
|
|
60
|
-
//# sourceMappingURL=file-parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-parser.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/file-parser/file-parser.ts"],"names":[],"mappings":";;;AAAA,oEAAmC;AACnC,qCAA4C;AAC5C,0EAA+D;AAM/D,SAAS,KAAK,CAAI,KAAU,EAAE,IAAY;IACxC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QACjB,OAAO,EAAE,CAAC;KACX;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE/B,OAAO,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,SAAe,YAAY,CAA4B,UAAsB,EAAE,YAA6B;;QAC1G,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;QACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAA6B,EAAE,MAA8B,EAAQ,EAAE;YACzF,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI;oBACF,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACjD,OAAO,CAAC,aAAa,CAAC,CAAC;iBACxB;gBAAC,OAAO,EAAE,EAAE;oBACX,IAAI,EAAE,YAAY,KAAK,EAAE;wBACvB,MAAM,CAAC,EAAE,CAAC,CAAC;qBACZ;iBACF;YACH,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAED,SAAe,SAAS,CAA4B,WAAmB,EAAE,OAAe,EAAE,YAA6B;;QACrH,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC;QAEpC,IAAI,WAAW,KAAK,iBAAiB,EAAE;YACrC,MAAM,KAAK,CAAC,mBAAmB,CAAC,CAAC;SAClC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAQ,CAAC,CAAC;QAEtC,MAAM,aAAa,GAAG,IAAA,sBAAY,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE3D,IAAI,aAAa,CAAC,MAAM,GAAG,OAAO,EAAE;YAClC,MAAM,IAAI,yBAAgB,EAAE,CAAC;SAC9B;QAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;SAC5B;QAED,MAAM,eAAe,GAAG,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,OAAO,GAAQ,EAAE,CAAC;QACtB,gDAAgD;QAChD,KAAK,MAAM,eAAe,IAAI,eAAe,EAAE;YAC7C,4CAA4C;YAC5C,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;YACtE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SACvC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CAAA;AAED,kBAAe,SAAS,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const fp_1 = require("lodash/fp");
|
|
4
|
-
const parseRow = (row) => {
|
|
5
|
-
const trySplitByTab = (line) => {
|
|
6
|
-
if (typeof line === 'string' && line.match('\t')) {
|
|
7
|
-
return line.split('\t');
|
|
8
|
-
}
|
|
9
|
-
return line;
|
|
10
|
-
};
|
|
11
|
-
const trySplitByComa = (line) => {
|
|
12
|
-
if (typeof line === 'string' && line.match(',')) {
|
|
13
|
-
return line.split(',');
|
|
14
|
-
}
|
|
15
|
-
return line;
|
|
16
|
-
};
|
|
17
|
-
const trySplitByMultipleSpaces = (line) => {
|
|
18
|
-
if (typeof line === 'string' && line.match(/ {3,}/)) {
|
|
19
|
-
return line.split(/ {3,}/);
|
|
20
|
-
}
|
|
21
|
-
return line;
|
|
22
|
-
};
|
|
23
|
-
const trySplitBySpace = (line) => {
|
|
24
|
-
if (typeof line === 'string' && line.match(' ')) {
|
|
25
|
-
return line.split(' ');
|
|
26
|
-
}
|
|
27
|
-
return line;
|
|
28
|
-
};
|
|
29
|
-
const trySplitByNothing = (line) => {
|
|
30
|
-
if (typeof line === 'string') {
|
|
31
|
-
return [line];
|
|
32
|
-
}
|
|
33
|
-
return line;
|
|
34
|
-
};
|
|
35
|
-
const splitRow = (0, fp_1.pipe)(trySplitByTab, trySplitByComa, trySplitByMultipleSpaces, trySplitBySpace, trySplitByNothing);
|
|
36
|
-
const cells = splitRow(row);
|
|
37
|
-
return cells.map((c) => c.trim());
|
|
38
|
-
};
|
|
39
|
-
exports.default = parseRow;
|
|
40
|
-
//# sourceMappingURL=parse-row.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-row.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/file-parser/parse-row.ts"],"names":[],"mappings":";;AAAA,kCAAiC;AAEjC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAY,EAAE;IACzC,MAAM,aAAa,GAAG,CAAC,IAAuB,EAAqB,EAAE;QACnE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAChD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,IAAuB,EAAqB,EAAE;QACpE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,wBAAwB,GAAG,CAAC,IAAuB,EAAqB,EAAE;QAC9E,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC5B;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,IAAuB,EAAqB,EAAE;QACrE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,IAAuB,EAAY,EAAE;QAC9D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;SACf;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,SAAI,EAAC,aAAa,EAAE,cAAc,EAAE,wBAAwB,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAEnH,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const sensicalRowCheck = (cells) => cells.some((cell) => !!cell);
|
|
4
|
-
function sanitizeRows(parsedRows, processRow) {
|
|
5
|
-
const firstSensicalRowIndex = parsedRows.findIndex(sensicalRowCheck);
|
|
6
|
-
const lastSensicalRowIndex = [...parsedRows].reverse().findIndex(sensicalRowCheck);
|
|
7
|
-
const sanitizedRows = parsedRows.splice(firstSensicalRowIndex, parsedRows.length - firstSensicalRowIndex - lastSensicalRowIndex);
|
|
8
|
-
const firstRow = processRow(sanitizedRows[0]);
|
|
9
|
-
if (firstRow.isValid) {
|
|
10
|
-
return sanitizedRows;
|
|
11
|
-
}
|
|
12
|
-
return sanitizedRows.splice(1);
|
|
13
|
-
}
|
|
14
|
-
exports.default = sanitizeRows;
|
|
15
|
-
//# sourceMappingURL=sanitizeRows.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizeRows.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/file-parser/sanitizeRows.ts"],"names":[],"mappings":";;AAIA,MAAM,gBAAgB,GAAG,CAAC,KAAe,EAAW,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5F,SAAS,YAAY,CAA4B,UAAsB,EAAE,UAAgC;IACvG,MAAM,qBAAqB,GAAG,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAErE,MAAM,oBAAoB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEnF,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,qBAAqB,EAAE,UAAU,CAAC,MAAM,GAAG,qBAAqB,GAAG,oBAAoB,CAAC,CAAC;IAEjI,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,IAAI,QAAQ,CAAC,OAAO,EAAE;QACpB,OAAO,aAAa,CAAC;KACtB;IACD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,kBAAe,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/formatting/formatting.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE5B,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACjC,IAAI,cAAc,CAAC;IACnB,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;QAClD,cAAc,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KAC1D;SAAM;QACL,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;KAC1B;IACD,OAAO,GAAG,MAAM,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,UAAU,MAAM,cAAc,EAAE,CAAC;AACtE,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,CAAC,OAAO,GAAG;IACf,YAAY;IACZ,iBAAiB;CAClB,CAAC"}
|
package/lib/index.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ormHelpers = exports.middleware = exports.structuredFileParser = exports.fileParser = exports.formatting = exports.errors = exports.validations = exports.types = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const types_1 = tslib_1.__importDefault(require("./types/types"));
|
|
6
|
-
exports.types = types_1.default;
|
|
7
|
-
const validations_1 = tslib_1.__importDefault(require("./validations/validations"));
|
|
8
|
-
exports.validations = validations_1.default;
|
|
9
|
-
const errors_1 = tslib_1.__importDefault(require("./errors/errors"));
|
|
10
|
-
exports.errors = errors_1.default;
|
|
11
|
-
const formatting_1 = tslib_1.__importDefault(require("./formatting/formatting"));
|
|
12
|
-
exports.formatting = formatting_1.default;
|
|
13
|
-
const middleware_1 = tslib_1.__importDefault(require("./middleware/middleware"));
|
|
14
|
-
exports.middleware = middleware_1.default;
|
|
15
|
-
const ormHelpers_1 = tslib_1.__importDefault(require("./orm-helpers/ormHelpers"));
|
|
16
|
-
exports.ormHelpers = ormHelpers_1.default;
|
|
17
|
-
const file_parser_1 = tslib_1.__importDefault(require("./file-parser/file-parser"));
|
|
18
|
-
exports.fileParser = file_parser_1.default;
|
|
19
|
-
const structured_file_parser_1 = tslib_1.__importDefault(require("./structured-file-parser/structured-file-parser"));
|
|
20
|
-
exports.structuredFileParser = structured_file_parser_1.default;
|
|
21
|
-
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/aml-utils/lib/index.ts"],"names":[],"mappings":";;;;AAAA,kEAAkC;AASzB,gBATF,eAAK,CASE;AARd,oFAAoD;AAQpC,sBART,qBAAW,CAQS;AAP3B,qEAAqC;AAOR,iBAPtB,gBAAM,CAOsB;AANnC,iFAAiD;AAMZ,qBAN9B,oBAAU,CAM8B;AAL/C,iFAAiD;AAKkC,qBAL5E,oBAAU,CAK4E;AAJ7F,kFAAkD;AAI6C,qBAJxF,oBAAU,CAIwF;AAHzG,oFAAmD;AAGF,qBAH1C,qBAAU,CAG0C;AAF3D,qHAAmF;AAEtB,+BAFtD,gCAAoB,CAEsD"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export function ensureType(type: any): (req: any, res: any, next: any, id: any, name: any) => any;
|
|
2
|
-
export function ensureUUID(req: any, res: any, next: any, id: any, name: any): any;
|
|
3
|
-
export function ensureHex32(req: any, res: any, next: any, id: any, name: any): any;
|
|
4
|
-
export function ensureInteger(req: any, res: any, next: any, id: any, name: any): any;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/middleware/middleware.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEpC,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;IACxD,IAAI,KAAK,CAAC;IACV,IAAI;QACF,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,IAAI,EAAE,CAAC;KACf;IAAC,OAAO,MAAM,EAAE;QACf,KAAK,GAAG,MAAM,CAAC;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;KACpB;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAEtC,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;AAExC,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAE9C,MAAM,CAAC,OAAO,GAAG;IACf,UAAU;IACV,UAAU;IACV,WAAW;IACX,aAAa;CACd,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export function includeNested(orm: any, models: any): any;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ormHelpers.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/orm-helpers/ormHelpers.js"],"names":[],"mappings":"AAAA,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE5B,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CACpC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;IAC/B,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC;IACnC,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACtB,OAAO,KAAK,CAAC;KACd;IACD,OAAO;QACL,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,OAAO,GAAG;IACf,aAAa;CACd,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare class InvalidFileError extends Error {
|
|
2
|
-
constructor();
|
|
3
|
-
}
|
|
4
|
-
export declare class TooManyRowsError extends Error {
|
|
5
|
-
constructor();
|
|
6
|
-
}
|
|
7
|
-
export declare class NoRowsError extends Error {
|
|
8
|
-
constructor();
|
|
9
|
-
}
|
|
10
|
-
export declare class InvalidHeadersError extends Error {
|
|
11
|
-
constructor();
|
|
12
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InvalidHeadersError = exports.NoRowsError = exports.TooManyRowsError = exports.InvalidFileError = void 0;
|
|
4
|
-
/* eslint-disable max-classes-per-file */
|
|
5
|
-
class InvalidFileError extends Error {
|
|
6
|
-
constructor() {
|
|
7
|
-
super('Invalid file type');
|
|
8
|
-
this.name = 'InvalidFileError';
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.InvalidFileError = InvalidFileError;
|
|
12
|
-
class TooManyRowsError extends Error {
|
|
13
|
-
constructor() {
|
|
14
|
-
super('More than configured number of rows imported');
|
|
15
|
-
this.name = 'TooManyRowsError';
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
exports.TooManyRowsError = TooManyRowsError;
|
|
19
|
-
class NoRowsError extends Error {
|
|
20
|
-
constructor() {
|
|
21
|
-
super('No rows');
|
|
22
|
-
this.name = 'NoRowsError';
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
exports.NoRowsError = NoRowsError;
|
|
26
|
-
class InvalidHeadersError extends Error {
|
|
27
|
-
constructor() {
|
|
28
|
-
super('Invalid or incomplete headers list');
|
|
29
|
-
this.name = 'InvalidHeadersError';
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
exports.InvalidHeadersError = InvalidHeadersError;
|
|
33
|
-
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/structured-file-parser/errors.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AACzC,MAAa,gBAAiB,SAAQ,KAAK;IACzC;QACE,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AALD,4CAKC;AACD,MAAa,gBAAiB,SAAQ,KAAK;IACzC;QACE,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AALD,4CAKC;AACD,MAAa,WAAY,SAAQ,KAAK;IACpC;QACE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AALD,kCAKC;AACD,MAAa,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const fp_1 = require("lodash/fp");
|
|
4
|
-
const parseRow = (row) => {
|
|
5
|
-
const trySplitByTab = (line) => {
|
|
6
|
-
if (typeof line === 'string' && line.match('\t')) {
|
|
7
|
-
return line.split('\t');
|
|
8
|
-
}
|
|
9
|
-
return line;
|
|
10
|
-
};
|
|
11
|
-
const trySplitByComa = (line) => {
|
|
12
|
-
if (typeof line === 'string' && line.match(',')) {
|
|
13
|
-
return line.split(',');
|
|
14
|
-
}
|
|
15
|
-
return line;
|
|
16
|
-
};
|
|
17
|
-
const trySplitByMultipleSpaces = (line) => {
|
|
18
|
-
if (typeof line === 'string' && line.match(/ {3,}/)) {
|
|
19
|
-
return line.split(/ {3,}/);
|
|
20
|
-
}
|
|
21
|
-
return line;
|
|
22
|
-
};
|
|
23
|
-
const trySplitBySpace = (line) => {
|
|
24
|
-
if (typeof line === 'string' && line.match(' ')) {
|
|
25
|
-
return line.split(' ');
|
|
26
|
-
}
|
|
27
|
-
return line;
|
|
28
|
-
};
|
|
29
|
-
const trySplitByNothing = (line) => {
|
|
30
|
-
if (typeof line === 'string') {
|
|
31
|
-
return [line];
|
|
32
|
-
}
|
|
33
|
-
return line;
|
|
34
|
-
};
|
|
35
|
-
const splitRow = (0, fp_1.pipe)(trySplitByTab, trySplitByComa, trySplitByMultipleSpaces, trySplitBySpace, trySplitByNothing);
|
|
36
|
-
const cells = splitRow(row);
|
|
37
|
-
return cells.map((c) => c.trim());
|
|
38
|
-
};
|
|
39
|
-
exports.default = parseRow;
|
|
40
|
-
//# sourceMappingURL=parse-row.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-row.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/structured-file-parser/parse-row.ts"],"names":[],"mappings":";;AAAA,kCAAiC;AAEjC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAY,EAAE;IACzC,MAAM,aAAa,GAAG,CAAC,IAAuB,EAAqB,EAAE;QACnE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YAChD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,IAAuB,EAAqB,EAAE;QACpE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,wBAAwB,GAAG,CAAC,IAAuB,EAAqB,EAAE;QAC9E,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC5B;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,IAAuB,EAAqB,EAAE;QACrE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,IAAuB,EAAY,EAAE;QAC9D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;SACf;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,SAAI,EAAC,aAAa,EAAE,cAAc,EAAE,wBAAwB,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAEnH,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const sensicalRowCheck = (cells) => cells.some((cell) => !!cell);
|
|
4
|
-
function sanitizeRows(parsedRows) {
|
|
5
|
-
const firstSensicalRowIndex = parsedRows.findIndex(sensicalRowCheck);
|
|
6
|
-
const lastSensicalRowIndex = [...parsedRows].reverse().findIndex(sensicalRowCheck);
|
|
7
|
-
if (firstSensicalRowIndex < 0) {
|
|
8
|
-
return [];
|
|
9
|
-
}
|
|
10
|
-
const sanitizedRows = [...parsedRows].splice(firstSensicalRowIndex, parsedRows.length - firstSensicalRowIndex - lastSensicalRowIndex);
|
|
11
|
-
return sanitizedRows;
|
|
12
|
-
}
|
|
13
|
-
exports.default = sanitizeRows;
|
|
14
|
-
//# sourceMappingURL=sanitize-rows.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize-rows.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/structured-file-parser/sanitize-rows.ts"],"names":[],"mappings":";;AAAA,MAAM,gBAAgB,GAAG,CAAC,KAAe,EAAW,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5F,SAAS,YAAY,CAAC,UAAsB;IAC1C,MAAM,qBAAqB,GAAG,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAErE,MAAM,oBAAoB,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEnF,IAAI,qBAAqB,GAAG,CAAC,EAAE;QAC7B,OAAO,EAAE,CAAC;KACX;IAED,MAAM,aAAa,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,MAAM,CAAC,qBAAqB,EAAE,UAAU,CAAC,MAAM,GAAG,qBAAqB,GAAG,oBAAoB,CAAC,CAAC;IAEtI,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,kBAAe,YAAY,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export type ProcessingEntry = {
|
|
2
|
-
isValid: boolean;
|
|
3
|
-
};
|
|
4
|
-
type Dependencies<T extends ProcessingEntry> = {
|
|
5
|
-
processRow: (cells: string[], headers: string[]) => T;
|
|
6
|
-
};
|
|
7
|
-
export declare const hasHeaderRow: (rows: string[][], requiredHeaderNames: string[]) => boolean;
|
|
8
|
-
export declare const isHeaderRowValid: (rows: string[][], requiredHeaderNames: string[]) => boolean;
|
|
9
|
-
declare function parseFile<T extends ProcessingEntry>(fileContent: string, maxRows: number, requiredHeaderNames: string[], dependencies: Dependencies<T>): Promise<T[]>;
|
|
10
|
-
export default parseFile;
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isHeaderRowValid = exports.hasHeaderRow = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
/* eslint-disable no-await-in-loop */
|
|
6
|
-
/* eslint-disable no-restricted-syntax */
|
|
7
|
-
const parse_row_1 = tslib_1.__importDefault(require("./parse-row"));
|
|
8
|
-
const errors_1 = require("./errors");
|
|
9
|
-
const sanitize_rows_1 = tslib_1.__importDefault(require("./sanitize-rows"));
|
|
10
|
-
function chunk(array, size) {
|
|
11
|
-
if (!array.length) {
|
|
12
|
-
return [];
|
|
13
|
-
}
|
|
14
|
-
const head = array.slice(0, size);
|
|
15
|
-
const tail = array.slice(size);
|
|
16
|
-
return [head, ...chunk(tail, size)];
|
|
17
|
-
}
|
|
18
|
-
function processChunk(parsedRows, dependencies) {
|
|
19
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
20
|
-
const { processRow, headers } = dependencies;
|
|
21
|
-
return new Promise((resolve, reject) => {
|
|
22
|
-
setTimeout(() => {
|
|
23
|
-
try {
|
|
24
|
-
const processedRows = parsedRows.map((row) => processRow(row, headers));
|
|
25
|
-
resolve(processedRows);
|
|
26
|
-
}
|
|
27
|
-
catch (ex) {
|
|
28
|
-
reject(ex);
|
|
29
|
-
}
|
|
30
|
-
}, 0);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
// a row is said to contain headers if two valid header names are present
|
|
35
|
-
const hasHeaderRow = (rows, requiredHeaderNames) => {
|
|
36
|
-
const firstRow = rows[0];
|
|
37
|
-
if (!firstRow) {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
const foundIndex = firstRow.findIndex((value) => requiredHeaderNames.includes(value.toLowerCase()));
|
|
41
|
-
if (foundIndex < 0) {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
const containsSecondHeader = firstRow
|
|
45
|
-
.filter((_val, i) => i !== foundIndex)
|
|
46
|
-
.some((value) => requiredHeaderNames.includes(value.toLowerCase()));
|
|
47
|
-
return containsSecondHeader;
|
|
48
|
-
};
|
|
49
|
-
exports.hasHeaderRow = hasHeaderRow;
|
|
50
|
-
const isHeaderRowValid = (rows, requiredHeaderNames) => {
|
|
51
|
-
const firstRow = rows[0];
|
|
52
|
-
if (!firstRow) {
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
return (requiredHeaderNames.every((header) => firstRow.map((value) => value.toLowerCase()).includes(header)) &&
|
|
56
|
-
requiredHeaderNames.length === firstRow.length);
|
|
57
|
-
};
|
|
58
|
-
exports.isHeaderRowValid = isHeaderRowValid;
|
|
59
|
-
function parseFile(fileContent, maxRows, requiredHeaderNames, dependencies) {
|
|
60
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
if (fileContent === 'invalidFileType') {
|
|
62
|
-
throw new errors_1.InvalidFileError();
|
|
63
|
-
}
|
|
64
|
-
const rows = fileContent.split('\n');
|
|
65
|
-
const parsedRows = rows.map(parse_row_1.default);
|
|
66
|
-
const sanitizedRows = (0, sanitize_rows_1.default)(parsedRows);
|
|
67
|
-
if (sanitizedRows.length > maxRows) {
|
|
68
|
-
throw new errors_1.TooManyRowsError();
|
|
69
|
-
}
|
|
70
|
-
if (sanitizedRows.length === 0) {
|
|
71
|
-
throw new errors_1.NoRowsError();
|
|
72
|
-
}
|
|
73
|
-
const containsHeaders = (0, exports.hasHeaderRow)(sanitizedRows, requiredHeaderNames);
|
|
74
|
-
if (containsHeaders && !(0, exports.isHeaderRowValid)(sanitizedRows, requiredHeaderNames)) {
|
|
75
|
-
throw new errors_1.InvalidHeadersError();
|
|
76
|
-
}
|
|
77
|
-
const firstSanitizedRow = sanitizedRows[0];
|
|
78
|
-
if (!firstSanitizedRow) {
|
|
79
|
-
throw new errors_1.NoRowsError();
|
|
80
|
-
}
|
|
81
|
-
const headers = containsHeaders ? firstSanitizedRow.map((value) => value.toLowerCase()) : requiredHeaderNames;
|
|
82
|
-
const dataRows = containsHeaders ? sanitizedRows.splice(1) : sanitizedRows;
|
|
83
|
-
if (dataRows.length === 0) {
|
|
84
|
-
throw new errors_1.NoRowsError();
|
|
85
|
-
}
|
|
86
|
-
const parsedRowChunks = chunk(dataRows, 30);
|
|
87
|
-
let results = [];
|
|
88
|
-
for (const currentRowChunk of parsedRowChunks) {
|
|
89
|
-
const chunkResult = yield processChunk(currentRowChunk, Object.assign(Object.assign({}, dependencies), { headers }));
|
|
90
|
-
results = results.concat(chunkResult);
|
|
91
|
-
}
|
|
92
|
-
return results;
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
exports.default = parseFile;
|
|
96
|
-
//# sourceMappingURL=structured-file-parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"structured-file-parser.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/structured-file-parser/structured-file-parser.ts"],"names":[],"mappings":"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"}
|
package/lib/types/types.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
declare const withNullable: {};
|
|
2
|
-
export function parseType(str: any): any;
|
|
3
|
-
export function parsedTypeCheck(type: any, obj: any): any;
|
|
4
|
-
export function typeCheck(type: any, obj: any): any;
|
|
5
|
-
export namespace opts {
|
|
6
|
-
export { withNullable as customTypes };
|
|
7
|
-
}
|
|
8
|
-
export function ensureType(type: any, obj: any, msg: any): boolean;
|
|
9
|
-
export function checkArg(obj: any, prop: any, type: any, msg: any): any;
|
|
10
|
-
export function checkArgs(input: any, types: any): void;
|
|
11
|
-
export {};
|
package/lib/types/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../libs/aml-utils/lib/types/types.js"],"names":[],"mappings":"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"}
|