11const _ = require ( 'lodash' ) ;
2- const Q = require ( 'q ' ) ;
2+ const Promise = require ( 'bluebird ' ) ;
33const DataLoader = require ( 'dataloader' ) ;
44
55module . exports = fig => {
66 const redis = fig . redis ;
77
88 const parse = ( resp , opt ) =>
9- Q . Promise ( ( resolve , reject ) => {
9+ new Promise ( ( resolve , reject ) => {
1010 try {
1111 if ( resp === '' || resp === null ) {
1212 resolve ( resp ) ;
@@ -22,56 +22,57 @@ module.exports = fig => {
2222
2323 const toString = ( val , opt ) => {
2424 if ( val === null ) {
25- return Q ( '' ) ;
25+ return Promise . resolve ( '' ) ;
2626 } else if ( opt . serialize ) {
27- return Q ( opt . serialize ( val ) ) ;
27+ return Promise . resolve ( opt . serialize ( val ) ) ;
2828 } else if ( _ . isObject ( val ) ) {
29- return Q ( JSON . stringify ( val ) ) ;
29+ return Promise . resolve ( JSON . stringify ( val ) ) ;
3030 } else {
31- return Q . reject ( new Error ( 'Must be Object or Null' ) ) ;
31+ return Promise . reject ( new Error ( 'Must be Object or Null' ) ) ;
3232 }
3333 } ;
3434
3535 const makeKey = ( keySpace , key ) => `${ keySpace } :${ key } ` ;
3636
3737 const rSetAndGet = ( keySpace , key , rawVal , opt ) =>
38- toString ( rawVal , opt ) . then ( val =>
39- Q . Promise ( ( resolve , reject ) => {
40- const fullKey = makeKey ( keySpace , key ) ;
41- const multi = redis . multi ( ) ;
42- multi . set ( fullKey , val ) ;
43- if ( opt . expire ) {
44- multi . expire ( fullKey , opt . expire ) ;
45- }
46- multi . get ( fullKey ) ;
47- multi . exec (
48- ( err , replies ) =>
49- err ? reject ( err ) : parse ( _ . last ( replies ) , opt ) . then ( resolve )
50- ) ;
51- } )
38+ toString ( rawVal , opt ) . then (
39+ val =>
40+ new Promise ( ( resolve , reject ) => {
41+ const fullKey = makeKey ( keySpace , key ) ;
42+ const multi = redis . multi ( ) ;
43+ multi . set ( fullKey , val ) ;
44+ if ( opt . expire ) {
45+ multi . expire ( fullKey , opt . expire ) ;
46+ }
47+ multi . get ( fullKey ) ;
48+ multi . exec (
49+ ( err , replies ) =>
50+ err ? reject ( err ) : parse ( _ . last ( replies ) , opt ) . then ( resolve )
51+ ) ;
52+ } )
5253 ) ;
5354
5455 const rGet = ( keySpace , key , opt ) =>
55- Q . Promise ( ( resolve , reject ) =>
56+ new Promise ( ( resolve , reject ) =>
5657 redis . get (
5758 makeKey ( keySpace , key ) ,
5859 ( err , result ) => ( err ? reject ( err ) : parse ( result , opt ) . then ( resolve ) )
5960 )
6061 ) ;
6162
6263 const rMGet = ( keySpace , keys , opt ) =>
63- Q . Promise ( ( resolve , reject ) =>
64+ new Promise ( ( resolve , reject ) =>
6465 redis . mget (
6566 _ . map ( keys , k => makeKey ( keySpace , k ) ) ,
6667 ( err , results ) =>
6768 err
6869 ? reject ( err )
69- : Q . all ( _ . map ( results , r => parse ( r , opt ) ) ) . then ( resolve )
70+ : Promise . map ( results , r => parse ( r , opt ) ) . then ( resolve )
7071 )
7172 ) ;
7273
7374 const rDel = ( keySpace , key ) =>
74- Q . Promise ( ( resolve , reject ) =>
75+ new Promise ( ( resolve , reject ) =>
7576 redis . del (
7677 makeKey ( keySpace , key ) ,
7778 ( err , resp ) => ( err ? reject ( err ) : resolve ( resp ) )
@@ -86,44 +87,42 @@ module.exports = fig => {
8687 this . loader = new DataLoader (
8788 keys =>
8889 rMGet ( this . keySpace , keys , this . opt ) . then ( results =>
89- Q . all (
90- _ . map ( results , ( v , i ) => {
91- if ( v === '' ) {
92- return Q ( null ) ;
93- } else if ( v === null ) {
94- return userLoader
95- . load ( keys [ i ] )
96- . then ( resp =>
97- rSetAndGet ( this . keySpace , keys [ i ] , resp , this . opt )
98- )
99- . then ( r => ( r === '' ? null : r ) ) ;
100- } else {
101- return Q ( v ) ;
102- }
103- } )
104- )
90+ Promise . map ( results , ( v , i ) => {
91+ if ( v === '' ) {
92+ return Promise . resolve ( null ) ;
93+ } else if ( v === null ) {
94+ return userLoader
95+ . load ( keys [ i ] )
96+ . then ( resp =>
97+ rSetAndGet ( this . keySpace , keys [ i ] , resp , this . opt )
98+ )
99+ . then ( r => ( r === '' ? null : r ) ) ;
100+ } else {
101+ return Promise . resolve ( v ) ;
102+ }
103+ } )
105104 ) ,
106105 _ . omit ( opt , customOptions )
107106 ) ;
108107 }
109108
110109 load ( key ) {
111110 return key
112- ? Q ( this . loader . load ( key ) )
113- : Q . reject ( new TypeError ( 'key parameter is required' ) ) ;
111+ ? Promise . resolve ( this . loader . load ( key ) )
112+ : Promise . reject ( new TypeError ( 'key parameter is required' ) ) ;
114113 }
115114
116115 loadMany ( keys ) {
117116 return keys
118- ? Q ( this . loader . loadMany ( keys ) )
119- : Q . reject ( new TypeError ( 'keys parameter is required' ) ) ;
117+ ? Promise . resolve ( this . loader . loadMany ( keys ) )
118+ : Promise . reject ( new TypeError ( 'keys parameter is required' ) ) ;
120119 }
121120
122121 prime ( key , val ) {
123122 if ( ! key ) {
124- return Q . reject ( new TypeError ( 'key parameter is required' ) ) ;
123+ return Promise . reject ( new TypeError ( 'key parameter is required' ) ) ;
125124 } else if ( val === undefined ) {
126- return Q . reject ( new TypeError ( 'value parameter is required' ) ) ;
125+ return Promise . reject ( new TypeError ( 'value parameter is required' ) ) ;
127126 } else {
128127 return rSetAndGet ( this . keySpace , key , val , this . opt ) . then ( r => {
129128 this . loader . clear ( key ) . prime ( key , r === '' ? null : r ) ;
@@ -134,15 +133,15 @@ module.exports = fig => {
134133 clear ( key ) {
135134 return key
136135 ? rDel ( this . keySpace , key ) . then ( ( ) => this . loader . clear ( key ) )
137- : Q . reject ( new TypeError ( 'key parameter is required' ) ) ;
136+ : Promise . reject ( new TypeError ( 'key parameter is required' ) ) ;
138137 }
139138
140139 clearAllLocal ( ) {
141- return Q ( this . loader . clearAll ( ) ) ;
140+ return Promise . resolve ( this . loader . clearAll ( ) ) ;
142141 }
143142
144143 clearLocal ( key ) {
145- return Q ( this . loader . clear ( key ) ) ;
144+ return Promise . resolve ( this . loader . clear ( key ) ) ;
146145 }
147146 } ;
148147} ;
0 commit comments