@onereach/billing-shared 11.60.0 → 11.60.1-beta.3282.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.
Files changed (36) hide show
  1. package/dist/cjs/utils/build-csv-file-name.js +30 -0
  2. package/dist/cjs/utils/build-csv-file-name.js.map +1 -0
  3. package/dist/cjs/utils/build-csv-file-string.js +21 -0
  4. package/dist/cjs/utils/build-csv-file-string.js.map +1 -0
  5. package/dist/cjs/utils/escape-csv-value.js +14 -0
  6. package/dist/cjs/utils/escape-csv-value.js.map +1 -0
  7. package/dist/cjs/utils/format-date.js +25 -0
  8. package/dist/cjs/utils/format-date.js.map +1 -0
  9. package/dist/cjs/utils/index.js +4 -0
  10. package/dist/cjs/utils/index.js.map +1 -1
  11. package/dist/esm/utils/build-csv-file-name.js +27 -0
  12. package/dist/esm/utils/build-csv-file-name.js.map +1 -0
  13. package/dist/esm/utils/build-csv-file-string.js +7 -0
  14. package/dist/esm/utils/build-csv-file-string.js.map +1 -0
  15. package/dist/esm/utils/escape-csv-value.js +11 -0
  16. package/dist/esm/utils/escape-csv-value.js.map +1 -0
  17. package/dist/esm/utils/format-date.js +22 -0
  18. package/dist/esm/utils/format-date.js.map +1 -0
  19. package/dist/esm/utils/index.js +4 -0
  20. package/dist/esm/utils/index.js.map +1 -1
  21. package/dist/types/utils/build-csv-file-name.d.ts +2 -0
  22. package/dist/types/utils/build-csv-file-name.d.ts.map +1 -0
  23. package/dist/types/utils/build-csv-file-string.d.ts +2 -0
  24. package/dist/types/utils/build-csv-file-string.d.ts.map +1 -0
  25. package/dist/types/utils/escape-csv-value.d.ts +2 -0
  26. package/dist/types/utils/escape-csv-value.d.ts.map +1 -0
  27. package/dist/types/utils/format-date.d.ts +2 -0
  28. package/dist/types/utils/format-date.d.ts.map +1 -0
  29. package/dist/types/utils/index.d.ts +4 -0
  30. package/dist/types/utils/index.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/src/utils/build-csv-file-name.ts +21 -0
  33. package/src/utils/build-csv-file-string.ts +11 -0
  34. package/src/utils/escape-csv-value.ts +13 -0
  35. package/src/utils/format-date.ts +52 -0
  36. package/src/utils/index.ts +4 -0
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildCSVFileName = buildCSVFileName;
4
+ var format_date_1 = require("./format-date");
5
+ function buildCSVFileName(params) {
6
+ if (!params.dateFrom || !params.dateTo)
7
+ return 'unknown';
8
+ var parts = [
9
+ (0, format_date_1.formatDate)(new Date(params.dateFrom), 'YYYY-MM-DD'),
10
+ (0, format_date_1.formatDate)(new Date(params.dateTo), 'YYYY-MM-DD'),
11
+ ];
12
+ if (params.customerId)
13
+ parts.push("customer-".concat(String(params.customerId)));
14
+ if (params.environmentId)
15
+ parts.push("env-".concat(String(params.environmentId)));
16
+ if (params.accountId)
17
+ parts.push("account-".concat(String(params.accountId)));
18
+ if (params.logicalCategory)
19
+ parts.push("logical-".concat(String(params.logicalCategory)));
20
+ if (params.businessCategory)
21
+ parts.push("business-".concat(String(params.businessCategory)));
22
+ if (params.flowId)
23
+ parts.push("flow-".concat(params.flowId));
24
+ if (params.dataSet)
25
+ parts.push("dataset-".concat(String(params.dataSet)));
26
+ if (params.completeDatasetGaps !== undefined)
27
+ parts.push("gaps-".concat(String(params.completeDatasetGaps)));
28
+ return parts.join('_');
29
+ }
30
+ //# sourceMappingURL=build-csv-file-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-csv-file-name.js","sourceRoot":"","sources":["../../../src/utils/build-csv-file-name.ts"],"names":[],"mappings":";;AAEA,4CAkBC;AApBD,6CAA2C;AAE3C,SAAgB,gBAAgB,CAAC,MAA+B;IAE9D,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACzD,IAAM,KAAK,GAAa;QACtB,IAAA,wBAAU,EAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAgB,CAAC,EAAE,YAAY,CAAC;QAC3D,IAAA,wBAAU,EAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAc,CAAC,EAAE,YAAY,CAAC;KAC1D,CAAC;IAEF,IAAI,MAAM,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,mBAAY,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAE,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,cAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAE,CAAC,CAAC;IAC5E,IAAI,MAAM,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAW,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAE,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,eAAe;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAW,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAE,CAAC,CAAC;IACpF,IAAI,MAAM,CAAC,gBAAgB;QAAE,KAAK,CAAC,IAAI,CAAC,mBAAY,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAE,CAAC,CAAC;IACvF,IAAI,MAAM,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,eAAQ,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAW,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAE,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,mBAAmB,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,eAAQ,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAE,CAAC,CAAC;IAEvG,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.buildCSVFileString = buildCSVFileString;
13
+ var escape_csv_value_1 = require("./escape-csv-value");
14
+ function buildCSVFileString(headers, data) {
15
+ var headerRow = headers.join(',');
16
+ var dataRows = data.map(function (entity) {
17
+ return headers.map(function (header) { return (0, escape_csv_value_1.escapeCsvValue)(entity[header]); }).join(',');
18
+ });
19
+ return __spreadArray([headerRow], dataRows, true).join('\n');
20
+ }
21
+ //# sourceMappingURL=build-csv-file-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-csv-file-string.js","sourceRoot":"","sources":["../../../src/utils/build-csv-file-string.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,gDAQC;AAVD,uDAAoD;AAEpD,SAAgB,kBAAkB,CAAC,OAAiB,EAAE,IAA+B;IACnF,IAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEpC,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAC,MAAM;QAC/B,OAAA,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,IAAA,iCAAc,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAA9B,CAA8B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAAjE,CAAiE,CAClE,CAAC;IAEF,OAAO,eAAC,SAAS,GAAK,QAAQ,QAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.escapeCsvValue = escapeCsvValue;
4
+ function escapeCsvValue(value) {
5
+ if (value === null || value === undefined) {
6
+ return '';
7
+ }
8
+ var stringValue = String(value);
9
+ if (stringValue.includes(',') || stringValue.includes('"') || stringValue.includes('\n')) {
10
+ return "\"".concat(stringValue.replace(/"/g, '""'), "\"");
11
+ }
12
+ return stringValue;
13
+ }
14
+ //# sourceMappingURL=escape-csv-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape-csv-value.js","sourceRoot":"","sources":["../../../src/utils/escape-csv-value.ts"],"names":[],"mappings":";;AAAA,wCAYC;AAZD,SAAgB,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAElC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzF,OAAO,YAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,OAAG,CAAC;IAChD,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatDate = formatDate;
4
+ function formatDate(date, format) {
5
+ var d = date;
6
+ var tokens = {
7
+ 'YYYY': d.getFullYear().toString(),
8
+ 'YY': d.getFullYear().toString().slice(-2),
9
+ 'MM': padZero(d.getMonth() + 1, 2),
10
+ 'M': (d.getMonth() + 1).toString(),
11
+ 'DD': padZero(d.getDate(), 2),
12
+ 'D': d.getDate().toString(),
13
+ 'hh': padZero(d.getHours(), 2),
14
+ 'h': d.getHours().toString(),
15
+ 'mm': padZero(d.getMinutes(), 2),
16
+ 'm': d.getMinutes().toString(),
17
+ 'ss': padZero(d.getSeconds(), 2),
18
+ 's': d.getSeconds().toString(),
19
+ };
20
+ return format.replace(/YYYY|YY|MM|M|DD|D|hh|h|mm|m|ss|s/g, function (matched) { return tokens[matched]; });
21
+ }
22
+ function padZero(num, length) {
23
+ return num.toString().padStart(length, '0');
24
+ }
25
+ //# sourceMappingURL=format-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-date.js","sourceRoot":"","sources":["../../../src/utils/format-date.ts"],"names":[],"mappings":";;AAqBA,gCAmBC;AAnBD,SAAgB,UAAU,CAAC,IAAU,EAAE,MAAc;IACnD,IAAM,CAAC,GAAG,IAAI,CAAC;IAEf,IAAM,MAAM,GAA+B;QACzC,MAAM,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;QAClC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;QAClC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC7B,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC3B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9B,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC5B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAChC,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE;QAC9B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAChC,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE;KAC/B,CAAC;IAEF,OAAO,MAAM,CAAC,OAAO,CAAC,mCAAmC,EAAE,UAAA,OAAO,IAAI,OAAA,MAAM,CAAC,OAAO,CAAC,EAAf,CAAe,CAAC,CAAC;AACzF,CAAC;AASD,SAAS,OAAO,CAAC,GAAW,EAAE,MAAc;IAC1C,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC"}
@@ -16,4 +16,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./math"), exports);
18
18
  __exportStar(require("./date"), exports);
19
+ __exportStar(require("./format-date"), exports);
20
+ __exportStar(require("./escape-csv-value"), exports);
21
+ __exportStar(require("./build-csv-file-name"), exports);
22
+ __exportStar(require("./build-csv-file-string"), exports);
19
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,yCAAuB;AACvB,gDAA8B;AAC9B,qDAAmC;AACnC,wDAAsC;AACtC,0DAAwC"}
@@ -0,0 +1,27 @@
1
+ import { formatDate } from './format-date';
2
+ export function buildCSVFileName(params) {
3
+ if (!params.dateFrom || !params.dateTo)
4
+ return 'unknown';
5
+ const parts = [
6
+ formatDate(new Date(params.dateFrom), 'YYYY-MM-DD'),
7
+ formatDate(new Date(params.dateTo), 'YYYY-MM-DD'),
8
+ ];
9
+ if (params.customerId)
10
+ parts.push(`customer-${String(params.customerId)}`);
11
+ if (params.environmentId)
12
+ parts.push(`env-${String(params.environmentId)}`);
13
+ if (params.accountId)
14
+ parts.push(`account-${String(params.accountId)}`);
15
+ if (params.logicalCategory)
16
+ parts.push(`logical-${String(params.logicalCategory)}`);
17
+ if (params.businessCategory)
18
+ parts.push(`business-${String(params.businessCategory)}`);
19
+ if (params.flowId)
20
+ parts.push(`flow-${params.flowId}`);
21
+ if (params.dataSet)
22
+ parts.push(`dataset-${String(params.dataSet)}`);
23
+ if (params.completeDatasetGaps !== undefined)
24
+ parts.push(`gaps-${String(params.completeDatasetGaps)}`);
25
+ return parts.join('_');
26
+ }
27
+ //# sourceMappingURL=build-csv-file-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-csv-file-name.js","sourceRoot":"","sources":["../../../src/utils/build-csv-file-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,UAAU,gBAAgB,CAAC,MAA+B;IAE9D,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACzD,MAAM,KAAK,GAAa;QACtB,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAgB,CAAC,EAAE,YAAY,CAAC;QAC3D,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAc,CAAC,EAAE,YAAY,CAAC;KAC1D,CAAC;IAEF,IAAI,MAAM,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,aAAa;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC5E,IAAI,MAAM,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,eAAe;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACpF,IAAI,MAAM,CAAC,gBAAgB;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACvF,IAAI,MAAM,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,mBAAmB,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAEvG,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { escapeCsvValue } from './escape-csv-value';
2
+ export function buildCSVFileString(headers, data) {
3
+ const headerRow = headers.join(',');
4
+ const dataRows = data.map((entity) => headers.map((header) => escapeCsvValue(entity[header])).join(','));
5
+ return [headerRow, ...dataRows].join('\n');
6
+ }
7
+ //# sourceMappingURL=build-csv-file-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-csv-file-string.js","sourceRoot":"","sources":["../../../src/utils/build-csv-file-string.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,UAAU,kBAAkB,CAAC,OAAiB,EAAE,IAA+B;IACnF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACnC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAClE,CAAC;IAEF,OAAO,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,11 @@
1
+ export function escapeCsvValue(value) {
2
+ if (value === null || value === undefined) {
3
+ return '';
4
+ }
5
+ const stringValue = String(value);
6
+ if (stringValue.includes(',') || stringValue.includes('"') || stringValue.includes('\n')) {
7
+ return `"${stringValue.replace(/"/g, '""')}"`;
8
+ }
9
+ return stringValue;
10
+ }
11
+ //# sourceMappingURL=escape-csv-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape-csv-value.js","sourceRoot":"","sources":["../../../src/utils/escape-csv-value.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAElC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzF,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;IAChD,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,22 @@
1
+ export function formatDate(date, format) {
2
+ const d = date;
3
+ const tokens = {
4
+ 'YYYY': d.getFullYear().toString(),
5
+ 'YY': d.getFullYear().toString().slice(-2),
6
+ 'MM': padZero(d.getMonth() + 1, 2),
7
+ 'M': (d.getMonth() + 1).toString(),
8
+ 'DD': padZero(d.getDate(), 2),
9
+ 'D': d.getDate().toString(),
10
+ 'hh': padZero(d.getHours(), 2),
11
+ 'h': d.getHours().toString(),
12
+ 'mm': padZero(d.getMinutes(), 2),
13
+ 'm': d.getMinutes().toString(),
14
+ 'ss': padZero(d.getSeconds(), 2),
15
+ 's': d.getSeconds().toString(),
16
+ };
17
+ return format.replace(/YYYY|YY|MM|M|DD|D|hh|h|mm|m|ss|s/g, matched => tokens[matched]);
18
+ }
19
+ function padZero(num, length) {
20
+ return num.toString().padStart(length, '0');
21
+ }
22
+ //# sourceMappingURL=format-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-date.js","sourceRoot":"","sources":["../../../src/utils/format-date.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,UAAU,CAAC,IAAU,EAAE,MAAc;IACnD,MAAM,CAAC,GAAG,IAAI,CAAC;IAEf,MAAM,MAAM,GAA+B;QACzC,MAAM,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;QAClC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE;QAClC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC7B,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC3B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9B,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAC5B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAChC,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE;QAC9B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAChC,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE;KAC/B,CAAC;IAEF,OAAO,MAAM,CAAC,OAAO,CAAC,mCAAmC,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACzF,CAAC;AASD,SAAS,OAAO,CAAC,GAAW,EAAE,MAAc;IAC1C,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC"}
@@ -1,3 +1,7 @@
1
1
  export * from './math';
2
2
  export * from './date';
3
+ export * from './format-date';
4
+ export * from './escape-csv-value';
5
+ export * from './build-csv-file-name';
6
+ export * from './build-csv-file-string';
3
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function buildCSVFileName(params: Record<string, unknown>): string;
2
+ //# sourceMappingURL=build-csv-file-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-csv-file-name.d.ts","sourceRoot":"","sources":["../../../src/utils/build-csv-file-name.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAkBxE"}
@@ -0,0 +1,2 @@
1
+ export declare function buildCSVFileString(headers: string[], data: Record<string, unknown>[]): string;
2
+ //# sourceMappingURL=build-csv-file-string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-csv-file-string.d.ts","sourceRoot":"","sources":["../../../src/utils/build-csv-file-string.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,CAQ7F"}
@@ -0,0 +1,2 @@
1
+ export declare function escapeCsvValue(value: unknown): string;
2
+ //# sourceMappingURL=escape-csv-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape-csv-value.d.ts","sourceRoot":"","sources":["../../../src/utils/escape-csv-value.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAYrD"}
@@ -0,0 +1,2 @@
1
+ export declare function formatDate(date: Date, format: string): string;
2
+ //# sourceMappingURL=format-date.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-date.d.ts","sourceRoot":"","sources":["../../../src/utils/format-date.ts"],"names":[],"mappings":"AAqBA,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAmB7D"}
@@ -1,3 +1,7 @@
1
1
  export * from './math';
2
2
  export * from './date';
3
+ export * from './format-date';
4
+ export * from './escape-csv-value';
5
+ export * from './build-csv-file-name';
6
+ export * from './build-csv-file-string';
3
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onereach/billing-shared",
3
- "version": "11.60.0",
3
+ "version": "11.60.1-beta.3282.0",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -0,0 +1,21 @@
1
+ import { formatDate } from './format-date';
2
+
3
+ export function buildCSVFileName(params: Record<string, unknown>): string {
4
+
5
+ if (!params.dateFrom || !params.dateTo) return 'unknown';
6
+ const parts: string[] = [
7
+ formatDate(new Date(params.dateFrom as Date), 'YYYY-MM-DD'),
8
+ formatDate(new Date(params.dateTo as Date), 'YYYY-MM-DD'),
9
+ ];
10
+
11
+ if (params.customerId) parts.push(`customer-${String(params.customerId)}`);
12
+ if (params.environmentId) parts.push(`env-${String(params.environmentId)}`);
13
+ if (params.accountId) parts.push(`account-${String(params.accountId)}`);
14
+ if (params.logicalCategory) parts.push(`logical-${String(params.logicalCategory)}`);
15
+ if (params.businessCategory) parts.push(`business-${String(params.businessCategory)}`);
16
+ if (params.flowId) parts.push(`flow-${params.flowId}`);
17
+ if (params.dataSet) parts.push(`dataset-${String(params.dataSet)}`);
18
+ if (params.completeDatasetGaps !== undefined) parts.push(`gaps-${String(params.completeDatasetGaps)}`);
19
+
20
+ return parts.join('_');
21
+ }
@@ -0,0 +1,11 @@
1
+ import { escapeCsvValue } from './escape-csv-value';
2
+
3
+ export function buildCSVFileString(headers: string[], data: Record<string, unknown>[]): string {
4
+ const headerRow = headers.join(',');
5
+
6
+ const dataRows = data.map((entity) =>
7
+ headers.map((header) => escapeCsvValue(entity[header])).join(','),
8
+ );
9
+
10
+ return [headerRow, ...dataRows].join('\n');
11
+ }
@@ -0,0 +1,13 @@
1
+ export function escapeCsvValue(value: unknown): string {
2
+ if (value === null || value === undefined) {
3
+ return '';
4
+ }
5
+
6
+ const stringValue = String(value);
7
+
8
+ if (stringValue.includes(',') || stringValue.includes('"') || stringValue.includes('\n')) {
9
+ return `"${stringValue.replace(/"/g, '""')}"`;
10
+ }
11
+
12
+ return stringValue;
13
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Formats a Date object into a string based on the provided format pattern.
3
+ *
4
+ * Supported tokens:
5
+ * - YYYY: 4-digit year (e.g., 2023)
6
+ * - YY: 2-digit year (e.g., 23)
7
+ * - MM: 2-digit month (01-12)
8
+ * - M: 1 or 2-digit month (1-12)
9
+ * - DD: 2-digit day of the month (01-31)
10
+ * - D: 1 or 2-digit day of the month (1-31)
11
+ * - hh: 2-digit hour in 24-hour format (00-23)
12
+ * - h: 1 or 2-digit hour in 24-hour format (0-23)
13
+ * - mm: 2-digit minutes (00-59)
14
+ * - m: 1 or 2-digit minutes (0-59)
15
+ * - ss: 2-digit seconds (00-59)
16
+ * - s: 1 or 2-digit seconds (0-59)
17
+ *
18
+ * @param date - The Date object to format.
19
+ * @param format - The format pattern string.
20
+ * @returns The formatted date string in local timezone.
21
+ */
22
+ export function formatDate(date: Date, format: string): string {
23
+ const d = date;
24
+
25
+ const tokens: { [key: string]: string; } = {
26
+ 'YYYY': d.getFullYear().toString(),
27
+ 'YY': d.getFullYear().toString().slice(-2),
28
+ 'MM': padZero(d.getMonth() + 1, 2),
29
+ 'M': (d.getMonth() + 1).toString(),
30
+ 'DD': padZero(d.getDate(), 2),
31
+ 'D': d.getDate().toString(),
32
+ 'hh': padZero(d.getHours(), 2),
33
+ 'h': d.getHours().toString(),
34
+ 'mm': padZero(d.getMinutes(), 2),
35
+ 'm': d.getMinutes().toString(),
36
+ 'ss': padZero(d.getSeconds(), 2),
37
+ 's': d.getSeconds().toString(),
38
+ };
39
+
40
+ return format.replace(/YYYY|YY|MM|M|DD|D|hh|h|mm|m|ss|s/g, matched => tokens[matched]);
41
+ }
42
+
43
+ /**
44
+ * Pads a number with leading zeros to achieve the desired length.
45
+ *
46
+ * @param num - The number to pad.
47
+ * @param length - The desired string length.
48
+ * @returns The padded number as a string.
49
+ */
50
+ function padZero(num: number, length: number): string {
51
+ return num.toString().padStart(length, '0');
52
+ }
@@ -1,2 +1,6 @@
1
1
  export * from './math';
2
2
  export * from './date';
3
+ export * from './format-date';
4
+ export * from './escape-csv-value';
5
+ export * from './build-csv-file-name';
6
+ export * from './build-csv-file-string';