effector-storage 5.0.1 → 6.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 (105) hide show
  1. package/README.md +76 -11
  2. package/async-storage/index.cjs +1 -1
  3. package/async-storage/index.cjs.d.ts +12 -5
  4. package/async-storage/index.cjs.map +1 -1
  5. package/async-storage/index.d.ts +12 -5
  6. package/async-storage/index.js +1 -1
  7. package/async-storage/index.js.flow +21 -4
  8. package/async-storage/index.js.map +1 -1
  9. package/async-storage/package.json +1 -0
  10. package/core/index.cjs +2 -0
  11. package/core/index.cjs.d.ts +90 -0
  12. package/core/index.cjs.map +1 -0
  13. package/core/index.d.ts +90 -0
  14. package/core/index.js +2 -0
  15. package/core/index.js.flow +113 -0
  16. package/core/index.js.map +1 -0
  17. package/core/package.json +8 -0
  18. package/index.cjs +1 -1
  19. package/index.cjs.d.ts +53 -12
  20. package/index.cjs.map +1 -1
  21. package/index.d.ts +53 -12
  22. package/index.js +1 -1
  23. package/index.js.flow +60 -10
  24. package/index.js.map +1 -1
  25. package/local/index.cjs +1 -1
  26. package/local/index.cjs.d.ts +36 -11
  27. package/local/index.cjs.map +1 -1
  28. package/local/index.d.ts +36 -11
  29. package/local/index.js +1 -1
  30. package/local/index.js.flow +40 -9
  31. package/local/index.js.map +1 -1
  32. package/local/package.json +1 -0
  33. package/log/index.cjs +2 -0
  34. package/log/index.cjs.d.ts +19 -0
  35. package/log/index.cjs.map +1 -0
  36. package/log/index.d.ts +19 -0
  37. package/log/index.js +2 -0
  38. package/log/index.js.flow +31 -0
  39. package/log/index.js.map +1 -0
  40. package/log/package.json +8 -0
  41. package/memory/index.cjs +1 -1
  42. package/memory/index.cjs.d.ts +33 -5
  43. package/memory/index.cjs.map +1 -1
  44. package/memory/index.d.ts +33 -5
  45. package/memory/index.js +1 -1
  46. package/memory/index.js.flow +33 -3
  47. package/memory/index.js.map +1 -1
  48. package/memory/package.json +1 -0
  49. package/nil/index.cjs +1 -1
  50. package/nil/index.cjs.d.ts +16 -6
  51. package/nil/index.cjs.map +1 -1
  52. package/nil/index.d.ts +16 -6
  53. package/nil/index.js +1 -1
  54. package/nil/index.js.flow +24 -4
  55. package/nil/index.js.map +1 -1
  56. package/nil/package.json +1 -0
  57. package/package.json +20 -4
  58. package/query/index.cjs +1 -1
  59. package/query/index.cjs.d.ts +41 -18
  60. package/query/index.cjs.map +1 -1
  61. package/query/index.d.ts +41 -18
  62. package/query/index.js +1 -1
  63. package/query/index.js.flow +41 -11
  64. package/query/index.js.map +1 -1
  65. package/query/package.json +1 -0
  66. package/rn/async/index.cjs +1 -1
  67. package/rn/async/index.cjs.d.ts +31 -9
  68. package/rn/async/index.cjs.map +1 -1
  69. package/rn/async/index.d.ts +31 -9
  70. package/rn/async/index.js +1 -1
  71. package/rn/async/index.js.flow +35 -7
  72. package/rn/async/index.js.map +1 -1
  73. package/rn/async/package.json +1 -0
  74. package/rn/encrypted/index.cjs +1 -1
  75. package/rn/encrypted/index.cjs.d.ts +26 -9
  76. package/rn/encrypted/index.cjs.map +1 -1
  77. package/rn/encrypted/index.d.ts +26 -9
  78. package/rn/encrypted/index.js +1 -1
  79. package/rn/encrypted/index.js.flow +32 -7
  80. package/rn/encrypted/index.js.map +1 -1
  81. package/rn/encrypted/package.json +1 -0
  82. package/session/index.cjs +1 -1
  83. package/session/index.cjs.d.ts +36 -11
  84. package/session/index.cjs.map +1 -1
  85. package/session/index.d.ts +36 -11
  86. package/session/index.js +1 -1
  87. package/session/index.js.flow +40 -9
  88. package/session/index.js.map +1 -1
  89. package/session/package.json +1 -0
  90. package/storage/index.cjs +1 -1
  91. package/storage/index.cjs.d.ts +17 -6
  92. package/storage/index.cjs.map +1 -1
  93. package/storage/index.d.ts +17 -6
  94. package/storage/index.js +1 -1
  95. package/storage/index.js.flow +24 -5
  96. package/storage/index.js.map +1 -1
  97. package/storage/package.json +1 -0
  98. package/tools/index.cjs +2 -0
  99. package/tools/index.cjs.d.ts +125 -0
  100. package/tools/index.cjs.map +1 -0
  101. package/tools/index.d.ts +125 -0
  102. package/tools/index.js +2 -0
  103. package/tools/index.js.flow +101 -0
  104. package/tools/index.js.map +1 -0
  105. package/tools/package.json +8 -0
package/query/index.d.ts CHANGED
@@ -2,25 +2,36 @@ import { Unit, Store, Event, Effect, Subscription } from 'effector'
2
2
 
3
3
  interface StorageAdapter {
4
4
  <State>(key: string, update: (raw?: any) => any): {
5
- set(value: State): void
6
- get(value?: any): State | Promise<State>
5
+ get(raw?: any, ctx?: any): State | Promise<State>
6
+ set(value: State, ctx?: any): void
7
7
  }
8
8
  keyArea?: any
9
+ noop?: boolean
9
10
  }
10
- declare type Done<State> = {
11
+ interface StorageAdapterFactory<AdapterConfig> {
12
+ (config?: AdapterConfig): StorageAdapter
13
+ factory: true
14
+ }
15
+ type Contract<Data> =
16
+ | ((raw: unknown) => raw is Data)
17
+ | {
18
+ isData: (raw: unknown) => raw is Data
19
+ getErrorMessages: (raw: unknown) => string[]
20
+ }
21
+ type Done<State> = {
11
22
  key: string
12
23
  keyPrefix: string
13
24
  operation: 'set' | 'get'
14
25
  value: State
15
26
  }
16
- declare type Fail<Err> = {
27
+ type Fail<Err> = {
17
28
  key: string
18
29
  keyPrefix: string
19
30
  operation: 'set' | 'get'
20
31
  error: Err
21
32
  value?: any
22
33
  }
23
- declare type Finally<State, Err> =
34
+ type Finally<State, Err> =
24
35
  | (Done<State> & {
25
36
  status: 'done'
26
37
  })
@@ -28,7 +39,10 @@ declare type Finally<State, Err> =
28
39
  status: 'fail'
29
40
  })
