@zeniai/client-epic-state 4.19.37-betaVR9 → 4.19.38

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 (68) hide show
  1. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  2. package/lib/entity/snackbar/snackbarTypes.js +0 -1
  3. package/lib/epic.d.ts +1 -9
  4. package/lib/epic.js +1 -9
  5. package/lib/esm/entity/snackbar/snackbarTypes.js +0 -1
  6. package/lib/esm/epic.js +1 -9
  7. package/lib/esm/index.js +6 -8
  8. package/lib/esm/view/expenseAutomationView/payload/missingReceiptsPayload.js +1 -100
  9. package/lib/esm/view/expenseAutomationView/reducers/missingReceiptsViewReducer.js +1 -264
  10. package/lib/esm/view/expenseAutomationView/selectors/missingReceiptsSelector.js +1 -128
  11. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewReducer.js +10 -1
  12. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +4 -2
  13. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/types/commonPayload.js +5 -2
  14. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer.js +10 -1
  15. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelector.js +4 -2
  16. package/lib/esm/zeniAPI.js +3 -41
  17. package/lib/index.d.ts +9 -11
  18. package/lib/index.js +32 -58
  19. package/lib/tsconfig.typecheck.tsbuildinfo +1 -0
  20. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  21. package/lib/view/expenseAutomationView/payload/missingReceiptsPayload.d.ts +0 -108
  22. package/lib/view/expenseAutomationView/payload/missingReceiptsPayload.js +0 -107
  23. package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.d.ts +3 -51
  24. package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.js +2 -265
  25. package/lib/view/expenseAutomationView/selectorTypes/missingReceiptsSelectorTypes.d.ts +1 -61
  26. package/lib/view/expenseAutomationView/selectors/missingReceiptsSelector.d.ts +1 -1
  27. package/lib/view/expenseAutomationView/selectors/missingReceiptsSelector.js +0 -127
  28. package/lib/view/expenseAutomationView/types/missingReceiptsViewState.d.ts +0 -104
  29. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewReducer.d.ts +1 -1
  30. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewReducer.js +11 -2
  31. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +4 -2
  32. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelectorTypes.d.ts +2 -0
  33. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewState.d.ts +1 -0
  34. package/lib/view/spendManagement/billPay/billPaySetupApproverView/types/commonPayload.d.ts +1 -0
  35. package/lib/view/spendManagement/billPay/billPaySetupApproverView/types/commonPayload.js +5 -2
  36. package/lib/view/spendManagement/billPay/billPaySetupApproverView/types/commonState.d.ts +2 -0
  37. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer.d.ts +1 -1
  38. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer.js +11 -2
  39. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelector.js +4 -2
  40. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelectorTypes.d.ts +2 -0
  41. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewState.d.ts +1 -0
  42. package/lib/zeniAPI.d.ts +0 -9
  43. package/lib/zeniAPI.js +2 -40
  44. package/package.json +2 -2
  45. package/lib/esm/view/expenseAutomationView/epics/missingReceipts/bulkUploadReceiptsEpic.js +0 -24
  46. package/lib/esm/view/expenseAutomationView/epics/missingReceipts/confirmBulkUploadMatchEpic.js +0 -49
  47. package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchBulkUploadBatchDetailsEpic.js +0 -31
  48. package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchBulkUploadBatchesEpic.js +0 -41
  49. package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.js +0 -57
  50. package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchMultipleBatchDetailsEpic.js +0 -35
  51. package/lib/esm/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js +0 -27
  52. package/lib/esm/view/expenseAutomationView/epics/missingReceipts/watchBulkUploadBatchStatusEpic.js +0 -41
  53. package/lib/view/expenseAutomationView/epics/missingReceipts/bulkUploadReceiptsEpic.d.ts +0 -15
  54. package/lib/view/expenseAutomationView/epics/missingReceipts/bulkUploadReceiptsEpic.js +0 -28
  55. package/lib/view/expenseAutomationView/epics/missingReceipts/confirmBulkUploadMatchEpic.d.ts +0 -7
  56. package/lib/view/expenseAutomationView/epics/missingReceipts/confirmBulkUploadMatchEpic.js +0 -53
  57. package/lib/view/expenseAutomationView/epics/missingReceipts/fetchBulkUploadBatchDetailsEpic.d.ts +0 -8
  58. package/lib/view/expenseAutomationView/epics/missingReceipts/fetchBulkUploadBatchDetailsEpic.js +0 -35
  59. package/lib/view/expenseAutomationView/epics/missingReceipts/fetchBulkUploadBatchesEpic.d.ts +0 -7
  60. package/lib/view/expenseAutomationView/epics/missingReceipts/fetchBulkUploadBatchesEpic.js +0 -45
  61. package/lib/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.d.ts +0 -8
  62. package/lib/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.js +0 -61
  63. package/lib/view/expenseAutomationView/epics/missingReceipts/fetchMultipleBatchDetailsEpic.d.ts +0 -8
  64. package/lib/view/expenseAutomationView/epics/missingReceipts/fetchMultipleBatchDetailsEpic.js +0 -39
  65. package/lib/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.d.ts +0 -6
  66. package/lib/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js +0 -31
  67. package/lib/view/expenseAutomationView/epics/missingReceipts/watchBulkUploadBatchStatusEpic.d.ts +0 -15
  68. package/lib/view/expenseAutomationView/epics/missingReceipts/watchBulkUploadBatchStatusEpic.js +0 -46
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fetchCompletedTransactionsEpic = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const operators_1 = require("rxjs/operators");
6
- const timePeriod_1 = require("../../../../commonStateTypes/timePeriod");
7
- const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
8
- const transactionReducer_1 = require("../../../../entity/transaction/transactionReducer");
9
- const responsePayload_1 = require("../../../../responsePayload");
10
- const missingReceiptsViewReducer_1 = require("../../reducers/missingReceiptsViewReducer");
11
- const fetchCompletedTransactionsEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(missingReceiptsViewReducer_1.fetchCompletedTransactions.match), (0, operators_1.switchMap)((action) => {
12
- const state = state$.value;
13
- const { expenseAutomationViewState: { selectedPeriodByTenantId }, expenseAutomationMissingReceiptsViewState: { bulkUpload }, } = state;
14
- const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state);
15
- const selectedPeriod = selectedPeriodByTenantId[currentTenant.tenantId];
16
- const periodId = (0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod);
17
- const isInitialLoad = action.payload.pageToken == null;
18
- const existingData = bulkUpload.completedTransactionsByPeriod[periodId];
19
- if (isInitialLoad && existingData != null && existingData.transactionIds.length > 0) {
20
- return (0, rxjs_1.from)([]);
21
- }
22
- const period = (0, timePeriod_1.convertToPeriod)(selectedPeriod);
23
- const queryPayload = {
24
- start_date: period.start,
25
- end_date: period.end,
26
- sort_by: bulkUpload.sortKey,
27
- sort_order: bulkUpload.sortOrder === 'ascending' ? 'asc' : 'desc',
28
- page_token: action.payload.pageToken ?? null,
29
- page_size: 25,
30
- };
31
- if (bulkUpload.completedSubTab !== 'all') {
32
- queryPayload.match_type = bulkUpload.completedSubTab;
33
- }
34
- const encodedQuery = encodeURIComponent(JSON.stringify(queryPayload));
35
- return zeniAPI
36
- .getJSON(`${zeniAPI.apiEndPoints.communicationAgentMicroServiceBaseUrl}/1.0/receipt-agent/transactions/completed?query=${encodedQuery}`)
37
- .pipe((0, operators_1.mergeMap)((response) => {
38
- if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
39
- const transactionIds = response.data.transactions.map((t) => t.transaction_id);
40
- const updateActions = [];
41
- updateActions.push((0, transactionReducer_1.updateTransactions)(response.data.transactions, (value) => value.transaction_id));
42
- updateActions.push((0, missingReceiptsViewReducer_1.fetchCompletedTransactionsSuccess)({
43
- isInitialLoad,
44
- transactionIds,
45
- nextPageToken: response.data.next_page_token,
46
- totalCount: response.data.total_count,
47
- selectedPeriod,
48
- }));
49
- return (0, rxjs_1.from)(updateActions);
50
- }
51
- return (0, rxjs_1.of)((0, missingReceiptsViewReducer_1.fetchCompletedTransactionsFailure)({
52
- error: response.status,
53
- selectedPeriod,
54
- }));
55
- }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, missingReceiptsViewReducer_1.fetchCompletedTransactionsFailure)({
56
- error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch completed transactions errored: ' +
57
- JSON.stringify(error)),
58
- selectedPeriod,
59
- }))));
60
- }));
61
- exports.fetchCompletedTransactionsEpic = fetchCompletedTransactionsEpic;
@@ -1,8 +0,0 @@
1
- import { ActionsObservable, StateObservable } from 'redux-observable';
2
- import { Observable } from 'rxjs';
3
- import { updateTransactions } from '../../../../entity/transaction/transactionReducer';
4
- import { RootState } from '../../../../reducer';
5
- import { ZeniAPI } from '../../../../zeniAPI';
6
- import { fetchBulkUploadBatchesSuccess, storeBatchDetails } from '../../reducers/missingReceiptsViewReducer';
7
- export type ActionType = ReturnType<typeof fetchBulkUploadBatchesSuccess> | ReturnType<typeof updateTransactions> | ReturnType<typeof storeBatchDetails>;
8
- export declare const fetchMultipleBatchDetailsEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fetchMultipleBatchDetailsEpic = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const operators_1 = require("rxjs/operators");
6
- const transactionReducer_1 = require("../../../../entity/transaction/transactionReducer");
7
- const responsePayload_1 = require("../../../../responsePayload");
8
- const missingReceiptsPayload_1 = require("../../payload/missingReceiptsPayload");
9
- const missingReceiptsViewReducer_1 = require("../../reducers/missingReceiptsViewReducer");
10
- const fetchMultipleBatchDetailsEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(missingReceiptsViewReducer_1.fetchBulkUploadBatchesSuccess.match), (0, operators_1.mergeMap)((action) => {
11
- const batchList = action.payload.batchList;
12
- const { batchDetailsById } = state$.value.expenseAutomationMissingReceiptsViewState.bulkUpload;
13
- const completedBatchIds = batchList
14
- .filter((batch) => batch.status === 'completed' &&
15
- batchDetailsById[batch.batchId] == null)
16
- .map((batch) => batch.batchId);
17
- if (completedBatchIds.length === 0) {
18
- return rxjs_1.EMPTY;
19
- }
20
- return (0, rxjs_1.from)(completedBatchIds).pipe((0, operators_1.mergeMap)((batchId) => zeniAPI
21
- .getJSON(`${zeniAPI.apiEndPoints.communicationAgentMicroServiceBaseUrl}/1.0/receipts/batches/${batchId}`)
22
- .pipe((0, operators_1.mergeMap)((response) => {
23
- if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
24
- const actions = [];
25
- const transactionPayloads = (0, missingReceiptsPayload_1.extractTransactionPayloadsFromBatchFiles)(response.data.files);
26
- if (transactionPayloads.length > 0) {
27
- actions.push((0, transactionReducer_1.updateTransactions)(transactionPayloads, (value) => value.transaction_id));
28
- }
29
- actions.push((0, missingReceiptsViewReducer_1.storeBatchDetails)((0, missingReceiptsPayload_1.toBatchDetails)(response.data)));
30
- return (0, rxjs_1.from)(actions);
31
- }
32
- return rxjs_1.EMPTY;
33
- }), (0, operators_1.catchError)((error) => {
34
- console.error(`Failed to fetch batch details for ${batchId}:`, (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch batch details errored out: ' +
35
- JSON.stringify(error)));
36
- return rxjs_1.EMPTY;
37
- })), 5));
38
- }));
39
- exports.fetchMultipleBatchDetailsEpic = fetchMultipleBatchDetailsEpic;
@@ -1,6 +0,0 @@
1
- import { ActionsObservable } from 'redux-observable';
2
- import { Observable } from 'rxjs';
3
- import { ZeniAPI } from '../../../../zeniAPI';
4
- import { searchTransactionsForManualMatch, searchTransactionsForManualMatchFailure, searchTransactionsForManualMatchSuccess } from '../../reducers/missingReceiptsViewReducer';
5
- export type ActionType = ReturnType<typeof searchTransactionsForManualMatch> | ReturnType<typeof searchTransactionsForManualMatchSuccess> | ReturnType<typeof searchTransactionsForManualMatchFailure>;
6
- export declare const searchTransactionsForManualMatchEpic: (actions$: ActionsObservable<ActionType>, _state$: unknown, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.searchTransactionsForManualMatchEpic = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const operators_1 = require("rxjs/operators");
6
- const responsePayload_1 = require("../../../../responsePayload");
7
- const missingReceiptsPayload_1 = require("../../payload/missingReceiptsPayload");
8
- const missingReceiptsViewReducer_1 = require("../../reducers/missingReceiptsViewReducer");
9
- const searchTransactionsForManualMatchEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(missingReceiptsViewReducer_1.searchTransactionsForManualMatch.match), (0, operators_1.debounceTime)(300), (0, operators_1.switchMap)((action) => {
10
- const { query } = action.payload;
11
- const searchQuery = JSON.stringify({
12
- search_text: query,
13
- search_fields: ['date', 'amount', 'vendor_name'],
14
- });
15
- const encodedQuery = encodeURIComponent(searchQuery);
16
- return zeniAPI
17
- .getJSON(`${zeniAPI.apiEndPoints.searchMicroServiceBaseUrl}/1.0/transaction-search?query=${encodedQuery}`)
18
- .pipe((0, operators_1.switchMap)((response) => {
19
- if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
20
- const results = response.data.transactions.map(missingReceiptsPayload_1.toManualSearchResult);
21
- return (0, rxjs_1.of)((0, missingReceiptsViewReducer_1.searchTransactionsForManualMatchSuccess)(results));
22
- }
23
- return (0, rxjs_1.of)((0, missingReceiptsViewReducer_1.searchTransactionsForManualMatchFailure)({
24
- error: response.status,
25
- }));
26
- }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, missingReceiptsViewReducer_1.searchTransactionsForManualMatchFailure)({
27
- error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Search transactions for manual match errored: ' +
28
- JSON.stringify(error)),
29
- }))));
30
- }));
31
- exports.searchTransactionsForManualMatchEpic = searchTransactionsForManualMatchEpic;
@@ -1,15 +0,0 @@
1
- import { ActionsObservable, StateObservable } from 'redux-observable';
2
- import { Observable } from 'rxjs';
3
- import { RootState } from '../../../../reducer';
4
- import { ZeniAPI } from '../../../../zeniAPI';
5
- import { bulkUploadReceiptsSuccess, clearBulkUpload, fetchBulkUploadBatchDetails, pusherBatchStatusUpdate, updateBulkUploadBatchStatus } from '../../reducers/missingReceiptsViewReducer';
6
- export type ActionType = ReturnType<typeof bulkUploadReceiptsSuccess> | ReturnType<typeof updateBulkUploadBatchStatus> | ReturnType<typeof pusherBatchStatusUpdate> | ReturnType<typeof fetchBulkUploadBatchDetails> | ReturnType<typeof clearBulkUpload>;
7
- /**
8
- * Watches batch status using two strategies:
9
- * 1. Pusher (primary): Reacts to `pusherBatchStatusUpdate` dispatched by the UI layer
10
- * when a Pusher event arrives. Immediately fetches full details on completion.
11
- * 2. Polling (fallback): Starts a relaxed 10s poll after upload success as a safety net
12
- * in case the Pusher event is missed. Stops on completion or `clearBulkUpload`.
13
- */
14
- export declare const pusherBatchStatusCompletionEpic: (actions$: ActionsObservable<ActionType>) => Observable<ActionType>;
15
- export declare const pollBulkUploadBatchStatusEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pollBulkUploadBatchStatusEpic = exports.pusherBatchStatusCompletionEpic = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const operators_1 = require("rxjs/operators");
6
- const responsePayload_1 = require("../../../../responsePayload");
7
- const missingReceiptsPayload_1 = require("../../payload/missingReceiptsPayload");
8
- const missingReceiptsViewReducer_1 = require("../../reducers/missingReceiptsViewReducer");
9
- /**
10
- * Watches batch status using two strategies:
11
- * 1. Pusher (primary): Reacts to `pusherBatchStatusUpdate` dispatched by the UI layer
12
- * when a Pusher event arrives. Immediately fetches full details on completion.
13
- * 2. Polling (fallback): Starts a relaxed 10s poll after upload success as a safety net
14
- * in case the Pusher event is missed. Stops on completion or `clearBulkUpload`.
15
- */
16
- // Pusher-driven: when Pusher delivers a completed status, fetch details
17
- const pusherBatchStatusCompletionEpic = (actions$) => actions$.pipe((0, operators_1.filter)(missingReceiptsViewReducer_1.pusherBatchStatusUpdate.match), (0, operators_1.filter)((action) => action.payload.status === 'completed'), (0, operators_1.mergeMap)(() => (0, rxjs_1.of)((0, missingReceiptsViewReducer_1.fetchBulkUploadBatchDetails)())));
18
- exports.pusherBatchStatusCompletionEpic = pusherBatchStatusCompletionEpic;
19
- // Polling fallback: relaxed interval as safety net
20
- const FALLBACK_POLL_INTERVAL_MS = 10000;
21
- const pollBulkUploadBatchStatusEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(missingReceiptsViewReducer_1.bulkUploadReceiptsSuccess.match), (0, operators_1.switchMap)((action) => {
22
- const { batchId } = action.payload;
23
- return (0, rxjs_1.timer)(0, FALLBACK_POLL_INTERVAL_MS).pipe((0, operators_1.takeUntil)(actions$.pipe((0, operators_1.filter)((a) => missingReceiptsViewReducer_1.clearBulkUpload.match(a) ||
24
- (missingReceiptsViewReducer_1.pusherBatchStatusUpdate.match(a) &&
25
- a.payload.status === 'completed')))), (0, operators_1.switchMap)(() => zeniAPI
26
- .getJSON(`${zeniAPI.apiEndPoints.communicationAgentMicroServiceBaseUrl}/1.0/receipts/batches/${batchId}/status`)
27
- .pipe((0, operators_1.mergeMap)((response) => {
28
- if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
29
- const batchStatus = (0, missingReceiptsPayload_1.toBatchStatus)(response.data);
30
- const actions = [
31
- (0, missingReceiptsViewReducer_1.updateBulkUploadBatchStatus)(batchStatus),
32
- ];
33
- if (batchStatus.status === 'completed') {
34
- actions.push((0, missingReceiptsViewReducer_1.fetchBulkUploadBatchDetails)());
35
- }
36
- return actions;
37
- }
38
- return [];
39
- }), (0, operators_1.catchError)(() => (0, rxjs_1.of)()))), (0, operators_1.takeWhile)((action) => {
40
- if (missingReceiptsViewReducer_1.fetchBulkUploadBatchDetails.match(action)) {
41
- return false;
42
- }
43
- return true;
44
- }, true));
45
- }));
46
- exports.pollBulkUploadBatchStatusEpic = pollBulkUploadBatchStatusEpic;