3.5.2 • Published 9 months ago

@holusion/cache-control v3.5.2

Weekly downloads
6
License
UNLICENSED
Repository
-
Last release
9 months ago

cache-control

a unified cache control module for content.holusion.com.

Uses specific dependencies for electron/react-native applications to manage filesystem interactions.

Install

platform-specific dependencies are not provided as npmjs doesn't provide a mechanism to do so. They are :

Electron / node :

    npm i firebase

in Electron, it's best to use it in the main thread, then dispatch state changes through ipcRenderer

If using node <18.x, node-fetch, abort-controller and formdata-node are also required when syncing with a product

when using node-fetch, define AbortController and FormData into the global scope :

global.fetch = require("node-fetch");
etc...

react-native :

    react-native-fs @react-native-firebase/app @react-native-firebase/storage @react-native-firebase/firestore react-native-background-upload

Usage

The caller is responsible to call firebase.initializeApp() and to set the module's base path using setBasePath() before use.

    import {setBasePath, sagaStore} from "@holusion/cache-control";

    setBasePath("/path/to/wherever");
    const [store, task] = sagaStore();
    #store is a redux store, which can be subscribed to.
    # use task.cancel() to abort operations on exit
    task.cancel();

The module also exports a lot of useful actions/reducers to modify its behaviour. See the features/ folder for reference.

The most basic configuration is to just override some store defaults like this :

    sagaStore({projectName: "My-project", autoClean: true});

See features/conf for all local-stored properties to configure

It can also be useful to dispatch some user-events, to trigger the eventLoop. See lib/features/index.js:rootSaga().

Tips

Readiness

readiness checks (ie. "can I display my pages") is left for the client to implement because it's context-dependant.

Typically something like :

    (state)=> {
    return getItemsIds(state).length !=0      //at least one page
        && getUncachedFiles(state).length == 0; //no uncached file
    }

Changelog

3.5.0

  • uses projectName instead of defaultProject to configure initial project name when calling sagaStore()
  • allow manual signIn retry with the trySignIn action
  • some bugfixes
3.5.2

9 months ago

3.5.1

10 months ago

3.5.0

10 months ago

3.4.0

11 months ago

3.4.4

11 months ago

3.4.3

11 months ago

3.4.2

11 months ago

3.4.1

11 months ago

3.3.1

1 year ago

3.3.0

1 year ago

3.3.2

1 year ago

3.2.0

1 year ago

3.1.3

2 years ago

3.1.2

3 years ago

3.1.1

3 years ago

3.1.0

3 years ago

3.0.0

3 years ago

3.0.0-beta.2

3 years ago

3.0.0-beta.1

3 years ago

3.0.0-beta.0

4 years ago

2.3.0

4 years ago

2.2.1

4 years ago

2.2.0

4 years ago

2.2.0-beta.1

4 years ago

2.2.0-beta.0

4 years ago

2.1.0

4 years ago

2.0.4

4 years ago

2.0.3

4 years ago

2.0.2

4 years ago

2.0.1

4 years ago

2.0.0

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago