effector-storage 4.5.0 → 5.0.0
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/README.md +11 -54
- package/async-storage/index.js.flow +1 -1
- package/index.cjs +1 -1
- package/index.cjs.map +1 -1
- package/index.js +1 -1
- package/index.js.flow +1 -1
- package/index.js.map +1 -1
- package/local/index.js.flow +1 -1
- package/memory/index.js.flow +1 -1
- package/nil/index.js.flow +1 -1
- package/package.json +1 -26
- package/query/index.js.flow +1 -1
- package/rn/async/index.js.flow +1 -1
- package/rn/encrypted/index.js.flow +1 -1
- package/session/index.js.flow +1 -1
- package/storage/index.js.flow +1 -1
- package/fp/index.cjs +0 -2
- package/fp/index.cjs.d.ts +0 -55
- package/fp/index.cjs.map +0 -1
- package/fp/index.d.ts +0 -55
- package/fp/index.js +0 -2
- package/fp/index.js.flow +0 -76
- package/fp/index.js.map +0 -1
- package/fp/package.json +0 -7
- package/local/fp/index.cjs +0 -2
- package/local/fp/index.cjs.d.ts +0 -46
- package/local/fp/index.cjs.map +0 -1
- package/local/fp/index.d.ts +0 -46
- package/local/fp/index.js +0 -2
- package/local/fp/index.js.flow +0 -63
- package/local/fp/index.js.map +0 -1
- package/local/fp/package.json +0 -7
- package/memory/fp/index.cjs +0 -2
- package/memory/fp/index.cjs.d.ts +0 -43
- package/memory/fp/index.cjs.map +0 -1
- package/memory/fp/index.d.ts +0 -43
- package/memory/fp/index.js +0 -2
- package/memory/fp/index.js.flow +0 -64
- package/memory/fp/index.js.map +0 -1
- package/memory/fp/package.json +0 -7
- package/query/fp/index.cjs +0 -2
- package/query/fp/index.cjs.d.ts +0 -57
- package/query/fp/index.cjs.map +0 -1
- package/query/fp/index.d.ts +0 -57
- package/query/fp/index.js +0 -2
- package/query/fp/index.js.flow +0 -67
- package/query/fp/index.js.map +0 -1
- package/query/fp/package.json +0 -7
- package/session/fp/index.cjs +0 -2
- package/session/fp/index.cjs.d.ts +0 -46
- package/session/fp/index.cjs.map +0 -1
- package/session/fp/index.d.ts +0 -46
- package/session/fp/index.js +0 -2
- package/session/fp/index.js.flow +0 -63
- package/session/fp/index.js.map +0 -1
- package/session/fp/package.json +0 -7
package/README.md
CHANGED
|
@@ -45,13 +45,16 @@ Small module for [Effector](https://github.com/effector/effector) ☄️ to sync
|
|
|
45
45
|
|
|
46
46
|
## Install
|
|
47
47
|
|
|
48
|
+
Depending on your package manager
|
|
49
|
+
|
|
48
50
|
```bash
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
# using `pnpm` ↓
|
|
52
|
+
$ pnpm add effector-storage
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
# using `yarn` ↓
|
|
55
|
+
$ yarn add effector-storage
|
|
53
56
|
|
|
54
|
-
|
|
57
|
+
# using `npm` ↓
|
|
55
58
|
$ npm install --save effector-storage
|
|
56
59
|
```
|
|
57
60
|
|
|
@@ -152,33 +155,6 @@ app.onCreateStore((store) => persist({ store }))
|
|
|
152
155
|
const $store = app.createStore(0, { name: 'store' })
|
|
153
156
|
```
|
|
154
157
|
|
|
155
|
-
## Functional helpers
|
|
156
|
-
|
|
157
|
-
⚠️ Due to deprecation of `.thru` method in [effector version 22](https://github.com/effector/effector/releases/tag/effector%4022.0.0), functional helpers become obsolete, so, they are deprecated as well.<s>
|
|
158
|
-
|
|
159
|
-
There are special `persist` forms to use with functional programming style. You can use them, if you like, with Domain hook or `.thru()` store method:
|
|
160
|
-
|
|
161
|
-
```javascript
|
|
162
|
-
import { createDomain } from 'effector'
|
|
163
|
-
import { persist } from 'effector-storage/local/fp'
|
|
164
|
-
|
|
165
|
-
const app = createDomain('app')
|
|
166
|
-
|
|
167
|
-
// this hook will persist every store, created in domain,
|
|
168
|
-
// in `localStorage`, using stores' names as keys
|
|
169
|
-
app.onCreateStore(persist())
|
|
170
|
-
|
|
171
|
-
const $store = app.createStore(0, { name: 'store' })
|
|
172
|
-
|
|
173
|
-
// or persist single store in `localStorage` via .thru
|
|
174
|
-
const $counter = createStore(0)
|
|
175
|
-
.on(increment, (state) => state + 1)
|
|
176
|
-
.on(decrement, (state) => state - 1)
|
|
177
|
-
.thru(persist({ key: 'counter' }))
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
</s>
|
|
181
|
-
|
|
182
158
|
## Formulae
|
|
183
159
|
|
|
184
160
|
```javascript
|
|
@@ -188,15 +164,6 @@ import { persist } from 'effector-storage/<adapter>'
|
|
|
188
164
|
- `persist({ store, ...options }): Subscription`
|
|
189
165
|
- `persist({ source, target, ...options }): Subscription`
|
|
190
166
|
|
|
191
|
-
⚠️ Due to deprecation of `.thru` method in [effector version 22](https://github.com/effector/effector/releases/tag/effector%4022.0.0), functional helpers become obsolete, so, they are deprecated as well.<s>
|
|
192
|
-
|
|
193
|
-
```javascript
|
|
194
|
-
import { persist } from 'effector-storage/<adapter>/fp'
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
- `persist({ ...options }?): (store: Store) => Store`
|
|
198
|
-
</s>
|
|
199
|
-
|
|
200
167
|
### Units
|
|
201
168
|
|
|
202
169
|
In order to synchronize _something_, you need to specify effector units. Depending on a requirements, you may want to use `store` parameter, or `source` and `target` parameters:
|
|
@@ -210,7 +177,7 @@ In order to synchronize _something_, you need to specify effector units. Dependi
|
|
|
210
177
|
- `key`? ([_string_]): Key for local/session storage, to store value in. If omitted — `store` name is used. **Note!** If `key` is not specified, `store` _must_ have a `name`! You can use `'effector/babel-plugin'` to have those names automatically.
|
|
211
178
|
- `keyPrefix`? ([_string_]): Prefix, used in adapter, to be concatenated to `key`. By default = `''`.
|
|
212
179
|
- `clock`? ([_Event_] | [_Effect_] | [_Store_]): Unit, if passed – then value from `store`/`source` will be stored in the storage only upon its trigger.
|
|
213
|
-
- `pickup`? ([_Event_] | [_Effect_] | [_Store_]): Unit, which you can specify to
|
|
180
|
+
- `pickup`? ([_Event_] | [_Effect_] | [_Store_]): Unit, which you can specify to update `store` value from storage. **Note!** When you add `pickup`, `persist` _will not_ get initial value from storage automatically!
|
|
214
181
|
- `done`? ([_Event_] | [_Effect_] | [_Store_]): Unit, which will be triggered on each successful read or write from/to storage.<br>
|
|
215
182
|
Payload structure:
|
|
216
183
|
- `key` ([_string_]): Same `key` as above.
|
|
@@ -237,10 +204,6 @@ In order to synchronize _something_, you need to specify effector units. Dependi
|
|
|
237
204
|
|
|
238
205
|
- ([_Subscription_]): You can use this subscription to remove store association with storage, if you don't need them to be synced anymore. It is a function.
|
|
239
206
|
|
|
240
|
-
- <s>`(store) => Store` ([_Function_]): Function, which accepts store to synchronize with storage, and returns:
|
|
241
|
-
- ([_Store_]): Same given store.<br>
|
|
242
|
-
_You cannot unsubscribe store from storage when using functional form of `persist`._</s>
|
|
243
|
-
|
|
244
207
|
## `createPersist` factory
|
|
245
208
|
|
|
246
209
|
In rare cases you might want to use `createPersist` factory. It allows you to specify some adapter options, like `keyPrefix`.
|
|
@@ -288,12 +251,6 @@ Core function `persist` accepts all **common** options, as `persist` functions f
|
|
|
288
251
|
|
|
289
252
|
- `adapter` (_StorageAdapter_): Storage adapter to use.
|
|
290
253
|
|
|
291
|
-
There is also _fp_ form too:
|
|
292
|
-
|
|
293
|
-
```javascript
|
|
294
|
-
import { persist } from 'effector-storage/fp'
|
|
295
|
-
```
|
|
296
|
-
|
|
297
254
|
## Storage adapters
|
|
298
255
|
|
|
299
256
|
Adapter is a function, which is called by the core `persist` function, and has following interface:
|
|
@@ -392,13 +349,13 @@ persist({ store, adapter }) // <- use adapter
|
|
|
392
349
|
|
|
393
350
|
If your storage can be updated from _external source_, and doesn't have any events to react to, but you are able to know about it somehow.
|
|
394
351
|
|
|
395
|
-
You can use optional `pickup` parameter to specify unit to trigger
|
|
352
|
+
You can use optional `pickup` parameter to specify unit to trigger update (keep in mind, that when you add `pickup`, `persist` _will not_ get initial value from storage automatically):
|
|
396
353
|
|
|
397
354
|
```javascript
|
|
398
355
|
import { createEvent, createStore, forward } from 'effector'
|
|
399
356
|
import { persist } from 'effector-storage/session'
|
|
400
357
|
|
|
401
|
-
// event, which will be used to trigger
|
|
358
|
+
// event, which will be used to trigger update
|
|
402
359
|
const pickup = createEvent()
|
|
403
360
|
|
|
404
361
|
const store = createStore('', { name: 'store' })
|
|
@@ -407,7 +364,7 @@ persist({ store, pickup }) // <- set `pickup` parameter
|
|
|
407
364
|
// --8<--
|
|
408
365
|
|
|
409
366
|
// when you are sure, that storage was updated,
|
|
410
|
-
// and you need to
|
|
367
|
+
// and you need to update `store` from storage with new value
|
|
411
368
|
pickup()
|
|
412
369
|
```
|
|
413
370
|
|
package/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("effector"),r=new Map,t=e.createEvent();function o(o){return a=>function({adapter:o,clock:a,store:i,source:f=i,target:s=i,done:n,fail:d=t,finally:u,pickup:p,key:c,keyPrefix:l=""}){if(!o)throw Error("Adapter is not defined");if(!f)throw Error("Store or source is not defined");if(!s)throw Error("Target is not defined");if(!c&&f.shortName===f.id)throw Error("Key or name is not defined");if(f===s&&!e.is.store(f))throw Error("Source must be different from target");var y=c||f.shortName,v=function(t,o){var a=r.get(t);void 0===a&&(a=new Map,r.set(t,a));var i=a.get(o);return void 0!==i||(i=e.createStore(null),a.set(o,i)),i}(o.keyArea||o,l+y),k=e.createNode(),m=()=>e.clearNode(k),w=e=>({status:r,params:t,result:o,error:a})=>"done"===r?{status:r,key:y,keyPrefix:l,operation:e,value:o}:{status:r,key:y,keyPrefix:l,operation:e,value:t,error:a};return e.withRegion(k,(()=>{var r=e.createEffect(),t=e.createEffect(),i=e.createEvent(),c=i.filterMap((({status:e,key:r,keyPrefix:t,operation:o,value:a})=>"done"===e?{key:r,keyPrefix:t,operation:o,value:a}:void 0)),k=i.filterMap((({status:e,key:r,keyPrefix:t,operation:o,error:a,value:i})=>"fail"===e?{key:r,keyPrefix:t,operation:o,error:a,value:i}:void 0)),m=o(l+y,r);r.use(m.get),t.use(m.set),e.guard({source:e.sample(v,e.sample(f,a),((e,r)=>[r,e])),filter:([e,r])=>e!==r,target:t.prepend((([e])=>e))}),e.forward({from:[r.doneData,t],to:v}),e.forward({from:[r.doneData,v],to:s}),e.forward({from:[r.finally.map(w("get")),t.finally.map(w("set"))],to:i}),e.forward({from:k,to:d}),n&&e.forward({from:c,to:n}),u&&e.forward({from:i,to:u}),p
|
|
1
|
+
"use strict";var e=require("effector"),r=new Map,t=e.createEvent();function o(o){return a=>function({adapter:o,clock:a,store:i,source:f=i,target:s=i,done:n,fail:d=t,finally:u,pickup:p,key:c,keyPrefix:l=""}){if(!o)throw Error("Adapter is not defined");if(!f)throw Error("Store or source is not defined");if(!s)throw Error("Target is not defined");if(!c&&f.shortName===f.id)throw Error("Key or name is not defined");if(f===s&&!e.is.store(f))throw Error("Source must be different from target");var y=c||f.shortName,v=function(t,o){var a=r.get(t);void 0===a&&(a=new Map,r.set(t,a));var i=a.get(o);return void 0!==i||(i=e.createStore(null),a.set(o,i)),i}(o.keyArea||o,l+y),k=e.createNode(),m=()=>e.clearNode(k),w=e=>({status:r,params:t,result:o,error:a})=>"done"===r?{status:r,key:y,keyPrefix:l,operation:e,value:"get"===e?o:t}:{status:r,key:y,keyPrefix:l,operation:e,value:t,error:a};return e.withRegion(k,(()=>{var r=e.createEffect(),t=e.createEffect(),i=e.createEvent(),c=i.filterMap((({status:e,key:r,keyPrefix:t,operation:o,value:a})=>"done"===e?{key:r,keyPrefix:t,operation:o,value:a}:void 0)),k=i.filterMap((({status:e,key:r,keyPrefix:t,operation:o,error:a,value:i})=>"fail"===e?{key:r,keyPrefix:t,operation:o,error:a,value:i}:void 0)),m=o(l+y,r);r.use(m.get),t.use(m.set),e.guard({source:e.sample(v,e.sample(f,a),((e,r)=>[r,e])),filter:([e,r])=>e!==r,target:t.prepend((([e])=>e))}),e.forward({from:[r.doneData,t],to:v}),e.forward({from:[r.doneData,v],to:s}),e.forward({from:[r.finally.map(w("get")),t.finally.map(w("set"))],to:i}),e.forward({from:k,to:d}),n&&e.forward({from:c,to:n}),u&&e.forward({from:i,to:u}),p?e.forward({from:p,to:r.prepend((()=>{}))}):r()})),m.unsubscribe=m}({...o,...a})}t.watch((e=>console.error(e.error)));var a=o();exports.createPersist=o,exports.persist=a;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/area.ts","../src/persist.ts","../src/index.ts"],"sourcesContent":["import type { Store } from 'effector'\nimport { createStore } from 'effector'\n\n/**\n * Keys areas / namespaces cache\n */\nconst areas = new Map<any, Map<string, Store<any>>>()\n\n/**\n * Get store, responsible for the key in key area / namespace\n */\nexport function getAreaStorage<State>(keyArea: any, key: string): Store<State> {\n let area = areas.get(keyArea)\n if (area === undefined) {\n area = new Map()\n areas.set(keyArea, area)\n }\n\n let store = area.get(key)\n if (store !== undefined) {\n return store\n }\n\n store = createStore(null)\n area.set(key, store)\n\n return store\n}\n","import type { Subscription } from 'effector'\nimport type {\n ConfigPersist,\n ConfigSourceTarget,\n ConfigStore,\n Done,\n Fail,\n Finally,\n} from './types'\nimport {\n clearNode,\n createEffect,\n createEvent,\n createNode,\n forward,\n guard,\n is,\n sample,\n withRegion,\n} from 'effector'\nimport { getAreaStorage } from './area'\n\n/**\n * Default sink for unhandled errors\n */\nconst sink = createEvent<Fail<any>>()\nsink.watch((payload) => console.error(payload.error))\n\n/**\n * Main `persist` function\n */\nexport function persist<State, Err = Error>({\n adapter,\n clock,\n store,\n source = store,\n target = store,\n done,\n fail = sink,\n finally: anyway,\n pickup,\n key: keyName,\n keyPrefix = '',\n}: Partial<\n ConfigPersist & ConfigStore<State, Err> & ConfigSourceTarget<State, Err>\n>): Subscription {\n if (!adapter) {\n throw Error('Adapter is not defined')\n }\n if (!source) {\n throw Error('Store or source is not defined')\n }\n if (!target) {\n throw Error('Target is not defined')\n }\n if (!keyName && source.shortName === (source as any).id) {\n throw Error('Key or name is not defined')\n }\n if (source === target && !is.store(source)) {\n throw Error('Source must be different from target')\n }\n\n const key = keyName || source.shortName\n const storage = getAreaStorage<State>(\n adapter.keyArea || adapter,\n keyPrefix + key\n )\n const region = createNode()\n const desist = () => clearNode(region)\n\n const op =\n (operation: 'get' | 'set') =>\n ({ status, params, result, error }: any): any =>\n status === 'done'\n ? {
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/area.ts","../src/persist.ts","../src/index.ts"],"sourcesContent":["import type { Store } from 'effector'\nimport { createStore } from 'effector'\n\n/**\n * Keys areas / namespaces cache\n */\nconst areas = new Map<any, Map<string, Store<any>>>()\n\n/**\n * Get store, responsible for the key in key area / namespace\n */\nexport function getAreaStorage<State>(keyArea: any, key: string): Store<State> {\n let area = areas.get(keyArea)\n if (area === undefined) {\n area = new Map()\n areas.set(keyArea, area)\n }\n\n let store = area.get(key)\n if (store !== undefined) {\n return store\n }\n\n store = createStore(null)\n area.set(key, store)\n\n return store\n}\n","import type { Subscription } from 'effector'\nimport type {\n ConfigPersist,\n ConfigSourceTarget,\n ConfigStore,\n Done,\n Fail,\n Finally,\n} from './types'\nimport {\n clearNode,\n createEffect,\n createEvent,\n createNode,\n forward,\n guard,\n is,\n sample,\n withRegion,\n} from 'effector'\nimport { getAreaStorage } from './area'\n\n/**\n * Default sink for unhandled errors\n */\nconst sink = createEvent<Fail<any>>()\nsink.watch((payload) => console.error(payload.error))\n\n/**\n * Main `persist` function\n */\nexport function persist<State, Err = Error>({\n adapter,\n clock,\n store,\n source = store,\n target = store,\n done,\n fail = sink,\n finally: anyway,\n pickup,\n key: keyName,\n keyPrefix = '',\n}: Partial<\n ConfigPersist & ConfigStore<State, Err> & ConfigSourceTarget<State, Err>\n>): Subscription {\n if (!adapter) {\n throw Error('Adapter is not defined')\n }\n if (!source) {\n throw Error('Store or source is not defined')\n }\n if (!target) {\n throw Error('Target is not defined')\n }\n if (!keyName && source.shortName === (source as any).id) {\n throw Error('Key or name is not defined')\n }\n if (source === target && !is.store(source)) {\n throw Error('Source must be different from target')\n }\n\n const key = keyName || source.shortName\n const storage = getAreaStorage<State>(\n adapter.keyArea || adapter,\n keyPrefix + key\n )\n const region = createNode()\n const desist = () => clearNode(region)\n\n const op =\n (operation: 'get' | 'set') =>\n ({ status, params, result, error }: any): any =>\n status === 'done'\n ? {\n status,\n key,\n keyPrefix,\n operation,\n value: operation === 'get' ? result : params,\n }\n : {\n status,\n key,\n keyPrefix,\n operation,\n value: params,\n error,\n }\n\n // create all auxiliary units and nodes within the region,\n // to be able to remove them all at once on unsubscription\n withRegion(region, () => {\n const getFx = createEffect<void, State, Err>()\n const setFx = createEffect<State, void, Err>()\n\n const localAnyway = createEvent<Finally<State, Err>>()\n const localDone = localAnyway.filterMap<Done<State>>(\n ({ status, key, keyPrefix, operation, value }) =>\n status === 'done' ? { key, keyPrefix, operation, value } : undefined\n )\n const localFail = localAnyway.filterMap<Fail<Err>>(\n ({ status, key, keyPrefix, operation, error, value }: any) =>\n status === 'fail'\n ? { key, keyPrefix, operation, error, value }\n : undefined\n )\n\n const value = adapter<State>(keyPrefix + key, getFx)\n getFx.use(value.get)\n setFx.use(value.set)\n\n guard({\n source: sample<State, State, [State, State]>(\n storage,\n (sample as any)(source, clock),\n (current: any, proposed) => [proposed, current]\n ),\n filter: ([proposed, current]) => proposed !== current,\n target: setFx.prepend<[State, State]>(([proposed]) => proposed),\n })\n forward({ from: [getFx.doneData, setFx], to: storage })\n forward({ from: [getFx.doneData, storage], to: target })\n forward({\n from: [getFx.finally.map(op('get')), setFx.finally.map(op('set'))],\n to: localAnyway,\n })\n\n forward({ from: localFail, to: fail })\n if (done) forward({ from: localDone, to: done })\n if (anyway) forward({ from: localAnyway, to: anyway })\n\n if (pickup) {\n // pick up value from storage ONLY on `pickup` update\n forward({ from: pickup, to: getFx.prepend(() => undefined) })\n } else {\n // kick getter to pick up initial value from storage\n getFx()\n }\n })\n\n return (desist.unsubscribe = desist)\n}\n","import type { ConfigPersist, Persist } from './types'\nimport { persist as base } from './persist'\n\nexport type {\n ConfigPersist,\n ConfigSourceTarget,\n ConfigStore,\n Done,\n Fail,\n Finally,\n Persist,\n StorageAdapter,\n} from './types'\n\n/**\n * Creates custom `persist`\n */\nexport function createPersist(defaults?: ConfigPersist): Persist {\n return (config) => base({ ...defaults, ...config })\n}\n\n/**\n * Default `persist`\n */\nexport const persist = createPersist()\n"],"names":["areas","Map","sink","createEvent","createPersist","defaults","config","adapter","clock","store","source","target","done","fail","finally","anyway","pickup","key","keyName","keyPrefix","Error","shortName","id","is","storage","keyArea","area","get","undefined","set","createStore","getAreaStorage","region","createNode","desist","clearNode","op","operation","status","params","result","error","value","withRegion","getFx","createEffect","setFx","localAnyway","localDone","filterMap","localFail","use","guard","sample","current","proposed","filter","prepend","forward","from","doneData","to","map","unsubscribe","base","watch","payload","console","persist"],"mappings":"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"}
|
package/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createStore as e,createEvent as r,is as o,createNode as t,clearNode as a,withRegion as i,createEffect as f,guard as n,sample as s,forward as u}from"effector";var d=new Map,p=r();function l(l){return y=>function({adapter:l,clock:y,store:k,source:m=k,target:v=k,done:c,fail:g=p,finally:h,pickup:w,key:x,keyPrefix:P=""}){if(!l)throw Error("Adapter is not defined");if(!m)throw Error("Store or source is not defined");if(!v)throw Error("Target is not defined");if(!x&&m.shortName===m.id)throw Error("Key or name is not defined");if(m===v&&!o.store(m))throw Error("Source must be different from target");var E=x||m.shortName,M=function(r,o){var t=d.get(r);void 0===t&&(t=new Map,d.set(r,t));var a=t.get(o);return void 0!==a||(a=e(null),t.set(o,a)),a}(l.keyArea||l,P+E),b=t(),A=()=>a(b),D=e=>({status:r,params:o,result:t,error:a})=>"done"===r?{status:r,key:E,keyPrefix:P,operation:e,value:t}:{status:r,key:E,keyPrefix:P,operation:e,value:o,error:a};return i(b,(()=>{var e=f(),o=f(),t=r(),a=t.filterMap((({status:e,key:r,keyPrefix:o,operation:t,value:a})=>"done"===e?{key:r,keyPrefix:o,operation:t,value:a}:void 0)),i=t.filterMap((({status:e,key:r,keyPrefix:o,operation:t,error:a,value:i})=>"fail"===e?{key:r,keyPrefix:o,operation:t,error:a,value:i}:void 0)),d=l(P+E,e);e.use(d.get),o.use(d.set),n({source:s(M,s(m,y),((e,r)=>[r,e])),filter:([e,r])=>e!==r,target:o.prepend((([e])=>e))}),u({from:[e.doneData,o],to:M}),u({from:[e.doneData,M],to:v}),u({from:[e.finally.map(D("get")),o.finally.map(D("set"))],to:t}),u({from:i,to:g}),c&&u({from:a,to:c}),h&&u({from:t,to:h}),w
|
|
1
|
+
import{createStore as e,createEvent as r,is as o,createNode as t,clearNode as a,withRegion as i,createEffect as f,guard as n,sample as s,forward as u}from"effector";var d=new Map,p=r();function l(l){return y=>function({adapter:l,clock:y,store:k,source:m=k,target:v=k,done:c,fail:g=p,finally:h,pickup:w,key:x,keyPrefix:P=""}){if(!l)throw Error("Adapter is not defined");if(!m)throw Error("Store or source is not defined");if(!v)throw Error("Target is not defined");if(!x&&m.shortName===m.id)throw Error("Key or name is not defined");if(m===v&&!o.store(m))throw Error("Source must be different from target");var E=x||m.shortName,M=function(r,o){var t=d.get(r);void 0===t&&(t=new Map,d.set(r,t));var a=t.get(o);return void 0!==a||(a=e(null),t.set(o,a)),a}(l.keyArea||l,P+E),b=t(),A=()=>a(b),D=e=>({status:r,params:o,result:t,error:a})=>"done"===r?{status:r,key:E,keyPrefix:P,operation:e,value:"get"===e?t:o}:{status:r,key:E,keyPrefix:P,operation:e,value:o,error:a};return i(b,(()=>{var e=f(),o=f(),t=r(),a=t.filterMap((({status:e,key:r,keyPrefix:o,operation:t,value:a})=>"done"===e?{key:r,keyPrefix:o,operation:t,value:a}:void 0)),i=t.filterMap((({status:e,key:r,keyPrefix:o,operation:t,error:a,value:i})=>"fail"===e?{key:r,keyPrefix:o,operation:t,error:a,value:i}:void 0)),d=l(P+E,e);e.use(d.get),o.use(d.set),n({source:s(M,s(m,y),((e,r)=>[r,e])),filter:([e,r])=>e!==r,target:o.prepend((([e])=>e))}),u({from:[e.doneData,o],to:M}),u({from:[e.doneData,M],to:v}),u({from:[e.finally.map(D("get")),o.finally.map(D("set"))],to:t}),u({from:i,to:g}),c&&u({from:a,to:c}),h&&u({from:t,to:h}),w?u({from:w,to:e.prepend((()=>{}))}):e()})),A.unsubscribe=A}({...l,...y})}p.watch((e=>console.error(e.error)));var y=l();export{l as createPersist,y as persist};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/index.js.flow
CHANGED
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/area.ts","../src/persist.ts","../src/index.ts"],"sourcesContent":["import type { Store } from 'effector'\nimport { createStore } from 'effector'\n\n/**\n * Keys areas / namespaces cache\n */\nconst areas = new Map<any, Map<string, Store<any>>>()\n\n/**\n * Get store, responsible for the key in key area / namespace\n */\nexport function getAreaStorage<State>(keyArea: any, key: string): Store<State> {\n let area = areas.get(keyArea)\n if (area === undefined) {\n area = new Map()\n areas.set(keyArea, area)\n }\n\n let store = area.get(key)\n if (store !== undefined) {\n return store\n }\n\n store = createStore(null)\n area.set(key, store)\n\n return store\n}\n","import type { Subscription } from 'effector'\nimport type {\n ConfigPersist,\n ConfigSourceTarget,\n ConfigStore,\n Done,\n Fail,\n Finally,\n} from './types'\nimport {\n clearNode,\n createEffect,\n createEvent,\n createNode,\n forward,\n guard,\n is,\n sample,\n withRegion,\n} from 'effector'\nimport { getAreaStorage } from './area'\n\n/**\n * Default sink for unhandled errors\n */\nconst sink = createEvent<Fail<any>>()\nsink.watch((payload) => console.error(payload.error))\n\n/**\n * Main `persist` function\n */\nexport function persist<State, Err = Error>({\n adapter,\n clock,\n store,\n source = store,\n target = store,\n done,\n fail = sink,\n finally: anyway,\n pickup,\n key: keyName,\n keyPrefix = '',\n}: Partial<\n ConfigPersist & ConfigStore<State, Err> & ConfigSourceTarget<State, Err>\n>): Subscription {\n if (!adapter) {\n throw Error('Adapter is not defined')\n }\n if (!source) {\n throw Error('Store or source is not defined')\n }\n if (!target) {\n throw Error('Target is not defined')\n }\n if (!keyName && source.shortName === (source as any).id) {\n throw Error('Key or name is not defined')\n }\n if (source === target && !is.store(source)) {\n throw Error('Source must be different from target')\n }\n\n const key = keyName || source.shortName\n const storage = getAreaStorage<State>(\n adapter.keyArea || adapter,\n keyPrefix + key\n )\n const region = createNode()\n const desist = () => clearNode(region)\n\n const op =\n (operation: 'get' | 'set') =>\n ({ status, params, result, error }: any): any =>\n status === 'done'\n ? {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/area.ts","../src/persist.ts","../src/index.ts"],"sourcesContent":["import type { Store } from 'effector'\nimport { createStore } from 'effector'\n\n/**\n * Keys areas / namespaces cache\n */\nconst areas = new Map<any, Map<string, Store<any>>>()\n\n/**\n * Get store, responsible for the key in key area / namespace\n */\nexport function getAreaStorage<State>(keyArea: any, key: string): Store<State> {\n let area = areas.get(keyArea)\n if (area === undefined) {\n area = new Map()\n areas.set(keyArea, area)\n }\n\n let store = area.get(key)\n if (store !== undefined) {\n return store\n }\n\n store = createStore(null)\n area.set(key, store)\n\n return store\n}\n","import type { Subscription } from 'effector'\nimport type {\n ConfigPersist,\n ConfigSourceTarget,\n ConfigStore,\n Done,\n Fail,\n Finally,\n} from './types'\nimport {\n clearNode,\n createEffect,\n createEvent,\n createNode,\n forward,\n guard,\n is,\n sample,\n withRegion,\n} from 'effector'\nimport { getAreaStorage } from './area'\n\n/**\n * Default sink for unhandled errors\n */\nconst sink = createEvent<Fail<any>>()\nsink.watch((payload) => console.error(payload.error))\n\n/**\n * Main `persist` function\n */\nexport function persist<State, Err = Error>({\n adapter,\n clock,\n store,\n source = store,\n target = store,\n done,\n fail = sink,\n finally: anyway,\n pickup,\n key: keyName,\n keyPrefix = '',\n}: Partial<\n ConfigPersist & ConfigStore<State, Err> & ConfigSourceTarget<State, Err>\n>): Subscription {\n if (!adapter) {\n throw Error('Adapter is not defined')\n }\n if (!source) {\n throw Error('Store or source is not defined')\n }\n if (!target) {\n throw Error('Target is not defined')\n }\n if (!keyName && source.shortName === (source as any).id) {\n throw Error('Key or name is not defined')\n }\n if (source === target && !is.store(source)) {\n throw Error('Source must be different from target')\n }\n\n const key = keyName || source.shortName\n const storage = getAreaStorage<State>(\n adapter.keyArea || adapter,\n keyPrefix + key\n )\n const region = createNode()\n const desist = () => clearNode(region)\n\n const op =\n (operation: 'get' | 'set') =>\n ({ status, params, result, error }: any): any =>\n status === 'done'\n ? {\n status,\n key,\n keyPrefix,\n operation,\n value: operation === 'get' ? result : params,\n }\n : {\n status,\n key,\n keyPrefix,\n operation,\n value: params,\n error,\n }\n\n // create all auxiliary units and nodes within the region,\n // to be able to remove them all at once on unsubscription\n withRegion(region, () => {\n const getFx = createEffect<void, State, Err>()\n const setFx = createEffect<State, void, Err>()\n\n const localAnyway = createEvent<Finally<State, Err>>()\n const localDone = localAnyway.filterMap<Done<State>>(\n ({ status, key, keyPrefix, operation, value }) =>\n status === 'done' ? { key, keyPrefix, operation, value } : undefined\n )\n const localFail = localAnyway.filterMap<Fail<Err>>(\n ({ status, key, keyPrefix, operation, error, value }: any) =>\n status === 'fail'\n ? { key, keyPrefix, operation, error, value }\n : undefined\n )\n\n const value = adapter<State>(keyPrefix + key, getFx)\n getFx.use(value.get)\n setFx.use(value.set)\n\n guard({\n source: sample<State, State, [State, State]>(\n storage,\n (sample as any)(source, clock),\n (current: any, proposed) => [proposed, current]\n ),\n filter: ([proposed, current]) => proposed !== current,\n target: setFx.prepend<[State, State]>(([proposed]) => proposed),\n })\n forward({ from: [getFx.doneData, setFx], to: storage })\n forward({ from: [getFx.doneData, storage], to: target })\n forward({\n from: [getFx.finally.map(op('get')), setFx.finally.map(op('set'))],\n to: localAnyway,\n })\n\n forward({ from: localFail, to: fail })\n if (done) forward({ from: localDone, to: done })\n if (anyway) forward({ from: localAnyway, to: anyway })\n\n if (pickup) {\n // pick up value from storage ONLY on `pickup` update\n forward({ from: pickup, to: getFx.prepend(() => undefined) })\n } else {\n // kick getter to pick up initial value from storage\n getFx()\n }\n })\n\n return (desist.unsubscribe = desist)\n}\n","import type { ConfigPersist, Persist } from './types'\nimport { persist as base } from './persist'\n\nexport type {\n ConfigPersist,\n ConfigSourceTarget,\n ConfigStore,\n Done,\n Fail,\n Finally,\n Persist,\n StorageAdapter,\n} from './types'\n\n/**\n * Creates custom `persist`\n */\nexport function createPersist(defaults?: ConfigPersist): Persist {\n return (config) => base({ ...defaults, ...config })\n}\n\n/**\n * Default `persist`\n */\nexport const persist = createPersist()\n"],"names":["areas","Map","sink","createEvent","createPersist","defaults","config","adapter","clock","store","source","target","done","fail","finally","anyway","pickup","key","keyName","keyPrefix","Error","shortName","id","is","storage","keyArea","area","get","undefined","set","createStore","getAreaStorage","region","createNode","desist","clearNode","op","operation","status","params","result","error","value","withRegion","getFx","createEffect","setFx","localAnyway","localDone","filterMap","localFail","use","guard","sample","current","proposed","filter","prepend","forward","from","doneData","to","map","unsubscribe","base","watch","payload","console","persist"],"mappings":"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"}
|
package/local/index.js.flow
CHANGED
package/memory/index.js.flow
CHANGED
package/nil/index.js.flow
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "effector-storage",
|
|
3
3
|
"description": "Module for Effector to sync stores with different storages",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "5.0.0",
|
|
5
5
|
"author": "Victor Didenko <yumaa.verdin@gmail.com> (https://yumaa.name)",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -39,11 +39,6 @@
|
|
|
39
39
|
"require": "./index.cjs",
|
|
40
40
|
"import": "./index.js"
|
|
41
41
|
},
|
|
42
|
-
"./fp/package.json": "./fp/package.json",
|
|
43
|
-
"./fp": {
|
|
44
|
-
"require": "./fp/index.cjs",
|
|
45
|
-
"import": "./fp/index.js"
|
|
46
|
-
},
|
|
47
42
|
"./nil/package.json": "./nil/package.json",
|
|
48
43
|
"./nil": {
|
|
49
44
|
"require": "./nil/index.cjs",
|
|
@@ -54,21 +49,11 @@
|
|
|
54
49
|
"require": "./local/index.cjs",
|
|
55
50
|
"import": "./local/index.js"
|
|
56
51
|
},
|
|
57
|
-
"./local/fp/package.json": "./local/fp/package.json",
|
|
58
|
-
"./local/fp": {
|
|
59
|
-
"require": "./local/fp/index.cjs",
|
|
60
|
-
"import": "./local/fp/index.js"
|
|
61
|
-
},
|
|
62
52
|
"./session/package.json": "./session/package.json",
|
|
63
53
|
"./session": {
|
|
64
54
|
"require": "./session/index.cjs",
|
|
65
55
|
"import": "./session/index.js"
|
|
66
56
|
},
|
|
67
|
-
"./session/fp/package.json": "./session/fp/package.json",
|
|
68
|
-
"./session/fp": {
|
|
69
|
-
"require": "./session/fp/index.cjs",
|
|
70
|
-
"import": "./session/fp/index.js"
|
|
71
|
-
},
|
|
72
57
|
"./storage/package.json": "./storage/package.json",
|
|
73
58
|
"./storage": {
|
|
74
59
|
"require": "./storage/index.cjs",
|
|
@@ -79,21 +64,11 @@
|
|
|
79
64
|
"require": "./query/index.cjs",
|
|
80
65
|
"import": "./query/index.js"
|
|
81
66
|
},
|
|
82
|
-
"./query/fp/package.json": "./query/fp/package.json",
|
|
83
|
-
"./query/fp": {
|
|
84
|
-
"require": "./query/fp/index.cjs",
|
|
85
|
-
"import": "./query/fp/index.js"
|
|
86
|
-
},
|
|
87
67
|
"./memory/package.json": "./memory/package.json",
|
|
88
68
|
"./memory": {
|
|
89
69
|
"require": "./memory/index.cjs",
|
|
90
70
|
"import": "./memory/index.js"
|
|
91
71
|
},
|
|
92
|
-
"./memory/fp/package.json": "./memory/fp/package.json",
|
|
93
|
-
"./memory/fp": {
|
|
94
|
-
"require": "./memory/fp/index.cjs",
|
|
95
|
-
"import": "./memory/fp/index.js"
|
|
96
|
-
},
|
|
97
72
|
"./async-storage/package.json": "./async-storage/package.json",
|
|
98
73
|
"./async-storage": {
|
|
99
74
|
"require": "./async-storage/index.cjs",
|
package/query/index.js.flow
CHANGED
package/rn/async/index.js.flow
CHANGED
package/session/index.js.flow
CHANGED
package/storage/index.js.flow
CHANGED
package/fp/index.cjs
DELETED
package/fp/index.cjs.d.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import * as effector from 'effector'
|
|
2
|
-
import { Unit } from 'effector'
|
|
3
|
-
export { ConfigPersist, Done, Fail, Finally, Persist, StorageAdapter } from '..'
|
|
4
|
-
|
|
5
|
-
interface StorageAdapter {
|
|
6
|
-
<State>(key: string, update: (raw?: any) => any): {
|
|
7
|
-
set(value: State): void
|
|
8
|
-
get(value?: any): State | Promise<State>
|
|
9
|
-
}
|
|
10
|
-
keyArea?: any
|
|
11
|
-
}
|
|
12
|
-
declare type Done<State> = {
|
|
13
|
-
key: string
|
|
14
|
-
keyPrefix: string
|
|
15
|
-
operation: 'set' | 'get'
|
|
16
|
-
value: State
|
|
17
|
-
}
|
|
18
|
-
declare type Fail<Err> = {
|
|
19
|
-
key: string
|
|
20
|
-
keyPrefix: string
|
|
21
|
-
operation: 'set' | 'get'
|
|
22
|
-
error: Err
|
|
23
|
-
value?: any
|
|
24
|
-
}
|
|
25
|
-
declare type Finally<State, Err> =
|
|
26
|
-
| (Done<State> & {
|
|
27
|
-
status: 'done'
|
|
28
|
-
})
|
|
29
|
-
| (Fail<Err> & {
|
|
30
|
-
status: 'fail'
|
|
31
|
-
})
|
|
32
|
-
interface ConfigAdapter {
|
|
33
|
-
adapter: StorageAdapter
|
|
34
|
-
}
|
|
35
|
-
interface ConfigCommon<State, Err = Error> {
|
|
36
|
-
clock?: Unit<any>
|
|
37
|
-
done?: Unit<Done<State>>
|
|
38
|
-
fail?: Unit<Fail<Err>>
|
|
39
|
-
finally?: Unit<Finally<State, Err>>
|
|
40
|
-
pickup?: Unit<any>
|
|
41
|
-
key?: string
|
|
42
|
-
keyPrefix?: string
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
interface ConfigStore<State, Err = Error>
|
|
46
|
-
extends ConfigAdapter,
|
|
47
|
-
ConfigCommon<State, Err> {}
|
|
48
|
-
/**
|
|
49
|
-
* `persist` with curried `store`
|
|
50
|
-
*/
|
|
51
|
-
declare const persist: (
|
|
52
|
-
config?: ConfigStore<any, Error> | undefined
|
|
53
|
-
) => <State>(store: effector.Store<State>) => effector.Store<State>
|
|
54
|
-
|
|
55
|
-
export { ConfigStore, persist }
|
package/fp/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/fp/index.ts","../../src/fp-helper.ts"],"sourcesContent":["import type { ConfigAdapter, ConfigCommon } from '../types'\nimport { persist as parent } from '..'\nimport { fp } from '../fp-helper'\n\nexport type {\n ConfigPersist,\n Done,\n Fail,\n Finally,\n Persist,\n StorageAdapter,\n} from '..'\n\nexport interface ConfigStore<State, Err = Error>\n extends ConfigAdapter,\n ConfigCommon<State, Err> {}\n\n/**\n * `persist` with curried `store`\n */\nexport const persist = fp<ConfigStore<any>>(parent)\n","import type { Store, Subscription } from 'effector'\n\ntype LikePersist = {\n (config: any): Subscription\n}\n\ntype Curried = {\n <State>(store: Store<State>): Store<State>\n}\n\n/**\n * Helper to make any `persist` function like functional\n */\nexport const fp =\n <Config>(persist: LikePersist) =>\n (config?: Config): Curried => {\n console.error(`/fp is deprecated, use regular form instead`)\n return <State>(store: Store<State>): Store<State> => {\n persist({ store, ...config })\n return store\n }\n }\n"],"names":["persist","config","console","error","store","fp"],"mappings":"iBAoBaA,ECNFA,CAAAA,GACRC,IACCC,QAAQC,MAAO,+CACAC,IACbJ,EAAQ,CAAEI,MAAAA,KAAUH,IACbG,IDCUC"}
|
package/fp/index.d.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import * as effector from 'effector'
|
|
2
|
-
import { Unit } from 'effector'
|
|
3
|
-
export { ConfigPersist, Done, Fail, Finally, Persist, StorageAdapter } from '..'
|
|
4
|
-
|
|
5
|
-
interface StorageAdapter {
|
|
6
|
-
<State>(key: string, update: (raw?: any) => any): {
|
|
7
|
-
set(value: State): void
|
|
8
|
-
get(value?: any): State | Promise<State>
|
|
9
|
-
}
|
|
10
|
-
keyArea?: any
|
|
11
|
-
}
|
|
12
|
-
declare type Done<State> = {
|
|
13
|
-
key: string
|
|
14
|
-
keyPrefix: string
|
|
15
|
-
operation: 'set' | 'get'
|
|
16
|
-
value: State
|
|
17
|
-
}
|
|
18
|
-
declare type Fail<Err> = {
|
|
19
|
-
key: string
|
|
20
|
-
keyPrefix: string
|
|
21
|
-
operation: 'set' | 'get'
|
|
22
|
-
error: Err
|
|
23
|
-
value?: any
|
|
24
|
-
}
|
|
25
|
-
declare type Finally<State, Err> =
|
|
26
|
-
| (Done<State> & {
|
|
27
|
-
status: 'done'
|
|
28
|
-
})
|
|
29
|
-
| (Fail<Err> & {
|
|
30
|
-
status: 'fail'
|
|
31
|
-
})
|
|
32
|
-
interface ConfigAdapter {
|
|
33
|
-
adapter: StorageAdapter
|
|
34
|
-
}
|
|
35
|
-
interface ConfigCommon<State, Err = Error> {
|
|
36
|
-
clock?: Unit<any>
|
|
37
|
-
done?: Unit<Done<State>>
|
|
38
|
-
fail?: Unit<Fail<Err>>
|
|
39
|
-
finally?: Unit<Finally<State, Err>>
|
|
40
|
-
pickup?: Unit<any>
|
|
41
|
-
key?: string
|
|
42
|
-
keyPrefix?: string
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
interface ConfigStore<State, Err = Error>
|
|
46
|
-
extends ConfigAdapter,
|
|
47
|
-
ConfigCommon<State, Err> {}
|
|
48
|
-
/**
|
|
49
|
-
* `persist` with curried `store`
|
|
50
|
-
*/
|
|
51
|
-
declare const persist: (
|
|
52
|
-
config?: ConfigStore<any, Error> | undefined
|
|
53
|
-
) => <State>(store: effector.Store<State>) => effector.Store<State>
|
|
54
|
-
|
|
55
|
-
export { ConfigStore, persist }
|
package/fp/index.js
DELETED
package/fp/index.js.flow
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Flowtype definitions for index
|
|
3
|
-
* Generated by Flowgen from a Typescript Definition
|
|
4
|
-
* Flowgen v1.15.0
|
|
5
|
-
* @flow
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import * as effector from 'effector'
|
|
9
|
-
import { Unit } from 'effector'
|
|
10
|
-
declare export {
|
|
11
|
-
ConfigPersist,
|
|
12
|
-
Done,
|
|
13
|
-
Fail,
|
|
14
|
-
Finally,
|
|
15
|
-
Persist,
|
|
16
|
-
StorageAdapter,
|
|
17
|
-
} from '..'
|
|
18
|
-
declare interface StorageAdapter {
|
|
19
|
-
<State>(
|
|
20
|
-
key: string,
|
|
21
|
-
update: (raw?: any) => any
|
|
22
|
-
): {
|
|
23
|
-
set(value: State): void,
|
|
24
|
-
get(value?: any): State | Promise<State>,
|
|
25
|
-
...
|
|
26
|
-
};
|
|
27
|
-
keyArea?: any;
|
|
28
|
-
}
|
|
29
|
-
declare type Done<State> = {
|
|
30
|
-
key: string,
|
|
31
|
-
keyPrefix: string,
|
|
32
|
-
operation: 'set' | 'get',
|
|
33
|
-
value: State,
|
|
34
|
-
...
|
|
35
|
-
}
|
|
36
|
-
declare type Fail<Err> = {
|
|
37
|
-
key: string,
|
|
38
|
-
keyPrefix: string,
|
|
39
|
-
operation: 'set' | 'get',
|
|
40
|
-
error: Err,
|
|
41
|
-
value?: any,
|
|
42
|
-
...
|
|
43
|
-
}
|
|
44
|
-
declare type Finally<State, Err> =
|
|
45
|
-
| {
|
|
46
|
-
...Done<State>,
|
|
47
|
-
...{
|
|
48
|
-
status: 'done',
|
|
49
|
-
...
|
|
50
|
-
},
|
|
51
|
-
}
|
|
52
|
-
| {
|
|
53
|
-
...Fail<Err>,
|
|
54
|
-
...{
|
|
55
|
-
status: 'fail',
|
|
56
|
-
...
|
|
57
|
-
},
|
|
58
|
-
}
|
|
59
|
-
declare interface ConfigAdapter {
|
|
60
|
-
adapter: StorageAdapter;
|
|
61
|
-
}
|
|
62
|
-
declare interface ConfigCommon<State, Err = Error> {
|
|
63
|
-
clock?: Unit<any>;
|
|
64
|
-
done?: Unit<Done<State>>;
|
|
65
|
-
fail?: Unit<Fail<Err>>;
|
|
66
|
-
finally?: Unit<Finally<State, Err>>;
|
|
67
|
-
pickup?: Unit<any>;
|
|
68
|
-
key?: string;
|
|
69
|
-
keyPrefix?: string;
|
|
70
|
-
}
|
|
71
|
-
declare type ConfigStore<State, Err = Error> = { ... } & ConfigAdapter &
|
|
72
|
-
ConfigCommon<State, Err>
|
|
73
|
-
declare var persist: (
|
|
74
|
-
config?: ConfigStore<any, Error> | void
|
|
75
|
-
) => <State>(store: effector.Store<State>) => effector.Store<State>
|
|
76
|
-
declare export { ConfigStore, persist }
|
package/fp/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/fp-helper.ts","../../src/fp/index.ts"],"sourcesContent":["import type { Store, Subscription } from 'effector'\n\ntype LikePersist = {\n (config: any): Subscription\n}\n\ntype Curried = {\n <State>(store: Store<State>): Store<State>\n}\n\n/**\n * Helper to make any `persist` function like functional\n */\nexport const fp =\n <Config>(persist: LikePersist) =>\n (config?: Config): Curried => {\n console.error(`/fp is deprecated, use regular form instead`)\n return <State>(store: Store<State>): Store<State> => {\n persist({ store, ...config })\n return store\n }\n }\n","import type { ConfigAdapter, ConfigCommon } from '../types'\nimport { persist as parent } from '..'\nimport { fp } from '../fp-helper'\n\nexport type {\n ConfigPersist,\n Done,\n Fail,\n Finally,\n Persist,\n StorageAdapter,\n} from '..'\n\nexport interface ConfigStore<State, Err = Error>\n extends ConfigAdapter,\n ConfigCommon<State, Err> {}\n\n/**\n * `persist` with curried `store`\n */\nexport const persist = fp<ConfigStore<any>>(parent)\n"],"names":["persist","config","console","error","store","fp","parent"],"mappings":"sCAaO,ICOMA,EDNFA,CAAAA,GACRC,IACCC,QAAQC,MAAO,+CACAC,IACbJ,EAAQ,CAAEI,MAAAA,KAAUH,IACbG,ICCUC,CAAqBC"}
|
package/fp/package.json
DELETED
package/local/fp/index.cjs
DELETED