99
1010function create_object ( ) {
1111 return Object . create ( null ) ;
12- }
13-
14- /**
15- * @param {Map|Set } val
16- * @param {boolean= } stringify
17- * @return {Array }
18- */
19-
20- function toArray ( val , stringify ) {
21- const result = [ ] ;
22- for ( const key of val . keys ( ) ) {
23- result . push ( key ) ;
24- }
25- return result ;
2612}
2713
2814const VERSION = 1 ;
@@ -363,36 +349,25 @@ IdxDB.prototype.transaction = function(ref, modifier, task){
363349
364350} ;
365351
366- IdxDB . prototype . commit = async function ( flexsearch , _replace , _append ) {
352+ IdxDB . prototype . commit = async function ( flexsearch ) {
367353
368-
369- if ( _replace ) {
370- await this . clear ( ) ;
354+ let tasks = flexsearch . commit_task ;
355+ let removals = [ ] ;
356+ flexsearch . commit_task = [ ] ;
357+
358+ for ( let i = 0 , task ; i < tasks . length ; i ++ ) {
359+ /** @dict */
360+ task = tasks [ i ] ;
361+ if ( task [ "del" ] ) {
362+ removals . push ( task [ "del" ] ) ;
363+ }
364+
365+
371366
372- flexsearch . commit_task = [ ] ;
373367 }
374- else {
375- let tasks = flexsearch . commit_task ;
376- flexsearch . commit_task = [ ] ;
377- for ( let i = 0 , task ; i < tasks . length ; i ++ ) {
378- /** @dict */
379- task = tasks [ i ] ;
380-
381- if ( task [ "clear" ] ) {
382- await this . clear ( ) ;
383- _replace = true ;
384- break ;
385- }
386- else {
387- tasks [ i ] = task [ "del" ] ;
388- }
389- }
390- if ( ! _replace ) {
391- if ( ! _append ) {
392- tasks = tasks . concat ( toArray ( flexsearch . reg ) ) ;
393- }
394- tasks . length && await this . remove ( tasks ) ;
395- }
368+
369+ if ( removals . length ) {
370+ await this . remove ( removals ) ;
396371 }
397372
398373 if ( ! flexsearch . reg . size ) {
@@ -407,10 +382,10 @@ IdxDB.prototype.commit = async function(flexsearch, _replace, _append){
407382 const value = item [ 1 ] ;
408383 if ( ! value . length ) continue ;
409384
410- if ( _replace ) {
411- store . put ( value , key ) ;
412- continue ;
413- }
385+
386+
387+
388+
414389
415390 store . get ( key ) . onsuccess = function ( ) {
416391 let result = this . result ;
@@ -464,10 +439,10 @@ IdxDB.prototype.commit = async function(flexsearch, _replace, _append){
464439 const value = item [ 1 ] ;
465440 if ( ! value . length ) continue ;
466441
467- if ( _replace ) {
468- store . put ( value , ctx_key + ":" + key ) ;
469- continue ;
470- }
442+
443+
444+
445+
471446
472447 store . get ( ctx_key + ":" + key ) . onsuccess = function ( ) {
473448 let result = this . result ;
0 commit comments