@@ -86,7 +86,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
8686function backpressure ( ripple ) {
8787 log ( 'creating' ) ;
8888 if ( ! ripple . io ) return ripple ;
89- if ( _client2 . default ) return ripple . render = loaded ( ripple ) ( ripple . render ) , ripple . pull = emit ( ripple ) , ripple . deps = deps , ripple . requested = { } , ( 0 , _ready2 . default ) ( start ( ripple ) ) , ripple . io . on ( 'connect' , refresh ( ripple ) ) , ripple . io . on ( 'reconnect' , reconnect ( ripple ) ) , ripple ;
89+ if ( _client2 . default ) {
90+ ripple . render = render ( ripple ) ( ripple . render ) ;
91+ ripple . pull = pull ( ripple ) ;
92+ ripple . deps = deps ;
93+ ripple . requested = { } ;
94+ ripple . io . on ( 'connect' , refresh ( ripple ) ) ;
95+ ripple . io . on ( 'reconnect' , reconnect ( ripple ) ) ;
96+ ( 0 , _ready2 . default ) ( start ( ripple ) ) ;
97+ return ripple ;
98+ }
9099
91100 ripple . to = limit ( ripple . to ) ;
92101 ripple . from = track ( ripple ) ( ripple . from ) ;
@@ -113,17 +122,19 @@ var scan = function scan(ripple) {
113122var track = function track ( ripple ) {
114123 return function ( next ) {
115124 return function ( req , res ) {
116- var name = req . name ;
117- var type = req . type ;
118- var socket = req . socket ;
119- var send = ripple . send ;
120- var exists = name in socket . deps ;
125+ var name = req . name ,
126+ type = req . type ,
127+ socket = req . socket ,
128+ send = ripple . send ,
129+ exists = name in socket . deps ;
130+
121131
122132 if ( ! ( name in ripple . resources ) ) return ;
123- if ( type !== 'pull' ) return ( next || _identity2 . default ) ( req , res ) ;
124- socket . deps [ name ] = 1 ;
125- send ( socket ) ( name ) ;
126- return false ;
133+ if ( type === 'pull' ) {
134+ socket . deps [ name ] = 1 ;
135+ send ( socket ) ( name ) ;
136+ }
137+ return ( next || _identity2 . default ) ( req , res ) ;
127138 } ;
128139 } ;
129140} ;
@@ -138,20 +149,26 @@ var reconnect = function reconnect(_ref) {
138149var refresh = function refresh ( ripple ) {
139150 return function ( d ) {
140151 return ( 0 , _group2 . default ) ( 'refreshing' , function ( d ) {
141- return ( 0 , _values2 . default ) ( ripple . resources ) . map ( function ( _ref2 ) {
142- var name = _ref2 . name ;
143- return emit ( ripple ) ( name ) ;
144- } ) ;
152+ return ( 0 , _values2 . default ) ( ripple . resources ) . map ( function ( d ) {
153+ return d . name ;
154+ } ) . map ( ripple . pull ) ;
145155 } ) ;
146156 } ;
147157} ;
148158
149- var emit = function emit ( ripple ) {
150- return function ( name ) {
151- log ( 'pulling' , name ) ;
152- ripple . io . emit ( 'change' , { name : name , type : 'pull' } ) ;
153- ripple . requested [ name ] = 1 ;
154- return name ;
159+ var pull = function pull ( ripple ) {
160+ return function ( name , node ) {
161+ if ( node instanceof Element ) {
162+ var original = ( 0 , _attr2 . default ) ( 'data' ) ( node ) || '' ;
163+ if ( ! original . split ( ' ' ) . some ( ( 0 , _is2 . default ) ( name ) ) ) ( 0 , _attr2 . default ) ( 'data' , ( original + ' ' + name ) . trim ( ) ) ( node ) ;
164+ }
165+
166+ if ( ! ( name in ripple . requested ) ) {
167+ log ( 'pulling' , name ) ;
168+ ripple . requested [ name ] = ripple . send ( { name : name , type : 'pull' } ) ;
169+ }
170+
171+ return name in ripple . resources ? promise ( ripple ( name ) ) : ripple . requested [ name ] ;
155172 } ;
156173} ;
157174
@@ -173,10 +190,10 @@ var format = function format(arr) {
173190 } ;
174191} ;
175192
176- var loaded = function loaded ( ripple ) {
193+ var render = function render ( ripple ) {
177194 return function ( next ) {
178195 return function ( el ) {
179- return ripple . deps ( el ) . filter ( ( 0 , _not2 . default ) ( _is2 . default . in ( ripple . requested ) ) ) . map ( emit ( ripple ) ) . length ? false : scan ( ripple ) ( next ( el ) ) ;
196+ return ripple . deps ( el ) . filter ( ( 0 , _not2 . default ) ( _is2 . default . in ( ripple . requested ) ) ) . map ( ripple . pull ) . length ? false : scan ( ripple ) ( next ( el ) ) ;
180197 } ;
181198 } ;
182199} ;
0 commit comments