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.
Files changed (56) hide show
  1. package/README.md +11 -54
  2. package/async-storage/index.js.flow +1 -1
  3. package/index.cjs +1 -1
  4. package/index.cjs.map +1 -1
  5. package/index.js +1 -1
  6. package/index.js.flow +1 -1
  7. package/index.js.map +1 -1
  8. package/local/index.js.flow +1 -1
  9. package/memory/index.js.flow +1 -1
  10. package/nil/index.js.flow +1 -1
  11. package/package.json +1 -26
  12. package/query/index.js.flow +1 -1
  13. package/rn/async/index.js.flow +1 -1
  14. package/rn/encrypted/index.js.flow +1 -1
  15. package/session/index.js.flow +1 -1
  16. package/storage/index.js.flow +1 -1
  17. package/fp/index.cjs +0 -2
  18. package/fp/index.cjs.d.ts +0 -55
  19. package/fp/index.cjs.map +0 -1
  20. package/fp/index.d.ts +0 -55
  21. package/fp/index.js +0 -2
  22. package/fp/index.js.flow +0 -76
  23. package/fp/index.js.map +0 -1
  24. package/fp/package.json +0 -7
  25. package/local/fp/index.cjs +0 -2
  26. package/local/fp/index.cjs.d.ts +0 -46
  27. package/local/fp/index.cjs.map +0 -1
  28. package/local/fp/index.d.ts +0 -46
  29. package/local/fp/index.js +0 -2
  30. package/local/fp/index.js.flow +0 -63
  31. package/local/fp/index.js.map +0 -1
  32. package/local/fp/package.json +0 -7
  33. package/memory/fp/index.cjs +0 -2
  34. package/memory/fp/index.cjs.d.ts +0 -43
  35. package/memory/fp/index.cjs.map +0 -1
  36. package/memory/fp/index.d.ts +0 -43
  37. package/memory/fp/index.js +0 -2
  38. package/memory/fp/index.js.flow +0 -64
  39. package/memory/fp/index.js.map +0 -1
  40. package/memory/fp/package.json +0 -7
  41. package/query/fp/index.cjs +0 -2
  42. package/query/fp/index.cjs.d.ts +0 -57
  43. package/query/fp/index.cjs.map +0 -1
  44. package/query/fp/index.d.ts +0 -57
  45. package/query/fp/index.js +0 -2
  46. package/query/fp/index.js.flow +0 -67
  47. package/query/fp/index.js.map +0 -1
  48. package/query/fp/package.json +0 -7
  49. package/session/fp/index.cjs +0 -2
  50. package/session/fp/index.cjs.d.ts +0 -46
  51. package/session/fp/index.cjs.map +0 -1
  52. package/session/fp/index.d.ts +0 -46
  53. package/session/fp/index.js +0 -2
  54. package/session/fp/index.js.flow +0 -63
  55. package/session/fp/index.js.map +0 -1
  56. 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
- $ yarn add effector-storage
50
- ```
51
+ # using `pnpm`
52
+ $ pnpm add effector-storage
51
53
 
52
- Or using `npm`
54
+ # using `yarn`
55
+ $ yarn add effector-storage
53
56
 
54
- ```bash
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 force update `store` value from storage.
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 force update:
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 force update
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 force update `store` from storage with new value
367
+ // and you need to update `store` from storage with new value
411
368
  pickup()
