npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@fintech-automation/file-sdk

v0.0.1-beta

Published

file-crud

Downloads

88

Readme

File-SDK Overview

In the File SDK, you can perform various operations to manage your files, including creating new folders, uploading, searching, copying, sorting, previewing, duplicating, moving, renaming, and deleting files.

Installing

npm install @fintech-automation/file-sdk

Running Locally

  1. Install dependencies:
npm install
  1. Start the dev server:
npm run serve
  1. Build production package:
npm run build

Usage

import React from 'react';
import { FileSDK } from '@fintech-automation/file-sdk';
import { store } from '@/redux/store';

export default function Dashboard() {
  const sessionToken = store.getState().login.accessData.access_token;

  const initData = {
    apiDomain: 'xxxx',
    token: `${sessionToken}`,
    path: '/Team/MyFolder',
    fileUploadAccept: '.jpg, .png, .text/plain',
    permissions: {
      createPermission: true,
      deletePermission: false,
    },
    downloadConfig: {
      allVersion: {
        hidden: false,
        defaultValue: true,
      },
      containsSubFolders: {
        hidden: true,
        defaultValue: false,
      },
    },
    callbackConfig: {
      onCreateFolderCallback: async (res) => {
        console.log('res', res);
      },
    },
    folderTreeConfig: {
      folderTreeShowCollapse: true,
      folderTreeCollapseDefaultHidden: true,
    },
    fileListConfig: {
      customizeFileTableColumnToShow: ['fileSize', 'createdDate', 'uploadedBy'],
      customizeTableHeight: false,
    },
    themeConfig: {
      primaryRegular: '#00b96b',
    },
    componentThemeConfig: {
      DatePicker: {
        cellActiveWithRangeBg: 'red'
      }
    }
  };

  if(!sessionToken){
    return <></>
  }

  return <FileSDK {...initData} />;
}

Document Component Params

| Property | Description | Type | Required | Default | |-----------------------------------------------------------------|-------------------------------------------------------------------------------------|------------------------------------------------------------------------|----------|---------------------------------------------------------------------------------------------------------------| | apiDomain | Request API service address | string | true | 'https://api-dev.accelerationcloud.com' | | token | Access token | string | true | - | | path | Display data root path | string | false | - | | fileUploadAccept | Limit file upload types | string | false | - | | permissions | Operation menu permission control | boolean | permissionsConfig | false | true | | downloadConfig | Download config | object | false | {allVersion: {hidden: false, defaultValue: false}, containsSubFolders: {hidden: false, defaultValue: true}} | | callbackConfig | Trigger callback function after specific logic execution | object | false | - | | folderTreeConfig | Related configurations for the folder tree on the left | object | false | {folderTreeHidden: false, folderTreeShowCollapse: false } | | fileListConfig | Related configurations for the file list on the right | object | false | - | | themeConfig | Configure custom theme colors | object | false | {primaryRegular: '#1634A4', primaryHoverRegular: '#3555B6'} | | componentThemeConfig | The theme config for some components | object | false | - |

Path

  • The file system has a default root folder: Files.
  • If the path is not configured, all data can be viewed and operated.
  • If the path is configured, only data under this path can be viewed and operated.
  • Path rules:
    • Starting with: /
    • Cannot exist continuously: /
    • Cannot contain special characters: * ? " < > : |
  • Example: Only data in the My Folder folder under the root directory can be viewed and operated.
  path: '/My Folder'

File Upload Accept

  • Limit the types of uploaded files, see details: input accept Attribute.
  • Use commas to concatenate file suffixes.
  • Example: Only JPG images and TXT files can be uploaded.
  fileUploadAccept: '.jpg, .txt'

Permissions Config

| Property | Description | |------------------------|---------------------------------------| | createPermission | Folder create permission | | uploadPermission | Files and folders upload permission | | downloadPermission | Files and folders download permission | | deletePermission | Files and folders delete permission | | renamePermission | Files and folders rename permission | | copyPermission | Files and folders copy permission | | movePermission | Files and folders move permission | | duplicatePermission | File duplicate permission | | fileEditPermission | File edit permission | | versionsPermission | File version view permission | | versionsEditPermission | File version edit permission | | historyPermission | File history view permission |

  • The property type is boolean.
  • When the permissions parameter is of boolean type, it controls whether the above permissions are simultaneously owned or not.
  • When the permissions parameter is of object type, the above permissions default to false and need to be configured separately.
  • Example: Among the above permissions, only the permission to upload and delete files is granted.
  permissions: {
    uploadPermission: true,
    deletePermission: true
  }

Download Config

| Property | Description | |--------------------|------------------------------------| | allVersion | Download version checkbox config | | containsSubFolders | Download subfolder checkbox config |

  • The property type is object. Each property has two fixed configurable items:
    • hidden: Hide checkbox on page. boolean
    • defaultValue: Checkbox default value. boolean
  • By default, both checkboxes are displayed during download.
  • When selecting a folder, it defaults to downloading subfolders together.
  • Example: When downloading, the file version is not downloaded by default, and the checkbox for changing this configuration is hidden.
  downloadConfig: {
    allVersion: {
      hidden: true,
      defaultValue: true
    }
  }

Callback Config

