@zeniai/client-epic-state 5.0.83-betaRR5 → 5.0.83

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 (97) hide show
  1. package/lib/entity/aiCfo/aiCfoPayload.d.ts +4 -1
  2. package/lib/entity/aiCfo/aiCfoReducer.js +17 -4
  3. package/lib/entity/aiCfo/aiCfoState.d.ts +19 -0
  4. package/lib/entity/aiCfo/aiCfoState.js +8 -1
  5. package/lib/entity/cardPolicy/cardPolicyReducer.js +99 -9
  6. package/lib/entity/cardPolicy/cardPolicySelector.js +4 -0
  7. package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.d.ts +2 -3
  8. package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.js +10 -4
  9. package/lib/epic.d.ts +12 -15
  10. package/lib/epic.js +12 -15
  11. package/lib/esm/entity/aiCfo/aiCfoReducer.js +18 -5
  12. package/lib/esm/entity/aiCfo/aiCfoState.js +7 -0
  13. package/lib/esm/entity/cardPolicy/cardPolicyReducer.js +99 -9
  14. package/lib/esm/entity/cardPolicy/cardPolicySelector.js +4 -0
  15. package/lib/esm/entity/cardPolicy/policyRecommendationFromUploadEpic.js +11 -5
  16. package/lib/esm/epic.js +12 -15
  17. package/lib/esm/index.js +6 -21
  18. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +19 -138
  19. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +0 -18
  20. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +5 -38
  21. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +0 -23
  22. package/lib/index.d.ts +7 -28
  23. package/lib/index.js +14 -68
  24. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.d.ts +1 -40
  25. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +20 -139
  26. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.d.ts +0 -15
  27. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +0 -20
  28. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.d.ts +0 -28
  29. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.d.ts +1 -7
  30. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +6 -39
  31. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.d.ts +0 -15
  32. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +1 -26
  33. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardState.d.ts +0 -16
  34. package/package.json +1 -1
  35. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +0 -328
  36. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +0 -120
  37. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +0 -60
  38. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +0 -118
  39. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +0 -33
  40. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +0 -385
  41. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +0 -34
  42. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +0 -33
  43. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +0 -17
  44. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +0 -144
  45. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +0 -148
  46. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +0 -112
  47. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +0 -101
  48. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +0 -71
  49. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +0 -34
  50. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +0 -1
  51. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +0 -42
  52. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +0 -69
  53. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +0 -45
  54. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +0 -65
  55. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +0 -64
  56. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.d.ts +0 -38
  57. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +0 -333
  58. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.d.ts +0 -25
  59. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +0 -124
  60. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.d.ts +0 -28
  61. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +0 -64
  62. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.d.ts +0 -17
  63. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +0 -122
  64. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.d.ts +0 -23
  65. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +0 -37
  66. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.d.ts +0 -38
  67. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +0 -391
  68. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.d.ts +0 -11
  69. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +0 -38
  70. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.d.ts +0 -24
  71. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +0 -40
  72. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.d.ts +0 -253
  73. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +0 -21
  74. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.d.ts +0 -66
  75. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +0 -151
  76. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.d.ts +0 -30
  77. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +0 -152
  78. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.d.ts +0 -26
  79. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +0 -116
  80. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.d.ts +0 -35
  81. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +0 -105
  82. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.d.ts +0 -23
  83. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +0 -75
  84. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.d.ts +0 -15
  85. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +0 -38
  86. package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.d.ts +0 -76
  87. package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +0 -2
  88. package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.d.ts +0 -7
  89. package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +0 -46
  90. package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.d.ts +0 -28
  91. package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +0 -73
  92. package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.d.ts +0 -23
  93. package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +0 -49
  94. package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.d.ts +0 -11
  95. package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +0 -69
  96. package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.d.ts +0 -11
  97. package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +0 -68