412
369
  ```
413
370
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Flowtype definitions for index
3
3
  * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.15.0
4
+ * Flowgen v1.16.2
5
5
  * @flow
6
6
  */
7
7
 
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&&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;
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 ? { status, key, keyPrefix, operation, value: result }\n : { status, key, keyPrefix, operation, value: params, error }\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 done && forward({ from: localDone, to: done })\n anyway && forward({ from: localAnyway, to: anyway })\n\n pickup && forward({ from: pickup, to: getFx.prepend(() => undefined) })\n\n // kick getter to pick up initial value from storage\n getFx()\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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"}
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&&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};
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
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Flowtype definitions for index
3
3
  * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.15.0
4
+ * Flowgen v1.16.2
5
5
  * @flow
6
6
  */
7
7
 
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 ? { status, key, keyPrefix, operation, value: result }\n : { status, key, keyPrefix, operation, value: params, error }\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 done && forward({ from: localDone, to: done })\n anyway && forward({ from: localAnyway, to: anyway })\n\n pickup && forward({ from: pickup, to: getFx.prepend(() => undefined) })\n\n // kick getter to pick up initial value from storage\n getFx()\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":"qKAMA,IAAMA,EAAQ,IAAIC,ICmBZC,EAAOC,ICRN,SAASC,EAAcC,UACpBC,GDaH,UAAqCC,QAC1CA,EAD0CC,MAE1CA,EAF0CC,MAG1CA,EAH0CC,OAI1CA,EAASD,EAJiCE,OAK1CA,EAASF,EALiCG,KAM1CA,EAN0CC,KAO1CA,EAAOX,EACPY,QAASC,EARiCC,OAS1CA,EACAC,IAAKC,EAVqCC,UAW1CA,EAAY,SAIPZ,QACGa,MAAM,8BAETV,QACGU,MAAM,sCAETT,QACGS,MAAM,6BAETF,GAAWR,EAAOW,YAAeX,EAAeY,SAC7CF,MAAM,iCAEVV,IAAWC,IAAWY,EAAGd,MAAMC,SAC3BU,MAAM,4CAGRH,EAAMC,GAAWR,EAAOW,UACxBG,EDpDD,SAA+BC,EAAcR,OAC9CS,EAAO1B,EAAM2B,IAAIF,QACRG,IAATF,IACFA,EAAO,IAAIzB,IACXD,EAAM6B,IAAIJ,EAASC,QAGjBjB,EAAQiB,EAAKC,IAAIV,eACPW,IAAVnB,IAIJA,EAAQqB,EAAY,MACpBJ,EAAKG,IAAIZ,EAAKR,IAJLA,EC2COsB,CACdxB,EAAQkB,SAAWlB,EACnBY,EAAYF,GAERe,EAASC,IACTC,EAAS,IAAMC,EAAUH,GAEzBI,EACHC,GACD,EAAGC,OAAAA,EAAQC,OAAAA,EAAQC,OAAAA,EAAQC,MAAAA,KACd,SAAXH,EACI,CAAEA,OAAAA,EAAQrB,IAAAA,EAAKE,UAAAA,EAAWkB,UAAAA,EAAWK,MAAOF,GAC5C,CAAEF,OAAAA,EAAQrB,IAAAA,EAAKE,UAAAA,EAAWkB,UAAAA,EAAWK,MAAOH,EAAQE,MAAAA,UAI5DE,EAAWX,GAAQ,SACXY,EAAQC,IACRC,EAAQD,IAERE,EAAc5C,IACd6C,EAAYD,EAAYE,WAC5B,EAAGX,OAAAA,EAAQrB,IAAAA,EAAKE,UAAAA,EAAWkB,UAAAA,EAAWK,MAAAA,KACzB,SAAXJ,EAAoB,CAAErB,IAAAA,EAAKE,UAAAA,EAAWkB,UAAAA,EAAWK,MAAAA,QAAUd,IAEzDsB,EAAYH,EAAYE,WAC5B,EAAGX,OAAAA,EAAQrB,IAAAA,EAAKE,UAAAA,EAAWkB,UAAAA,EAAWI,MAAAA,EAAOC,MAAAA,KAChC,SAAXJ,EACI,CAAErB,IAAAA,EAAKE,UAAAA,EAAWkB,UAAAA,EAAWI,MAAAA,EAAOC,MAAAA,QACpCd,IAGFc,EAAQnC,EAAeY,EAAYF,EAAK2B,GAC9CA,EAAMO,IAAIT,EAAMf,KAChBmB,EAAMK,IAAIT,EAAMb,KAEhBuB,EAAM,CACJ1C,OAAQ2C,EACN7B,EACC6B,EAAe3C,EAAQF,IACxB,CAAC8C,EAAcC,IAAa,CAACA,EAAUD,KAEzCE,OAAQ,EAAED,EAAUD,KAAaC,IAAaD,EAC9C3C,OAAQmC,EAAMW,SAAwB,EAAEF,KAAcA,MAExDG,EAAQ,CAAEC,KAAM,CAACf,EAAMgB,SAAUd,GAAQe,GAAIrC,IAC7CkC,EAAQ,CAAEC,KAAM,CAACf,EAAMgB,SAAUpC,GAAUqC,GAAIlD,IAC/C+C,EAAQ,CACNC,KAAM,CAACf,EAAM9B,QAAQgD,IAAI1B,EAAG,QAASU,EAAMhC,QAAQgD,IAAI1B,EAAG,SAC1DyB,GAAId,IAGNW,EAAQ,CAAEC,KAAMT,EAAWW,GAAIhD,IAC/BD,GAAQ8C,EAAQ,CAAEC,KAAMX,EAAWa,GAAIjD,IACvCG,GAAU2C,EAAQ,CAAEC,KAAMZ,EAAac,GAAI9C,IAE3CC,GAAU0C,EAAQ,CAAEC,KAAM3C,EAAQ6C,GAAIjB,EAAMa,SAAQ,WAGpDb,OAGMV,EAAO6B,YAAc7B,EC3GV8B,CAAK,IAAK3D,KAAaC,IDQ5CJ,EAAK+D,OAAOC,GAAYC,QAAQ1B,MAAMyB,EAAQzB,aCFjC2B,EAAUhE"}
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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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Flowtype definitions for index
3
3
  * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.15.0
4
+ * Flowgen v1.16.2
5
5
  * @flow
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Flowtype definitions for index
3
3
  * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.15.0
4
+ * Flowgen v1.16.2
5
5
  * @flow
6
6
  */
7
7
 
package/nil/index.js.flow CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Flowtype definitions for index
3
3
  * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.15.0
4
+ * Flowgen v1.16.2
5
5
  * @flow
6
6
  */
7
7
 
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.5.0",
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",
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Flowtype definitions for index
3
3
  * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.15.0
4
+ * Flowgen v1.16.2
5
5
  * @flow
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Flowtype definitions for index
3
3
  * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.15.0
4
+ * Flowgen v1.16.2
5
5
  * @flow
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Flowtype definitions for index
3
3
  * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.15.0
4
+ * Flowgen v1.16.2
5
5
  * @flow
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Flowtype definitions for index
3
3
  * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.15.0
4
+ * Flowgen v1.16.2
5
5
  * @flow
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Flowtype definitions for index
3
3
  * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.15.0
4
+ * Flowgen v1.16.2
5
5
  * @flow
6
6
  */
7
7
 
package/fp/index.cjs DELETED
@@ -1,2 +0,0 @@
1
- "use strict";var e=(e=>r=>(console.error("/fp is deprecated, use regular form instead"),s=>(e({store:s,...r}),s)))(require("../index.cjs").persist);exports.persist=e;
2
- //# sourceMappingURL=index.cjs.map
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
@@ -1,2 +0,0 @@
1
- import{persist as r}from"../index.js";var e=(r=>e=>(console.error("/fp is deprecated, use regular form instead"),s=>(r({store:s,...e}),s)))(r);export{e as persist};
2
- //# sourceMappingURL=index.js.map
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
@@ -1,7 +0,0 @@
1
- {
2
- "type": "module",
3
- "main": "index.cjs",
4
- "module": "index.js",
5
- "react-native": "index.js",
6
- "types": "index.d.ts"
7
- }
@@ -1,2 +0,0 @@
1
- "use strict";var e=(e=>r=>(console.error("/fp is deprecated, use regular form instead"),s=>(e({store:s,...r}),s)))(require("../index.cjs").persist);exports.persist=e;
2
- //# sourceMappingURL=index.cjs.map