30
41
  interface ConfigPersist$1 {
42
+ pickup?: Unit<any>
43
+ context?: Unit<any>
31
44
  keyPrefix?: string
45
+ contract?: Contract<any>
32
46
  }
33
47
  interface ConfigCommon<State, Err = Error> {
34
48
  clock?: Unit<any>
@@ -36,8 +50,10 @@ interface ConfigCommon<State, Err = Error> {
36
50
  fail?: Unit<Fail<Err>>
37
51
  finally?: Unit<Finally<State, Err>>
38
52
  pickup?: Unit<any>
53
+ context?: Unit<any>
39
54
  key?: string
40
55
  keyPrefix?: string
56
+ contract?: Contract<State | undefined>
41
57
  }
42
58
  interface ConfigJustStore<State> {
43
59
  store: Store<State>
@@ -47,11 +63,14 @@ interface ConfigJustSourceTarget<State> {
47
63
  target: Store<State> | Event<State> | Effect<State, any, any>
48
64
  }
49
65
 
50
- declare type ChangeMethod = (
51
- params: URLSearchParams | string,
52
- erase?: boolean
53
- ) => void
54
- declare type StateBehavior = 'keep' | 'erase'
66
+ type ChangeMethod = (params: URLSearchParams | string, erase?: boolean) => void
67
+ type StateBehavior = 'keep' | 'erase'
68
+ interface QueryConfig {
69
+ method?: ChangeMethod
70
+ state?: StateBehavior
71
+ timeout?: number
72
+ def?: any
73
+ }
55
74
  declare const pushState: ChangeMethod
56
75
  declare const replaceState: ChangeMethod
57
76
  declare const locationAssign: ChangeMethod
@@ -60,24 +79,24 @@ declare const locationReplace: ChangeMethod
60
79
  interface ConfigPersist extends ConfigPersist$1 {
61
80
  method?: ChangeMethod
62
81
  state?: StateBehavior
63
- }
64
- interface AdapterConfig {
65
- method?: ChangeMethod
66
- state?: StateBehavior
67
- def?: any
82
+ timeout?: number
68
83
  }
69
84
  interface ConfigStore<State, Err = Error>
70
- extends AdapterConfig,
85
+ extends QueryConfig,
71
86
  ConfigCommon<State, Err>,
72
87
  ConfigJustStore<State> {}
73
88
  interface ConfigSourceTarget<State, Err = Error>
74
- extends AdapterConfig,
89
+ extends QueryConfig,
75
90
  ConfigCommon<State, Err>,
76
91
  ConfigJustSourceTarget<State> {}
77
92
  interface Persist {
78
93
  <State, Err = Error>(config: ConfigSourceTarget<State, Err>): Subscription
79
94
  <State, Err = Error>(config: ConfigStore<State, Err>): Subscription
80
95
  }
96
+ declare function query(config?: QueryConfig): StorageAdapter
97
+ declare namespace query {
98
+ var factory: true
99
+ }
81
100
  /**
82
101
  * Creates custom partially applied `persist`
83
102
  * with predefined `query` adapter
@@ -89,7 +108,7 @@ declare function createPersist(defaults?: ConfigPersist): Persist
89
108
  declare const persist: Persist
90
109
 
91
110
  export {
92
- AdapterConfig,
111
+ ChangeMethod,
93
112
  ConfigPersist,
94
113
  ConfigSourceTarget,
95
114
  ConfigStore,
@@ -97,11 +116,15 @@ export {
97
116
  Fail,
98
117
  Finally,
99
118
  Persist,
119
+ QueryConfig,
120
+ StateBehavior,
100
121
  StorageAdapter,
122
+ StorageAdapterFactory,
101
123
  createPersist,
102
124
  locationAssign,
103
125
  locationReplace,
104
126
  persist,
105
127
  pushState,
128
+ query,
106
129
  replaceState,
107
130
  }
package/query/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{persist as e}from"../index.js";import{nil as t}from"../nil/index.js";var a=Symbol(),o=e=>location.pathname+(e+""?"?"+e:"")+(location.hash&&"#"!==location.hash?location.hash:""),n=(e,t)=>history.pushState(t?null:history.state,"",o(e)),r=(e,t)=>history.replaceState(t?null:history.state,"",o(e)),s=e=>location.assign(o(e)),i=e=>location.replace(o(e));function l({method:e=n,state:t},o){var r=(a,n)=>("undefined"!=typeof addEventListener&&addEventListener("popstate",(()=>setTimeout(n,0))),{get:()=>new URLSearchParams(location.search).get(a)||o,set(o){var n=new URLSearchParams(location.search);null!=o?n.set(a,`${o}`):n.delete(a),e(n,"erase"===t)}});return r.keyArea=a,r}function d(a){return o=>{var n=void 0!==o.def?o.def:"store"in o?o.store.defaultState:null;return e({adapter:"undefined"!=typeof history&&"undefined"!=typeof location?l({...a,...o},n):t("query"),...a,...o})}}var h=d();export{d as createPersist,s as locationAssign,i as locationReplace,h as persist,n as pushState,r as replaceState};
1
+ import{persist as e}from"../core/index.js";import{nil as t}from"../nil/index.js";var a,o,r=Symbol(),n=new Map,i=e=>location.pathname+(e+""?"?"+e:"")+(location.hash&&"#"!==location.hash?location.hash:""),s=(e,t)=>history.pushState(t?null:history.state,"",i(e)),l=(e,t)=>history.replaceState(t?null:history.state,"",i(e)),c=e=>location.assign(i(e)),u=e=>location.replace(i(e));function d(e,t){if(o=void 0,n.size){var a=new URLSearchParams(location.search);for(var[r,i]of n.entries())null!=i?a.set(r,`${i}`):a.delete(r);n.clear(),e(a,"erase"===t)}}function f(e){return"undefined"!=typeof history&&"undefined"!=typeof location?function({method:e=s,state:t,def:i=null,timeout:l}){var c=(r,s)=>("undefined"!=typeof addEventListener&&addEventListener("popstate",(()=>setTimeout(s,0))),{get:()=>new URLSearchParams(location.search).get(r)||i,set(i){if(n.set(r,i),void 0===l)return clearTimeout(a),d(e,t);var s=Date.now()+l;(void 0===o||o>s)&&(clearTimeout(a),o=s,a=setTimeout(d,l,e,t))}});return c.keyArea=r,c}({...e}):t({keyArea:"query"})}function h(t){return a=>e({adapter:f,...t,...a})}f.factory=!0;var p=h();export{h as createPersist,c as locationAssign,u as locationReplace,p as persist,s as pushState,f as query,l as replaceState};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Flowtype definitions for index
3
3
  * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.20.1
4
+ * Flowgen v1.21.0
5
5
  * @flow
6
6
  */
7
7
 
@@ -11,12 +11,24 @@ declare interface StorageAdapter {
11
11
  key: string,
12
12
  update: (raw?: any) => any
13
13
  ): {
14
- set(value: State): void,
15
- get(value?: any): State | Promise<State>,
14
+ get(raw?: any, ctx?: any): State | Promise<State>,
15
+ set(value: State, ctx?: any): void,
16
16
  ...
17
17
  };
18
18
  keyArea?: any;
19
+ noop?: boolean;
19
20
  }
21
+ declare interface StorageAdapterFactory<AdapterConfig> {
22
+ (config?: AdapterConfig): StorageAdapter;
23
+ factory: true;
24
+ }
25
+ declare type Contract<Data> =
26
+ | ((raw: mixed) => boolean)
27
+ | {
28
+ isData: (raw: mixed) => boolean,
29
+ getErrorMessages: (raw: mixed) => string[],
30
+ ...
31
+ }
20
32
  declare type Done<State> = {
21
33
  key: string,
22
34
  keyPrefix: string,
@@ -48,7 +60,10 @@ declare type Finally<State, Err> =
48
60
  },
49
61
  }
