@cranberry-money/shared-services 10.1.44 โ 10.1.46
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/dist/banks.d.ts +2 -2
- package/dist/banks.d.ts.map +1 -1
- package/dist/banks.js.map +1 -1
- package/dist/cashAccounts.d.ts +3 -0
- package/dist/cashAccounts.d.ts.map +1 -1
- package/dist/cashAccounts.js +10 -0
- package/dist/cashAccounts.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/userPreferences.d.ts.map +1 -1
- package/dist/userPreferences.js.map +1 -1
- package/package.json +1 -1
- package/README.md +0 -265
package/dist/banks.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AxiosInstance } from 'axios';
|
|
2
|
-
import type { BankAccount, BankAccountQueryParams,
|
|
2
|
+
import type { BankAccount, BankAccountQueryParams, CreateBankAccount, UpdateBankAccount, PaginatedResponse } from '@cranberry-money/shared-types';
|
|
3
3
|
export declare const getBankAccounts: (apiClient: AxiosInstance, params?: BankAccountQueryParams) => Promise<import("axios").AxiosResponse<PaginatedResponse<BankAccount>, any>>;
|
|
4
4
|
export declare const getBankAccountByUuid: (apiClient: AxiosInstance, uuid: string) => Promise<import("axios").AxiosResponse<BankAccount, any>>;
|
|
5
|
-
export declare const createBankAccount: (apiClient: AxiosInstance, data:
|
|
5
|
+
export declare const createBankAccount: (apiClient: AxiosInstance, data: CreateBankAccount) => Promise<import("axios").AxiosResponse<BankAccount, any>>;
|
|
6
6
|
export declare const updateBankAccount: (apiClient: AxiosInstance, uuid: string, data: UpdateBankAccount) => Promise<import("axios").AxiosResponse<BankAccount, any>>;
|
|
7
7
|
export declare const deleteBankAccount: (apiClient: AxiosInstance, uuid: string) => Promise<import("axios").AxiosResponse<any, any>>;
|
|
8
8
|
export declare const setPrimaryBankAccount: (apiClient: AxiosInstance, uuid: string) => Promise<import("axios").AxiosResponse<BankAccount, any>>;
|
package/dist/banks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banks.d.ts","sourceRoot":"","sources":["../src/banks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"banks.d.ts","sourceRoot":"","sources":["../src/banks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,eAAe,GAAI,WAAW,aAAa,EAAE,SAAS,sBAAsB,gFAMxF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,WAAW,aAAa,EAAE,MAAM,MAAM,6DAE1E,CAAC;AAcF,eAAO,MAAM,iBAAiB,GAAI,WAAW,aAAa,EAAE,MAAM,iBAAiB,6DAElF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,WAAW,aAAa,EAAE,MAAM,MAAM,EAAE,MAAM,iBAAiB,6DAEhG,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,WAAW,aAAa,EAAE,MAAM,MAAM,qDAEvE,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,WAAW,aAAa,EAAE,MAAM,MAAM,6DAE3E,CAAC"}
|
package/dist/banks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banks.js","sourceRoot":"","sources":["../src/banks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAS3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAwB,EAAE,MAA+B,EAAE,EAAE;IAC3F,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAE7C,OAAO,SAAS,CAAC,GAAG,CAAiC,sBAAsB,CAAC,IAAI,EAAE;QAChF,MAAM,EAAE,WAAW;KACpB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAwB,EAAE,IAAY,EAAE,EAAE;IAC7E,OAAO,SAAS,CAAC,GAAG,CAAc,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,MAA+B,EAA0B,EAAE;IACnF,MAAM,WAAW,GAA2B,EAAE,CAAC;IAE/C,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACpD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"banks.js","sourceRoot":"","sources":["../src/banks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAS3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAwB,EAAE,MAA+B,EAAE,EAAE;IAC3F,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAE7C,OAAO,SAAS,CAAC,GAAG,CAAiC,sBAAsB,CAAC,IAAI,EAAE;QAChF,MAAM,EAAE,WAAW;KACpB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAwB,EAAE,IAAY,EAAE,EAAE;IAC7E,OAAO,SAAS,CAAC,GAAG,CAAc,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,MAA+B,EAA0B,EAAE;IACnF,MAAM,WAAW,GAA2B,EAAE,CAAC;IAE/C,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACpD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAwB,EAAE,IAAuB,EAAE,EAAE;IACrF,OAAO,SAAS,CAAC,IAAI,CAAc,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAwB,EAAE,IAAY,EAAE,IAAuB,EAAE,EAAE;IACnG,OAAO,SAAS,CAAC,KAAK,CAAc,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AACjF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAwB,EAAE,IAAY,EAAE,EAAE;IAC1E,OAAO,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,SAAwB,EAAE,IAAY,EAAE,EAAE;IAC9E,OAAO,SAAS,CAAC,IAAI,CAAc,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC3F,CAAC,CAAC"}
|
package/dist/cashAccounts.d.ts
CHANGED
|
@@ -3,4 +3,7 @@ import type { CashAccount, CashAccountQueryParams, PaginatedResponse } from '@cr
|
|
|
3
3
|
export declare const getCashAccounts: (apiClient: AxiosInstance, params?: CashAccountQueryParams) => Promise<import("axios").AxiosResponse<PaginatedResponse<CashAccount>, any>>;
|
|
4
4
|
export declare const getCashAccountByUuid: (apiClient: AxiosInstance, uuid: string) => Promise<import("axios").AxiosResponse<CashAccount, any>>;
|
|
5
5
|
export declare const getAccountCashAccounts: (apiClient: AxiosInstance, accountUuid: string) => Promise<import("axios").AxiosResponse<PaginatedResponse<CashAccount>, any>>;
|
|
6
|
+
export declare const getActiveCashAccount: (apiClient: AxiosInstance, accountUuid: string) => Promise<{
|
|
7
|
+
data: CashAccount;
|
|
8
|
+
}>;
|
|
6
9
|
//# sourceMappingURL=cashAccounts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cashAccounts.d.ts","sourceRoot":"","sources":["../src/cashAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAE5G,eAAO,MAAM,eAAe,GAAI,WAAW,aAAa,EAAE,SAAS,sBAAsB,gFAsBxF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,WAAW,aAAa,EAAE,MAAM,MAAM,6DAE1E,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,WAAW,aAAa,EAAE,aAAa,MAAM,gFAEnF,CAAC"}
|
|
1
|
+
{"version":3,"file":"cashAccounts.d.ts","sourceRoot":"","sources":["../src/cashAccounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAE5G,eAAO,MAAM,eAAe,GAAI,WAAW,aAAa,EAAE,SAAS,sBAAsB,gFAsBxF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,WAAW,aAAa,EAAE,MAAM,MAAM,6DAE1E,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,WAAW,aAAa,EAAE,aAAa,MAAM,gFAEnF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,WAAW,aAAa,EAAE,aAAa,MAAM,KAAG,OAAO,CAAC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAWvH,CAAC"}
|
package/dist/cashAccounts.js
CHANGED
|
@@ -26,4 +26,14 @@ export const getCashAccountByUuid = (apiClient, uuid) => {
|
|
|
26
26
|
export const getAccountCashAccounts = (apiClient, accountUuid) => {
|
|
27
27
|
return getCashAccounts(apiClient, { account: accountUuid });
|
|
28
28
|
};
|
|
29
|
+
export const getActiveCashAccount = async (apiClient, accountUuid) => {
|
|
30
|
+
const response = await getAccountCashAccounts(apiClient, accountUuid);
|
|
31
|
+
const activeCashAccount = response.data.results.find(account => account.isActive);
|
|
32
|
+
if (!activeCashAccount) {
|
|
33
|
+
throw new Error(`No active cash account found for account ${accountUuid}`);
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
data: activeCashAccount
|
|
37
|
+
};
|
|
38
|
+
};
|
|
29
39
|
//# sourceMappingURL=cashAccounts.js.map
|
package/dist/cashAccounts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cashAccounts.js","sourceRoot":"","sources":["../src/cashAccounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAwB,EAAE,MAA+B,EAAE,EAAE;IAC3F,MAAM,WAAW,GAA2B,EAAE,CAAC;IAE/C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;QACrB,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACzC,CAAC;IACD,IAAI,MAAM,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,MAAM,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;QACrB,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACzC,CAAC;IAED,OAAO,SAAS,CAAC,GAAG,CAAiC,sBAAsB,CAAC,IAAI,EAAE;QAChF,MAAM,EAAE,WAAW;KACpB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAwB,EAAE,IAAY,EAAE,EAAE;IAC7E,OAAO,SAAS,CAAC,GAAG,CAAc,GAAG,sBAAsB,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAwB,EAAE,WAAmB,EAAE,EAAE;IACtF,OAAO,eAAe,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cashAccounts.js","sourceRoot":"","sources":["../src/cashAccounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAAwB,EAAE,MAA+B,EAAE,EAAE;IAC3F,MAAM,WAAW,GAA2B,EAAE,CAAC;IAE/C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;QACrB,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACzC,CAAC;IACD,IAAI,MAAM,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,MAAM,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;QACrB,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACzC,CAAC;IAED,OAAO,SAAS,CAAC,GAAG,CAAiC,sBAAsB,CAAC,IAAI,EAAE;QAChF,MAAM,EAAE,WAAW;KACpB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,SAAwB,EAAE,IAAY,EAAE,EAAE;IAC7E,OAAO,SAAS,CAAC,GAAG,CAAc,GAAG,sBAAsB,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAwB,EAAE,WAAmB,EAAE,EAAE;IACtF,OAAO,eAAe,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,SAAwB,EAAE,WAAmB,EAAkC,EAAE;IAC1H,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAElF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,4CAA4C,WAAW,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO;QACL,IAAI,EAAE,iBAAiB;KACxB,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { signin, signout, signup, verifyEmail, resendVerificationCode, refreshToken } from './auth';
|
|
2
2
|
export { getAccounts, createAccount, updateAccount, getAccountByUuid } from './accounts';
|
|
3
|
-
export { getBankAccounts, getBankAccountByUuid, createBankAccount, updateBankAccount, deleteBankAccount, setPrimaryBankAccount } from './banks';
|
|
4
|
-
export { getCashAccounts, getCashAccountByUuid, getAccountCashAccounts } from './cashAccounts';
|
|
3
|
+
export { getBankAccounts, getBankAccountByUuid, createBankAccount, updateBankAccount, deleteBankAccount, setPrimaryBankAccount, } from './banks';
|
|
4
|
+
export { getCashAccounts, getCashAccountByUuid, getAccountCashAccounts, getActiveCashAccount } from './cashAccounts';
|
|
5
5
|
export { getCashAccountTransactions, getCashAccountTransactionByUuid, getCashAccountTransactionsByAccount, getTransactionsByDateRange, getRecentTransactions, } from './cashAccountTransactions';
|
|
6
6
|
export type { PaginatedCashAccountTransactions } from './cashAccountTransactions';
|
|
7
7
|
export { getCountries, getCountryByUuid, getAvailableCountries, searchCountries } from './countries';
|
|
@@ -21,8 +21,8 @@ export { getTargetTradeSheets, getTargetTradeSheetByUuid, createTargetTradeSheet
|
|
|
21
21
|
export { createTaxResidency, updateTaxResidency, deleteTaxResidency, getTaxResidencies } from './taxResidencies';
|
|
22
22
|
export { getTrades, getTradeByUuid } from './trades';
|
|
23
23
|
export { getTradeSheets, getTradeSheetByUuid } from './tradeSheets';
|
|
24
|
-
export { createUserProfile, updateUserProfile, updateUserProfileCompletion, getUserProfiles, getCurrentUserProfile } from './users';
|
|
25
|
-
export { getCurrentUserPreferences, upsertCurrentUserPreferences
|
|
24
|
+
export { createUserProfile, updateUserProfile, updateUserProfileCompletion, getUserProfiles, getCurrentUserProfile, } from './users';
|
|
25
|
+
export { getCurrentUserPreferences, upsertCurrentUserPreferences } from './userPreferences';
|
|
26
26
|
export { getWithdrawalAssetLiquidations, createWithdrawalAssetLiquidation, updateWithdrawalAssetLiquidation, getWithdrawalAssetLiquidationByUuid, deleteWithdrawalAssetLiquidation, getAssetLiquidationsByWithdrawalRequest, } from './withdrawalLiquidations';
|
|
27
27
|
export { getWithdrawalRequests, createWithdrawalRequest, updateWithdrawalRequest, getWithdrawalRequestByUuid, deleteWithdrawalRequest, } from './withdrawalRequests';
|
|
28
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEpG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzF,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { signin, signout, signup, verifyEmail, resendVerificationCode, refreshToken } from './auth';
|
|
2
2
|
export { getAccounts, createAccount, updateAccount, getAccountByUuid } from './accounts';
|
|
3
|
-
export { getBankAccounts, getBankAccountByUuid, createBankAccount, updateBankAccount, deleteBankAccount, setPrimaryBankAccount } from './banks';
|
|
4
|
-
export { getCashAccounts, getCashAccountByUuid, getAccountCashAccounts } from './cashAccounts';
|
|
3
|
+
export { getBankAccounts, getBankAccountByUuid, createBankAccount, updateBankAccount, deleteBankAccount, setPrimaryBankAccount, } from './banks';
|
|
4
|
+
export { getCashAccounts, getCashAccountByUuid, getAccountCashAccounts, getActiveCashAccount } from './cashAccounts';
|
|
5
5
|
export { getCashAccountTransactions, getCashAccountTransactionByUuid, getCashAccountTransactionsByAccount, getTransactionsByDateRange, getRecentTransactions, } from './cashAccountTransactions';
|
|
6
6
|
export { getCountries, getCountryByUuid, getAvailableCountries, searchCountries } from './countries';
|
|
7
7
|
export { generateMDADocument, generateSOADocument, generateAgreementDocument, generateDocument, downloadMDADocument, downloadSOADocument, downloadAgreementDocument, downloadDocument, signMDADocument, signSOADocument, signAgreementDocument, signDocument, } from './documents';
|
|
@@ -19,8 +19,8 @@ export { getTargetTradeSheets, getTargetTradeSheetByUuid, createTargetTradeSheet
|
|
|
19
19
|
export { createTaxResidency, updateTaxResidency, deleteTaxResidency, getTaxResidencies } from './taxResidencies';
|
|
20
20
|
export { getTrades, getTradeByUuid } from './trades';
|
|
21
21
|
export { getTradeSheets, getTradeSheetByUuid } from './tradeSheets';
|
|
22
|
-
export { createUserProfile, updateUserProfile, updateUserProfileCompletion, getUserProfiles, getCurrentUserProfile } from './users';
|
|
23
|
-
export { getCurrentUserPreferences, upsertCurrentUserPreferences
|
|
22
|
+
export { createUserProfile, updateUserProfile, updateUserProfileCompletion, getUserProfiles, getCurrentUserProfile, } from './users';
|
|
23
|
+
export { getCurrentUserPreferences, upsertCurrentUserPreferences } from './userPreferences';
|
|
24
24
|
export { getWithdrawalAssetLiquidations, createWithdrawalAssetLiquidation, updateWithdrawalAssetLiquidation, getWithdrawalAssetLiquidationByUuid, deleteWithdrawalAssetLiquidation, getAssetLiquidationsByWithdrawalRequest, } from './withdrawalLiquidations';
|
|
25
25
|
export { getWithdrawalRequests, createWithdrawalRequest, updateWithdrawalRequest, getWithdrawalRequestByUuid, deleteWithdrawalRequest, } from './withdrawalRequests';
|
|
26
26
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEpG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzF,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userPreferences.d.ts","sourceRoot":"","sources":["../src/userPreferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"userPreferences.d.ts","sourceRoot":"","sources":["../src/userPreferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE7F,eAAO,MAAM,yBAAyB,GAAI,WAAW,aAAa,iEAEjE,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,WAAW,aAAa,EAAE,MAAM,sBAAsB,iEAElG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userPreferences.js","sourceRoot":"","sources":["../src/userPreferences.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"userPreferences.js","sourceRoot":"","sources":["../src/userPreferences.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAG/E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,SAAwB,EAAE,EAAE;IACpE,OAAO,SAAS,CAAC,GAAG,CAAkB,0BAA0B,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,SAAwB,EAAE,IAA4B,EAAE,EAAE;IACrG,OAAO,SAAS,CAAC,IAAI,CAAkB,0BAA0B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cranberry-money/shared-services",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.46",
|
|
4
4
|
"description": "Platform-agnostic API services with pure functions and dependency injection. Includes auth, portfolios, instruments, countries, sectors, and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
package/README.md
DELETED
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
# @cranberry-money/shared-services
|
|
2
|
-
|
|
3
|
-
**Platform-agnostic service functions** that work with any axios-compatible API client.
|
|
4
|
-
|
|
5
|
-
[](https://badge.fury.io/js/%40cranberry-money%2Fshared-services)
|
|
6
|
-
[](https://www.typescriptlang.org/)
|
|
7
|
-
|
|
8
|
-
## ๐ฆ Package Overview
|
|
9
|
-
|
|
10
|
-
This package provides reusable service functions for the Blueberry platform ecosystem. Services are pure functions that accept an API client, allowing the same business logic to work across web browsers, mobile apps, and testing environments.
|
|
11
|
-
|
|
12
|
-
### Core Philosophy
|
|
13
|
-
|
|
14
|
-
- **One service implementation, multiple platforms**: Write once, use everywhere
|
|
15
|
-
- **Platform owns authentication**: Each platform handles auth its own way (cookies, tokens, etc.)
|
|
16
|
-
- **Simple and functional**: No complex patterns, just functions that call APIs
|
|
17
|
-
- **Fully typed**: Complete TypeScript support with types from `@cranberry-money/shared-types`
|
|
18
|
-
|
|
19
|
-
## ๐ Quick Start
|
|
20
|
-
|
|
21
|
-
### Installation
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
npm install @cranberry-money/shared-services
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### Basic Usage
|
|
28
|
-
|
|
29
|
-
#### Web Application (with cookies)
|
|
30
|
-
|
|
31
|
-
```typescript
|
|
32
|
-
// src/services/webApiClient.ts
|
|
33
|
-
import axios from 'axios';
|
|
34
|
-
|
|
35
|
-
export const webApiClient = axios.create({
|
|
36
|
-
baseURL: import.meta.env.VITE_API_URL,
|
|
37
|
-
withCredentials: true, // Use cookies for auth
|
|
38
|
-
});
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
```typescript
|
|
42
|
-
// src/services/portfolios.ts
|
|
43
|
-
import { webApiClient } from './webApiClient';
|
|
44
|
-
import { createPortfolioService } from '@cranberry-money/shared-services';
|
|
45
|
-
|
|
46
|
-
// Create your platform-specific service
|
|
47
|
-
export const portfolioService = createPortfolioService(webApiClient);
|
|
48
|
-
|
|
49
|
-
// Use in your application
|
|
50
|
-
const portfolios = await portfolioService.getAll();
|
|
51
|
-
const portfolio = await portfolioService.create({ name: 'My Portfolio' });
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
#### Mobile Application (with tokens)
|
|
55
|
-
|
|
56
|
-
```typescript
|
|
57
|
-
// src/services/mobileApiClient.ts
|
|
58
|
-
import axios from 'axios';
|
|
59
|
-
import * as SecureStore from 'expo-secure-store';
|
|
60
|
-
|
|
61
|
-
export const mobileApiClient = axios.create({
|
|
62
|
-
baseURL: process.env.API_URL,
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
// Add auth token to requests
|
|
66
|
-
mobileApiClient.interceptors.request.use(async (config) => {
|
|
67
|
-
const token = await SecureStore.getItemAsync('authToken');
|
|
68
|
-
if (token) {
|
|
69
|
-
config.headers.Authorization = `Bearer ${token}`;
|
|
70
|
-
}
|
|
71
|
-
return config;
|
|
72
|
-
});
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
```typescript
|
|
76
|
-
// src/services/portfolios.ts
|
|
77
|
-
import { mobileApiClient } from './mobileApiClient';
|
|
78
|
-
import { createPortfolioService } from '@cranberry-money/shared-services';
|
|
79
|
-
|
|
80
|
-
export const portfolioService = createPortfolioService(mobileApiClient);
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
## ๐ Service Patterns
|
|
84
|
-
|
|
85
|
-
### Pattern 1: Service Factory (Recommended)
|
|
86
|
-
|
|
87
|
-
Group related operations together:
|
|
88
|
-
|
|
89
|
-
```typescript
|
|
90
|
-
import { createPortfolioService } from '@cranberry-money/shared-services';
|
|
91
|
-
import { webApiClient } from './webApiClient'; // or mobileApiClient for mobile
|
|
92
|
-
|
|
93
|
-
const portfolioService = createPortfolioService(webApiClient);
|
|
94
|
-
|
|
95
|
-
// All portfolio operations in one object
|
|
96
|
-
await portfolioService.getAll({ page: 1 });
|
|
97
|
-
await portfolioService.getByUuid('123');
|
|
98
|
-
await portfolioService.create({ name: 'Tech Portfolio' });
|
|
99
|
-
await portfolioService.update('123', { name: 'Updated Portfolio' });
|
|
100
|
-
await portfolioService.delete('123');
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### Pattern 2: Individual Functions
|
|
104
|
-
|
|
105
|
-
For better tree-shaking and selective imports:
|
|
106
|
-
|
|
107
|
-
```typescript
|
|
108
|
-
import { getPortfolios, createPortfolio } from '@cranberry-money/shared-services';
|
|
109
|
-
import { webApiClient } from './webApiClient'; // or mobileApiClient for mobile
|
|
110
|
-
|
|
111
|
-
// Create platform-specific functions
|
|
112
|
-
const getMyPortfolios = getPortfolios(webApiClient);
|
|
113
|
-
const createMyPortfolio = createPortfolio(webApiClient);
|
|
114
|
-
|
|
115
|
-
// Use them
|
|
116
|
-
await getMyPortfolios({ page: 1 });
|
|
117
|
-
await createMyPortfolio({ name: 'New Portfolio' });
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## ๐งช Testing
|
|
121
|
-
|
|
122
|
-
Services are easy to test with mock API clients:
|
|
123
|
-
|
|
124
|
-
```typescript
|
|
125
|
-
import { createPortfolioService } from '@cranberry-money/shared-services';
|
|
126
|
-
|
|
127
|
-
describe('Portfolio Service', () => {
|
|
128
|
-
const mockApiClient = {
|
|
129
|
-
get: jest.fn(),
|
|
130
|
-
post: jest.fn(),
|
|
131
|
-
patch: jest.fn(),
|
|
132
|
-
delete: jest.fn(),
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
const portfolioService = createPortfolioService(mockApiClient);
|
|
136
|
-
|
|
137
|
-
it('should fetch portfolios', async () => {
|
|
138
|
-
mockApiClient.get.mockResolvedValue({
|
|
139
|
-
data: { results: [], count: 0 },
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
const result = await portfolioService.getAll();
|
|
143
|
-
|
|
144
|
-
expect(mockApiClient.get).toHaveBeenCalledWith('/api/portfolios/', {
|
|
145
|
-
params: undefined,
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
## ๐ React Query Integration
|
|
152
|
-
|
|
153
|
-
Works seamlessly with React Query:
|
|
154
|
-
|
|
155
|
-
```typescript
|
|
156
|
-
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
157
|
-
import { portfolioService } from '@services/portfolios';
|
|
158
|
-
|
|
159
|
-
export const usePortfolios = (params?) => {
|
|
160
|
-
return useQuery({
|
|
161
|
-
queryKey: ['portfolios', params],
|
|
162
|
-
queryFn: () => portfolioService.getAll(params),
|
|
163
|
-
staleTime: 5 * 60 * 1000,
|
|
164
|
-
});
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
export const useCreatePortfolio = () => {
|
|
168
|
-
const queryClient = useQueryClient();
|
|
169
|
-
|
|
170
|
-
return useMutation({
|
|
171
|
-
mutationFn: portfolioService.create,
|
|
172
|
-
onSuccess: () => {
|
|
173
|
-
queryClient.invalidateQueries({ queryKey: ['portfolios'] });
|
|
174
|
-
},
|
|
175
|
-
});
|
|
176
|
-
};
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
## ๐ Available Services
|
|
180
|
-
|
|
181
|
-
### Financial Services
|
|
182
|
-
|
|
183
|
-
- `createPortfolioService` - Portfolio management
|
|
184
|
-
- `createAccountService` - Account operations
|
|
185
|
-
- `createTradeService` - Trading operations
|
|
186
|
-
- `createInstrumentService` - Financial instruments
|
|
187
|
-
- `createWithdrawalService` - Withdrawal requests
|
|
188
|
-
|
|
189
|
-
### Banking Services
|
|
190
|
-
|
|
191
|
-
- `createBankService` - Bank management
|
|
192
|
-
- `createCashAccountService` - Cash accounts
|
|
193
|
-
- `createTransactionService` - Transactions
|
|
194
|
-
|
|
195
|
-
### User & Compliance
|
|
196
|
-
|
|
197
|
-
- `createAuthService` - Authentication
|
|
198
|
-
- `createUserService` - User profiles
|
|
199
|
-
- `createDocumentService` - Documents
|
|
200
|
-
- `createTaxResidencyService` - Tax information
|
|
201
|
-
- `createInvestmentPreferenceService` - Investment preferences
|
|
202
|
-
|
|
203
|
-
### Reference Data
|
|
204
|
-
|
|
205
|
-
- `createCountryService` - Country data
|
|
206
|
-
- `createIndustryService` - Industries
|
|
207
|
-
- `createSectorService` - Sectors
|
|
208
|
-
- `createStockExchangeService` - Stock exchanges
|
|
209
|
-
|
|
210
|
-
## ๐ฆ API Client Requirements
|
|
211
|
-
|
|
212
|
-
Your API client must implement this interface:
|
|
213
|
-
|
|
214
|
-
```typescript
|
|
215
|
-
interface ApiClient {
|
|
216
|
-
get<T>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
|
217
|
-
post<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
|
218
|
-
put<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
|
219
|
-
patch<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
|
220
|
-
delete<T>(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse<T>>;
|
|
221
|
-
}
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
Any axios instance automatically satisfies this interface.
|
|
225
|
-
|
|
226
|
-
## ๐ Related Packages
|
|
227
|
-
|
|
228
|
-
- `@cranberry-money/shared-types` - TypeScript type definitions
|
|
229
|
-
- `@cranberry-money/shared-constants` - API endpoints and business constants
|
|
230
|
-
- `@cranberry-money/shared-utils` - Utility functions for formatting and validation
|
|
231
|
-
|
|
232
|
-
## ๐ก Migration from Local Services
|
|
233
|
-
|
|
234
|
-
If you're currently using local service implementations in your app:
|
|
235
|
-
|
|
236
|
-
### Before (Local Implementation)
|
|
237
|
-
|
|
238
|
-
```typescript
|
|
239
|
-
// src/services/portfolios.ts
|
|
240
|
-
import webApiClient from './webApiClient';
|
|
241
|
-
|
|
242
|
-
export const getPortfolios = (params?) => {
|
|
243
|
-
return webApiClient.get('/api/portfolios/', { params });
|
|
244
|
-
};
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
### After (Shared Implementation)
|
|
248
|
-
|
|
249
|
-
```typescript
|
|
250
|
-
// src/services/portfolios.ts
|
|
251
|
-
import webApiClient from './webApiClient';
|
|
252
|
-
import { createPortfolioService } from '@cranberry-money/shared-services';
|
|
253
|
-
|
|
254
|
-
export const portfolioService = createPortfolioService(webApiClient);
|
|
255
|
-
// or
|
|
256
|
-
export const { getAll: getPortfolios } = createPortfolioService(webApiClient);
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
## ๐ License
|
|
260
|
-
|
|
261
|
-
MIT License - see the [LICENSE](LICENSE) file for details.
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
|
-
For complete documentation and architecture details, see the [Cranberry Development Guide](../../docs/CRANBERRY-DEVELOPMENT-GUIDE.md).
|