@@ -1,73 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildAiCardCreationFormDraftSeed = void 0;
4
- const deriveAiCardRowsFromTeams_1 = require("./deriveAiCardRowsFromTeams");
5
- /**
6
- * Build the initial `CardsFormDraft` + companion seed context for a
7
- * fresh AI card-creation session. Used by the `seedAiCardCreationFormDraft`
8
- * reducer.
9
- *
10
- * Branches on `initialData.mode`:
11
- * - `review`: step-1 team rows start fully checked and step-2 `cardRows`
12
- * are seeded by `deriveAiCardRowsFromTeams` so the table is populated
13
- * on first render. `applyAiCardCreationFormDraftUpdate` only re-derives
14
- * when a team is toggled in step 1, so without this initial seed the
15
- * happy path (user proceeds to step 2 without un/re-checking) would
16
- * land on an empty table.
17
- * - `create`: no step-1 list — seed `cardRows` directly from the AI's
18
- * suggested cards (resolving owners via `allUsers`) and leave
19
- * `teamRows` empty.
20
- */
21
- const buildAiCardCreationFormDraftSeed = ({ initialData, allUsers, }) => {
22
- const context = {
23
- allUsers,
24
- mode: initialData.mode,
25
- suggestedOwnerUserIdByTeamId: initialData.suggestedOwnerUserIdByTeamId,
26
- };
27
- if (initialData.mode === 'create') {
28
- return {
29
- context,
30
- draft: {
31
- teamRows: [],
32
- cardRows: initialData.cardRows.map((seed) => buildCardRowFromSeed(seed, allUsers)),
33
- },
34
- };
35
- }
36
- const teamRows = initialData.teamRows.map((row) => ({
37
- cardKind: row.cardKind,
38
- id: row.id,
39
- isChecked: true,
40
- label: row.label,
41
- value: row.avgMonthlySpend,
42
- rightLabel: row.recommendedLimit,
43
- rightSubLabel: row.recommendedLimitCadence,
44
- }));
45
- return {
46
- context,
47
- draft: {
48
- teamRows,
49
- cardRows: (0, deriveAiCardRowsFromTeams_1.deriveAiCardRowsFromTeams)({
50
- teamRows,
51
- prevCardRows: [],
52
- allUsers,
53
- suggestedOwnerUserIdByTeamId: initialData.suggestedOwnerUserIdByTeamId,
54
- }),
55
- },
56
- };
57
- };
58
- exports.buildAiCardCreationFormDraftSeed = buildAiCardCreationFormDraftSeed;
59
- const buildCardRowFromSeed = (seed, allUsers) => {
60
- const selectedUser = seed.suggestedOwnerUserId != null
61
- ? allUsers.find((user) => user.userId === seed.suggestedOwnerUserId)
62
- : undefined;
63
- return {
64
- cardKind: seed.cardKind,
65
- id: seed.id,
66
- label: seed.label,
67
- owner: {
68
- allUsers,
69
- selectedUser,
70
- },
71
- recommendedLimit: seed.recommendedLimit,
72
- };
73
- };
@@ -1,23 +0,0 @@
1
- import { User } from '../../../../entity/user/userState';
2
- import { CardsCardRow, CardsTeamRow } from './aiCardCreationFormDraftTypes';
3
- export interface DeriveAiCardRowsFromTeamsArgs {
4
- allUsers: User[];
5
- /** Map of teamId -> suggested owner userId surfaced by the AI. */
6
- suggestedOwnerUserIdByTeamId: Record<string, string | undefined>;
7
- teamRows: CardsTeamRow[];
8
- /** Existing step-2 rows; preserved row-for-row when the team is still checked. */
9
- prevCardRows?: CardsCardRow[];
10
- }
11
- /**
12
- * Derive the step-2 `cardRows` from the user's step-1 team selection.
13
- *
14
- * Behaviour:
15
- * - One output row per `teamRow.isChecked === true`, in the same order.
16
- * - When a team is still checked AND we have a previous row for it, the
17
- * previous row is preserved verbatim — so user edits made in step 2
18
- * aren't blown away when an upstream watchHandler re-derives.
19
- * - Newly-included teams fall back to:
20
- * - `selectedUser = the User whose userId === suggestedOwnerUserIdByTeamId[teamId]`
21
- * - `recommendedLimit = numeric parse of `teamRow.rightLabel` (e.g. "$20,000")`
22
- */
23
- export declare const deriveAiCardRowsFromTeams: ({ teamRows, prevCardRows, allUsers, suggestedOwnerUserIdByTeamId, }: DeriveAiCardRowsFromTeamsArgs) => CardsCardRow[];
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deriveAiCardRowsFromTeams = void 0;
4
- /**
5
- * Derive the step-2 `cardRows` from the user's step-1 team selection.
6
- *
7
- * Behaviour:
8
- * - One output row per `teamRow.isChecked === true`, in the same order.
9
- * - When a team is still checked AND we have a previous row for it, the
10
- * previous row is preserved verbatim — so user edits made in step 2
11
- * aren't blown away when an upstream watchHandler re-derives.
12
- * - Newly-included teams fall back to:
13
- * - `selectedUser = the User whose userId === suggestedOwnerUserIdByTeamId[teamId]`
14
- * - `recommendedLimit = numeric parse of `teamRow.rightLabel` (e.g. "$20,000")`
15
- */
16
- const deriveAiCardRowsFromTeams = ({ teamRows, prevCardRows = [], allUsers, suggestedOwnerUserIdByTeamId, }) => {
17
- const prevById = new Map(prevCardRows.map((row) => [row.id, row]));
18
- const userById = new Map(allUsers.map((user) => [user.userId, user]));
19
- return teamRows
20
- .filter((row) => row.isChecked)
21
- .map((teamRow) => {
22
- const previous = prevById.get(teamRow.id);
23
- if (previous != null) {
24
- return previous;
25
- }
26
- const suggestedUserId = suggestedOwnerUserIdByTeamId[teamRow.id];
27
- const selectedUser = suggestedUserId != null ? userById.get(suggestedUserId) : undefined;
28
- return {
29
- cardKind: teamRow.cardKind,
30
- id: teamRow.id,
31
- label: teamRow.label,
32
- owner: {
33
- allUsers,
34
- selectedUser,
35
- },
36
- recommendedLimit: parseLimitToFloat(teamRow.rightLabel),
37
- };
38
- });
39
- };
40
- exports.deriveAiCardRowsFromTeams = deriveAiCardRowsFromTeams;
41
- // Best-effort numeric parse of an AI-provided limit string like "$20,000".
42
- const parseLimitToFloat = (raw) => {
43
- const cleaned = raw.replace(/[^0-9.-]/g, '');
44
- if (cleaned.length === 0) {
45
- return undefined;
46
- }
47
- const parsed = Number(cleaned);
48
- return Number.isFinite(parsed) ? parsed : undefined;
49
- };
@@ -1,11 +0,0 @@
1
- import { ActionsObservable, StateObservable } from 'redux-observable';
2
- import { Observable } from 'rxjs';
3
- import { upsertAnswerPayload, upsertOrAddQuestionAnswerPayload } from '../../../../entity/aiCfo/aiCfoReducer';
4
- import { RootState } from '../../../../reducer';
5
- import { fetchUserListByType } from '../../../userListView/userListViewReducer';
6
- import { clearAiCardCreationFormDraft, issueChargeCardSuccessOrFailure, seedAiCardCreationFormDraft } from './issueChargeCardReducer';
7
- export type ActionType = ReturnType<typeof fetchUserListByType> | ReturnType<typeof seedAiCardCreationFormDraft> | ReturnType<typeof clearAiCardCreationFormDraft>;
8
- type SeedTriggerAction = ReturnType<typeof upsertAnswerPayload> | ReturnType<typeof upsertOrAddQuestionAnswerPayload>;
9
- type InboundAction = SeedTriggerAction | ReturnType<typeof issueChargeCardSuccessOrFailure>;
10
- export declare const seedAiCardCreationFormDraftEpic: (actions$: ActionsObservable<InboundAction>, state$: StateObservable<RootState>) => Observable<ActionType>;
11
- export {};
@@ -1,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.seedAiCardCreationFormDraftEpic = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const operators_1 = require("rxjs/operators");
6
- const aiCfoReducer_1 = require("../../../../entity/aiCfo/aiCfoReducer");
7
- const aiCfoSelector_1 = require("../../../../entity/aiCfo/aiCfoSelector");
8
- const userListViewReducer_1 = require("../../../userListView/userListViewReducer");
9
- const userListViewSelector_1 = require("../../../userListView/userListViewSelector");
10
- const issueChargeCardReducer_1 = require("./issueChargeCardReducer");
11
- const readAllUsersAsUserArray = (state) => (0, userListViewSelector_1.getUserList)(state.userState, state.userRoleState, state.userListViewState, 'cardHolderCandidate')
12
- .users.map((person) => person.user)
13
- .filter((user) => user != null);
14
- const readCardsCreationPayload = (state, chatSessionId, questionAnswerId) => {
15
- const qa = (0, aiCfoSelector_1.getQuestionAnswerByIdForChatSession)(state.aiCfoState, chatSessionId, questionAnswerId);
16
- const visualization = qa?.responses.answer?.content.visualization;
17
- if (visualization?.type !== 'interactive_form') {
18
- return undefined;
19
- }
20
- const data = visualization.data;
21
- if (!('formType' in data) || data.formType !== 'cards_creation') {
22
- return undefined;
23
- }
24
- return data.payload;
25
- };
26
- // Pusher (`upsertAnswerPayload`) targets either an explicit
27
- // `questionAnswerId` or "latest QA in session"; REST
28
- // (`upsertOrAddQuestionAnswerPayload`) always carries the id. Resolve to
29
- // the QA the reducer just wrote so we can read the freshly-decoded
30
- // visualization off state.
31
- const resolveQuestionAnswerId = (state, action) => {
32
- if (action.payload.questionAnswerId != null) {
33
- return action.payload.questionAnswerId;
34
- }
35
- const session = state.aiCfoState.aiCfoByChatSessionId[action.payload.chatSessionId];
36
- return session?.questionAnswers.slice(-1)[0]?.questionAnswerId;
37
- };
38
- const isSeedTrigger = (action) => aiCfoReducer_1.upsertAnswerPayload.match(action) ||
39
- aiCfoReducer_1.upsertOrAddQuestionAnswerPayload.match(action);
40
- const seedAiCardCreationFormDraftEpic = (actions$, state$) => actions$.pipe((0, operators_1.mergeMap)((action) => {
41
- if (issueChargeCardReducer_1.issueChargeCardSuccessOrFailure.match(action) &&
42
- action.payload.fetchState === 'Completed') {
43
- return (0, rxjs_1.of)((0, issueChargeCardReducer_1.clearAiCardCreationFormDraft)());
44
- }
45
- if (!isSeedTrigger(action)) {
46
- return rxjs_1.EMPTY;
47
- }
48
- const state = state$.value;
49
- const questionAnswerId = resolveQuestionAnswerId(state, action);
50
- if (questionAnswerId == null) {
51
- return rxjs_1.EMPTY;
52
- }
53
- const payload = readCardsCreationPayload(state, action.payload.chatSessionId, questionAnswerId);
54
- if (payload == null) {
55
- return rxjs_1.EMPTY;
56
- }
57
- const allUsersNow = readAllUsersAsUserArray(state);
58
- if (allUsersNow.length > 0) {
59
- return (0, rxjs_1.of)((0, issueChargeCardReducer_1.seedAiCardCreationFormDraft)(allUsersNow, payload));
60
- }
61
- const seedWhenUsersLoaded$ = state$.pipe((0, operators_1.map)(readAllUsersAsUserArray), (0, operators_1.distinctUntilChanged)((prev, next) => prev.length === next.length &&
62
- prev.every((user, idx) => user === next[idx])), (0, operators_1.filter)((users) => users.length > 0), (0, operators_1.take)(1), (0, operators_1.map)((users) => (0, issueChargeCardReducer_1.seedAiCardCreationFormDraft)(users, payload)));
63
- const userListFetchState = state.userListViewState.userListByType.cardHolderCandidate.fetchState;
64
- if (userListFetchState === 'In-Progress') {
65
- return seedWhenUsersLoaded$;
66
- }
67
- return (0, rxjs_1.concat)((0, rxjs_1.of)((0, userListViewReducer_1.fetchUserListByType)('cardHolderCandidate', false)), seedWhenUsersLoaded$);
68
- }));
69
- exports.seedAiCardCreationFormDraftEpic = seedAiCardCreationFormDraftEpic;
@@ -1,11 +0,0 @@
1
- import { CardsFormDraft } from './aiCardCreationFormDraftTypes';
2
- import { IssueChargeCardLocalData } from './issueChargeCardState';
3
- /**
4
- * Convert a `CardsFormDraft` into the `IssueChargeCardLocalData[]`
5
- * payload `issueChargeCardEpic` expects in
6
- * `state.issueChargeCardState.localData`.
7
- *
8
- * Returns an empty array when `cardRows` is empty so callers can
9
- * short-circuit without dispatching a no-op bulk POST.
10
- */
11
- export declare const toIssueChargeCardLocalDataFromDraft: (draft: CardsFormDraft) => IssueChargeCardLocalData[];
@@ -1,68 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toIssueChargeCardLocalDataFromDraft = void 0;
4
- /**
5
- * Default credit limit frequency emitted on the wire when the AI CFO
6
- * card creation form is submitted. The interactive form has no
7
- * frequency field today (v1 product decision: AI CFO only ever issues
8
- * monthly virtual credit cards).
9
- */
10
- const DEFAULT_FREQUENCY = 'monthly';
11
- const DEFAULT_CURRENCY_CODE = 'USD';
12
- const DEFAULT_CURRENCY_SYMBOL = '$';
13
- /**
14
- * Map a single AI card-creation row to the `IssueChargeCardLocalData`
15
- * shape consumed by `issueChargeCardEpic`.
16
- *
17
- * AI CFO only issues `business_virtual_credit_card`s in v1, so:
18
- * - `chargeCardType` is hard-coded to `'credit_card'`
19
- * - `creditCard.cardType` is hard-coded to `'business_virtual_credit_card'`
20
- * - the physicalCard / debitCard.* slots are populated with empty
21
- * defaults that the epic ignores.
22
- */
23
- const mapCardRow = (row) => {
24
- const ownerUserId = row.owner.selectedUser?.userId;
25
- return {
26
- lineId: row.id,
27
- chargeCardType: 'credit_card',
28
- creditCard: {
29
- cardType: 'business_virtual_credit_card',
30
- virtualCard: {
31
- cardName: row.label,
32
- frequency: DEFAULT_FREQUENCY,
33
- userIds: ownerUserId != null ? [ownerUserId] : [],
34
- amount: {
35
- amount: row.recommendedLimit ?? 0,
36
- currencyCode: DEFAULT_CURRENCY_CODE,
37
- currencySymbol: DEFAULT_CURRENCY_SYMBOL,
38
- },
39
- },
40
- physicalCard: {
41
- cardName: '',
42
- frequency: DEFAULT_FREQUENCY,
43
- },
44
- },
45
- debitCard: {
46
- cardType: 'business_virtual_debit_card',
47
- virtualCard: {
48
- cardName: '',
49
- frequency: DEFAULT_FREQUENCY,
50
- userIds: [],
51
- },
52
- physicalCard: {
53
- cardName: '',
54
- frequency: DEFAULT_FREQUENCY,
55
- },
56
- },
57
- };
58
- };
59
- /**
60
- * Convert a `CardsFormDraft` into the `IssueChargeCardLocalData[]`
61
- * payload `issueChargeCardEpic` expects in
62
- * `state.issueChargeCardState.localData`.
63
- *
64
- * Returns an empty array when `cardRows` is empty so callers can
65
- * short-circuit without dispatching a no-op bulk POST.
66
- */
67
- const toIssueChargeCardLocalDataFromDraft = (draft) => draft.cardRows.map(mapCardRow);
68
- exports.toIssueChargeCardLocalDataFromDraft = toIssueChargeCardLocalDataFromDraft;