@taruvi/refine-providers 1.3.4 → 1.3.5

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.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { DataProvider, AuthProvider, AccessControlProvider, CrudFilter, MetaQuery, CrudSort, Pagination } from '@refinedev/core';
2
- import { Client, GraphFormat, GraphInclude, Database, BackendFilterTreeRoot } from '@taruvi/sdk';
3
- export { UserData as TaruviUser } from '@taruvi/sdk';
2
+ import { Client, StorageBrowseFolder, StorageBrowseFile, GraphFormat, GraphInclude, Database, BackendFilterTreeRoot } from '@taruvi/sdk';
3
+ export { StorageAccessLinkResponse, StorageBrowseData, StorageBrowseFile, StorageBrowseFilters, StorageBrowseFolder, UserData as TaruviUser } from '@taruvi/sdk';
4
4
 
5
5
  /**
6
6
  * Creates a Refine DataProvider for Taruvi database operations.
@@ -316,6 +316,30 @@ interface TaruviListResponse<T> {
316
316
  has_more?: boolean;
317
317
  };
318
318
  }
319
+ /** `meta` for `useList`/`useDataGrid`/`useInfiniteList` — folder browse mode. */
320
+ interface StorageBrowseMeta {
321
+ mode: "browse";
322
+ /** Virtual folder prefix. Omit for root. */
323
+ prefix?: string;
324
+ /** Override bucket when `resource` differs from the bucket slug. */
325
+ bucketName?: string;
326
+ }
327
+ /** `meta` for `useCustom` — SharePoint view-access URL for an Office file. */
328
+ interface StorageViewAccessMeta {
329
+ kind: "viewAccess";
330
+ filePath: string;
331
+ bucketName?: string;
332
+ }
333
+ /** `meta` for `useCustom` — SharePoint edit-access URL for an Office file. */
334
+ interface StorageEditAccessMeta {
335
+ kind: "editAccess";
336
+ filePath: string;
337
+ bucketName?: string;
338
+ }
339
+ /** Union of all storage meta types. */
340
+ type StorageMeta = StorageBrowseMeta | StorageViewAccessMeta | StorageEditAccessMeta;
341
+ /** Browse result item — folder (`type: "folder"`) or file (`type: "file"`). */
342
+ type StorageBrowseItem = StorageBrowseFolder | StorageBrowseFile;
319
343
 
