sliftutils 1.4.68 → 1.4.69

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.
package/index.d.ts CHANGED
@@ -903,10 +903,7 @@ declare module "sliftutils/storage/BulkDatabase2/BulkDatabase2" {
903
903
  * whether it bailed because another tab/process holds the merge lock — so a scheduler can call this
904
904
  * (e.g. every 30 minutes) and tell "nothing to do" from "someone else is already merging".
905
905
  */
906
- tryMergeNow(): Promise<{
907
- merged: boolean;
908
- lockFailed: boolean;
909
- }>;
906
+ tryMergeNow(): Promise<void>;
910
907
  /** Rewrite everything written in [timeLo, timeHi] into fresh key-sorted bulk file(s). Low-level;
911
908
  * most callers want compact() or tryMergeNow(). */
912
909
  merge(timeLo: number, timeHi: number): Promise<void>;
@@ -1028,10 +1025,7 @@ declare module "sliftutils/storage/BulkDatabase2/BulkDatabaseBase" {
1028
1025
  private listFiles;
1029
1026
  private writeBulkFile;
1030
1027
  private maybeMerge;
1031
- tryMergeNow(): Promise<{
1032
- merged: boolean;
1033
- lockFailed: boolean;
1034
- }>;
1028
+ tryMergeNow: () => Promise<void>;
1035
1029
  compact(): Promise<void>;
1036
1030
  merge(timeLo: number, timeHi: number): Promise<void>;
1037
1031
  private readBulkHeader;
@@ -1041,7 +1035,7 @@ declare module "sliftutils/storage/BulkDatabase2/BulkDatabaseBase" {
1041
1035
  private mergeFileSetInner;
1042
1036
  private canDeleteStream;
1043
1037
  private mergeSpacingDelay;
1044
- private testMerge;
1038
+ private testMergeINTERNAL_DO_NOT_CALL;
1045
1039
  private findDuplicateGroups;
1046
1040
  getSingleField<C extends keyof T>(key: string, column: C): Promise<T[C] | undefined>;
1047
1041
  getSingleFieldObj<C extends keyof T>(key: string, column: C): Promise<{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sliftutils",
3
- "version": "1.4.68",
3
+ "version": "1.4.69",
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -138,10 +138,7 @@ export interface IBulkDatabase2<T extends {
138
138
  * whether it bailed because another tab/process holds the merge lock — so a scheduler can call this
139
139
  * (e.g. every 30 minutes) and tell "nothing to do" from "someone else is already merging".
140
140
  */
141
- tryMergeNow(): Promise<{
142
- merged: boolean;
143
- lockFailed: boolean;
144
- }>;
141
+ tryMergeNow(): Promise<void>;
145
142
  /** Rewrite everything written in [timeLo, timeHi] into fresh key-sorted bulk file(s). Low-level;
146
143
  * most callers want compact() or tryMergeNow(). */
147
144
  merge(timeLo: number, timeHi: number): Promise<void>;
@@ -131,7 +131,7 @@ export interface IBulkDatabase2<T extends { key: string }> {
131
131
  * whether it bailed because another tab/process holds the merge lock — so a scheduler can call this
132
132
  * (e.g. every 30 minutes) and tell "nothing to do" from "someone else is already merging".
133
133
  */
134
- tryMergeNow(): Promise<{ merged: boolean; lockFailed: boolean }>;
134
+ tryMergeNow(): Promise<void>;
135
135
 
136
136
  /** Rewrite everything written in [timeLo, timeHi] into fresh key-sorted bulk file(s). Low-level;
137
137
  * most callers want compact() or tryMergeNow(). */
@@ -97,10 +97,7 @@ export declare class BulkDatabaseBase<T extends {
97
97
  private listFiles;
98
98
  private writeBulkFile;
99
99
  private maybeMerge;
100
- tryMergeNow(): Promise<{
101
- merged: boolean;
102
- lockFailed: boolean;
103
- }>;
100
+ tryMergeNow: () => Promise<void>;
104
101
  compact(): Promise<void>;
105
102
  merge(timeLo: number, timeHi: number): Promise<void>;
106
103
  private readBulkHeader;
@@ -110,7 +107,7 @@ export declare class BulkDatabaseBase<T extends {
110
107
  private mergeFileSetInner;
111
108
  private canDeleteStream;
112
109
  private mergeSpacingDelay;
113
- private testMerge;
110
+ private testMergeINTERNAL_DO_NOT_CALL;
114
111
  private findDuplicateGroups;
115
112
  getSingleField<C extends keyof T>(key: string, column: C): Promise<T[C] | undefined>;
116
113
  getSingleFieldObj<C extends keyof T>(key: string, column: C): Promise<{
@@ -1,4 +1,4 @@
1
- import { sort } from "socket-function/src/misc";
1
+ import { sort, throttleFunction } from "socket-function/src/misc";
2
2
  import { runInSerial } from "socket-function/src/batching";
3
3
  import { getTimeUnique } from "socket-function/src/bits";
4
4
  import { lazy } from "socket-function/src/caching";
@@ -594,26 +594,28 @@ export class BulkDatabaseBase<T extends { key: string }> {
594
594
  // Returns immediately with { lockFailed: true } if another call is already in flight (same
595
595
  // instance), if the localStorage lock is held by another tab, or if the cross-process file lock
596
596
  // says another process owns it. Otherwise: acquires both locks, runs testMerge, releases.
597
- public async tryMergeNow(): Promise<{ merged: boolean; lockFailed: boolean }> {
598
- if (this.mergeInFlight) return { merged: false, lockFailed: true };
599
- if (!tryAcquireMergeLock(this.name, writerId)) return { merged: false, lockFailed: true };
597
+ public tryMergeNow = throttleFunction(1000, async () => {
598
+ if (this.mergeInFlight) return;
599
+ if (!tryAcquireMergeLock(this.name, writerId)) return;
600
600
  const storage = await this.storage();
601
601
  const haveFileLock = await tryAcquireMergeFileLock(storage, writerId);
602
602
  if (!haveFileLock) {
603
603
  releaseMergeLock(this.name, writerId);
604
- return { merged: false, lockFailed: true };
604
+ return;
605
605
  }
606
606
  this.mergeInFlight = true;
607
607
  const stopHeartbeat = startMergeFileLockHeartbeat(storage, writerId);
608
608
  try {
609
- return { merged: await this.testMerge(), lockFailed: false };
609
+ let t = Date.now();
610
+ await this.testMergeINTERNAL_DO_NOT_CALL();
611
+ console.log(` [autocompact] ${this.name}: merged (${Date.now() - t}ms)`);
610
612
  } finally {
611
613
  stopHeartbeat();
612
614
  await releaseMergeFileLock(storage, writerId);
613
615
  releaseMergeLock(this.name, writerId);
614
616
  this.mergeInFlight = false;
615
617
  }
616
- }
618
+ });
617
619
 
618
620
  public async compact(): Promise<void> {
619
621
  if (this.mergeInFlight) return;
@@ -872,7 +874,8 @@ export class BulkDatabaseBase<T extends { key: string }> {
872
874
  // into one when they fragment or span too wide a time range.
873
875
  // 2) Key-stratify: walk all keys in ~KEY_GROUP_BYTES groups; rewrite groups whose duplicate-key
874
876
  // fraction passes DUP_THRESHOLD, highest first.
875
- private async testMerge(): Promise<boolean> {
877
+ // Use tryMerge instead
878
+ private async testMergeINTERNAL_DO_NOT_CALL(): Promise<boolean> {
876
879
  let merged = false;
877
880
  await this.flushPending();
878
881
  const runMerge = async (bulk: BulkFileInfo[], stream: StreamFileInfo[]): Promise<boolean> => {
@@ -22,176 +22,176 @@ import { wrapHandle, NodeJSDirectoryHandleWrapper, DirectoryWrapper } from "./Fi
22
22
 
23
23
  // Common, memorable words (frequency-ordered subset) for passphrase generation.
24
24
  const WORDS: string[] = [
25
- "that","with","which","this","from","have","they","were","their","there","when","them","said","been",
26
- "would","will","what","more","then","into","some","could","time","very","than","your","other","upon",
27
- "about","only","little","like","these","great","after","well","made","before","such","over","should",
28
- "first","good","must","much","down","where","know","most","here","come","those","never","life","long",
29
- "came","being","many","through","even","himself","back","every","shall","again","make","without","might",
30
- "while","same","under","just","still","people","place","think","house","take","last","found","away",
31
- "hand","went","thought","also","though","three","another","eyes","years","work","right","once","night",
32
- "young","nothing","against","small","head","left","part","ever","world","each","father","give","between",
33
- "face","king","things","love","because","took","always","tell","called","water","both","side","look",
34
- "having","room","mind","half","heart","name","home","country","whole","however","find","among","going",
35
- "thing","lord","looked","seen","mother","general","done","seemed","told","whom","days","soon","better",
36
- "letter","woman","heard","asked","course","thus","moment","knew","light","enough","white","almost",
37
- "until","quite","hands","words","death","large","taken","since","gave","given","best","state","brought",
38
- "does","whose","door","others","power","perhaps","present","next","morning","poor","lady","four","high",
39
- "year","turned","less","word","full","during","rather","want","order","near","feet","true","miss",
40
- "matter","began","cannot","used","known","felt","above","round","thou","voice","till","case","nature",
41
- "indeed","church","kind","certain","fire","often","stood","fact","friend","girl","five","land","says",
42
- "john","myself","along","point","dear","wife","city","within","sent","times","keep","passed","form",
43
- "second","body","money","believe","hundred","open","several","means","child","english","herself","sure",
44
- "looking","women","already","black","alone","least","gone","held","itself","whether","hope","river",
45
- "ground","either","number","chapter","england","leave","rest","town","hear","greek","friends","book",
46
- "hour","short","cried","read","behind","became","making","family","earth","captain","around","dead",
47
- "reason","call","become","lost","line","replied","help","coming","speak","manner","french","twenty",
48
- "spirit","really","early","story","hard","close","human","public","truth","strong","master","care",
49
- "towards","history","kept","later","states","dark","able","mean","return","brother","person","subject",
50
- "soul","party","arms","thee","seems","common","fell","fine","feel","show","table","turn","wish","evening",
51
- "free","cause","south","ready","north","across","rose","live","account","doubt","company","miles","road",
52
- "bring","london","sense","horse","carried","hold","sight","fear","answer","idea","force","need","deep",
53
- "further","nearly","past","army","blood","street","court","reached","view","school","sort","taking",
54
- "else","chief","hours","beyond","cold","none","longer","strange","fellow","clear","service","natural",
55
- "suppose","late","talk","front","stand","purpose","seem","neither","ought","west","real","except","sound",
56
- "gold","forward","feeling","added","boys","self","peace","happy","living","husband","toward","spoke",
57
- "fair","france","trees","effect","latter","length","change","died","green","united","fall","pretty",
58
- "placed","meet","forth","office","comes","pass","written","ship","enemy","saying","tree","foot","blue",
59
- "note","prince","hair","heaven","wild","play","entered","society","laid","wind","doing","paper","opened",
60
- "bear","third","queen","mine","greater","various","faith","wanted","boat","stone","lived","george",
61
- "window","doctor","action","books","tried","letters","makes","minutes","parts","wood","period","duty",
62
- "york","instead","heavy","persons","battle","field","british","object","century","island","beauty",
63
- "christ","sister","glad","below","east","opinion","save","places","months","food","sweet","trouble",
64
- "system","born","desire","works","mary","chance","william","seven","single","hardly","sleep","mouth",
65
- "horses","silence","ancient","broken","hall","send","rich","girls","besides","lips","henry","figure",
66
- "slowly","hill","wall","future","lines","follow","german","march","filled","brown","deal","eight",
67
- "covered","smile","former","week","drew","easy","paris","camp","stay","cross","seeing","result","started",
68
- "caught","houses","appear","wrote","giving","simple","arrived","formed","bright","wide","uncle","piece",
69
- "walked","knows","carry","middle","village","holy","merely","getting","raised","afraid","struck",
70
- "charles","board","visit","royal","spring","dinner","evil","outside","wrong","summer","moved","danger",
71
- "mark","fresh","plain","thirty","scene","quickly","wonder","jack","indian","walk","learned","class",
72
- "secret","wait","command","easily","garden","loved","married","fight","leaving","music","usual","cases",
73
- "winter","respect","value","quiet","please","stopped","write","laughed","america","chair","paid","duke",
74
- "leaves","lower","colonel","perfect","james","worth","author","finally","youth","regard","glass",
75
- "picture","built","modern","success","race","showed","tears","unless","mere","lives","grew","charge",
76
- "beside","remain","waiting","study","hath","shot","unto","tone","iron","watch","grace","flowers","killed",
77
- "allowed","news","step","proper","sitting","floor","justice","noble","goes","walls","laws","meant",
78
- "bound","forms","fifty","drawn","private","fast","indians","judge","meeting","usually","sudden","gives",
79
- "reach","bank","attempt","shore","stop","plan","silent","special","spot","officer","silver","passing",
80
- "broke","lake","soft","journey","beneath","shown","turning","members","enter","lead","trade","names",
81
- "escape","troops","bill","corner","rule","ladies","species","rock","similar","running","rate","cast",
82
- "nation","post","likely","simply","orders","dress","fish","minute","birds","europe","passage","surface",
83
- "snow","attack","higher","rise","grand","reply","honour","notice","speech","trying","game","writing",
84
- "closed","rome","example","aunt","learn","morrow","offered","peter","equal","space","page","wished",
85
- "changed","animal","social","twelve","appears","receive","valley","degree","train","steps","fixed",
86
- "count","forest","matters","foreign","native","broad","moral","animals","safe","roman","break","pale",
87
- "memory","warm","trust","yellow","sides","main","bird","reading","coast","pain","grave","forget","move",
88
- "fortune","madame","proved","forty","lying","quick","wise","jesus","working","surely","looks","seat",
89
- "divine","touch","loss","paul","heads","spent","ordered","report","caused","thomas","ones","drawing",
90
- "talking","breath","meaning","month","union","pleased","powers","emperor","laugh","affairs","narrow",
91
- "square","science","begin","promise","takes","conduct","serious","thank","curious","pieces","health",
92
- "exactly","ways","upper","decided","nine","stream","wine","engaged","points","amount","named","song",
93
- "worse","size","castle","crown","mass","liberty","stage","guard","servant","greatly","price","weeks",
94
- "neck","ears","drink","crowd","thick","fallen","hills","spoken","golden","capital","sign","spite","terms",
95
- "sake","council","threw","ships","portion","support","clothes","effort","fully","holding","majesty",
96
- "glory","pure","facts","sword","sorry","fate","bread","prove","station","sharp","dream","vain","major",
97
- "smiled","instant","spread","serve","sick","june","ideas","thrown","start","weather","gray","courage",
98
- "anxious","woods","path","rising","grass","moon","gate","forced","fancy","bottom","expect","remains",
99
- "shook","bishop","watched","settled","events","rain","quarter","heat","palace","glance","kingdom",
100
- "papers","aside","worthy","taste","pride","july","opening","daily","leading","wounded","famous","offer",
101
- "group","distant","weight","highest","vast","popular","passion","knowing","allow","sought","lies",
102
- "marked","series","growing","measure","hearts","robert","obliged","western","hence","style","dropped",
103
- "nations","grown","honor","edge","pray","tall","frank","poet","streets","season","pointed","mighty",
104
- "temple","extent","thin","blow","freedom","entire","keeping","prevent","shut","storm","lose","college",
105
- "cost","marry","spirits","worked","colour","ring","listen","fruit","waters","fashion","share","hung",
106
- "proud","fingers","method","served","grow","fort","draw","dollars","quietly","yours","vessel","direct",
107
- "refused","bridge","gods","inside","title","advance","priest","becomes","dick","double","seek","guess",
108
- "spanish","larger","ball","finding","edward","removed","brave","tired","agreed","sacred","sons","guns",
109
- "played","richard","devil","pounds","honest","false","cloth","soldier","tongue","smith","wealth","failed",
110
- "height","faces","equally","legs","pocket","twice","volume","prayer","county","notes","louis","unknown",
111
- "delight","rights","nice","taught","coat","dare","slight","rocks","enemies","control","forces","germany",
112
- "kill","process","david","rapidly","comfort","islands","centre","salt","april","windows","noticed",
113
- "truly","color","fields","date","august","desired","breast","skin","gentle","smoke","search","joined",
114
- "nobody","results","needed","weak","type","stones","follows","theory","shape","waited","telling","relief",
115
- "bearing","bent","mile","dressed","birth","spain","female","clearly","moving","drive","crossed","member",
116
- "saved","teeth","flesh","cover","shows","farther","stands","figures","numbers","bodies","supply","motion",
117
- "grey","bell","alive","seized","shadow","produce","touched","driven","talked","empire","sunday","pair",
118
- "fourth","slave","regular","dozen","beat","cousin","sand","soil","rough","claim","angry","pity","walking",
119
- "acts","pope","rooms","task","stock","tender","throw","reader","india","hotel","fifteen","arrival",
120
- "plate","stars","willing","stories","saint","amongst","virtue","chamber","civil","yards","habit","writer",
121
- "putting","origin","italy","hearing","genius","milk","busy","fool","burning","duties","brain","slow",
122
- "belief","bore","mention","grant","library","inches","press","calm","total","ride","lands","labor",
123
- "parties","clean","catch","treated","rode","whilst","level","efforts","minds","welcome","wisdom","supper",
124
- "final","mercy","aware","lovely","empty","wants","midst","central","rank","proof","burst","term","farm",
125
- "applied","loud","nearer","harry","closely","kings","explain","deck","noise","hurt","advice","absence",
126
- "circle","objects","secure","plants","parents","falling","base","fellows","sorrow","flat","flower",
127
- "calling","imagine","range","sold","favour","happen","showing","earl","hole","careful","dust","prison",
128
- "useful","accept","firm","sing","port","seated","custom","wore","doors","lifted","edition","tale",
129
- "affair","policy","roof","express","ahead","worship","partly","address","highly","victory","ocean",
130
- "begun","buried","content","smiling","liked","active","quality","philip","current","divided","growth",
131
- "huge","moments","article","speed","poetry","machine","join","nose","unable","ceased","gained","worn",
132
- "eastern","safety","ages","vessels","hopes","corn","slaves","drop","plant","evident","local","police",
133
- "october","obtain","italian","deeply","dying","wholly","dogs","playing","plenty","apart","suffer","maid",
134
- "record","fairly","kindly","terror","drove","ends","sugar","capable","irish","message","chosen","flight",
135
- "reasons","couple","meat","printed","blind","energy","bitter","baby","mistake","tower","ireland","trial",
136
- "wear","brief","market","band","causes","clouds","goods","admit","cities","earlier","tells","stated",
137
- "pressed","crime","fought","guide","hoped","list","banks","knight","fleet","pulled","tail","patient",
138
- "mental","boats","kinds","stairs","star","cattle","rare","wings","disease","section","actual","bare",
139
- "extreme","cruel","worst","escaped","dance","strike","views","eggs","needs","store","choice","fond",
140
- "adopted","suit","singing","fail","souls","thanks","hidden","shame","faint","shop","older","joseph",
141
- "knees","gently","blessed","yard","cent","grief","male","sooner","january","excited","region","praise",
142
- "throne","classes","effects","demand","gain","fault","labour","variety","loose","cook","devoted","ended",
143
- "changes","witness","bought","lover","visited","club","sheep","cloud","enjoy","asleep","cool","dull",
144
- "painted","arose","armed","dignity","chiefly","voices","sail","event","signs","hero","schools","branch",
145
- "hurried","arthur","kitchen","stick","coffee","thinks","eager","natives","flying","boston","eternal",
146
- "source","fill","anger","vision","murder","viii","park","avoid","awful","raise","desert","plans","pardon",
147
- "assured","wound","finger","bible","rear","details","cabin","whence","reign","weary","slavery","visible",
148
- "shouted","seldom","skill","hast","throat","reality","leader","egypt","credit","smaller","severe","calls",
149
- "younger","shell","sprang","anybody","handed","despair","asking","inch","mystery","manners","knife",
150
- "design","sounds","wishes","stepped","towns","sixty","immense","china","favor","latin","hate","setting",
151
- "excuse","chinese","behold","rushed","choose","ease","lights","paused","mission","voyage","gift","bold",
152
- "meal","britain","smooth","mounted","utterly","lest","helped","picked","falls","pipe","bones","earnest",
153
- "granted","swept","anxiety","teach","waves","softly","savage","hunting","defence","rapid","artist",
154
- "recent","supreme","russian","created","habits","exist","guilty","pages","crew","hell","remark","request",
155
- "harm","solemn","observe","trail","copy","violent","dreams","proceed","luck","steel","sell","temper",
156
- "appeal","hide","fled","belong","triumph","abroad","waste","consent","writers","possess","jews","require",
157
- "priests","railway","founded","pushed","host","solid","maybe","degrees","cheeks","mount","ruin","owing",
158
- "fierce","reduced","mankind","text","swift","riding","silk","shade","career","wicked","afford","alas",
159
- "rules","treaty","correct","spend","foolish","methods","remarks","horror","shining","enjoyed","tribes",
160
- "lack","frame","gets","eagerly","russia","alike","somehow","nodded","problem","fever","sees","stern",
161
- "dawn","forgive","flag","managed","fame","travel","estate","cotton","hurry","agree","feared","kiss",
162
- "million","martin","mixed","risk","butter","jane","assumed","pause","benefit","unhappy","lighted",
163
- "scheme","slept","plainly","forgot","delay","merry","rush","wooden","secured","poem","rolled","angel",
164
- "guests","farmer","humble","glanced","shortly","rope","image","lately","africa","fired","retired","bull",
165
- "steam","keen","loving","borne","readily","beloved","average","teacher","attend","flame","area","burned",
166
- "thrust","negro","nurse","spare","fifth","thence","roads","refuse","tent","kissed","gates","gaze","fatal",
167
- "israel","verse","scenes","confess","uttered","build","acted","hanging","reward","issue","utmost",
168
- "fathers","noted","widow","related","urged","mode","failure","nervous","render","masters","tribe",
169
- "colored","turns","alarm","rivers","using","eleven","rage","hers","lamp","retreat","amid","gospel",
170
- "exposed","johnson","marks","tide","emotion","destroy","inner","sisters","lion","helen","tied","grounds",
171
- "acid","wheel","issued","invited","gazed","senate","finds","seed","regret","clay","chain","crowded",
172
- "bosom","limited","steady","chap","anne","francis","cavalry","freely","charm","faced","ideal","useless",
173
- "warning","shelter","vote","xpage","cottage","beast","outer","folks","misery","anyone","expense","firmly",
174
- "eating","lonely","owner","trace","coal","hastily","elder","utter","begins","chapel","nights","dared",
175
- "signal","stared","track","lords","speaks","bottle","blame","claims","shoes","sigh","ghost","folk",
176
- "dutch","flung","flew","cheek","staff","walter","clever","acting","hungry","poems","cutting","forever",
177
- "exact","haste","dancing","trip","lincoln","pull","vice","slipped","thine","loves","permit","mill",
178
- "engine","hollow","seeking","bowed","largely","charged","painful","madam","roll","leaf","prayers",
179
- "element","agent","cries","songs","theatre","creek","match","ashamed","runs","aspect","canada","treat",
180
- "legal","arts","corps","noon","nearest","scale","hunt","shadows","winds","landed","beings","tiny",
181
- "gardens","bless","clerk","doth","derived","hang","heavens","cape","ours","brow","test","senses",
182
- "opposed","error","driving","nest","headed","groups","princes","feast","admiral","poured","brings",
183
- "pursued","germans","bears","lesson","journal","unusual","marched","wing","remove","studied","passes",
184
- "actions","burden","colony","scott","bride","yield","crying","forming","rifle","powder","rested","shake",
185
- "guest","begged","occur","altar","sorts","beaten","wave","papa","sang","depth","aloud","contact",
186
- "intense","marble","poverty","detail","writes","root","metal","jean","existed","ability","purple",
187
- "counsel","lane","wives","sending","heavily","leaders","queer","tales","sins","mexico","protect","clock",
188
- "stuff","jones","pine","records","cave","baron","medical","pick","stayed","magic","seventy","pour",
189
- "saddle","sank","dread","deny","wire","rude","holds","strain","autumn","shed","shoot","settle","basis",
190
- "readers","route","beach","safely","oxford","notion","thunder","sale","saints","pound","shock","elected",
191
- "signed","whereas","maiden","courts","rarely","wolf","mamma","billy","student","charity","impulse",
192
- "tones","mortal","raising","wedding","belongs","chest","sharply","sounded","poets","lawyer","hugh",
193
- "plays","awake","landing","debt","alice","venture","idle","uniform","contain","tobacco","boots","fears",
194
- "leaned","studies","customs","prize","stir","obey","oath","badly","pursuit","resting",
25
+ "that", "with", "which", "this", "from", "have", "they", "were", "their", "there", "when", "them", "said", "been",
26
+ "would", "will", "what", "more", "then", "into", "some", "could", "time", "very", "than", "your", "other", "upon",
27
+ "about", "only", "little", "like", "these", "great", "after", "well", "made", "before", "such", "over", "should",
28
+ "first", "good", "must", "much", "down", "where", "know", "most", "here", "come", "those", "never", "life", "long",
29
+ "came", "being", "many", "through", "even", "himself", "back", "every", "shall", "again", "make", "without", "might",
30
+ "while", "same", "under", "just", "still", "people", "place", "think", "house", "take", "last", "found", "away",
31
+ "hand", "went", "thought", "also", "though", "three", "another", "eyes", "years", "work", "right", "once", "night",
32
+ "young", "nothing", "against", "small", "head", "left", "part", "ever", "world", "each", "father", "give", "between",
33
+ "face", "king", "things", "love", "because", "took", "always", "tell", "called", "water", "both", "side", "look",
34
+ "having", "room", "mind", "half", "heart", "name", "home", "country", "whole", "however", "find", "among", "going",
35
+ "thing", "lord", "looked", "seen", "mother", "general", "done", "seemed", "told", "whom", "days", "soon", "better",
36
+ "letter", "woman", "heard", "asked", "course", "thus", "moment", "knew", "light", "enough", "white", "almost",
37
+ "until", "quite", "hands", "words", "death", "large", "taken", "since", "gave", "given", "best", "state", "brought",
38
+ "does", "whose", "door", "others", "power", "perhaps", "present", "next", "morning", "poor", "lady", "four", "high",
39
+ "year", "turned", "less", "word", "full", "during", "rather", "want", "order", "near", "feet", "true", "miss",
40
+ "matter", "began", "cannot", "used", "known", "felt", "above", "round", "thou", "voice", "till", "case", "nature",
41
+ "indeed", "church", "kind", "certain", "fire", "often", "stood", "fact", "friend", "girl", "five", "land", "says",
42
+ "john", "myself", "along", "point", "dear", "wife", "city", "within", "sent", "times", "keep", "passed", "form",
43
+ "second", "body", "money", "believe", "hundred", "open", "several", "means", "child", "english", "herself", "sure",
44
+ "looking", "women", "already", "black", "alone", "least", "gone", "held", "itself", "whether", "hope", "river",
45
+ "ground", "either", "number", "chapter", "england", "leave", "rest", "town", "hear", "greek", "friends", "book",
46
+ "hour", "short", "cried", "read", "behind", "became", "making", "family", "earth", "captain", "around", "dead",
47
+ "reason", "call", "become", "lost", "line", "replied", "help", "coming", "speak", "manner", "french", "twenty",
48
+ "spirit", "really", "early", "story", "hard", "close", "human", "public", "truth", "strong", "master", "care",
49
+ "towards", "history", "kept", "later", "states", "dark", "able", "mean", "return", "brother", "person", "subject",
50
+ "soul", "party", "arms", "thee", "seems", "common", "fell", "fine", "feel", "show", "table", "turn", "wish", "evening",
51
+ "free", "cause", "south", "ready", "north", "across", "rose", "live", "account", "doubt", "company", "miles", "road",
52
+ "bring", "london", "sense", "horse", "carried", "hold", "sight", "fear", "answer", "idea", "force", "need", "deep",
53
+ "further", "nearly", "past", "army", "blood", "street", "court", "reached", "view", "school", "sort", "taking",
54
+ "else", "chief", "hours", "beyond", "cold", "none", "longer", "strange", "fellow", "clear", "service", "natural",
55
+ "suppose", "late", "talk", "front", "stand", "purpose", "seem", "neither", "ought", "west", "real", "except", "sound",
56
+ "gold", "forward", "feeling", "added", "boys", "self", "peace", "happy", "living", "husband", "toward", "spoke",
57
+ "fair", "france", "trees", "effect", "latter", "length", "change", "died", "green", "united", "fall", "pretty",
58
+ "placed", "meet", "forth", "office", "comes", "pass", "written", "ship", "enemy", "saying", "tree", "foot", "blue",
59
+ "note", "prince", "hair", "heaven", "wild", "play", "entered", "society", "laid", "wind", "doing", "paper", "opened",
60
+ "bear", "third", "queen", "mine", "greater", "various", "faith", "wanted", "boat", "stone", "lived", "george",
61
+ "window", "doctor", "action", "books", "tried", "letters", "makes", "minutes", "parts", "wood", "period", "duty",
62
+ "york", "instead", "heavy", "persons", "battle", "field", "british", "object", "century", "island", "beauty",
63
+ "christ", "sister", "glad", "below", "east", "opinion", "save", "places", "months", "food", "sweet", "trouble",
64
+ "system", "born", "desire", "works", "mary", "chance", "william", "seven", "single", "hardly", "sleep", "mouth",
65
+ "horses", "silence", "ancient", "broken", "hall", "send", "rich", "girls", "besides", "lips", "henry", "figure",
66
+ "slowly", "hill", "wall", "future", "lines", "follow", "german", "march", "filled", "brown", "deal", "eight",
67
+ "covered", "smile", "former", "week", "drew", "easy", "paris", "camp", "stay", "cross", "seeing", "result", "started",
68
+ "caught", "houses", "appear", "wrote", "giving", "simple", "arrived", "formed", "bright", "wide", "uncle", "piece",
69
+ "walked", "knows", "carry", "middle", "village", "holy", "merely", "getting", "raised", "afraid", "struck",
70
+ "charles", "board", "visit", "royal", "spring", "dinner", "evil", "outside", "wrong", "summer", "moved", "danger",
71
+ "mark", "fresh", "plain", "thirty", "scene", "quickly", "wonder", "jack", "indian", "walk", "learned", "class",
72
+ "secret", "wait", "command", "easily", "garden", "loved", "married", "fight", "leaving", "music", "usual", "cases",
73
+ "winter", "respect", "value", "quiet", "please", "stopped", "write", "laughed", "america", "chair", "paid", "duke",
74
+ "leaves", "lower", "colonel", "perfect", "james", "worth", "author", "finally", "youth", "regard", "glass",
75
+ "picture", "built", "modern", "success", "race", "showed", "tears", "unless", "mere", "lives", "grew", "charge",
76
+ "beside", "remain", "waiting", "study", "hath", "shot", "unto", "tone", "iron", "watch", "grace", "flowers", "killed",
77
+ "allowed", "news", "step", "proper", "sitting", "floor", "justice", "noble", "goes", "walls", "laws", "meant",
78
+ "bound", "forms", "fifty", "drawn", "private", "fast", "indians", "judge", "meeting", "usually", "sudden", "gives",
79
+ "reach", "bank", "attempt", "shore", "stop", "plan", "silent", "special", "spot", "officer", "silver", "passing",
80
+ "broke", "lake", "soft", "journey", "beneath", "shown", "turning", "members", "enter", "lead", "trade", "names",
81
+ "escape", "troops", "bill", "corner", "rule", "ladies", "species", "rock", "similar", "running", "rate", "cast",
82
+ "nation", "post", "likely", "simply", "orders", "dress", "fish", "minute", "birds", "europe", "passage", "surface",
83
+ "snow", "attack", "higher", "rise", "grand", "reply", "honour", "notice", "speech", "trying", "game", "writing",
84
+ "closed", "rome", "example", "aunt", "learn", "morrow", "offered", "peter", "equal", "space", "page", "wished",
85
+ "changed", "animal", "social", "twelve", "appears", "receive", "valley", "degree", "train", "steps", "fixed",
86
+ "count", "forest", "matters", "foreign", "native", "broad", "moral", "animals", "safe", "roman", "break", "pale",
87
+ "memory", "warm", "trust", "yellow", "sides", "main", "bird", "reading", "coast", "pain", "grave", "forget", "move",
88
+ "fortune", "madame", "proved", "forty", "lying", "quick", "wise", "jesus", "working", "surely", "looks", "seat",
89
+ "divine", "touch", "loss", "paul", "heads", "spent", "ordered", "report", "caused", "thomas", "ones", "drawing",
90
+ "talking", "breath", "meaning", "month", "union", "pleased", "powers", "emperor", "laugh", "affairs", "narrow",
91
+ "square", "science", "begin", "promise", "takes", "conduct", "serious", "thank", "curious", "pieces", "health",
92
+ "exactly", "ways", "upper", "decided", "nine", "stream", "wine", "engaged", "points", "amount", "named", "song",
93
+ "worse", "size", "castle", "crown", "mass", "liberty", "stage", "guard", "servant", "greatly", "price", "weeks",
94
+ "neck", "ears", "drink", "crowd", "thick", "fallen", "hills", "spoken", "golden", "capital", "sign", "spite", "terms",
95
+ "sake", "council", "threw", "ships", "portion", "support", "clothes", "effort", "fully", "holding", "majesty",
96
+ "glory", "pure", "facts", "sword", "sorry", "fate", "bread", "prove", "station", "sharp", "dream", "vain", "major",
97
+ "smiled", "instant", "spread", "serve", "sick", "june", "ideas", "thrown", "start", "weather", "gray", "courage",
98
+ "anxious", "woods", "path", "rising", "grass", "moon", "gate", "forced", "fancy", "bottom", "expect", "remains",
99
+ "shook", "bishop", "watched", "settled", "events", "rain", "quarter", "heat", "palace", "glance", "kingdom",
100
+ "papers", "aside", "worthy", "taste", "pride", "july", "opening", "daily", "leading", "wounded", "famous", "offer",
101
+ "group", "distant", "weight", "highest", "vast", "popular", "passion", "knowing", "allow", "sought", "lies",
102
+ "marked", "series", "growing", "measure", "hearts", "robert", "obliged", "western", "hence", "style", "dropped",
103
+ "nations", "grown", "honor", "edge", "pray", "tall", "frank", "poet", "streets", "season", "pointed", "mighty",
104
+ "temple", "extent", "thin", "blow", "freedom", "entire", "keeping", "prevent", "shut", "storm", "lose", "college",
105
+ "cost", "marry", "spirits", "worked", "colour", "ring", "listen", "fruit", "waters", "fashion", "share", "hung",
106
+ "proud", "fingers", "method", "served", "grow", "fort", "draw", "dollars", "quietly", "yours", "vessel", "direct",
107
+ "refused", "bridge", "gods", "inside", "title", "advance", "priest", "becomes", "dick", "double", "seek", "guess",
108
+ "spanish", "larger", "ball", "finding", "edward", "removed", "brave", "tired", "agreed", "sacred", "sons", "guns",
109
+ "played", "richard", "devil", "pounds", "honest", "false", "cloth", "soldier", "tongue", "smith", "wealth", "failed",
110
+ "height", "faces", "equally", "legs", "pocket", "twice", "volume", "prayer", "county", "notes", "louis", "unknown",
111
+ "delight", "rights", "nice", "taught", "coat", "dare", "slight", "rocks", "enemies", "control", "forces", "germany",
112
+ "kill", "process", "david", "rapidly", "comfort", "islands", "centre", "salt", "april", "windows", "noticed",
113
+ "truly", "color", "fields", "date", "august", "desired", "breast", "skin", "gentle", "smoke", "search", "joined",
114
+ "nobody", "results", "needed", "weak", "type", "stones", "follows", "theory", "shape", "waited", "telling", "relief",
115
+ "bearing", "bent", "mile", "dressed", "birth", "spain", "female", "clearly", "moving", "drive", "crossed", "member",
116
+ "saved", "teeth", "flesh", "cover", "shows", "farther", "stands", "figures", "numbers", "bodies", "supply", "motion",
117
+ "grey", "bell", "alive", "seized", "shadow", "produce", "touched", "driven", "talked", "empire", "sunday", "pair",
118
+ "fourth", "slave", "regular", "dozen", "beat", "cousin", "sand", "soil", "rough", "claim", "angry", "pity", "walking",
119
+ "acts", "pope", "rooms", "task", "stock", "tender", "throw", "reader", "india", "hotel", "fifteen", "arrival",
120
+ "plate", "stars", "willing", "stories", "saint", "amongst", "virtue", "chamber", "civil", "yards", "habit", "writer",
121
+ "putting", "origin", "italy", "hearing", "genius", "milk", "busy", "fool", "burning", "duties", "brain", "slow",
122
+ "belief", "bore", "mention", "grant", "library", "inches", "press", "calm", "total", "ride", "lands", "labor",
123
+ "parties", "clean", "catch", "treated", "rode", "whilst", "level", "efforts", "minds", "welcome", "wisdom", "supper",
124
+ "final", "mercy", "aware", "lovely", "empty", "wants", "midst", "central", "rank", "proof", "burst", "term", "farm",
125
+ "applied", "loud", "nearer", "harry", "closely", "kings", "explain", "deck", "noise", "hurt", "advice", "absence",
126
+ "circle", "objects", "secure", "plants", "parents", "falling", "base", "fellows", "sorrow", "flat", "flower",
127
+ "calling", "imagine", "range", "sold", "favour", "happen", "showing", "earl", "hole", "careful", "dust", "prison",
128
+ "useful", "accept", "firm", "sing", "port", "seated", "custom", "wore", "doors", "lifted", "edition", "tale",
129
+ "affair", "policy", "roof", "express", "ahead", "worship", "partly", "address", "highly", "victory", "ocean",
130
+ "begun", "buried", "content", "smiling", "liked", "active", "quality", "philip", "current", "divided", "growth",
131
+ "huge", "moments", "article", "speed", "poetry", "machine", "join", "nose", "unable", "ceased", "gained", "worn",
132
+ "eastern", "safety", "ages", "vessels", "hopes", "corn", "slaves", "drop", "plant", "evident", "local", "police",
133
+ "october", "obtain", "italian", "deeply", "dying", "wholly", "dogs", "playing", "plenty", "apart", "suffer", "maid",
134
+ "record", "fairly", "kindly", "terror", "drove", "ends", "sugar", "capable", "irish", "message", "chosen", "flight",
135
+ "reasons", "couple", "meat", "printed", "blind", "energy", "bitter", "baby", "mistake", "tower", "ireland", "trial",
136
+ "wear", "brief", "market", "band", "causes", "clouds", "goods", "admit", "cities", "earlier", "tells", "stated",
137
+ "pressed", "crime", "fought", "guide", "hoped", "list", "banks", "knight", "fleet", "pulled", "tail", "patient",
138
+ "mental", "boats", "kinds", "stairs", "star", "cattle", "rare", "wings", "disease", "section", "actual", "bare",
139
+ "extreme", "cruel", "worst", "escaped", "dance", "strike", "views", "eggs", "needs", "store", "choice", "fond",
140
+ "adopted", "suit", "singing", "fail", "souls", "thanks", "hidden", "shame", "faint", "shop", "older", "joseph",
141
+ "knees", "gently", "blessed", "yard", "cent", "grief", "male", "sooner", "january", "excited", "region", "praise",
142
+ "throne", "classes", "effects", "demand", "gain", "fault", "labour", "variety", "loose", "cook", "devoted", "ended",
143
+ "changes", "witness", "bought", "lover", "visited", "club", "sheep", "cloud", "enjoy", "asleep", "cool", "dull",
144
+ "painted", "arose", "armed", "dignity", "chiefly", "voices", "sail", "event", "signs", "hero", "schools", "branch",
145
+ "hurried", "arthur", "kitchen", "stick", "coffee", "thinks", "eager", "natives", "flying", "boston", "eternal",
146
+ "source", "fill", "anger", "vision", "murder", "viii", "park", "avoid", "awful", "raise", "desert", "plans", "pardon",
147
+ "assured", "wound", "finger", "bible", "rear", "details", "cabin", "whence", "reign", "weary", "slavery", "visible",
148
+ "shouted", "seldom", "skill", "hast", "throat", "reality", "leader", "egypt", "credit", "smaller", "severe", "calls",
149
+ "younger", "shell", "sprang", "anybody", "handed", "despair", "asking", "inch", "mystery", "manners", "knife",
150
+ "design", "sounds", "wishes", "stepped", "towns", "sixty", "immense", "china", "favor", "latin", "hate", "setting",
151
+ "excuse", "chinese", "behold", "rushed", "choose", "ease", "lights", "paused", "mission", "voyage", "gift", "bold",
152
+ "meal", "britain", "smooth", "mounted", "utterly", "lest", "helped", "picked", "falls", "pipe", "bones", "earnest",
153
+ "granted", "swept", "anxiety", "teach", "waves", "softly", "savage", "hunting", "defence", "rapid", "artist",
154
+ "recent", "supreme", "russian", "created", "habits", "exist", "guilty", "pages", "crew", "hell", "remark", "request",
155
+ "harm", "solemn", "observe", "trail", "copy", "violent", "dreams", "proceed", "luck", "steel", "sell", "temper",
156
+ "appeal", "hide", "fled", "belong", "triumph", "abroad", "waste", "consent", "writers", "possess", "jews", "require",
157
+ "priests", "railway", "founded", "pushed", "host", "solid", "maybe", "degrees", "cheeks", "mount", "ruin", "owing",
158
+ "fierce", "reduced", "mankind", "text", "swift", "riding", "silk", "shade", "career", "wicked", "afford", "alas",
159
+ "rules", "treaty", "correct", "spend", "foolish", "methods", "remarks", "horror", "shining", "enjoyed", "tribes",
160
+ "lack", "frame", "gets", "eagerly", "russia", "alike", "somehow", "nodded", "problem", "fever", "sees", "stern",
161
+ "dawn", "forgive", "flag", "managed", "fame", "travel", "estate", "cotton", "hurry", "agree", "feared", "kiss",
162
+ "million", "martin", "mixed", "risk", "butter", "jane", "assumed", "pause", "benefit", "unhappy", "lighted",
163
+ "scheme", "slept", "plainly", "forgot", "delay", "merry", "rush", "wooden", "secured", "poem", "rolled", "angel",
164
+ "guests", "farmer", "humble", "glanced", "shortly", "rope", "image", "lately", "africa", "fired", "retired", "bull",
165
+ "steam", "keen", "loving", "borne", "readily", "beloved", "average", "teacher", "attend", "flame", "area", "burned",
166
+ "thrust", "negro", "nurse", "spare", "fifth", "thence", "roads", "refuse", "tent", "kissed", "gates", "gaze", "fatal",
167
+ "israel", "verse", "scenes", "confess", "uttered", "build", "acted", "hanging", "reward", "issue", "utmost",
168
+ "fathers", "noted", "widow", "related", "urged", "mode", "failure", "nervous", "render", "masters", "tribe",
169
+ "colored", "turns", "alarm", "rivers", "using", "eleven", "rage", "hers", "lamp", "retreat", "amid", "gospel",
170
+ "exposed", "johnson", "marks", "tide", "emotion", "destroy", "inner", "sisters", "lion", "helen", "tied", "grounds",
171
+ "acid", "wheel", "issued", "invited", "gazed", "senate", "finds", "seed", "regret", "clay", "chain", "crowded",
172
+ "bosom", "limited", "steady", "chap", "anne", "francis", "cavalry", "freely", "charm", "faced", "ideal", "useless",
173
+ "warning", "shelter", "vote", "xpage", "cottage", "beast", "outer", "folks", "misery", "anyone", "expense", "firmly",
174
+ "eating", "lonely", "owner", "trace", "coal", "hastily", "elder", "utter", "begins", "chapel", "nights", "dared",
175
+ "signal", "stared", "track", "lords", "speaks", "bottle", "blame", "claims", "shoes", "sigh", "ghost", "folk",
176
+ "dutch", "flung", "flew", "cheek", "staff", "walter", "clever", "acting", "hungry", "poems", "cutting", "forever",
177
+ "exact", "haste", "dancing", "trip", "lincoln", "pull", "vice", "slipped", "thine", "loves", "permit", "mill",
178
+ "engine", "hollow", "seeking", "bowed", "largely", "charged", "painful", "madam", "roll", "leaf", "prayers",
179
+ "element", "agent", "cries", "songs", "theatre", "creek", "match", "ashamed", "runs", "aspect", "canada", "treat",
180
+ "legal", "arts", "corps", "noon", "nearest", "scale", "hunt", "shadows", "winds", "landed", "beings", "tiny",
181
+ "gardens", "bless", "clerk", "doth", "derived", "hang", "heavens", "cape", "ours", "brow", "test", "senses",
182
+ "opposed", "error", "driving", "nest", "headed", "groups", "princes", "feast", "admiral", "poured", "brings",
183
+ "pursued", "germans", "bears", "lesson", "journal", "unusual", "marched", "wing", "remove", "studied", "passes",
184
+ "actions", "burden", "colony", "scott", "bride", "yield", "crying", "forming", "rifle", "powder", "rested", "shake",
185
+ "guest", "begged", "occur", "altar", "sorts", "beaten", "wave", "papa", "sang", "depth", "aloud", "contact",
186
+ "intense", "marble", "poverty", "detail", "writes", "root", "metal", "jean", "existed", "ability", "purple",
187
+ "counsel", "lane", "wives", "sending", "heavily", "leaders", "queer", "tales", "sins", "mexico", "protect", "clock",
188
+ "stuff", "jones", "pine", "records", "cave", "baron", "medical", "pick", "stayed", "magic", "seventy", "pour",
189
+ "saddle", "sank", "dread", "deny", "wire", "rude", "holds", "strain", "autumn", "shed", "shoot", "settle", "basis",
190
+ "readers", "route", "beach", "safely", "oxford", "notion", "thunder", "sale", "saints", "pound", "shock", "elected",
191
+ "signed", "whereas", "maiden", "courts", "rarely", "wolf", "mamma", "billy", "student", "charity", "impulse",
192
+ "tones", "mortal", "raising", "wedding", "belongs", "chest", "sharply", "sounded", "poets", "lawyer", "hugh",
193
+ "plays", "awake", "landing", "debt", "alice", "venture", "idle", "uniform", "contain", "tobacco", "boots", "fears",
194
+ "leaned", "studies", "customs", "prize", "stir", "obey", "oath", "badly", "pursuit", "resting",
195
195
  ];
196
196
 
197
197
  export function generatePassword(wordCount: number): string {
@@ -493,6 +493,7 @@ export function startRemoteFileServer(options: RemoteFileServerOptions): Promise
493
493
  ws.send(Buffer.concat([len, h, body || EMPTY]));
494
494
  };
495
495
  void (async () => {
496
+ // TODO: Fix this code. It's some of the worst code I've ever seen. All the try-catches are bad. There should just be a single try-catch. The comparisons are bad. They're pretending like null can exist in places when it can't. We're using the any type for no reason.
496
497
  let header: any;
497
498
  let body: Buffer;
498
499
  try {
@@ -608,9 +609,7 @@ export async function autocompactBulkDatabases(root: string): Promise<void> {
608
609
  } catch { continue; } // no bulkDatabases2 here
609
610
  for (const name of names) {
610
611
  try {
611
- const t = Date.now();
612
- const res = await getCompactor(baseDir, name).tryMergeNow();
613
- if (res.merged) console.log(` [autocompact] ${name}: merged (${Date.now() - t}ms)`);
612
+ await getCompactor(baseDir, name).tryMergeNow();
614
613
  } catch (e) {
615
614
  console.warn(` [autocompact] ${name}: failed — ${(e as Error).message}`);
616
615
  }