50
62
  declare interface ConfigPersist$1 {
63
+ pickup?: Unit<any>;
64
+ context?: Unit<any>;
51
65
  keyPrefix?: string;
66
+ contract?: Contract<any>;
52
67
  }
53
68
  declare interface ConfigCommon<State, Err = Error> {
54
69
  clock?: Unit<any>;
@@ -56,8 +71,10 @@ declare interface ConfigCommon<State, Err = Error> {
56
71
  fail?: Unit<Fail<Err>>;
57
72
  finally?: Unit<Finally<State, Err>>;
58
73
  pickup?: Unit<any>;
74
+ context?: Unit<any>;
59
75
  key?: string;
60
76
  keyPrefix?: string;
77
+ contract?: Contract<State | void>;
61
78
  }
62
79
  declare interface ConfigJustStore<State> {
63
80
  store: Store<State>;
@@ -71,6 +88,12 @@ declare type ChangeMethod = (
71
88
  erase?: boolean
72
89
  ) => void
73
90
  declare type StateBehavior = 'keep' | 'erase'
91
+ declare interface QueryConfig {
92
+ method?: ChangeMethod;
93
+ state?: StateBehavior;
94
+ timeout?: number;
95
+ def?: any;
96
+ }
74
97
  declare var pushState: ChangeMethod
75
98
  declare var replaceState: ChangeMethod
76
99
  declare var locationAssign: ChangeMethod
@@ -78,27 +101,30 @@ declare var locationReplace: ChangeMethod
78
101
  declare type ConfigPersist = {
79
102
  method?: ChangeMethod,
80
103
  state?: StateBehavior,
104
+ timeout?: number,
81
105
  ...
82
106
  } & ConfigPersist$1
83
- declare interface AdapterConfig {
84
- method?: ChangeMethod;
85
- state?: StateBehavior;
86
- def?: any;
87
- }
88
- declare type ConfigStore<State, Err = Error> = { ... } & AdapterConfig &
107
+ declare type ConfigStore<State, Err = Error> = { ... } & QueryConfig &
89
108
  ConfigCommon<State, Err> &
90
109
  ConfigJustStore<State>
91
- declare type ConfigSourceTarget<State, Err = Error> = { ... } & AdapterConfig &
110
+ declare type ConfigSourceTarget<State, Err = Error> = { ... } & QueryConfig &
92
111
  ConfigCommon<State, Err> &
93
112
  ConfigJustSourceTarget<State>
94
113
  declare interface Persist {
95
114
  <State, Err>(config: ConfigSourceTarget<State, Err>): Subscription;
96
115
  <State, Err>(config: ConfigStore<State, Err>): Subscription;
97
116
  }
117
+ declare var query: typeof npm$namespace$query
118
+
119
+ declare var npm$namespace$query: {|
120
+ (config?: QueryConfig): StorageAdapter,
121
+ factory: typeof query$factory,
122
+ |}
123
+ declare var query$factory: true
98
124
  declare function createPersist(defaults?: ConfigPersist): Persist
99
125
  declare var persist: Persist
100
126
  declare export {
101
- AdapterConfig,
127
+ ChangeMethod,
102
128
  ConfigPersist,
103
129
  ConfigSourceTarget,
104
130
  ConfigStore,
@@ -106,11 +132,15 @@ declare export {
106
132
  Fail,
107
133
  Finally,
108
134
  Persist,
135
+ QueryConfig,
136
+ StateBehavior,
109
137
  StorageAdapter,
138
+ StorageAdapterFactory,
110
139
  createPersist,
111
140
  locationAssign,
112
141
  locationReplace,
113
142
  persist,
114
143
  pushState,
144
+ query,
115
145
  replaceState,
116
146
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/query/adapter.ts","../../src/query/index.ts"],"sourcesContent":["import type { StorageAdapter } from '..'\n\nexport type ChangeMethod = (\n params: URLSearchParams | string,\n erase?: boolean\n) => void\n\nexport type StateBehavior = 'keep' | 'erase'\n\nexport interface QueryConfig {\n method?: ChangeMethod\n state?: StateBehavior\n}\n\nconst keyArea = Symbol() // eslint-disable-line symbol-description\n\n/*\n * Location change methods list\n */\n\nconst url = (params: URLSearchParams | string) =>\n location.pathname +\n (params + '' ? '?' + params : '') +\n (location.hash && location.hash !== '#' ? location.hash : '')\n\nexport const pushState: ChangeMethod = (params, erase): void =>\n history.pushState(erase ? null : history.state, '', url(params))\n\nexport const replaceState: ChangeMethod = (params, erase): void =>\n history.replaceState(erase ? null : history.state, '', url(params))\n\nexport const locationAssign: ChangeMethod = (params): void =>\n location.assign(url(params))\n\nexport const locationReplace: ChangeMethod = (params): void =>\n location.replace(url(params))\n\n/**\n * Query string adapter factory\n */\nexport function query(\n { method = pushState, state }: QueryConfig,\n def: any\n): StorageAdapter {\n const adapter: StorageAdapter = <State>(\n key: string,\n update: (raw?: any) => any\n ) => {\n if (typeof addEventListener !== 'undefined') {\n addEventListener('popstate', () => setTimeout(update, 0))\n }\n\n return {\n get() {\n const params = new URLSearchParams(location.search)\n return params.get(key) || def\n },\n\n set(value: State) {\n const params = new URLSearchParams(location.search)\n if (value != null) {\n params.set(key, `${value}`)\n } else {\n params.delete(key)\n }\n method(params, state === 'erase')\n },\n }\n }\n\n adapter.keyArea = keyArea\n return adapter\n}\n","import type { Subscription } from 'effector'\nimport type {\n ConfigPersist as BaseConfigPersist,\n ConfigCommon,\n ConfigJustStore,\n ConfigJustSourceTarget,\n} from '../types'\nimport type { ChangeMethod, StateBehavior } from './adapter'\nimport { persist as base } from '../persist'\nimport { nil } from '../nil'\nimport { query } from './adapter'\n\nexport type { Done, Fail, Finally, StorageAdapter } from '../types'\nexport {\n pushState,\n replaceState,\n locationAssign,\n locationReplace,\n} from './adapter'\n\nexport interface ConfigPersist extends BaseConfigPersist {\n method?: ChangeMethod\n state?: StateBehavior\n}\n\nexport interface AdapterConfig {\n method?: ChangeMethod\n state?: StateBehavior\n def?: any\n}\n\nexport interface ConfigStore<State, Err = Error>\n extends AdapterConfig,\n ConfigCommon<State, Err>,\n ConfigJustStore<State> {}\n\nexport interface ConfigSourceTarget<State, Err = Error>\n extends AdapterConfig,\n ConfigCommon<State, Err>,\n ConfigJustSourceTarget<State> {}\n\nexport interface Persist {\n <State, Err = Error>(config: ConfigSourceTarget<State, Err>): Subscription\n <State, Err = Error>(config: ConfigStore<State, Err>): Subscription\n}\n\n/**\n * Creates custom partially applied `persist`\n * with predefined `query` adapter\n */\nexport function createPersist(defaults?: ConfigPersist): Persist {\n return (config) => {\n const def =\n config.def !== undefined\n ? config.def\n : 'store' in config\n ? config.store.defaultState\n : null\n\n return base({\n adapter:\n typeof history !== 'undefined' && typeof location !== 'undefined'\n ? query({ ...defaults, ...config }, def)\n : nil('query'),\n ...defaults,\n ...config,\n })\n }\n}\n\n/**\n * Default partially applied `persist`\n */\nexport const persist = createPersist()\n"],"names":["keyArea","Symbol","url","params","location","pathname","hash","pushState","erase","history","state","replaceState","locationAssign","assign","locationReplace","replace","query","method","def","adapter","key","update","addEventListener","setTimeout","get","URLSearchParams","search","set","value","delete","createPersist","defaults","config","undefined","store","defaultState","base","nil","persist"],"mappings":"4EAcA,IAAMA,EAAUC,SAMVC,EAAOC,GACXC,SAASC,UACRF,EAAS,GAAK,IAAMA,EAAS,KAC7BC,SAASE,MAA0B,MAAlBF,SAASE,KAAeF,SAASE,KAAO,IAE/CC,EAA0B,CAACJ,EAAQK,IAC9CC,QAAQF,UAAUC,EAAQ,KAAOC,QAAQC,MAAO,GAAIR,EAAIC,IAE7CQ,EAA6B,CAACR,EAAQK,IACjDC,QAAQE,aAAaH,EAAQ,KAAOC,QAAQC,MAAO,GAAIR,EAAIC,IAEhDS,EAAgCT,GAC3CC,SAASS,OAAOX,EAAIC,IAETW,EAAiCX,GAC5CC,SAASW,QAAQb,EAAIC,IAKhB,SAASa,GACdC,OAAEA,EAASV,EAAXG,MAAsBA,GACtBQ,GAEA,IAAMC,EAA0B,CAC9BC,EACAC,KAEgC,oBAArBC,kBACTA,iBAAiB,YAAY,IAAMC,WAAWF,EAAQ,KAGjD,CACLG,IAAG,IACc,IAAIC,gBAAgBrB,SAASsB,QAC9BF,IAAIJ,IAAQF,EAG5BS,IAAIC,GACF,IAAMzB,EAAS,IAAIsB,gBAAgBrB,SAASsB,QAC/B,MAATE,EACFzB,EAAOwB,IAAIP,EAAM,GAAEQ,KAEnBzB,EAAO0B,OAAOT,GAEhBH,EAAOd,EAAkB,UAAVO,EAChB,IAKL,OADAS,EAAQnB,QAAUA,EACXmB,CACR,CCtBM,SAASW,EAAcC,GAC5B,OAAQC,IACN,IAAMd,OACWe,IAAfD,EAAOd,IACHc,EAAOd,IACP,UAAWc,EACXA,EAAOE,MAAMC,aACb,KAEN,OAAOC,EAAK,CACVjB,QACqB,oBAAZV,SAA+C,oBAAbL,SACrCY,EAAM,IAAKe,KAAaC,GAAUd,GAClCmB,EAAI,YACPN,KACAC,GANL,CASH,CAKYM,IAAAA,EAAUR"}
1
+ {"version":3,"file":"index.js","sources":["../../src/query/adapter.ts","../../src/query/index.ts"],"sourcesContent":["import type { StorageAdapter } from '../types'\n\nexport type ChangeMethod = (\n params: URLSearchParams | string,\n erase?: boolean\n) => void\n\nexport type StateBehavior = 'keep' | 'erase'\n\nexport interface QueryConfig {\n method?: ChangeMethod\n state?: StateBehavior\n timeout?: number\n def?: any\n}\n\nconst keyArea = Symbol() // eslint-disable-line symbol-description\n\nconst buffer: Map<string, any> = new Map()\nlet timeoutId: number | undefined\nlet scheduled: number | undefined\n\n/*\n * Location change methods list\n */\n\nconst url = (params: URLSearchParams | string) =>\n location.pathname +\n (params + '' ? '?' + params : '') +\n (location.hash && location.hash !== '#' ? location.hash : '')\n\nexport const pushState: ChangeMethod = (params, erase): void =>\n history.pushState(erase ? null : history.state, '', url(params))\n\nexport const replaceState: ChangeMethod = (params, erase): void =>\n history.replaceState(erase ? null : history.state, '', url(params))\n\nexport const locationAssign: ChangeMethod = (params): void =>\n location.assign(url(params))\n\nexport const locationReplace: ChangeMethod = (params): void =>\n location.replace(url(params))\n\n/**\n * Flush buffer to actual location search params\n */\nfunction flush(method: ChangeMethod, state?: StateBehavior) {\n scheduled = undefined\n if (buffer.size) {\n const params = new URLSearchParams(location.search)\n for (const [name, value] of buffer.entries()) {\n if (value != null) {\n params.set(name, `${value}`)\n } else {\n params.delete(name)\n }\n }\n buffer.clear()\n method(params, state === 'erase')\n }\n}\n\n/**\n * Query string adapter factory\n */\nexport function adapter({\n method = pushState,\n state,\n def = null,\n timeout,\n}: QueryConfig): StorageAdapter {\n const adapter: StorageAdapter = <State>(\n key: string,\n update: (raw?: any) => any\n ) => {\n if (typeof addEventListener !== 'undefined') {\n addEventListener('popstate', () => setTimeout(update, 0))\n }\n\n return {\n get() {\n const params = new URLSearchParams(location.search)\n return params.get(key) || def\n },\n\n set(value: State) {\n buffer.set(key, value)\n\n if (timeout === undefined) {\n clearTimeout(timeoutId)\n return flush(method, state)\n }\n\n const deadline = Date.now() + timeout\n if (scheduled === undefined || scheduled > deadline) {\n clearTimeout(timeoutId)\n scheduled = deadline\n timeoutId = setTimeout(flush, timeout, method, state)\n }\n },\n }\n }\n\n adapter.keyArea = keyArea\n return adapter\n}\n","import type { Subscription } from 'effector'\nimport type {\n ConfigPersist as BaseConfigPersist,\n ConfigCommon,\n ConfigJustStore,\n ConfigJustSourceTarget,\n StorageAdapter,\n} from '../types'\nimport type { ChangeMethod, StateBehavior, QueryConfig } from './adapter'\nimport { persist as base } from '../core'\nimport { nil } from '../nil'\nimport { adapter } from './adapter'\n\nexport type {\n Done,\n Fail,\n Finally,\n StorageAdapter,\n StorageAdapterFactory,\n} from '../types'\nexport type { ChangeMethod, StateBehavior, QueryConfig } from './adapter'\nexport {\n locationAssign,\n locationReplace,\n pushState,\n replaceState,\n} from './adapter'\n\nexport interface ConfigPersist extends BaseConfigPersist {\n method?: ChangeMethod\n state?: StateBehavior\n timeout?: number\n}\n\nexport interface ConfigStore<State, Err = Error>\n extends QueryConfig,\n ConfigCommon<State, Err>,\n ConfigJustStore<State> {}\n\nexport interface ConfigSourceTarget<State, Err = Error>\n extends QueryConfig,\n ConfigCommon<State, Err>,\n ConfigJustSourceTarget<State> {}\n\nexport interface Persist {\n <State, Err = Error>(config: ConfigSourceTarget<State, Err>): Subscription\n <State, Err = Error>(config: ConfigStore<State, Err>): Subscription\n}\n\n/**\n * Function, checking if `history` and `location` exists and accessible\n */\nfunction supports() {\n return typeof history !== 'undefined' && typeof location !== 'undefined'\n}\n\n/**\n * Creates query string adapter\n */\nquery.factory = true as const\nexport function query(config?: QueryConfig): StorageAdapter {\n return supports()\n ? adapter({\n ...config,\n })\n : nil({ keyArea: 'query' })\n}\n\n/**\n * Creates custom partially applied `persist`\n * with predefined `query` adapter\n */\nexport function createPersist(defaults?: ConfigPersist): Persist {\n return (config) =>\n base({\n adapter: query,\n ...defaults,\n ...config,\n })\n}\n\n/**\n * Default partially applied `persist`\n */\nexport const persist = createPersist()\n"],"names":["timeoutId","scheduled","keyArea","Symbol","buffer","Map","url","params","location","pathname","hash","pushState","erase","history","state","replaceState","locationAssign","assign","locationReplace","replace","flush","method","undefined","size","URLSearchParams","search","name","value","entries","set","delete","clear","query","config","def","timeout","adapter","key","update","addEventListener","setTimeout","get","clearTimeout","deadline","Date","now","nil","createPersist","defaults","base","factory","persist"],"mappings":"iFAgBA,IAGIA,EACAC,EAJEC,EAAUC,SAEVC,EAA2B,IAAIC,IAQ/BC,EAAOC,GACXC,SAASC,UACRF,EAAS,GAAK,IAAMA,EAAS,KAC7BC,SAASE,MAA0B,MAAlBF,SAASE,KAAeF,SAASE,KAAO,IAE/CC,EAA0BA,CAACJ,EAAQK,IAC9CC,QAAQF,UAAUC,EAAQ,KAAOC,QAAQC,MAAO,GAAIR,EAAIC,IAE7CQ,EAA6BA,CAACR,EAAQK,IACjDC,QAAQE,aAAaH,EAAQ,KAAOC,QAAQC,MAAO,GAAIR,EAAIC,IAEhDS,EAAgCT,GAC3CC,SAASS,OAAOX,EAAIC,IAETW,EAAiCX,GAC5CC,SAASW,QAAQb,EAAIC,IAKvB,SAASa,EAAMC,EAAsBP,GAEnC,GADAb,OAAYqB,EACRlB,EAAOmB,KAAM,CACf,IAAMhB,EAAS,IAAIiB,gBAAgBhB,SAASiB,QAC5C,IAAK,IAAOC,EAAMC,KAAUvB,EAAOwB,UACpB,MAATD,EACFpB,EAAOsB,IAAIH,EAAO,GAAEC,KAEpBpB,EAAOuB,OAAOJ,GAGlBtB,EAAO2B,QACPV,EAAOd,EAAkB,UAAVO,EACjB,CACF,CCAO,SAASkB,EAAMC,GACpB,MAR0B,oBAAZpB,SAA+C,oBAAbL,SDY3C,UAAiBa,OACtBA,EAASV,EAASG,MAClBA,EAAKoB,IACLA,EAAM,KAAIC,QACVA,IAEA,IAAMC,EAA0BA,CAC9BC,EACAC,KAEgC,oBAArBC,kBACTA,iBAAiB,YAAY,IAAMC,WAAWF,EAAQ,KAGjD,CACLG,IAAGA,IACc,IAAIjB,gBAAgBhB,SAASiB,QAC9BgB,IAAIJ,IAAQH,EAG5BL,IAAIF,GAGF,GAFAvB,EAAOyB,IAAIQ,EAAKV,QAEAL,IAAZa,EAEF,OADAO,aAAa1C,GACNoB,EAAMC,EAAQP,GAGvB,IAAM6B,EAAWC,KAAKC,MAAQV,QACZb,IAAdrB,GAA2BA,EAAY0C,KACzCD,aAAa1C,GACbC,EAAY0C,EACZ3C,EAAYwC,WAAWpB,EAAOe,EAASd,EAAQP,GAEnD,IAKJ,OADAsB,EAAQlC,QAAUA,EACXkC,CACT,CC3CMA,CAAQ,IACHH,IAELa,EAAI,CAAE5C,QAAS,SACrB,CAMO,SAAS6C,EAAcC,GAC5B,OAAQf,GACNgB,EAAK,CACHb,QAASJ,KACNgB,KACAf,GAET,CApBAD,EAAMkB,SAAU,EAyBHC,IAAAA,EAAUJ"}
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "type": "module",
3
+ "sideEffects": false,
3
4
  "main": "index.cjs",
4
5
  "module": "index.js",
5
6
  "react-native": "index.js",
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../index.cjs"),r=require("../../async-storage/index.cjs");function t(e){return e&&"object"==typeof e&&"default"in e?e.default:e}var s=t(require("@react-native-async-storage/async-storage"));function a(t){return a=>e.persist({adapter:r.asyncStorage({storage:s,...t,...a}),...t,...a})}var n=a();exports.createPersist=a,exports.persist=n;
1
+ "use strict";var r=require("../../core/index.cjs"),e=require("../../async-storage/index.cjs"),s=require("@react-native-async-storage/async-storage");function t(r){return e.asyncStorage({storage:()=>s,...r})}function a(e){return s=>r.persist({adapter:t,...e,...s})}t.factory=!0;var c=a();exports.async=t,exports.createPersist=a,exports.persist=c;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -2,25 +2,36 @@ import { Unit, Store, Event, Effect, Subscription } from 'effector'
2
2
 
3
3
  interface StorageAdapter {
4
4
  <State>(key: string, update: (raw?: any) => any): {
5
- set(value: State): void
6
- get(value?: any): State | Promise<State>
5
+ get(raw?: any, ctx?: any): State | Promise<State>
6
+ set(value: State, ctx?: any): void
7
7
  }
8
8
  keyArea?: any
9
+ noop?: boolean
9
10
  }
10
- declare type Done<State> = {
11
+ interface StorageAdapterFactory<AdapterConfig> {
12
+ (config?: AdapterConfig): StorageAdapter
13
+ factory: true
14
+ }
15
+ type Contract<Data> =
16
+ | ((raw: unknown) => raw is Data)
17
+ | {
18
+ isData: (raw: unknown) => raw is Data
19
+ getErrorMessages: (raw: unknown) => string[]
20
+ }
21
+ type Done<State> = {
11
22
  key: string
12
23
  keyPrefix: string
13
24
  operation: 'set' | 'get'
14
25
  value: State
15
26
  }
16
- declare type Fail<Err> = {
27
+ type Fail<Err> = {
17
28
  key: string
18
29
  keyPrefix: string
19
30
  operation: 'set' | 'get'
20
31
  error: Err
21
32
  value?: any
22
33
  }
23
- declare type Finally<State, Err> =
34
+ type Finally<State, Err> =
24
35
  | (Done<State> & {
25
36
  status: 'done'
26
37
  })
@@ -28,7 +39,10 @@ declare type Finally<State, Err> =
28
39
  status: 'fail'
29
40
  })
30
41
  interface ConfigPersist$1 {
42
+ pickup?: Unit<any>
43
+ context?: Unit<any>
31
44
  keyPrefix?: string
45
+ contract?: Contract<any>
32
46
  }
33
47
  interface ConfigCommon<State, Err = Error> {
34
48
  clock?: Unit<any>
@@ -36,8 +50,10 @@ interface ConfigCommon<State, Err = Error> {
36
50
  fail?: Unit<Fail<Err>>
37
51
  finally?: Unit<Finally<State, Err>>
38
52
  pickup?: Unit<any>
53
+ context?: Unit<any>
39
54
  key?: string
40
55
  keyPrefix?: string
56
+ contract?: Contract<State | undefined>
41
57
  }
42
58
  interface ConfigJustStore<State> {
43
59
  store: Store<State>
@@ -48,22 +64,26 @@ interface ConfigJustSourceTarget<State> {
48
64
  }
49
65
 
50
66
  interface ConfigPersist extends ConfigPersist$1 {}
51
- interface AdapterConfig {
67
+ interface AsyncStorageConfig {
52
68
  serialize?: (value: any) => string
53
69
  deserialize?: (value: string) => any
54
70
  }
55
71
  interface ConfigStore<State, Err = Error>
56
- extends AdapterConfig,
72
+ extends AsyncStorageConfig,
57
73
  ConfigCommon<State, Err>,
58
74
  ConfigJustStore<State> {}
59
75
  interface ConfigSourceTarget<State, Err = Error>
60
- extends AdapterConfig,
76
+ extends AsyncStorageConfig,
61
77
  ConfigCommon<State, Err>,
62
78
  ConfigJustSourceTarget<State> {}
63
79
  interface Persist {
64
80
  <State, Err = Error>(config: ConfigSourceTarget<State, Err>): Subscription
65
81
  <State, Err = Error>(config: ConfigStore<State, Err>): Subscription
66
82
  }
83
+ declare function async(config?: AsyncStorageConfig): StorageAdapter
84
+ declare namespace async {
85
+ var factory: true
86
+ }
67
87
  /**
68
88
  * Creates custom partially applied `persist`
69
89
  * with predefined `AsyncStorage` adapter
@@ -75,7 +95,7 @@ declare function createPersist(defaults?: ConfigPersist): Persist
75
95
  declare const persist: Persist
76
96
 
77
97
  export {
78
- AdapterConfig,
98
+ AsyncStorageConfig,
79
99
  ConfigPersist,
80
100
  ConfigSourceTarget,
81
101
  ConfigStore,
@@ -84,6 +104,8 @@ export {
84
104
  Finally,
85
105
  Persist,
86
106
  StorageAdapter,
107
+ StorageAdapterFactory,
108
+ async,
87
109
  createPersist,
88
110
  persist,
89
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/rn/async/index.ts"],"sourcesContent":["import type { Subscription } from 'effector'\nimport type {\n ConfigPersist as BaseConfigPersist,\n ConfigCommon,\n ConfigJustStore,\n ConfigJustSourceTarget,\n} from '../../types'\nimport { persist as base } from '../../persist'\nimport { asyncStorage } from '../../async-storage'\nimport AsyncStorage from '@react-native-async-storage/async-storage'\n\nexport type { Done, Fail, Finally, StorageAdapter } from '../../types'\n\nexport interface ConfigPersist extends BaseConfigPersist {}\n\nexport interface AdapterConfig {\n serialize?: (value: any) => string\n deserialize?: (value: string) => any\n}\n\nexport interface ConfigStore<State, Err = Error>\n extends AdapterConfig,\n ConfigCommon<State, Err>,\n ConfigJustStore<State> {}\n\nexport interface ConfigSourceTarget<State, Err = Error>\n extends AdapterConfig,\n ConfigCommon<State, Err>,\n ConfigJustSourceTarget<State> {}\n\nexport interface Persist {\n <State, Err = Error>(config: ConfigSourceTarget<State, Err>): Subscription\n <State, Err = Error>(config: ConfigStore<State, Err>): Subscription\n}\n\n/**\n * Creates custom partially applied `persist`\n * with predefined `AsyncStorage` adapter\n */\nexport function createPersist(defaults?: ConfigPersist): Persist {\n return (config) =>\n base({\n adapter: asyncStorage({\n storage: AsyncStorage,\n ...defaults,\n ...config,\n }),\n ...defaults,\n ...config,\n })\n}\n\n/**\n * Default partially applied `persist`\n */\nexport const persist = createPersist()\n"],"names":["createPersist","defaults","config","base","adapter","asyncStorage","storage","AsyncStorage","persist"],"mappings":"6NAuCO,SAASA,EAAcC,GAC5B,OAAQC,GACNC,EAAAA,QAAK,CACHC,QAASC,EAAAA,aAAa,CACpBC,QAASC,KACNN,KACAC,OAEFD,KACAC,GAER,CAKYM,IAAAA,EAAUR"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/rn/async/index.ts"],"sourcesContent":["import type { Subscription } from 'effector'\nimport type {\n ConfigPersist as BaseConfigPersist,\n ConfigCommon,\n ConfigJustStore,\n ConfigJustSourceTarget,\n StorageAdapter,\n} from '../../types'\nimport { persist as base } from '../../core'\nimport { asyncStorage } from '../../async-storage'\nimport AsyncStorage from '@react-native-async-storage/async-storage'\n\nexport type {\n Done,\n Fail,\n Finally,\n StorageAdapter,\n StorageAdapterFactory,\n} from '../../types'\n\nexport interface ConfigPersist extends BaseConfigPersist {}\n\nexport interface AsyncStorageConfig {\n serialize?: (value: any) => string\n deserialize?: (value: string) => any\n}\n\nexport interface ConfigStore<State, Err = Error>\n extends AsyncStorageConfig,\n ConfigCommon<State, Err>,\n ConfigJustStore<State> {}\n\nexport interface ConfigSourceTarget<State, Err = Error>\n extends AsyncStorageConfig,\n ConfigCommon<State, Err>,\n ConfigJustSourceTarget<State> {}\n\nexport interface Persist {\n <State, Err = Error>(config: ConfigSourceTarget<State, Err>): Subscription\n <State, Err = Error>(config: ConfigStore<State, Err>): Subscription\n}\n\n/**\n * Creates `AsyncStorage` adapter\n */\nasync.factory = true as const\nexport function async(config?: AsyncStorageConfig): StorageAdapter {\n return asyncStorage({\n storage: () => AsyncStorage,\n ...config,\n })\n}\n\n/**\n * Creates custom partially applied `persist`\n * with predefined `AsyncStorage` adapter\n */\nexport function createPersist(defaults?: ConfigPersist): Persist {\n return (config) =>\n base({\n adapter: async,\n ...defaults,\n ...config,\n })\n}\n\n/**\n * Default partially applied `persist`\n */\nexport const persist = createPersist()\n"],"names":["async","config","asyncStorage","storage","AsyncStorage","createPersist","defaults","base","adapter","factory","persist"],"mappings":"qJA8CO,SAASA,EAAMC,GACpB,OAAOC,eAAa,CAClBC,QAASA,IAAMC,KACZH,GAEP,CAMO,SAASI,EAAcC,GAC5B,OAAQL,GACNM,EAAAA,QAAK,CACHC,QAASR,KACNM,KACAL,GAET,CAnBAD,EAAMS,SAAU,EAwBHC,IAAAA,EAAUL"}
@@ -2,25 +2,36 @@ import { Unit, Store, Event, Effect, Subscription } from 'effector'
2
2
 
3
3
  interface StorageAdapter {
4
4
  <State>(key: string, update: (raw?: any) => any): {
5
- set(value: State): void
6
- get(value?: any): State | Promise<State>
5
+ get(raw?: any, ctx?: any): State | Promise<State>
6
+ set(value: State, ctx?: any): void
7
7
  }
8
8
  keyArea?: any
9
+ noop?: boolean
9
10
  }
10
- declare type Done<State> = {
11
+ interface StorageAdapterFactory<AdapterConfig> {
12
+ (config?: AdapterConfig): StorageAdapter
13
+ factory: true
14
+ }
15
+ type Contract<Data> =
16
+ | ((raw: unknown) => raw is Data)
17
+ | {
18
+ isData: (raw: unknown) => raw is Data
19
+ getErrorMessages: (raw: unknown) => string[]
20
+ }
21
+ type Done<State> = {
11
22
  key: string
12
23
  keyPrefix: string
13
24
  operation: 'set' | 'get'
14
25
  value: State
15
26
  }
16
- declare type Fail<Err> = {
27
+ type Fail<Err> = {
17
28
  key: string
18
29
  keyPrefix: string
19
30
  operation: 'set' | 'get'
20
31
  error: Err
21
32
  value?: any
22
33
  }
23
- declare type Finally<State, Err> =
34
+ type Finally<State, Err> =
24
35
  | (Done<State> & {
25
36
  status: 'done'
26
37
  })
@@ -28,7 +39,10 @@ declare type Finally<State, Err> =
28
39
  status: 'fail'
29
40
  })
30
41
  interface ConfigPersist$1 {
42
+ pickup?: Unit<any>
43
+ context?: Unit<any>
31
44
  keyPrefix?: string
45
+ contract?: Contract<any>
32
46
  }
33
47
  interface ConfigCommon<State, Err = Error> {
34
48
  clock?: Unit<any>
@@ -36,8 +50,10 @@ interface ConfigCommon<State, Err = Error> {
36
50
  fail?: Unit<Fail<Err>>
37
51
  finally?: Unit<Finally<State, Err>>
38
52
  pickup?: Unit<any>
53
+ context?: Unit<any>
39
54
  key?: string
40
55
  keyPrefix?: string
56
+ contract?: Contract<State | undefined>
41
57
  }
42
58
  interface ConfigJustStore<State> {
43
59
  store: Store<State>
@@ -48,22 +64,26 @@ interface ConfigJustSourceTarget<State> {
48
64
  }
49
65
 
50
66
  interface ConfigPersist extends ConfigPersist$1 {}
51
- interface AdapterConfig {
67
+ interface AsyncStorageConfig {
52
68
  serialize?: (value: any) => string
53
69
  deserialize?: (value: string) => any
54
70
  }
55
71
  interface ConfigStore<State, Err = Error>
56
- extends AdapterConfig,
72
+ extends AsyncStorageConfig,
57
73
  ConfigCommon<State, Err>,
58
74
  ConfigJustStore<State> {}
59
75
  interface ConfigSourceTarget<State, Err = Error>
60
- extends AdapterConfig,
76
+ extends AsyncStorageConfig,
61
77
  ConfigCommon<State, Err>,
62
78
  ConfigJustSourceTarget<State> {}
63
79
  interface Persist {
64
80
  <State, Err = Error>(config: ConfigSourceTarget<State, Err>): Subscription
65
81
  <State, Err = Error>(config: ConfigStore<State, Err>): Subscription
66
82
  }
83
+ declare function async(config?: AsyncStorageConfig): StorageAdapter
84
+ declare namespace async {
85
+ var factory: true
86
+ }
67
87
  /**
68
88
  * Creates custom partially applied `persist`
69
89
  * with predefined `AsyncStorage` adapter
@@ -75,7 +95,7 @@ declare function createPersist(defaults?: ConfigPersist): Persist
75
95
  declare const persist: Persist
76
96
 
77
97
  export {
78
- AdapterConfig,
98
+ AsyncStorageConfig,
79
99
  ConfigPersist,
80
100
  ConfigSourceTarget,
81
101
  ConfigStore,
@@ -84,6 +104,8 @@ export {
84
104
  Finally,
85
105
  Persist,
86
106
  StorageAdapter,
107
+ StorageAdapterFactory,
108
+ async,
87
109
  createPersist,
88
110
  persist,
89
111
  }
package/rn/async/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{persist as r}from"../../index.js";import{asyncStorage as t}from"../../async-storage/index.js";import a from"@react-native-async-storage/async-storage";function e(e){return o=>r({adapter:t({storage:a,...e,...o}),...e,...o})}var o=e();export{e as createPersist,o as persist};
1
+ import{persist as r}from"../../core/index.js";import{asyncStorage as t}from"../../async-storage/index.js";import o from"@react-native-async-storage/async-storage";function a(r){return t({storage:()=>o,...r})}function e(t){return o=>r({adapter:a,...t,...o})}a.factory=!0;var n=e();export{a as async,e as createPersist,n as persist};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Flowtype definitions for index
3
3
  * Generated by Flowgen from a Typescript Definition
4
- * Flowgen v1.20.1
4
+ * Flowgen v1.21.0
5
5
  * @flow
6
6
  */
7
7
 
@@ -11,12 +11,24 @@ declare interface StorageAdapter {
11
11
  key: string,
12
12
  update: (raw?: any) => any
13
13
  ): {
14
- set(value: State): void,
15
- get(value?: any): State | Promise<State>,
14
+ get(raw?: any, ctx?: any): State | Promise<State>,
15
+ set(value: State, ctx?: any): void,
16
16
  ...
17
17
  };
18
18
  keyArea?: any;
19
+ noop?: boolean;
19
20
  }
21
+ declare interface StorageAdapterFactory<AdapterConfig> {
22
+ (config?: AdapterConfig): StorageAdapter;
23
+ factory: true;
24
+ }
25
+ declare type Contract<Data> =
26
+ | ((raw: mixed) => boolean)
27
+ | {
28
+ isData: (raw: mixed) => boolean,
29
+ getErrorMessages: (raw: mixed) => string[],
30
+ ...
31
+ }
20
32
  declare type Done<State> = {
21
33
  key: string,
22
34
  keyPrefix: string,
@@ -48,7 +60,10 @@ declare type Finally<State, Err> =
48
60
  },
49
61
  }
50
62
  declare interface ConfigPersist$1 {
63
+ pickup?: Unit<any>;
64
+ context?: Unit<any>;
51
65
  keyPrefix?: string;
66
+ contract?: Contract<any>;
52
67
  }
53
68
  declare interface ConfigCommon<State, Err = Error> {
54
69
  clock?: Unit<any>;
@@ -56,8 +71,10 @@ declare interface ConfigCommon<State, Err = Error> {
56
71
  fail?: Unit<Fail<Err>>;
57
72
  finally?: Unit<Finally<State, Err>>;
58
73
  pickup?: Unit<any>;
74
+ context?: Unit<any>;
59
75
  key?: string;
60
76
  keyPrefix?: string;
77
+ contract?: Contract<State | void>;
61
78
  }
62
79
  declare interface ConfigJustStore<State> {
63
80
  store: Store<State>;
@@ -67,24 +84,33 @@ declare interface ConfigJustSourceTarget<State> {
67
84
  target: Store<State> | Event<State> | Effect<State, any, any>;
68
85
  }
69
86
  declare type ConfigPersist = { ... } & ConfigPersist$1
70
- declare interface AdapterConfig {
87
+ declare interface AsyncStorageConfig {
71
88
  serialize?: (value: any) => string;
72
89
  deserialize?: (value: string) => any;
73
90
  }
74
- declare type ConfigStore<State, Err = Error> = { ... } & AdapterConfig &
91
+ declare type ConfigStore<State, Err = Error> = { ... } & AsyncStorageConfig &
75
92
  ConfigCommon<State, Err> &
76
93
  ConfigJustStore<State>
77
- declare type ConfigSourceTarget<State, Err = Error> = { ... } & AdapterConfig &
94
+ declare type ConfigSourceTarget<State, Err = Error> = {
95
+ ...
96
+ } & AsyncStorageConfig &
78
97
  ConfigCommon<State, Err> &
79
98
  ConfigJustSourceTarget<State>
80
99
  declare interface Persist {
81
100
  <State, Err>(config: ConfigSourceTarget<State, Err>): Subscription;
82
101
  <State, Err>(config: ConfigStore<State, Err>): Subscription;
83
102
  }
103
+ declare var async: typeof npm$namespace$async
104
+
105
+ declare var npm$namespace$async: {|
106
+ (config?: AsyncStorageConfig): StorageAdapter,
107
+ factory: typeof async$factory,
108
+ |}
109
+ declare var async$factory: true
84
110
  declare function createPersist(defaults?: ConfigPersist): Persist
85
111
  declare var persist: Persist
86
112
  declare export {
87
- AdapterConfig,
113
+ AsyncStorageConfig,
88
114
  ConfigPersist,
89
115
  ConfigSourceTarget,
90
116
  ConfigStore,
@@ -93,6 +119,8 @@ declare export {
93
119
  Finally,
94
120
  Persist,
95
121
  StorageAdapter,
122
+ StorageAdapterFactory,
123
+ async,
96
124
  createPersist,
97
125
  persist,
98
126
  }