@cranberry-money/shared-utils 8.23.445 → 8.23.447

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/index.d.ts CHANGED
@@ -9,4 +9,5 @@ export { formatPhoneForDisplay, cleanPhoneNumber } from './phoneFormatting';
9
9
  export { formatSourceOfFunds, formatIntendedUse } from './formatting-labels';
10
10
  export { validateUserProfileField } from './user-validation';
11
11
  export { getUserVerificationStatus, type VerificationStatusType } from './user-verification';
12
+ export { getNextPageFromUrl, getNextPageParam } from './pagination';
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AACvH,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACzI,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3K,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAC1I,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AACvH,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACzI,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3K,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAC1I,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -9,4 +9,5 @@ export { formatPhoneForDisplay, cleanPhoneNumber } from './phoneFormatting';
9
9
  export { formatSourceOfFunds, formatIntendedUse } from './formatting-labels';
10
10
  export { validateUserProfileField } from './user-validation';
11
11
  export { getUserVerificationStatus } from './user-verification';
12
+ export { getNextPageFromUrl, getNextPageParam } from './pagination';
12
13
  //# 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,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAkB,MAAM,QAAQ,CAAC;AACvH,OAAO,EAAE,cAAc,EAA8B,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACzI,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3K,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAC1I,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAA+B,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAkB,MAAM,QAAQ,CAAC;AACvH,OAAO,EAAE,cAAc,EAA8B,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACzI,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3K,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAC1I,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAA+B,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { PaginatedResponse } from '@cranberry-money/shared-types';
2
+ /**
3
+ * Extract the next page number from a paginated API response URL.
4
+ * Returns undefined if there are no more pages.
5
+ *
6
+ * @param nextUrl - The "next" URL from a paginated response, or null if no more pages
7
+ * @returns The next page number, or undefined if no more pages
8
+ *
9
+ * @example
10
+ * const nextPage = getNextPageFromUrl(response.data.next);
11
+ * // nextPage = 2 if next URL is "...?page=2"
12
+ * // nextPage = undefined if next URL is null
13
+ */
14
+ export declare const getNextPageFromUrl: (nextUrl: string | null | undefined) => number | undefined;
15
+ /**
16
+ * Generic helper to extract the next page number from any paginated response.
17
+ * Designed for use with TanStack Query's useInfiniteQuery getNextPageParam.
18
+ *
19
+ * @param lastPage - The last page response containing a PaginatedResponse in data
20
+ * @returns The next page number, or undefined if no more pages
21
+ *
22
+ * @example
23
+ * // Use with TanStack Query's useInfiniteQuery
24
+ * useInfiniteQuery({
25
+ * queryKey: ['items'],
26
+ * queryFn: ({ pageParam = 1 }) => getItems(apiClient, { page: pageParam }),
27
+ * getNextPageParam: (lastPage) => getNextPageParam(lastPage.data),
28
+ * initialPageParam: 1,
29
+ * });
30
+ */
31
+ export declare const getNextPageParam: <T>(lastPage: PaginatedResponse<T> | undefined) => number | undefined;
32
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,MAAM,GAAG,SAKhF,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,UAAU,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS,KAAG,MAAM,GAAG,SAEzF,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Extract the next page number from a paginated API response URL.
3
+ * Returns undefined if there are no more pages.
4
+ *
5
+ * @param nextUrl - The "next" URL from a paginated response, or null if no more pages
6
+ * @returns The next page number, or undefined if no more pages
7
+ *
8
+ * @example
9
+ * const nextPage = getNextPageFromUrl(response.data.next);
10
+ * // nextPage = 2 if next URL is "...?page=2"
11
+ * // nextPage = undefined if next URL is null
12
+ */
13
+ export const getNextPageFromUrl = (nextUrl) => {
14
+ if (!nextUrl)
15
+ return undefined;
16
+ const url = new URL(nextUrl);
17
+ const page = url.searchParams.get('page');
18
+ return page ? Number(page) : undefined;
19
+ };
20
+ /**
21
+ * Generic helper to extract the next page number from any paginated response.
22
+ * Designed for use with TanStack Query's useInfiniteQuery getNextPageParam.
23
+ *
24
+ * @param lastPage - The last page response containing a PaginatedResponse in data
25
+ * @returns The next page number, or undefined if no more pages
26
+ *
27
+ * @example
28
+ * // Use with TanStack Query's useInfiniteQuery
29
+ * useInfiniteQuery({
30
+ * queryKey: ['items'],
31
+ * queryFn: ({ pageParam = 1 }) => getItems(apiClient, { page: pageParam }),
32
+ * getNextPageParam: (lastPage) => getNextPageParam(lastPage.data),
33
+ * initialPageParam: 1,
34
+ * });
35
+ */
36
+ export const getNextPageParam = (lastPage) => {
37
+ return getNextPageFromUrl(lastPage?.next);
38
+ };
39
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAkC,EAAsB,EAAE;IAC3F,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzC,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAI,QAA0C,EAAsB,EAAE;IACpG,OAAO,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cranberry-money/shared-utils",
3
- "version": "8.23.445",
3
+ "version": "8.23.447",
4
4
  "description": "Shared utility functions for Blueberry platform",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -29,8 +29,8 @@
29
29
  "prepublishOnly": "npm run clean && npm run typecheck && npm test && npm run build"
30
30
  },
31
31
  "dependencies": {
32
- "@cranberry-money/shared-constants": "^8.15.470",
33
- "@cranberry-money/shared-types": "^8.22.445"
32
+ "@cranberry-money/shared-constants": "^8.15.472",
33
+ "@cranberry-money/shared-types": "^8.22.447"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/jest": "^30.0.0",