320
344
  type ConvertRefineFiltersOptions = {
321
345
  /**
@@ -396,4 +420,4 @@ declare function buildRefineQueryParams(options: {
396
420
  */
397
421
  declare function buildQueryString(params?: Record<string, unknown>): string;
398
422
 
399
- export { type AllowedAction, type AnalyticsMeta, type AppCustomMeta, type ConvertRefineFiltersOptions, type FlatFilterLeaf, type FunctionMeta, type LogicalCrudFilter, type LoginParams, type LogoutParams, REFINE_OPERATOR_MAP, type RegisterParams, type StorageDownloadResponse, type StorageUploadVariables, type TaruviConditionalFilter, type TaruviCrudFilter, type TaruviCrudOperator, type TaruviFieldFilter, type TaruviListFilters, type TaruviListResponse, type TaruviMeta, _cachedUser, accessControlProvider, analyticsDataProvider, appDataProvider, applyRefineQueryParamsToDatabase, authProvider, buildQueryString, buildRefineQueryParams, collectFlatLeaves, convertLogicalFilterToBackendTree, convertRefineFilters, convertRefineFiltersToBackendTree, convertRefinePagination, convertRefineSorters, dataProvider, encodeCrudFilterBracket, encodeFlatFilterListToParams, formatRefineLeafValue, functionsDataProvider, hasTaruviOperator, isFlatFilterList, isLogicalCrudFilter, normalizeTaruviListFilters, refineOperatorToBackendKey, storageDataProvider, taruviOperatorSuffix, toRefineFilters, userDataProvider };
423
+ export { type AllowedAction, type AnalyticsMeta, type AppCustomMeta, type ConvertRefineFiltersOptions, type FlatFilterLeaf, type FunctionMeta, type LogicalCrudFilter, type LoginParams, type LogoutParams, REFINE_OPERATOR_MAP, type RegisterParams, type StorageBrowseItem, type StorageBrowseMeta, type StorageDownloadResponse, type StorageEditAccessMeta, type StorageMeta, type StorageUploadVariables, type StorageViewAccessMeta, type TaruviConditionalFilter, type TaruviCrudFilter, type TaruviCrudOperator, type TaruviFieldFilter, type TaruviListFilters, type TaruviListResponse, type TaruviMeta, _cachedUser, accessControlProvider, analyticsDataProvider, appDataProvider, applyRefineQueryParamsToDatabase, authProvider, buildQueryString, buildRefineQueryParams, collectFlatLeaves, convertLogicalFilterToBackendTree, convertRefineFilters, convertRefineFiltersToBackendTree, convertRefinePagination, convertRefineSorters, dataProvider, encodeCrudFilterBracket, encodeFlatFilterListToParams, formatRefineLeafValue, functionsDataProvider, hasTaruviOperator, isFlatFilterList, isLogicalCrudFilter, normalizeTaruviListFilters, refineOperatorToBackendKey, storageDataProvider, taruviOperatorSuffix, toRefineFilters, userDataProvider };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { DataProvider, AuthProvider, AccessControlProvider, CrudFilter, MetaQuery, CrudSort, Pagination } from '@refinedev/core';
2
- import { Client, GraphFormat, GraphInclude, Database, BackendFilterTreeRoot } from '@taruvi/sdk';
3
- export { UserData as TaruviUser } from '@taruvi/sdk';
2
+ import { Client, StorageBrowseFolder, StorageBrowseFile, GraphFormat, GraphInclude, Database, BackendFilterTreeRoot } from '@taruvi/sdk';
3
+ export { StorageAccessLinkResponse, StorageBrowseData, StorageBrowseFile, StorageBrowseFilters, StorageBrowseFolder, UserData as TaruviUser } from '@taruvi/sdk';
4
4
 
5
5
  /**
6
6
  * Creates a Refine DataProvider for Taruvi database operations.
@@ -316,6 +316,30 @@ interface TaruviListResponse<T> {
316
316
  has_more?: boolean;
317
317
  };
318
318
  }
319
+ /** `meta` for `useList`/`useDataGrid`/`useInfiniteList` — folder browse mode. */
320
+ interface StorageBrowseMeta {
321
+ mode: "browse";
322
+ /** Virtual folder prefix. Omit for root. */
323
+ prefix?: string;
324
+ /** Override bucket when `resource` differs from the bucket slug. */
325
+ bucketName?: string;
326
+ }
327
+ /** `meta` for `useCustom` — SharePoint view-access URL for an Office file. */
328
+ interface StorageViewAccessMeta {
329
+ kind: "viewAccess";
330
+ filePath: string;
331
+ bucketName?: string;
332
+ }
333
+ /** `meta` for `useCustom` — SharePoint edit-access URL for an Office file. */
334
+ interface StorageEditAccessMeta {
335
+ kind: "editAccess";
336
+ filePath: string;
337
+ bucketName?: string;
338
+ }
339
+ /** Union of all storage meta types. */
340
+ type StorageMeta = StorageBrowseMeta | StorageViewAccessMeta | StorageEditAccessMeta;
341
+ /** Browse result item — folder (`type: "folder"`) or file (`type: "file"`). */
342
+ type StorageBrowseItem = StorageBrowseFolder | StorageBrowseFile;
319
343
 
320
344
  type ConvertRefineFiltersOptions = {
321
345
  /**
@@ -396,4 +420,4 @@ declare function buildRefineQueryParams(options: {
396
420
  */
397
421
  declare function buildQueryString(params?: Record<string, unknown>): string;
398
422
 
399
- export { type AllowedAction, type AnalyticsMeta, type AppCustomMeta, type ConvertRefineFiltersOptions, type FlatFilterLeaf, type FunctionMeta, type LogicalCrudFilter, type LoginParams, type LogoutParams, REFINE_OPERATOR_MAP, type RegisterParams, type StorageDownloadResponse, type StorageUploadVariables, type TaruviConditionalFilter, type TaruviCrudFilter, type TaruviCrudOperator, type TaruviFieldFilter, type TaruviListFilters, type TaruviListResponse, type TaruviMeta, _cachedUser, accessControlProvider, analyticsDataProvider, appDataProvider, applyRefineQueryParamsToDatabase, authProvider, buildQueryString, buildRefineQueryParams, collectFlatLeaves, convertLogicalFilterToBackendTree, convertRefineFilters, convertRefineFiltersToBackendTree, convertRefinePagination, convertRefineSorters, dataProvider, encodeCrudFilterBracket, encodeFlatFilterListToParams, formatRefineLeafValue, functionsDataProvider, hasTaruviOperator, isFlatFilterList, isLogicalCrudFilter, normalizeTaruviListFilters, refineOperatorToBackendKey, storageDataProvider, taruviOperatorSuffix, toRefineFilters, userDataProvider };
423
+ export { type AllowedAction, type AnalyticsMeta, type AppCustomMeta, type ConvertRefineFiltersOptions, type FlatFilterLeaf, type FunctionMeta, type LogicalCrudFilter, type LoginParams, type LogoutParams, REFINE_OPERATOR_MAP, type RegisterParams, type StorageBrowseItem, type StorageBrowseMeta, type StorageDownloadResponse, type StorageEditAccessMeta, type StorageMeta, type StorageUploadVariables, type StorageViewAccessMeta, type TaruviConditionalFilter, type TaruviCrudFilter, type TaruviCrudOperator, type TaruviFieldFilter, type TaruviListFilters, type TaruviListResponse, type TaruviMeta, _cachedUser, accessControlProvider, analyticsDataProvider, appDataProvider, applyRefineQueryParamsToDatabase, authProvider, buildQueryString, buildRefineQueryParams, collectFlatLeaves, convertLogicalFilterToBackendTree, convertRefineFilters, convertRefineFiltersToBackendTree, convertRefinePagination, convertRefineSorters, dataProvider, encodeCrudFilterBracket, encodeFlatFilterListToParams, formatRefineLeafValue, functionsDataProvider, hasTaruviOperator, isFlatFilterList, isLogicalCrudFilter, normalizeTaruviListFilters, refineOperatorToBackendKey, storageDataProvider, taruviOperatorSuffix, toRefineFilters, userDataProvider };
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import DataLoader from 'dataloader';
5
5
 
6
6
  // package.json
7
7
  var package_default = {
8
- version: "1.3.4"};
8
+ version: "1.3.5"};
9
9
 
10
10
  // src/filterTypes.ts
11
11
  var REFINE_OPERATOR_MAP = {
@@ -653,6 +653,13 @@ function dataProvider(client) {
653
653
  getApiUrl: () => baseApiUrl
654
654
  };
655
655
  }
656
+ var BROWSE_SORT_FIELDS = /* @__PURE__ */ new Set(["name", "size", "created_at", "updated_at"]);
657
+ function extractBrowseSorter(sorters) {
658
+ if (!sorters?.length) return {};
659
+ const { field, order } = sorters[0];
660
+ if (!BROWSE_SORT_FIELDS.has(field)) return {};
661
+ return { sort: field, order };
662
+ }
656
663
  function storageDataProvider(client) {
657
664
  const config = client.getConfig();
658
665
  const baseApiUrl = `${config.apiUrl}/api/apps/${config.appSlug}`;
@@ -669,6 +676,23 @@ function storageDataProvider(client) {
669
676
  return {
670
677
  getList: async (params) => {
671
678
  const { resource, pagination, filters, sorters, meta } = params;
679
+ if (meta?.mode === "browse") {
680
+ const browseMeta = meta;
681
+ const bucket2 = browseMeta.bucketName ?? resource;
682
+ const { page = 1, page_size = 50 } = convertRefinePagination(pagination);
683
+ const { sort, order } = extractBrowseSorter(sorters);
684
+ const response2 = await new Storage(client).from(bucket2).browse({ prefix: browseMeta.prefix ?? "", page, page_size, sort, order }).execute();
685
+ const browseData = response2.data;
686
+ const items = [...browseData.folders, ...browseData.objects];
687
+ const hasNext = browseData.has_next;
688
+ const pg = browseData.page;
689
+ const pgSize = browseData.page_size;
690
+ return {
691
+ data: items,
692
+ total: hasNext ? pg * pgSize + 1 : (pg - 1) * pgSize + items.length,
693
+ cursor: { next: hasNext ? pg + 1 : void 0 }
694
+ };
695
+ }
672
696
  const taruviMeta = meta;
673
697
  const bucket = getBucketName(resource, taruviMeta);
674
698
  const storageFilters = buildFilters({ filters, sorters, pagination});
@@ -734,7 +758,19 @@ function storageDataProvider(client) {
734
758
  return { data: ids.map((id) => ({ id })) };
735
759
  },
736
760
  custom: async (params) => {
737
- const { url, method, payload, query } = params;
761
+ const { url, method, payload, query, meta } = params;
762
+ if (meta?.kind === "viewAccess") {
763
+ const accessMeta = meta;
764
+ const bucket = accessMeta.bucketName ?? url;
765
+ const response = await new Storage(client).from(bucket).viewAccess(accessMeta.filePath).execute();
766
+ return { data: response.data };
767
+ }
768
+ if (meta?.kind === "editAccess") {
769
+ const accessMeta = meta;
770
+ const bucket = accessMeta.bucketName ?? url;
771
+ const response = await new Storage(client).from(bucket).editAccess(accessMeta.filePath).execute();
772
+ return { data: response.data };
773
+ }
738
774
  let fullUrl = `api/apps/${config.appSlug}/storage/buckets/${url}`;
739
775
  let data;
740
776
  switch (method.toLowerCase()) {
@@ -763,7 +799,6 @@ function storageDataProvider(client) {
763
799
  }
764
800
  return { data };
765
801
  },
766
- // Not applicable for file storage - files are replaced, not updated
767
802
  updateMany: void 0
768
803
  };
769
804
  }