| Property | Description | |------------------------|--------------------------------------------------------------------------------------| | onCreateFolderCallback | Trigger callback function after creating folder | | onDeleteCallback | Trigger callback function after deleting files and folders | | onUploadCallback | After uploading files and folders, close the modal and trigger the callback function |

  • The property type is function.
  • We will execute the incoming callback function asynchronously.
  • We will pass the execution result to the callback function.
  • Example 1: If you want to trigger your own logic after creating a folder.
  // params
  callbackConfig: {
    onCreateFolderCallback: async (res) => {
      console.log('res', res);
    }
  }

  // We will send back the result of creating the folder
  let result;
  // success
  result = {
    code: 200,
    // If it is an delete callback, the data will return multiple pieces of data
    data: {
      path: "/test/New Folder",
      acId: "1722535223718kOHCT",
      itemName: "New Folder",
      fileType: "folder",
      version: null,
      versionId: "3HhE7XJGin2U95e8pUE9W7pE11sM9juY",
      size: "0 bytes",
      dateModified: "2024-08-01T17:29:57.697385",
      lastUpdatedBy: "sds sds"
     },
    error: null,
    errorMsg: null
  };
  // fail
  result = {
    code: 400, 599....,
    data: null,
    error: null,
    errorMessage: 'This is error message.'
  };
  onCreateFolderCallback(result);
  • Example 2: If you want to trigger your own logic after upload folders and files.
  // params
  callbackConfig: {
    onUploadCallback: async (res) => {
      console.log('res', res);
    }
  }

  // We will return the results after uploading all folders and files and closing the modal
  const result = [
    successFolders: [/test/New Folder1, /test/New Folder2],
    failFolders: [/test/New Folder3],
    successFiles: [/test/a.txt, /test/New Folder1/b.txt, /test/New Folder2/c.txt],
    failFiles: [/test/d.txt, /test/New Folder3/e.txt]
  ];
  onUploadCallback(result);

Folder Tree Config

| Property | Description | |---------------------------------|----------------------------------------------------------| | folderTreeHidden | Hide the left folder tree | | folderTreeShowCollapse | The left folder tree display expand or collapse button | | folderTreeCollapseDefaultHidden | The left folder tree is expanded or collapsed by default |

  • The property type is boolean.
  • Example: Hide the left-hand directory tree.
  folderTreeConfig: {
    folderTreeHidden: true
  }

File List Config

| Property | Description | |--------------------------------------------------------------------------------|--------------------------------------------------------------| | customizeFileTableColumnToShow | Customize the files table columns that need to be displayed. | | customizeTableDetail | Display detailed information about files or folders. | | customizeTablePageSizeOptions | Number of custom file table pagination queries. | | customizeDefaultTablePageSize | Default number of query entries for custom file tables. | | customizeTableHeight | Default height of file table. |

  • Example: The configuration file list does not display the version column.
  fileListConfig: {
    customizeFileTableColumnToShow: ['fileSize', 'createdDate', 'uploadedBy']
  }

customizeFileTableColumnToShow

  • Multiple display fields can be configured from ['versionCount', 'fileSize', 'createdDate', 'uploadedBy'].
  • The item name remains displayed and cannot be configured.

customizeTableDetail

  • Multiple display fields can be configured from ['modified', 'lastUpdatedBy', 'size', 'path'].
  • The item name remains displayed and cannot be configured.

customizeTablePageSizeOptions

  • default set [10,20,30,40,50].
  • The number in the array must be an integer greater than 0.

customizeDefaultTablePageSize

customizeTableHeight

  • The default attribute is true, indicating that the height of the table can reach up to 10 data points. If the page size is greater than 10 data points, a scrollbar will appear.
  • If the value is false, there will be no height limit, which means there won't be a scrollbar.
  • If the type of value is number, it will be the height of the table(the default unit is px).
  • If the type of value is string, it will be the height of the table, but height units need to be added (such as 12px, 12rem...).
  • Only three units of em, rem, and px are provided.

Theme Config

| Property | Description | |------------------------------------------------------------------|---------------------------------| | primaryRegular | Whole primary color | | primaryHoverRegular | Whole primary hover color |

  • Please try to use hex format colors as much as possible.
  • Example: Set the theme color to #de3512.
  themeConfig: {
    primaryRegular: '#de3512'
  }

Component Theme Config

  • Tree

| Parameter | Description | |---------------|-----------------------| | colorPrimary | file tree theme color |

  • Tabs

| Parameter | Description | |----------------|-----------------------| | colorPrimary | tabs theme color | | itemHoverColor | file tree theme color |

  • Button

| Parameter | Description | |----------------|--------------------------| | colorPrimary | Button theme color | | itemHoverColor | Button hover theme color |

  • Table

| Parameter | Description | |--------------------|----------------------------------------------------------------------------| | colorPrimary | table theme color | | rowHoverBg | background color of table hovered row | | rowSelectedBg | background color of table selected row | | rowSelectedHoverBg | background color of the selected row in the table that has been hover over |

  • Input

| Parameter | Description | |-------------------|--------------------------| | activeBorderColor | Input active theme color | | hoverBorderColor | Input hover theme color |

  • Select

| Parameter | Description | |------------------|----------------------------------| | optionSelectedBg | option selected background color |

  • DatePicker

| Parameter | Description | |--------------------------------------|----------------------------------------------------| | cellActiveWithRangeBg | option selected background color |

  • Example: Configure the colors of the tree component and date component separately.
  componentThemeConfig: {
    Tree: {
      colorPrimary: '#cf5656',
    },
    DatePicker: {
      cellActiveWithRangeBg: '#ac3512'
    }
  }