@iebh/tera-fy 2.2.4 → 2.2.5

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/api.md CHANGED
@@ -22,149 +22,151 @@
22
22
  * [sizeFormatted][18]
23
23
  * [mime][19]
24
24
  * [meta][20]
25
- * [getContents][21]
26
- * [Parameters][22]
27
- * [setContents][23]
25
+ * [isFolder][21]
26
+ * [files][22]
27
+ * [getContents][23]
28
28
  * [Parameters][24]
29
- * [getRefs][25]
30
- * [setRefs][26]
31
- * [Parameters][27]
32
- * [serialize][28]
33
- * [deserialize][29]
34
- * [Parameters][30]
35
- * [TeraFy][31]
36
- * [settings][32]
37
- * [Properties][33]
38
- * [events][34]
39
- * [dom][35]
40
- * [Properties][36]
41
- * [methods][37]
42
- * [plugins][38]
43
- * [namespaces][39]
44
- * [send][40]
45
- * [Parameters][41]
46
- * [sendRaw][42]
29
+ * [setContents][25]
30
+ * [Parameters][26]
31
+ * [getRefs][27]
32
+ * [setRefs][28]
33
+ * [Parameters][29]
34
+ * [serialize][30]
35
+ * [deserialize][31]
36
+ * [Parameters][32]
37
+ * [TeraFy][33]
38
+ * [settings][34]
39
+ * [Properties][35]
40
+ * [events][36]
41
+ * [dom][37]
42
+ * [Properties][38]
43
+ * [methods][39]
44
+ * [plugins][40]
45
+ * [namespaces][41]
46
+ * [send][42]
47
47
  * [Parameters][43]
48
- * [rpc][44]
48
+ * [sendRaw][44]
49
49
  * [Parameters][45]
50
- * [acceptMessage][46]
50
+ * [rpc][46]
51
51
  * [Parameters][47]
52
- * [acceptPostboxes][48]
53
- * [init][49]
54
- * [Parameters][50]
55
- * [detectMode][51]
56
- * [injectComms][52]
57
- * [handshakeLoop][53]
58
- * [Parameters][54]
59
- * [Properties][55]
60
- * [injectStylesheet][56]
61
- * [injectMethods][57]
62
- * [debug][58]
63
- * [Parameters][59]
64
- * [set][60]
52
+ * [acceptMessage][48]
53
+ * [Parameters][49]
54
+ * [acceptPostboxes][50]
55
+ * [init][51]
56
+ * [Parameters][52]
57
+ * [detectMode][53]
58
+ * [injectComms][54]
59
+ * [handshakeLoop][55]
60
+ * [Parameters][56]
61
+ * [Properties][57]
62
+ * [injectStylesheet][58]
63
+ * [injectMethods][59]
64
+ * [debug][60]
65
65
  * [Parameters][61]
66
- * [setIfDev][62]
66
+ * [set][62]
67
67
  * [Parameters][63]
68
- * [use][64]
68
+ * [setIfDev][64]
69
69
  * [Parameters][65]
70
- * [mixin][66]
70
+ * [use][66]
71
71
  * [Parameters][67]
72
- * [toggleDevMode][68]
72
+ * [mixin][68]
73
73
  * [Parameters][69]
74
- * [toggleFocus][70]
74
+ * [toggleDevMode][70]
75
75
  * [Parameters][71]
76
- * [getEntropicString][72]
76
+ * [toggleFocus][72]
77
77
  * [Parameters][73]
78
- * [selectProjectFile][74]
78
+ * [getEntropicString][74]
79
79
  * [Parameters][75]
80
- * [mountNamespace][76]
81
- * [Parameters][77]
82
- * [Actual namespace mounting function designed to be overriden by plugins][78]
80
+ * [selectProjectFile][76]
81
+ * [Parameters][77]
82
+ * [mountNamespace][78]
83
83
  * [Parameters][79]
84
- * [unmountNamespace][80]
84
+ * [Actual namespace mounting function designed to be overriden by plugins][80]
85
85
  * [Parameters][81]
86
- * [Actual namespace unmounting function designed to be overriden by plugins][82]
86
+ * [unmountNamespace][82]
87
87
  * [Parameters][83]
88
- * [handshake][84]
89
- * [Properties][85]
90
- * [setServerVerbosity][86]
91
- * [Parameters][87]
92
- * [User][88]
93
- * [Properties][89]
94
- * [getUser][90]
95
- * [getCredentials][91]
96
- * [requireUser][92]
97
- * [Parameters][93]
98
- * [Project][94]
99
- * [getProject][95]
100
- * [getProjects][96]
101
- * [setActiveProject][97]
102
- * [Parameters][98]
103
- * [requireProject][99]
88
+ * [Actual namespace unmounting function designed to be overriden by plugins][84]
89
+ * [Parameters][85]
90
+ * [handshake][86]
91
+ * [Properties][87]
92
+ * [setServerVerbosity][88]
93
+ * [Parameters][89]
94
+ * [User][90]
95
+ * [Properties][91]
96
+ * [getUser][92]
97
+ * [getCredentials][93]
98
+ * [requireUser][94]
99
+ * [Parameters][95]
100
+ * [Project][96]
101
+ * [getProject][97]
102
+ * [getProjects][98]
103
+ * [setActiveProject][99]
104
104
  * [Parameters][100]
105
- * [selectProject][101]
105
+ * [requireProject][101]
106
106
  * [Parameters][102]
107
- * [getNamespace][103]
107
+ * [selectProject][103]
108
108
  * [Parameters][104]
109
- * [setNamespace][105]
109
+ * [getNamespace][105]
110
110
  * [Parameters][106]
111
- * [listNamespaces][107]
112
- * [Properties][108]
113
- * [getProjectState][109]
114
- * [Parameters][110]
115
- * [setProjectState][111]
111
+ * [setNamespace][107]
112
+ * [Parameters][108]
113
+ * [listNamespaces][109]
114
+ * [Properties][110]
115
+ * [getProjectState][111]
116
116
  * [Parameters][112]
117
- * [setProjectStateDefaults][113]
117
+ * [setProjectState][113]
118
118
  * [Parameters][114]
119
- * [setProjectStateRefresh][115]
120
- * [FileFilters][116]
121
- * [Properties][117]
122
- * [selectProjectFile][118]
123
- * [Parameters][119]
124
- * [getProjectFiles][120]
119
+ * [setProjectStateDefaults][115]
120
+ * [Parameters][116]
121
+ * [setProjectStateRefresh][117]
122
+ * [FileFilters][118]
123
+ * [Properties][119]
124
+ * [selectProjectFile][120]
125
125
  * [Parameters][121]
126
- * [getProjectFileContents][122]
126
+ * [getProjectFiles][122]
127
127
  * [Parameters][123]
128
- * [getProjectFile][124]
128
+ * [getProjectFileContents][124]
129
129
  * [Parameters][125]
130
- * [createProjectFile][126]
130
+ * [getProjectFile][126]
131
131
  * [Parameters][127]
132
- * [moveProjectFile][128]
132
+ * [createProjectFile][128]
133
133
  * [Parameters][129]
134
- * [deleteProjectFile][130]
134
+ * [moveProjectFile][130]
135
135
  * [Parameters][131]
136
- * [setProjectFileContents][132]
136
+ * [deleteProjectFile][132]
137
137
  * [Parameters][133]
138
- * [createProjectFolder][134]
138
+ * [setProjectFileContents][134]
139
139
  * [Parameters][135]
140
- * [deleteProjectFolder][136]
140
+ * [createProjectFolder][136]
141
141
  * [Parameters][137]
142
- * [selectProjectLibrary][138]
142
+ * [deleteProjectFolder][138]
143
143
  * [Parameters][139]
144
- * [getProjectLibrary][140]
144
+ * [selectProjectLibrary][140]
145
145
  * [Parameters][141]
146
- * [setProjectLibrary][142]
146
+ * [getProjectLibrary][142]
147
147
  * [Parameters][143]
148
- * [projectLog][144]
148
+ * [setProjectLibrary][144]
149
149
  * [Parameters][145]
150
- * [setPage][146]
150
+ * [projectLog][146]
151
151
  * [Parameters][147]
152
- * [uiAlert][148]
152
+ * [setPage][148]
153
153
  * [Parameters][149]
154
- * [uiConfirm][150]
154
+ * [uiAlert][150]
155
155
  * [Parameters][151]
156
- * [uiPanic][152]
156
+ * [uiConfirm][152]
157
157
  * [Parameters][153]
158
- * [uiProgress][154]
158
+ * [uiPanic][154]
159
159
  * [Parameters][155]
160
- * [uiPrompt][156]
160
+ * [uiProgress][156]
161
161
  * [Parameters][157]
162
- * [uiThrow][158]
162
+ * [uiPrompt][158]
163
163
  * [Parameters][159]
164
- * [uiWindow][160]
164
+ * [uiThrow][160]
165
165
  * [Parameters][161]
166
- * [uiSplat][162]
166
+ * [uiWindow][162]
167
167
  * [Parameters][163]
168
+ * [uiSplat][164]
169
+ * [Parameters][165]
168
170
 
169
171
  ## ProjectFile
170
172
 
@@ -175,119 +177,131 @@ A project file fetched from TERA
175
177
  The TERA compatible unique ID of the file
176
178
  NOTE: This is computed each time from the Base64 of the file path
177
179
 
178
- Type: [String][164]
180
+ Type: [String][166]
179
181
 
180
182
  ### sbId
181
183
 
182
184
  The raw Supabase UUID of the file
183
185
 
184
- Type: [String][164]
186
+ Type: [String][166]
185
187
 
186
188
  ### name
187
189
 
188
190
  Relative name path (can contain prefix directories) for the human readable file name
189
191
 
190
- Type: [String][164]
192
+ Type: [String][166]
191
193
 
192
194
  ### icon
193
195
 
194
196
  CSS class to use as the file icon
195
197
 
196
- Type: [String][164]
198
+ Type: [String][166]
197
199
 
198
200
  ### path
199
201
 
200
202
  Full path to the file
201
203
  This is also used as the unique identifier within the project
202
204
 
203
- Type: [String][164]
205
+ Type: [String][166]
204
206
 
205
207
  ### url
206
208
 
207
209
  Fully qualified URL to view / access / download the file from TERA
208
210
  This will usually open an edit UI within the TERA site
209
211
 
210
- Type: [String][164]
212
+ Type: [String][166]
211
213
 
212
214
  ### teraUrl
213
215
 
214
216
  Rewrite of the URL where the absolute URL has been removed in place of a relative path, assuming the owner project is active
215
217
  This is used to direct to the edit/view/download UI when the files project is active and is usually used in place of URL for TERA related operations
216
218
 
217
- Type: [String][164]
219
+ Type: [String][166]
218
220
 
219
221
  ### parsedName
220
222
 
221
223
  An object representing meta file parts of a file name
222
224
 
223
- Type: [Object][165]
225
+ Type: [Object][167]
224
226
 
225
227
  #### Properties
226
228
 
227
- * `basename` **[String][164]** The filename + extention (i.e. everything without directory name)
228
- * `filename` **[String][164]** The file portion of the name (basename without the extension)
229
- * `ext` **[String][164]** The extension portion of the name (always lower case)
230
- * `dirName` **[String][164]** The directory path portion of the name
229
+ * `basename` **[String][166]** The filename + extention (i.e. everything without directory name)
230
+ * `filename` **[String][166]** The file portion of the name (basename without the extension)
231
+ * `ext` **[String][166]** The extension portion of the name (always lower case)
232
+ * `dirName` **[String][166]** The directory path portion of the name
231
233
 
232
234
  ### created
233
235
 
234
236
  A date representing when the file was created
235
237
 
236
- Type: [Date][166]
238
+ Type: [Date][168]
237
239
 
238
240
  ### createdFormatted
239
241
 
240
242
  A human readable, formatted version of "created"
241
243
 
242
- Type: [String][164]
244
+ Type: [String][166]
243
245
 
244
246
  ### modified
245
247
 
246
248
  A date representing when the file was created
247
249
 
248
- Type: [Date][166]
250
+ Type: [Date][168]
249
251
 
250
252
  ### modifiedFormatted
251
253
 
252
254
  A human readable, formatted version of "modified"
253
255
 
254
- Type: [String][164]
256
+ Type: [String][166]
255
257
 
256
258
  ### accessed
257
259
 
258
260
  A date representing when the file was last accessed
259
261
 
260
- Type: [Date][166]
262
+ Type: [Date][168]
261
263
 
262
264
  ### accessedFormatted
263
265
 
264
266
  A human readable, formatted version of "accessed"
265
267
 
266
- Type: [String][164]
268
+ Type: [String][166]
267
269
 
268
270
  ### size
269
271
 
270
272
  Size, in bytes, of the file
271
273
 
272
- Type: [Number][167]
274
+ Type: [Number][169]
273
275
 
274
276
  ### sizeFormatted
275
277
 
276
278
  A human readable, formatted version of the file size
277
279
 
278
- Type: [String][164]
280
+ Type: [String][166]
279
281
 
280
282
  ### mime
281
283
 
282
284
  The associated mime type for the file
283
285
 
284
- Type: [String][164]
286
+ Type: [String][166]
285
287
 
286
288
  ### meta
287
289
 
288
290
  Additional meta information for the file
289
291
 
290
- Type: [Object][165]
292
+ Type: [Object][167]
293
+
294
+ ### isFolder
295
+
296
+ Whether this is a folder or not
297
+
298
+ Type: [boolean][170]
299
+
300
+ ### files
301
+
302
+ If it is a folder, it will have an array of files in the folder
303
+
304
+ Type: [Array][171]<[ProjectFile][1]>
291
305
 
292
306
  ### getContents
293
307
 
@@ -297,9 +311,9 @@ Fetch the raw file contents as a Blob
297
311
 
298
312
  #### Parameters
299
313
 
300
- * `options` **[Object][165]?** Additioanl options to mutate behaviour
314
+ * `options` **[Object][167]?** Additioanl options to mutate behaviour
301
315
 
302
- Returns **[Promise][168]<[Blob][169]>** The eventual raw file contents as a Blob
316
+ Returns **[Promise][172]<[Blob][173]>** The eventual raw file contents as a Blob
303
317
 
304
318
  ### setContents
305
319
 
@@ -309,9 +323,9 @@ Overwrite the contents of a file with new content
309
323
 
310
324
  #### Parameters
311
325
 
312
- * `contents` **(File | [Blob][169] | [FormData][170] | [Object][165] | [Array][171])** The new file contents
326
+ * `contents` **(File | [Blob][173] | [FormData][174] | [Object][167] | [Array][171])** The new file contents
313
327
 
314
- Returns **[Promise][168]\<void>** A promise which resolves when the operation has completed
328
+ Returns **[Promise][172]\<void>** A promise which resolves when the operation has completed
315
329
 
316
330
  ### getRefs
317
331
 
@@ -319,7 +333,7 @@ Returns **[Promise][168]\<void>** A promise which resolves when the operation ha
319
333
 
320
334
  Fetch the file contents as an array of Reflib refs
321
335
 
322
- Returns **[Promise][168]<[Array][171]\<RefLibRef>>** An eventual array of RefLib references
336
+ Returns **[Promise][172]<[Array][171]\<RefLibRef>>** An eventual array of RefLib references
323
337
 
324
338
  ### setRefs
325
339
 
@@ -331,16 +345,16 @@ Overwrite the contents of a file with a new collection of Reflib refs
331
345
 
332
346
  * `refs` **[Array][171]\<RefLibRef>** Collection of references for the selected library
333
347
 
334
- Returns **[Promise][168]\<void>** A promise which resolves when the operation has completed
348
+ Returns **[Promise][172]\<void>** A promise which resolves when the operation has completed
335
349
 
336
350
  ### serialize
337
351
 
338
- * **See**: [https://developer.mozilla.org/en-US/docs/Web/API/Web\_Workers\_API/Structured\_clone\_algorithm][172]
352
+ * **See**: [https://developer.mozilla.org/en-US/docs/Web/API/Web\_Workers\_API/Structured\_clone\_algorithm][175]
339
353
 
340
354
  Compress a file state down into a serializable entity
341
355
  By default this computes a Structured Clone which can be stringified
342
356
 
343
- Returns **[Object][165]** A Structured Clone compatible representation of this ProjectFile instance
357
+ Returns **[Object][167]** A Structured Clone compatible representation of this ProjectFile instance
344
358
 
345
359
  ### deserialize
346
360
 
@@ -350,7 +364,7 @@ as it's not included in the serialized output.
350
364
 
351
365
  #### Parameters
352
366
 
353
- * `data` **[Object][165]** An input object created via `ProjectFiles.serialize()` (MUST include a 'tera' property added manually)
367
+ * `data` **[Object][167]** An input object created via `ProjectFiles.serialize()` (MUST include a 'tera' property added manually)
354
368
 
355
369
  Returns **[ProjectFile][1]** A ProjectFile instance setup against the deserializzed data
356
370
 
@@ -362,23 +376,23 @@ Main Tera-Fy Client (class singleton) to be used in a frontend browser
362
376
 
363
377
  Various settings to configure behaviour
364
378
 
365
- Type: [Object][165]
379
+ Type: [Object][167]
366
380
 
367
381
  #### Properties
368
382
 
369
- * `session` **[String][164]** Unique session signature for this instance of TeraFy, used to sign server messages, if falsy `getEntropicString(16)` is used to populate
370
- * `devMode` **[Boolean][173]** Operate in Dev-Mode - i.e. force outer refresh when encountering an existing TeraFy instance + be more tolerent of weird iframe origins
371
- * `verbosity` **[Number][167]** Verbosity level, the higher the more chatty TeraFY will be. Set to zero to disable all `debug()` call output
383
+ * `session` **[String][166]** Unique session signature for this instance of TeraFy, used to sign server messages, if falsy `getEntropicString(16)` is used to populate
384
+ * `devMode` **[Boolean][170]** Operate in Dev-Mode - i.e. force outer refresh when encountering an existing TeraFy instance + be more tolerent of weird iframe origins
385
+ * `verbosity` **[Number][169]** Verbosity level, the higher the more chatty TeraFY will be. Set to zero to disable all `debug()` call output
372
386
  * `mode` **(`"detect"` | `"parent"` | `"child"` | `"popup"`)** How to communicate with TERA. 'parent' assumes that the parent of the current document is TERA, 'child' spawns an iFrame and uses TERA there, 'detect' tries parent and switches to `modeFallback` if communication fails
373
- * `modeFallback` **[String][164]** Method to use when all method detection fails
374
- * `modeOverrides` **[Object][165]<[Object][165]<[Function][174]>>** Functions to run when switching to specific modes, these are typically used to augment config. Called as `(config:Object)`
375
- * `modeTimeout` **[Number][167]** How long entities have in 'detect' mode to identify themselves
376
- * `siteUrl` **[String][164]** The TERA URL to connect to
377
- * `restrictOrigin` **[String][164]** URL to restrict communications to
378
- * `List` **[Array][171]<[String][164]>** of sandbox allowables for the embedded if in embed mode
379
- * `handshakeInterval` **[Number][167]** Interval in milliseconds when sanning for a handshake
380
- * `handshakeTimeout` **[Number][167]** Interval in milliseconds for when to give up trying to handshake
381
- * `debugPaths` **[Array][171]<([String][164] | [Array][171]<[String][164]>)>?** List of paths (in either dotted or array notation) to enter debugging mode if a change is detected in dev mode e.g. `{debugPaths: ['foo.bar.baz']}`. This really slows down state writes so should only be used for debugging
387
+ * `modeFallback` **[String][166]** Method to use when all method detection fails
388
+ * `modeOverrides` **[Object][167]<[Object][167]<[Function][176]>>** Functions to run when switching to specific modes, these are typically used to augment config. Called as `(config:Object)`
389
+ * `modeTimeout` **[Number][169]** How long entities have in 'detect' mode to identify themselves
390
+ * `siteUrl` **[String][166]** The TERA URL to connect to
391
+ * `restrictOrigin` **[String][166]** URL to restrict communications to
392
+ * `List` **[Array][171]<[String][166]>** of sandbox allowables for the embedded if in embed mode
393
+ * `handshakeInterval` **[Number][169]** Interval in milliseconds when sanning for a handshake
394
+ * `handshakeTimeout` **[Number][169]** Interval in milliseconds for when to give up trying to handshake
395
+ * `debugPaths` **[Array][171]<([String][166] | [Array][171]<[String][166]>)>?** List of paths (in either dotted or array notation) to enter debugging mode if a change is detected in dev mode e.g. `{debugPaths: ['foo.bar.baz']}`. This really slows down state writes so should only be used for debugging
382
396
 
383
397
  ### events
384
398
 
@@ -390,13 +404,13 @@ Type: Mitt
390
404
 
391
405
  DOMElements for this TeraFy instance
392
406
 
393
- Type: [Object][165]
407
+ Type: [Object][167]
394
408
 
395
409
  #### Properties
396
410
 
397
411
  * `el` **DOMElement** The main tera-fy div wrapper
398
412
  * `iframe` **DOMElement** The internal iFrame element (if `settings.mode == 'child'`)
399
- * `popup` **[Window][175]** The popup window context (if `settings.mode == 'popup'`)
413
+ * `popup` **[Window][177]** The popup window context (if `settings.mode == 'popup'`)
400
414
  * `stylesheet` **DOMElement** The corresponding stylesheet
401
415
 
402
416
  ### methods
@@ -404,7 +418,7 @@ Type: [Object][165]
404
418
  List of function stubs mapped from the server to here
405
419
  This array is forms the reference of `TeraFy.METHOD()` objects to provide locally which will be mapped via `TeraFy.rpc(METHOD, ...args)`
406
420
 
407
- Type: [Array][171]<[String][164]>
421
+ Type: [Array][171]<[String][166]>
408
422
 
409
423
  ### plugins
410
424
 
@@ -418,7 +432,7 @@ Active namespaces we are subscribed to
418
432
  Each key is the namespace name with the value as the local reactive \ observer \ object equivelent
419
433
  The key string is always of the form `${ENTITY}::${ID}` e.g. `projects:1234`
420
434
 
421
- Type: [Object][165]<[Object][165]>
435
+ Type: [Object][167]<[Object][167]>
422
436
 
423
437
  ### send
424
438
 
@@ -426,9 +440,9 @@ Send a message + wait for a response object
426
440
 
427
441
  #### Parameters
428
442
 
429
- * `message` **[Object][165]** Message object to send
443
+ * `message` **[Object][167]** Message object to send
430
444
 
431
- Returns **[Promise][168]\<any>** A promise which resolves when the operation has completed with the remote reply
445
+ Returns **[Promise][172]\<any>** A promise which resolves when the operation has completed with the remote reply
432
446
 
433
447
  ### sendRaw
434
448
 
@@ -437,7 +451,7 @@ This function does not return or wait for a reply - use `send()` for that
437
451
 
438
452
  #### Parameters
439
453
 
440
- * `message` **[Object][165]** Message object to send
454
+ * `message` **[Object][167]** Message object to send
441
455
 
442
456
  ### rpc
443
457
 
@@ -445,10 +459,10 @@ Call an RPC function in the server instance
445
459
 
446
460
  #### Parameters
447
461
 
448
- * `method` **[String][164]** The method name to call
462
+ * `method` **[String][166]** The method name to call
449
463
  * `args` **...any?** Optional arguments to pass to the function
450
464
 
451
- Returns **[Promise][168]\<any>** The resolved output of the server function
465
+ Returns **[Promise][172]\<any>** The resolved output of the server function
452
466
 
453
467
  ### acceptMessage
454
468
 
@@ -456,9 +470,9 @@ Accept an incoming message
456
470
 
457
471
  #### Parameters
458
472
 
459
- * `rawMessage` **[MessageEvent][176]** Raw message event to process
473
+ * `rawMessage` **[MessageEvent][178]** Raw message event to process
460
474
 
461
- Returns **[Promise][168]** A promise which will resolve when the message has been processed
475
+ Returns **[Promise][172]** A promise which will resolve when the message has been processed
462
476
 
463
477
  ### acceptPostboxes
464
478
 
@@ -471,22 +485,22 @@ This function can only be called once and will return the existing init() worker
471
485
 
472
486
  #### Parameters
473
487
 
474
- * `options` **[Object][165]?** Additional options to merge into `settings` via `set`
488
+ * `options` **[Object][167]?** Additional options to merge into `settings` via `set`
475
489
 
476
- Returns **[Promise][168]<[TeraFy][31]>** An eventual promise which will resovle with this terafy instance
490
+ Returns **[Promise][172]<[TeraFy][33]>** An eventual promise which will resovle with this terafy instance
477
491
 
478
492
  ### detectMode
479
493
 
480
494
  Populate `settings.mode`
481
495
  Try to communicate with a parent frame, if none assume we need to fallback to child mode
482
496
 
483
- Returns **[Promise][168]<[String][164]>** A promise which will resolve with the detected mode to use
497
+ Returns **[Promise][172]<[String][166]>** A promise which will resolve with the detected mode to use
484
498
 
485
499
  ### injectComms
486
500
 
487
501
  Find an existing active TERA server OR initalize one
488
502
 
489
- Returns **[Promise][168]** A promise which will resolve when the loading has completed and we have found a parent TERA instance or initiallized a child
503
+ Returns **[Promise][172]** A promise which will resolve when the loading has completed and we have found a parent TERA instance or initiallized a child
490
504
 
491
505
  ### handshakeLoop
492
506
 
@@ -494,20 +508,20 @@ Keep trying to handshake until the target responds
494
508
 
495
509
  #### Parameters
496
510
 
497
- * `options` **[Object][165]?** Additional options to mutate behaviour
511
+ * `options` **[Object][167]?** Additional options to mutate behaviour
498
512
 
499
513
  #### Properties
500
514
 
501
- * `handshakeInterval` **[Number][167]?** Interval in milliseconds when sanning for a handshake, defaults to global setting
502
- * `handshakeTimeout` **[Number][167]?** Interval in milliseconds for when to give up trying to handshake, defaults to global setting
515
+ * `handshakeInterval` **[Number][169]?** Interval in milliseconds when sanning for a handshake, defaults to global setting
516
+ * `handshakeTimeout` **[Number][169]?** Interval in milliseconds for when to give up trying to handshake, defaults to global setting
503
517
 
504
- Returns **[Promise][168]** A promise which will either resolve when the handshake is successful OR fail with 'TIMEOUT'
518
+ Returns **[Promise][172]** A promise which will either resolve when the handshake is successful OR fail with 'TIMEOUT'
505
519
 
506
520
  ### injectStylesheet
507
521
 
508
522
  Inject a local stylesheet to handle TERA server functionality
509
523
 
510
- Returns **[Promise][168]** A promise which will resolve when the loading has completed and we have found a parent TERA instance or initiallized a child
524
+ Returns **[Promise][172]** A promise which will resolve when the loading has completed and we have found a parent TERA instance or initiallized a child
511
525
 
512
526
  ### injectMethods
513
527
 
@@ -522,7 +536,7 @@ This function will only act if `settings.devMode` is truthy
522
536
 
523
537
  * `msg` **...any?** Output to show
524
538
  * `method` **(`"INFO"` | `"LOG"` | `"WARN"` | `"ERROR"`)** Logging method to use (optional, default `'LOG'`)
525
- * `verboseLevel` **[Number][167]** The verbosity level to trigger at. If `settings.verbosity` is lower than this, the message is ignored (optional, default `1`)
539
+ * `verboseLevel` **[Number][169]** The verbosity level to trigger at. If `settings.verbosity` is lower than this, the message is ignored (optional, default `1`)
526
540
 
527
541
  ### set
528
542
 
@@ -531,13 +545,13 @@ This function also routes 'special' keys like `devMode` to their internal handle
531
545
 
532
546
  #### Parameters
533
547
 
534
- * `key` **([String][164] | [Object][165])** Either a single setting key to set or an object to merge
548
+ * `key` **([String][166] | [Object][167])** Either a single setting key to set or an object to merge
535
549
  * `value` **any** The value to set if `key` is a string
536
- * `options` **[Object][165]?** Additional options to mutate behaviour
550
+ * `options` **[Object][167]?** Additional options to mutate behaviour
537
551
 
538
- * `options.ignoreNullish` **[Boolean][173]** If falsy, this forces the setting of undefined or null values rather than ignoring them when specifying values by string (optional, default `true`)
552
+ * `options.ignoreNullish` **[Boolean][170]** If falsy, this forces the setting of undefined or null values rather than ignoring them when specifying values by string (optional, default `true`)
539
553
 
540
- Returns **[TeraFy][31]** This chainable terafy instance
554
+ Returns **[TeraFy][33]** This chainable terafy instance
541
555
 
542
556
  ### setIfDev
543
557
 
@@ -547,11 +561,11 @@ Set or merge settings - but only in dev mode and only if the value is not undefi
547
561
 
548
562
  #### Parameters
549
563
 
550
- * `key` **([String][164] | [Object][165])** Either a single setting key to set or an object to merge
564
+ * `key` **([String][166] | [Object][167])** Either a single setting key to set or an object to merge
551
565
  * `value` **any** The value to set if `key` is a string
552
- * `options` **[Object][165]?** Additional options to mutate behaviour
566
+ * `options` **[Object][167]?** Additional options to mutate behaviour
553
567
 
554
- Returns **[TeraFy][31]** This chainable terafy instance
568
+ Returns **[TeraFy][33]** This chainable terafy instance
555
569
 
556
570
  ### use
557
571
 
@@ -559,10 +573,10 @@ Include a TeraFy client plugin
559
573
 
560
574
  #### Parameters
561
575
 
562
- * `source` **([Function][174] | [Object][165] | [String][164])** Either the JS module class, singleton object or URL to fetch it from. Eventually constructed as invoked as `(teraClient:TeraFy, options:Object)`
563
- * `options` **[Object][165]?** Additional options to mutate behaviour during construction (pass options to init() to intialize later options)
576
+ * `source` **([Function][176] | [Object][167] | [String][166])** Either the JS module class, singleton object or URL to fetch it from. Eventually constructed as invoked as `(teraClient:TeraFy, options:Object)`
577
+ * `options` **[Object][167]?** Additional options to mutate behaviour during construction (pass options to init() to intialize later options)
564
578
 
565
- Returns **[TeraFy][31]** This chainable terafy instance
579
+ Returns **[TeraFy][33]** This chainable terafy instance
566
580
 
567
581
  ### mixin
568
582
 
@@ -570,8 +584,8 @@ Internal function used by use() to merge an external declared singleton against
570
584
 
571
585
  #### Parameters
572
586
 
573
- * `target` **[Object][165]** Initalied class instance to extend
574
- * `source` **[Object][165]** Initalized source object to extend from
587
+ * `target` **[Object][167]** Initalied class instance to extend
588
+ * `source` **[Object][167]** Initalized source object to extend from
575
589
 
576
590
  ### toggleDevMode
577
591
 
@@ -583,9 +597,9 @@ This function also accepts meta values:
583
597
 
584
598
  #### Parameters
585
599
 
586
- * `devModeEnabled` **(`"toggle"` | `"proxy"` | [Boolean][173])** Optional boolean to force dev mode or specify other behaviour (optional, default `'toggle'`)
600
+ * `devModeEnabled` **(`"toggle"` | `"proxy"` | [Boolean][170])** Optional boolean to force dev mode or specify other behaviour (optional, default `'toggle'`)
587
601
 
588
- Returns **[TeraFy][31]** This chainable terafy instance
602
+ Returns **[TeraFy][33]** This chainable terafy instance
589
603
 
590
604
  ### toggleFocus
591
605
 
@@ -594,7 +608,7 @@ This is usually because the server component wants to perform some user activity
594
608
 
595
609
  #### Parameters
596
610
 
597
- * `isFocused` **([String][164] | [Boolean][173])** Whether to fullscreen the embedded component (optional, default `'toggle'`)
611
+ * `isFocused` **([String][166] | [Boolean][170])** Whether to fullscreen the embedded component (optional, default `'toggle'`)
598
612
 
599
613
  ### getEntropicString
600
614
 
@@ -602,9 +616,9 @@ Generate random entropic character string in Base64
602
616
 
603
617
  #### Parameters
604
618
 
605
- * `maxLength` **[Number][167]** Maximum lengh of the genrated string (optional, default `32`)
619
+ * `maxLength` **[Number][169]** Maximum lengh of the genrated string (optional, default `32`)
606
620
 
607
- Returns **[String][164]**&#x20;
621
+ Returns **[String][166]**&#x20;
608
622
 
609
623
  ### selectProjectFile
610
624
 
@@ -616,7 +630,7 @@ This is an pre-requisite step for requireProject()
616
630
 
617
631
  * `options` **any?**&#x20;
618
632
 
619
- Returns **[Promise][168]** A promise which will resolve if the there is a user and they are logged in
633
+ Returns **[Promise][172]** A promise which will resolve if the there is a user and they are logged in
620
634
 
621
635
  ## mountNamespace
622
636
 
@@ -625,17 +639,17 @@ This generally creates whatever framework flavoured reactive/observer/object is
625
639
 
626
640
  ### Parameters
627
641
 
628
- * `name` **[String][164]** The alias of the namespace, this should be alphanumeric + hyphens + underscores
642
+ * `name` **[String][166]** The alias of the namespace, this should be alphanumeric + hyphens + underscores
629
643
 
630
- Returns **[Promise][168]\<Reactive>** A promise which resolves to the reactive object
644
+ Returns **[Promise][172]\<Reactive>** A promise which resolves to the reactive object
631
645
 
632
646
  ## Actual namespace mounting function designed to be overriden by plugins
633
647
 
634
648
  ### Parameters
635
649
 
636
- * `name` **[String][164]** The alias of the namespace, this should be alphanumeric + hyphens + underscores
650
+ * `name` **[String][166]** The alias of the namespace, this should be alphanumeric + hyphens + underscores
637
651
 
638
- Returns **[Promise][168]** A promise which resolves when the mount operation has completed
652
+ Returns **[Promise][172]** A promise which resolves when the mount operation has completed
639
653
 
640
654
  ## unmountNamespace
641
655
 
@@ -644,17 +658,17 @@ This function will remove the namespace from `namespaces`, cleaning up any memor
644
658
 
645
659
  ### Parameters
646
660
 
647
- * `name` **[String][164]** The name of the namespace to unmount
661
+ * `name` **[String][166]** The name of the namespace to unmount
648
662
 
649
- Returns **[Promise][168]** A promise which resolves when the operation has completed
663
+ Returns **[Promise][172]** A promise which resolves when the operation has completed
650
664
 
651
665
  ## Actual namespace unmounting function designed to be overriden by plugins
652
666
 
653
667
  ### Parameters
654
668
 
655
- * `name` **[String][164]** The name of the namespace to unmount
669
+ * `name` **[String][166]** The name of the namespace to unmount
656
670
 
657
- Returns **[Promise][168]** A promise which resolves when the operation has completed
671
+ Returns **[Promise][172]** A promise which resolves when the operation has completed
658
672
 
659
673
  ## handshake
660
674
 
@@ -662,9 +676,9 @@ Return basic server information as a form of validation
662
676
 
663
677
  ### Properties
664
678
 
665
- * `date` **[Date][166]** Server date
679
+ * `date` **[Date][168]** Server date
666
680
 
667
- Returns **[Promise][168]<[Object][165]>** Basic promise result
681
+ Returns **[Promise][172]<[Object][167]>** Basic promise result
668
682
 
669
683
  ## setServerVerbosity
670
684
 
@@ -672,7 +686,7 @@ RPC callback to set the server verbostiy level
672
686
 
673
687
  ### Parameters
674
688
 
675
- * `verbosity` **[Number][167]** The desired server verbosity level
689
+ * `verbosity` **[Number][169]** The desired server verbosity level
676
690
 
677
691
  ## User
678
692
 
@@ -680,22 +694,22 @@ User / active session within TERA
680
694
 
681
695
  ### Properties
682
696
 
683
- * `id` **[String][164]** Unique identifier of the user
684
- * `email` **[String][164]** The email address of the current user
685
- * `name` **[String][164]** The provided full name of the user
686
- * `isSubscribed` **[Boolean][173]** Whether the active user has a TERA subscription
697
+ * `id` **[String][166]** Unique identifier of the user
698
+ * `email` **[String][166]** The email address of the current user
699
+ * `name` **[String][166]** The provided full name of the user
700
+ * `isSubscribed` **[Boolean][170]** Whether the active user has a TERA subscription
687
701
 
688
702
  ## getUser
689
703
 
690
704
  Fetch the current session user
691
705
 
692
- Returns **[Promise][168]<[User][88]>** The current logged in user or null if none
706
+ Returns **[Promise][172]<[User][90]>** The current logged in user or null if none
693
707
 
694
708
  ## getCredentials
695
709
 
696
710
  Provide an object of credentials for 3rd party services like Firebase/Supabase
697
711
 
698
- Returns **[Object][165]** An object containing 3rd party service credentials
712
+ Returns **[Object][167]** An object containing 3rd party service credentials
699
713
 
700
714
  ## requireUser
701
715
 
@@ -705,11 +719,11 @@ This is an pre-requisite step for requireProject()
705
719
 
706
720
  ### Parameters
707
721
 
708
- * `options` **[Object][165]?** Additional options to mutate behaviour
722
+ * `options` **[Object][167]?** Additional options to mutate behaviour
709
723
 
710
- * `options.forceRetry` **[Boolean][173]** Forcabily try to refresh the user state (optional, default `false`)
724
+ * `options.forceRetry` **[Boolean][170]** Forcabily try to refresh the user state (optional, default `false`)
711
725
 
712
- Returns **[Promise][168]<[User][88]>** The current logged in user or null if none
726
+ Returns **[Promise][172]<[User][90]>** The current logged in user or null if none
713
727
 
714
728
  ## Project
715
729
 
@@ -719,13 +733,13 @@ Project entry within TERA
719
733
 
720
734
  Get the currently active project, if any
721
735
 
722
- Returns **[Promise][168]<([Project][94] | null)>** The currently active project, if any
736
+ Returns **[Promise][172]<([Project][96] | null)>** The currently active project, if any
723
737
 
724
738
  ## getProjects
725
739
 
726
740
  Get a list of projects the current session user has access to
727
741
 
728
- Returns **[Promise][168]<[Array][171]<[Project][94]>>** Collection of projects the user has access to
742
+ Returns **[Promise][172]<[Array][171]<[Project][96]>>** Collection of projects the user has access to
729
743
 
730
744
  ## setActiveProject
731
745
 
@@ -733,7 +747,7 @@ Set the currently active project within TERA
733
747
 
734
748
  ### Parameters
735
749
 
736
- * `project` **([Object][165] | [String][164])** The project to set as active - either the full Project object or its ID
750
+ * `project` **([Object][167] | [String][166])** The project to set as active - either the full Project object or its ID
737
751
 
738
752
  ## requireProject
739
753
 
@@ -742,14 +756,14 @@ Note that this function will percist in asking the uesr even if they try to canc
742
756
 
743
757
  ### Parameters
744
758
 
745
- * `options` **[Object][165]?** Additional options to mutate behaviour
759
+ * `options` **[Object][167]?** Additional options to mutate behaviour
746
760
 
747
- * `options.autoSetActiveProject` **[Boolean][173]** After selecting a project set that project as active in TERA (optional, default `true`)
748
- * `options.title` **[String][164]** The title of the dialog to display (optional, default `"Select a project to work with"`)
749
- * `options.noSelectTitle` **[String][164]** Dialog title when warning the user they need to select something (optional, default `'Select project'`)
750
- * `options.noSelectBody` **[String][164]** Dialog body when warning the user they need to select something (optional, default `'A project needs to be selected to continue'`)
761
+ * `options.autoSetActiveProject` **[Boolean][170]** After selecting a project set that project as active in TERA (optional, default `true`)
762
+ * `options.title` **[String][166]** The title of the dialog to display (optional, default `"Select a project to work with"`)
763
+ * `options.noSelectTitle` **[String][166]** Dialog title when warning the user they need to select something (optional, default `'Select project'`)
764
+ * `options.noSelectBody` **[String][166]** Dialog body when warning the user they need to select something (optional, default `'A project needs to be selected to continue'`)
751
765
 
752
- Returns **[Promise][168]<[Project][94]>** The active project
766
+ Returns **[Promise][172]<[Project][96]>** The active project
753
767
 
754
768
  ## selectProject
755
769
 
@@ -757,13 +771,13 @@ Prompt the user to select a project from those available
757
771
 
758
772
  ### Parameters
759
773
 
760
- * `options` **[Object][165]?** Additional options to mutate behaviour
774
+ * `options` **[Object][167]?** Additional options to mutate behaviour
761
775
 
762
- * `options.title` **[String][164]** The title of the dialog to display (optional, default `"Select a project to work with"`)
763
- * `options.allowCancel` **[Boolean][173]** Advertise cancelling the operation, the dialog can still be cancelled by closing it (optional, default `true`)
764
- * `options.setActive` **[Boolean][173]** Also set the project as active when selected (optional, default `false`)
776
+ * `options.title` **[String][166]** The title of the dialog to display (optional, default `"Select a project to work with"`)
777
+ * `options.allowCancel` **[Boolean][170]** Advertise cancelling the operation, the dialog can still be cancelled by closing it (optional, default `true`)
778
+ * `options.setActive` **[Boolean][170]** Also set the project as active when selected (optional, default `false`)
765
779
 
766
- Returns **[Promise][168]<[Project][94]>** The active project
780
+ Returns **[Promise][172]<[Project][96]>** The active project
767
781
 
768
782
  ## getNamespace
769
783
 
@@ -772,9 +786,9 @@ This can be used for simpler apps which don't have their own reactive / observer
772
786
 
773
787
  ### Parameters
774
788
 
775
- * `name` **[String][164]** The alias of the namespace, this should be alphanumeric + hyphens + underscores
789
+ * `name` **[String][166]** The alias of the namespace, this should be alphanumeric + hyphens + underscores
776
790
 
777
- Returns **[Promise][168]<[Object][165]>** A promise which resolves to the namespace POJO state
791
+ Returns **[Promise][172]<[Object][167]>** A promise which resolves to the namespace POJO state
778
792
 
779
793
  ## setNamespace
780
794
 
@@ -783,13 +797,13 @@ This can be used for simpler apps which don't have their own reactive / observer
783
797
 
784
798
  ### Parameters
785
799
 
786
- * `name` **[String][164]** The name of the namespace
787
- * `state` **[Object][165]** The state to merge
788
- * `options` **[Object][165]?** Additional options to mutate behaviour
800
+ * `name` **[String][166]** The name of the namespace
801
+ * `state` **[Object][167]** The state to merge
802
+ * `options` **[Object][167]?** Additional options to mutate behaviour
789
803
 
790
804
  * `options.method` **(`"merge"` | `"set"`)** How to handle the state. 'merge' (merge a partial state over the existing namespace state), 'set' (completely overwrite the existing namespace) (optional, default `'merge'`)
791
805
 
792
- Returns **[Promise][168]<[Object][165]>** A promise which resolves to the namespace POJO state
806
+ Returns **[Promise][172]<[Object][167]>** A promise which resolves to the namespace POJO state
793
807
 
794
808
  ## listNamespaces
795
809
 
@@ -797,9 +811,9 @@ Return a list of namespaces available to the current project
797
811
 
798
812
  ### Properties
799
813
 
800
- * `name` **[String][164]** The name of the namespace
814
+ * `name` **[String][166]** The name of the namespace
801
815
 
802
- Returns **[Promise][168]<[Array][171]<[Object][165]>>** Collection of available namespaces for the current project
816
+ Returns **[Promise][172]<[Array][171]<[Object][167]>>** Collection of available namespaces for the current project
803
817
 
804
818
  ## getProjectState
805
819
 
@@ -807,12 +821,12 @@ Return the current, full snapshot state of the active project
807
821
 
808
822
  ### Parameters
809
823
 
810
- * `options` **[Object][165]?** Additional options to mutate behaviour
824
+ * `options` **[Object][167]?** Additional options to mutate behaviour
811
825
 
812
- * `options.autoRequire` **[Boolean][173]** Run `requireProject()` automatically before continuing (optional, default `true`)
813
- * `Paths` **[Array][171]<[String][164]>** to subscribe to e.g. \['/users/'],
826
+ * `options.autoRequire` **[Boolean][170]** Run `requireProject()` automatically before continuing (optional, default `true`)
827
+ * `Paths` **[Array][171]<[String][166]>** to subscribe to e.g. \['/users/'],
814
828
 
815
- Returns **[Promise][168]<[Object][165]>** The current project state snapshot
829
+ Returns **[Promise][172]<[Object][167]>** The current project state snapshot
816
830
 
817
831
  ## setProjectState
818
832
 
@@ -824,13 +838,13 @@ Paths can be any valid Lodash.set() value such as:
824
838
 
825
839
  ### Parameters
826
840
 
827
- * `path` **([String][164] | [Array][171]<[String][164]>)** The sub-path within the project state to set
841
+ * `path` **([String][166] | [Array][171]<[String][166]>)** The sub-path within the project state to set
828
842
  * `value` **any** The value to set
829
- * `options` **[Object][165]?** Additional options to mutate behaviour
843
+ * `options` **[Object][167]?** Additional options to mutate behaviour
830
844
 
831
- * `options.save` **[Boolean][173]** Save the changes to the server immediately, disable to queue up multiple writes (optional, default `true`)
845
+ * `options.save` **[Boolean][170]** Save the changes to the server immediately, disable to queue up multiple writes (optional, default `true`)
832
846
 
833
- Returns **[Promise][168]** A promise which resolves when the operation has been dispatched to the server
847
+ Returns **[Promise][172]** A promise which resolves when the operation has been dispatched to the server
834
848
 
835
849
  ## setProjectStateDefaults
836
850
 
@@ -840,18 +854,18 @@ Set a nested value within the project state - just like `setProjectState()` - bu
840
854
 
841
855
  ### Parameters
842
856
 
843
- * `path` **([String][164] | [Array][171]<[String][164]>)** The sub-path within the project state to set
857
+ * `path` **([String][166] | [Array][171]<[String][166]>)** The sub-path within the project state to set
844
858
  * `value` **any** The value to set
845
- * `options` **[Object][165]?** Additional options to mutate behaviour, see setProjectState() for the full list of supported options
859
+ * `options` **[Object][167]?** Additional options to mutate behaviour, see setProjectState() for the full list of supported options
846
860
 
847
- Returns **[Promise][168]<[Boolean][173]>** A promise which resolves to whether any changes were made - True if defaults were applied, false otherwise
861
+ Returns **[Promise][172]<[Boolean][170]>** A promise which resolves to whether any changes were made - True if defaults were applied, false otherwise
848
862
 
849
863
  ## setProjectStateRefresh
850
864
 
851
865
  Force refetching the remote project state into local
852
866
  This is only ever needed when saving large quantities of data that need to be immediately available
853
867
 
854
- Returns **[Promise][168]** A promise which resolves when the operation has completed
868
+ Returns **[Promise][172]** A promise which resolves when the operation has completed
855
869
 
856
870
  ## FileFilters
857
871
 
@@ -859,10 +873,10 @@ Data structure for a file filter
859
873
 
860
874
  ### Properties
861
875
 
862
- * `library` **[Boolean][173]?** Restrict to library files only
863
- * `filename` **[String][164]?** CSV of @momsfriendlydevco/match expressions to filter the filename by (filenames are the basename sans extension)
864
- * `basename` **[String][164]?** CSV of @momsfriendlydevco/match expressions to filter the basename by
865
- * `ext` **[String][164]?** CSV of @momsfriendlydevco/match expressions to filter the file extension by
876
+ * `library` **[Boolean][170]?** Restrict to library files only
877
+ * `filename` **[String][166]?** CSV of @momsfriendlydevco/match expressions to filter the filename by (filenames are the basename sans extension)
878
+ * `basename` **[String][166]?** CSV of @momsfriendlydevco/match expressions to filter the basename by
879
+ * `ext` **[String][166]?** CSV of @momsfriendlydevco/match expressions to filter the file extension by
866
880
 
867
881
  ## selectProjectFile
868
882
 
@@ -870,22 +884,22 @@ Prompt the user to select a library to operate on
870
884
 
871
885
  ### Parameters
872
886
 
873
- * `options` **[Object][165]?** Additional options to mutate behaviour
887
+ * `options` **[Object][167]?** Additional options to mutate behaviour
874
888
 
875
- * `options.title` **[String][164]** The title of the dialog to display (optional, default `"Select a file"`)
876
- * `options.hint` **([String][164] | [Array][171]<[String][164]>)?** Hints to identify the file to select in array order of preference
877
- * `options.save` **[Boolean][173]** Set to truthy if saving a new file, UI will adjust to allowing overwrite OR new file name input (optional, default `false`)
878
- * `options.saveFilename` **[String][164]?** File name to save as, if omitted the hinting system is used otherwise 'My File.unknown' is assumed
879
- * `options.filters` **[FileFilters][116]?** Optional file filters
880
- * `options.allowUpload` **[Boolean][173]** Allow uploading new files (optional, default `true`)
881
- * `options.allowRefresh` **[Boolean][173]** Allow the user to manually refresh the file list (optional, default `true`)
882
- * `options.allowDownloadZip` **[Boolean][173]** Allow the user to download a Zip of all files (optional, default `true`)
883
- * `options.allowCancel` **[Boolean][173]** Allow cancelling the operation. Will throw `'CANCEL'` as the promise rejection if acationed (optional, default `true`)
884
- * `options.autoRequire` **[Boolean][173]** Run `requireProject()` automatically before continuing (optional, default `true`)
885
- * `options.showHiddenFiles` **[Boolean][173]** Whether hidden data.json files should be shown (optional, default `false`)
886
- * `options.filter` **[FileFilters][116]?** Optional file filters
889
+ * `options.title` **[String][166]** The title of the dialog to display (optional, default `"Select a file"`)
890
+ * `options.hint` **([String][166] | [Array][171]<[String][166]>)?** Hints to identify the file to select in array order of preference
891
+ * `options.save` **[Boolean][170]** Set to truthy if saving a new file, UI will adjust to allowing overwrite OR new file name input (optional, default `false`)
892
+ * `options.saveFilename` **[String][166]?** File name to save as, if omitted the hinting system is used otherwise 'My File.unknown' is assumed
893
+ * `options.filters` **[FileFilters][118]?** Optional file filters
894
+ * `options.allowUpload` **[Boolean][170]** Allow uploading new files (optional, default `true`)
895
+ * `options.allowRefresh` **[Boolean][170]** Allow the user to manually refresh the file list (optional, default `true`)
896
+ * `options.allowDownloadZip` **[Boolean][170]** Allow the user to download a Zip of all files (optional, default `true`)
897
+ * `options.allowCancel` **[Boolean][170]** Allow cancelling the operation. Will throw `'CANCEL'` as the promise rejection if acationed (optional, default `true`)
898
+ * `options.autoRequire` **[Boolean][170]** Run `requireProject()` automatically before continuing (optional, default `true`)
899
+ * `options.showHiddenFiles` **[Boolean][170]** Whether hidden data.json files should be shown (optional, default `false`)
900
+ * `options.filter` **[FileFilters][118]?** Optional file filters
887
901
 
888
- Returns **[Promise][168]<[ProjectFile][1]>** The eventually selected file, if in save mode new files are created as stubs
902
+ Returns **[Promise][172]<[ProjectFile][1]>** The eventually selected file, if in save mode new files are created as stubs
889
903
 
890
904
  ## getProjectFiles
891
905
 
@@ -893,13 +907,13 @@ Fetch the files associated with a given project
893
907
 
894
908
  ### Parameters
895
909
 
896
- * `options` **[Object][165]** Options which mutate behaviour
910
+ * `options` **[Object][167]** Options which mutate behaviour
897
911
 
898
- * `options.autoRequire` **[Boolean][173]** Run `requireProject()` automatically before continuing (optional, default `true`)
899
- * `options.lazy` **[Boolean][173]** If true, use the fastest method to retrieve the file list such as the cache. If false, force a refresh each time (optional, default `true`)
900
- * `options.meta` **[Boolean][173]** Pull meta information for each file entity (optional, default `true`)
912
+ * `options.autoRequire` **[Boolean][170]** Run `requireProject()` automatically before continuing (optional, default `true`)
913
+ * `options.lazy` **[Boolean][170]** If true, use the fastest method to retrieve the file list such as the cache. If false, force a refresh each time (optional, default `true`)
914
+ * `options.meta` **[Boolean][170]** Pull meta information for each file entity (optional, default `true`)
901
915
 
902
- Returns **[Promise][168]<[Array][171]<[ProjectFile][1]>>** A collection of project files for the given project
916
+ Returns **[Promise][172]<[Array][171]<[ProjectFile][1]>>** A collection of project files for the given project
903
917
 
904
918
  ## getProjectFileContents
905
919
 
@@ -907,8 +921,8 @@ Fetch the raw contents of a file by its ID
907
921
 
908
922
  ### Parameters
909
923
 
910
- * `id` **[String][164]?** File ID to retrieve the contents of
911
- * `options` **[Object][165]?** Additioanl options to mutate behaviour
924
+ * `id` **[String][166]?** File ID to retrieve the contents of
925
+ * `options` **[Object][167]?** Additioanl options to mutate behaviour
912
926
 
913
927
  * `options.format` **(`"blob"` | `"json"`)** The format to retrieve the file in (optional, default `'blob'`)
914
928
 
@@ -920,13 +934,13 @@ Fetch a project file by its name
920
934
 
921
935
  ### Parameters
922
936
 
923
- * `id` **[String][164]** The name + relative directory path component
924
- * `options` **([Object][165] | [String][164])?** Additional options to mutate behaviour, if a string is given `options.subkey` is assumed
937
+ * `id` **[String][166]** The name + relative directory path component
938
+ * `options` **([Object][167] | [String][166])?** Additional options to mutate behaviour, if a string is given `options.subkey` is assumed
925
939
 
926
- * `options.subkey` **[String][164]?** If specified only the extracted subkey is returned rather than the full object
927
- * `options.cache` **[Boolean][173]** Use the existing file cache if possible, set to false to force a refresh of files from the server first (optional, default `true`)
940
+ * `options.subkey` **[String][166]?** If specified only the extracted subkey is returned rather than the full object
941
+ * `options.cache` **[Boolean][170]** Use the existing file cache if possible, set to false to force a refresh of files from the server first (optional, default `true`)
928
942
 
929
- Returns **[Promise][168]<[ProjectFile][1]>** The eventual fetched ProjectFile (or requested subkey)
943
+ Returns **[Promise][172]<[ProjectFile][1]>** The eventual fetched ProjectFile (or requested subkey)
930
944
 
931
945
  ## createProjectFile
932
946
 
@@ -935,9 +949,9 @@ This creates an empty file which can then be written to
935
949
 
936
950
  ### Parameters
937
951
 
938
- * `name` **[String][164]** The name + relative directory path component
952
+ * `name` **[String][166]** The name + relative directory path component
939
953
 
940
- Returns **[Promise][168]<[ProjectFile][1]>** The eventual ProjectFile created
954
+ Returns **[Promise][172]<[ProjectFile][1]>** The eventual ProjectFile created
941
955
 
942
956
  ## moveProjectFile
943
957
 
@@ -946,17 +960,17 @@ The file's unique ID (UUID) remains the same, but its 'name' (relative path) and
946
960
 
947
961
  ### Parameters
948
962
 
949
- * `sourceId` **[String][164]** The unique ID (UUID) of the file to move.
950
- * `newName` **[String][164]** The new relative name for the file (e.g., "documents/report-final.pdf" or "image.png").
963
+ * `sourceId` **[String][166]** The unique ID (UUID) of the file to move.
964
+ * `newName` **[String][166]** The new relative name for the file (e.g., "documents/report-final.pdf" or "image.png").
951
965
  This path is relative to the project's root file directory.
952
- * `options` **[Object][165]?** Additional options to mutate behaviour.
966
+ * `options` **[Object][167]?** Additional options to mutate behaviour.
953
967
 
954
- * `options.autoRequire` **[Boolean][173]** Run `requireProject()` automatically before continuing. (optional, default `true`)
955
- * `options.overwrite` **[Boolean][173]** If true (default), moving a file to a `newName` that already exists will overwrite the existing file.
968
+ * `options.autoRequire` **[Boolean][170]** Run `requireProject()` automatically before continuing. (optional, default `true`)
969
+ * `options.overwrite` **[Boolean][170]** If true (default), moving a file to a `newName` that already exists will overwrite the existing file.
956
970
  This aligns with the default behavior of the underlying Supabase storage `move` operation.
957
971
  If set to false, the function would ideally check and prevent overwrite, but current implementation relies on underlying storage behavior. (optional, default `true`)
958
972
 
959
- Returns **[Promise][168]<([ProjectFile][1] | null)>** A promise which resolves to the updated ProjectFile object for the moved file if found after the operation,
973
+ Returns **[Promise][172]<([ProjectFile][1] | null)>** A promise which resolves to the updated ProjectFile object for the moved file if found after the operation,
960
974
  or null if the file could not be located post-move (e.g., if its ID changed unexpectedly or it was deleted).
961
975
 
962
976
  ## deleteProjectFile
@@ -965,9 +979,9 @@ Remove a project file by its ID
965
979
 
966
980
  ### Parameters
967
981
 
968
- * `id` **[String][164]** The File ID to remove
982
+ * `id` **[String][166]** The File ID to remove
969
983
 
970
- Returns **[Promise][168]** A promise which resolves when the operation has completed
984
+ Returns **[Promise][172]** A promise which resolves when the operation has completed
971
985
 
972
986
  ## setProjectFileContents
973
987
 
@@ -975,18 +989,18 @@ Save (or overwrite) a file within a project
975
989
 
976
990
  ### Parameters
977
991
 
978
- * `id` **([String][164] | [ProjectFile][1])?** ProjectFile or ID of the same to overwrite, if omitted a file is prompted for
979
- * `contents` **(File | [Blob][169] | [FormData][170] | [Object][165] | [Array][171])** The new file contents
980
- * `options` **[Object][165]?** Additional options to mutate behaviour
992
+ * `id` **([String][166] | [ProjectFile][1])?** ProjectFile or ID of the same to overwrite, if omitted a file is prompted for
993
+ * `contents` **(File | [Blob][173] | [FormData][174] | [Object][167] | [Array][171])** The new file contents
994
+ * `options` **[Object][167]?** Additional options to mutate behaviour
981
995
 
982
- * `options.id` **([String][164] | [ProjectFile][1])?** Alternate method to specify the file ID to save as, if omitted one will be prompted for
983
- * `options.autoRequire` **[Boolean][173]** Run `requireProject()` automatically before continuing (optional, default `true`)
984
- * `options.hint` **([String][164] | [Array][171]<[String][164]>)?** Hint(s) to store against the library. Generally corresponds to the current operation being performed - e.g. 'deduped'
985
- * `options.filename` **[String][164]?** Suggested filename if `id` is unspecified
986
- * `options.title` **[String][164]** Dialog title if `id` is unspecified and a prompt is necessary (optional, default `'Save citation library'`)
987
- * `options.meta` **[Object][165]?** Optional meta data to merge into the file data
996
+ * `options.id` **([String][166] | [ProjectFile][1])?** Alternate method to specify the file ID to save as, if omitted one will be prompted for
997
+ * `options.autoRequire` **[Boolean][170]** Run `requireProject()` automatically before continuing (optional, default `true`)
998
+ * `options.hint` **([String][166] | [Array][171]<[String][166]>)?** Hint(s) to store against the library. Generally corresponds to the current operation being performed - e.g. 'deduped'
999
+ * `options.filename` **[String][166]?** Suggested filename if `id` is unspecified
1000
+ * `options.title` **[String][166]** Dialog title if `id` is unspecified and a prompt is necessary (optional, default `'Save citation library'`)
1001
+ * `options.meta` **[Object][167]?** Optional meta data to merge into the file data
988
1002
 
989
- Returns **[Promise][168]** A promise which will resolve when the write operation has completed
1003
+ Returns **[Promise][172]** A promise which will resolve when the write operation has completed
990
1004
 
991
1005
  ## createProjectFolder
992
1006
 
@@ -996,16 +1010,16 @@ This operation is idempotent: if the folder (via its placeholder) already exists
996
1010
 
997
1011
  ### Parameters
998
1012
 
999
- * `folderPath` **[String][164]** The relative path of the folder to create (e.g., "myDocuments/reports").
1000
- * `options` **[Object][165]?** Additional options.
1013
+ * `folderPath` **[String][166]** The relative path of the folder to create (e.g., "myDocuments/reports").
1014
+ * `options` **[Object][167]?** Additional options.
1001
1015
 
1002
- * `options.autoRequire` **[Boolean][173]** Automatically run `requireProject()` to ensure an active project context. (optional, default `true`)
1016
+ * `options.autoRequire` **[Boolean][170]** Automatically run `requireProject()` to ensure an active project context. (optional, default `true`)
1003
1017
 
1004
1018
  <!---->
1005
1019
 
1006
- * Throws **[Error][177]** If no project is active (and autoRequire is false), or if folderPath is invalid, or if the creation fails.
1020
+ * Throws **[Error][179]** If no project is active (and autoRequire is false), or if folderPath is invalid, or if the creation fails.
1007
1021
 
1008
- Returns **[Promise][168]\<void>** A promise that resolves when the folder is created or ensured.
1022
+ Returns **[Promise][172]\<void>** A promise that resolves when the folder is created or ensured.
1009
1023
 
1010
1024
  ## deleteProjectFolder
1011
1025
 
@@ -1014,16 +1028,16 @@ This involves listing all files under the given folder path (prefix) and removin
1014
1028
 
1015
1029
  ### Parameters
1016
1030
 
1017
- * `folderPath` **[String][164]** The relative path of the folder to delete (e.g., "myDocuments/reports").
1018
- * `options` **[Object][165]?** Additional options.
1031
+ * `folderPath` **[String][166]** The relative path of the folder to delete (e.g., "myDocuments/reports").
1032
+ * `options` **[Object][167]?** Additional options.
1019
1033
 
1020
- * `options.autoRequire` **[Boolean][173]** Automatically run `requireProject()` to ensure an active project context. (optional, default `true`)
1034
+ * `options.autoRequire` **[Boolean][170]** Automatically run `requireProject()` to ensure an active project context. (optional, default `true`)
1021
1035
 
1022
1036
  <!---->
1023
1037
 
1024
- * Throws **[Error][177]** If no project is active (and autoRequire is false), or if folderPath is invalid, or if deletion fails.
1038
+ * Throws **[Error][179]** If no project is active (and autoRequire is false), or if folderPath is invalid, or if deletion fails.
1025
1039
 
1026
- Returns **[Promise][168]\<null>** A promise that resolves with null when the folder and its contents are deleted.
1040
+ Returns **[Promise][172]\<null>** A promise that resolves with null when the folder and its contents are deleted.
1027
1041
 
1028
1042
  ## selectProjectLibrary
1029
1043
 
@@ -1031,19 +1045,19 @@ Prompt the user to select a library to operate on and return a array of referenc
1031
1045
 
1032
1046
  ### Parameters
1033
1047
 
1034
- * `options` **[Object][165]?** Additional options to mutate behaviour
1048
+ * `options` **[Object][167]?** Additional options to mutate behaviour
1035
1049
 
1036
- * `options.title` **[String][164]** The title of the dialog to display (optional, default `"Select a citation library"`)
1037
- * `options.hint` **([String][164] | [Array][171]<[String][164]>)?** Hints to identify the library to select in array order of preference. Generally corresponds to the previous stage - e.g. 'deduped', 'review1', 'review2', 'dedisputed'
1038
- * `options.allowUpload` **[Boolean][173]** Allow uploading new files (optional, default `true`)
1039
- * `options.allowRefresh` **[Boolean][173]** Allow the user to manually refresh the file list (optional, default `true`)
1040
- * `options.allowDownloadZip` **[Boolean][173]** Allow the user to download a Zip of all files (optional, default `true`)
1041
- * `options.allowCancel` **[Boolean][173]** Allow cancelling the operation. Will throw `'CANCEL'` as the promise rejection if acationed (optional, default `true`)
1042
- * `options.autoRequire` **[Boolean][173]** Run `requireProject()` automatically before continuing (optional, default `true`)
1043
- * `options.filters` **[FileFilters][116]?** Optional file filters, defaults to citation library selection only
1050
+ * `options.title` **[String][166]** The title of the dialog to display (optional, default `"Select a citation library"`)
1051
+ * `options.hint` **([String][166] | [Array][171]<[String][166]>)?** Hints to identify the library to select in array order of preference. Generally corresponds to the previous stage - e.g. 'deduped', 'review1', 'review2', 'dedisputed'
1052
+ * `options.allowUpload` **[Boolean][170]** Allow uploading new files (optional, default `true`)
1053
+ * `options.allowRefresh` **[Boolean][170]** Allow the user to manually refresh the file list (optional, default `true`)
1054
+ * `options.allowDownloadZip` **[Boolean][170]** Allow the user to download a Zip of all files (optional, default `true`)
1055
+ * `options.allowCancel` **[Boolean][170]** Allow cancelling the operation. Will throw `'CANCEL'` as the promise rejection if acationed (optional, default `true`)
1056
+ * `options.autoRequire` **[Boolean][170]** Run `requireProject()` automatically before continuing (optional, default `true`)
1057
+ * `options.filters` **[FileFilters][118]?** Optional file filters, defaults to citation library selection only
1044
1058
  * `options` **...any?** Additional options - see `getProjectLibrary()`
1045
1059
 
1046
- Returns **[Promise][168]<[Array][171]\<Ref>>** A collection of references from the selected file
1060
+ Returns **[Promise][172]<[Array][171]\<Ref>>** A collection of references from the selected file
1047
1061
 
1048
1062
  ## getProjectLibrary
1049
1063
 
@@ -1051,15 +1065,15 @@ Fetch + convert a project file into a library of citations
1051
1065
 
1052
1066
  ### Parameters
1053
1067
 
1054
- * `id` **[String][164]** File ID to read
1055
- * `options` **[Object][165]?** Additional options to mutate behaviour
1068
+ * `id` **[String][166]** File ID to read
1069
+ * `options` **[Object][167]?** Additional options to mutate behaviour
1056
1070
 
1057
- * `options.format` **[String][164]** Format for the file. ENUM: 'pojo' (return a parsed JS collection), 'blob' (raw JS Blob object), 'file' (named JS File object) (optional, default `'json'`)
1058
- * `options.autoRequire` **[Boolean][173]** Run `requireProject()` automatically before continuing (optional, default `true`)
1059
- * `options.filter` **[Function][174]?** Optional async file filter, called each time as `(File:ProjectFile)`
1060
- * `options.find` **[Function][174]?** Optional async final stage file filter to reduce all candidates down to one subject file
1071
+ * `options.format` **[String][166]** Format for the file. ENUM: 'pojo' (return a parsed JS collection), 'blob' (raw JS Blob object), 'file' (named JS File object) (optional, default `'json'`)
1072
+ * `options.autoRequire` **[Boolean][170]** Run `requireProject()` automatically before continuing (optional, default `true`)
1073
+ * `options.filter` **[Function][176]?** Optional async file filter, called each time as `(File:ProjectFile)`
1074
+ * `options.find` **[Function][176]?** Optional async final stage file filter to reduce all candidates down to one subject file
1061
1075
 
1062
- Returns **([Promise][168]<[Array][171]\<Ref>> | [Promise][168]\<any>)** A collection of references (default bevahiour) or a whatever format was requested
1076
+ Returns **([Promise][172]<[Array][171]\<Ref>> | [Promise][172]\<any>)** A collection of references (default bevahiour) or a whatever format was requested
1063
1077
 
1064
1078
  ## setProjectLibrary
1065
1079
 
@@ -1067,33 +1081,33 @@ Save back a citation library from some input
1067
1081
 
1068
1082
  ### Parameters
1069
1083
 
1070
- * `id` **[String][164]?** File ID to save back to, if omitted a file will be prompted for
1071
- * `refs` **([Array][171]\<RefLibRef> | [Blob][169] | File)?** Collection of references for the selected library or the raw Blob/File
1072
- * `options` **[Object][165]?** Additional options to mutate behaviour
1084
+ * `id` **[String][166]?** File ID to save back to, if omitted a file will be prompted for
1085
+ * `refs` **([Array][171]\<RefLibRef> | [Blob][173] | File)?** Collection of references for the selected library or the raw Blob/File
1086
+ * `options` **[Object][167]?** Additional options to mutate behaviour
1073
1087
 
1074
- * `options.id` **[String][164]?** Alternate method to specify the file ID to save as, if omitted one will be prompted for
1075
- * `options.refs` **([Array][171]\<RefLibRef> | [Blob][169] | File)?** Alternate method to specify the refs to save as an array or raw Blob/File
1076
- * `options.format` **[String][164]** Input format used. ENUM: 'pojo' (return a parsed JS collection), 'blob' (raw JS Blob object), 'file' (named JS File object) (optional, default `'json'`)
1077
- * `options.autoRequire` **[Boolean][173]** Run `requireProject()` automatically before continuing (optional, default `true`)
1078
- * `options.hint` **[String][164]?** Hint to store against the library. Generally corresponds to the current operation being performed - e.g. 'deduped'
1079
- * `options.filename` **[String][164]?** Suggested filename if `id` is unspecified
1080
- * `options.title` **[String][164]** Dialog title if `id` is unspecified and a prompt is necessary (optional, default `'Save citation library'`)
1081
- * `options.overwrite` **[Boolean][173]** Allow existing file upsert (optional, default `true`)
1082
- * `options.meta` **[Object][165]?** Optional meta data to merge into the file data
1088
+ * `options.id` **[String][166]?** Alternate method to specify the file ID to save as, if omitted one will be prompted for
1089
+ * `options.refs` **([Array][171]\<RefLibRef> | [Blob][173] | File)?** Alternate method to specify the refs to save as an array or raw Blob/File
1090
+ * `options.format` **[String][166]** Input format used. ENUM: 'pojo' (return a parsed JS collection), 'blob' (raw JS Blob object), 'file' (named JS File object) (optional, default `'json'`)
1091
+ * `options.autoRequire` **[Boolean][170]** Run `requireProject()` automatically before continuing (optional, default `true`)
1092
+ * `options.hint` **[String][166]?** Hint to store against the library. Generally corresponds to the current operation being performed - e.g. 'deduped'
1093
+ * `options.filename` **[String][166]?** Suggested filename if `id` is unspecified
1094
+ * `options.title` **[String][166]** Dialog title if `id` is unspecified and a prompt is necessary (optional, default `'Save citation library'`)
1095
+ * `options.overwrite` **[Boolean][170]** Allow existing file upsert (optional, default `true`)
1096
+ * `options.meta` **[Object][167]?** Optional meta data to merge into the file data
1083
1097
 
1084
- Returns **[Promise][168]** A promise which resolves when the save operation has completed
1098
+ Returns **[Promise][172]** A promise which resolves when the save operation has completed
1085
1099
 
1086
1100
  ## projectLog
1087
1101
 
1088
1102
  Create a log entry for the currently active project
1089
1103
 
1090
- The required log object can be of various forms. See [https://tera-tools.com/api/logs.json][178] for the full list
1104
+ The required log object can be of various forms. See [https://tera-tools.com/api/logs.json][180] for the full list
1091
1105
 
1092
1106
  ### Parameters
1093
1107
 
1094
- * `log` **[Object][165]** The log entry to create
1108
+ * `log` **[Object][167]** The log entry to create
1095
1109
 
1096
- Returns **[Promise][168]** A promise which resolves when the operation has completed
1110
+ Returns **[Promise][172]** A promise which resolves when the operation has completed
1097
1111
 
1098
1112
  ## setPage
1099
1113
 
@@ -1102,10 +1116,10 @@ This is usually called by a tool nested within the tera-tools.com embed
1102
1116
 
1103
1117
  ### Parameters
1104
1118
 
1105
- * `options` **([Object][165] | [String][164])** Context information about the page, if this is a string, its assumed to popupate `url`
1119
+ * `options` **([Object][167] | [String][166])** Context information about the page, if this is a string, its assumed to popupate `url`
1106
1120
 
1107
- * `options.path` **[String][164]?** The URL path segment to restore on next refresh
1108
- * `options.title` **[String][164]?** The page title associated with the path
1121
+ * `options.path` **[String][166]?** The URL path segment to restore on next refresh
1122
+ * `options.title` **[String][166]?** The page title associated with the path
1109
1123
 
1110
1124
  ## uiAlert
1111
1125
 
@@ -1113,15 +1127,15 @@ Display simple text within TERA
1113
1127
 
1114
1128
  ### Parameters
1115
1129
 
1116
- * `text` **[String][164]?** Text to display, if specified this populates `options.body`
1117
- * `options` **[Object][165]?** Additional options to mutate behaviour
1130
+ * `text` **[String][166]?** Text to display, if specified this populates `options.body`
1131
+ * `options` **[Object][167]?** Additional options to mutate behaviour
1118
1132
 
1119
- * `options.body` **[String][164]** The body text to display (optional, default `"Alert!"`)
1120
- * `options.isHtml` **[Boolean][173]** If falsy the text is rendered as plain-text otherwise it will be assumed as HTML content (optional, default `false`)
1121
- * `options.title` **[String][164]** The title of the alert box (optional, default `'TERA'`)
1133
+ * `options.body` **[String][166]** The body text to display (optional, default `"Alert!"`)
1134
+ * `options.isHtml` **[Boolean][170]** If falsy the text is rendered as plain-text otherwise it will be assumed as HTML content (optional, default `false`)
1135
+ * `options.title` **[String][166]** The title of the alert box (optional, default `'TERA'`)
1122
1136
  * `options.buttons` **(`"ok"` | `false`)** Button set to use or falsy to disable (optional, default `'ok'`)
1123
1137
 
1124
- Returns **[Promise][168]** A promise which resolves when the alert has been dismissed
1138
+ Returns **[Promise][172]** A promise which resolves when the alert has been dismissed
1125
1139
 
1126
1140
  ## uiConfirm
1127
1141
 
@@ -1129,14 +1143,14 @@ Present a simple ok/cancel dialog to the user
1129
1143
 
1130
1144
  ### Parameters
1131
1145
 
1132
- * `text` **[String][164]?** Text to display, if specified this populates `options.body`
1133
- * `options` **[Object][165]?** Additional options to mutate behaviour
1146
+ * `text` **[String][166]?** Text to display, if specified this populates `options.body`
1147
+ * `options` **[Object][167]?** Additional options to mutate behaviour
1134
1148
 
1135
- * `options.body` **[String][164]** The body text to display (optional, default `"Confirm?"`)
1136
- * `options.isHtml` **[Boolean][173]** If falsy the text is rendered as plain-text otherwise it will be assumed as HTML content (optional, default `false`)
1137
- * `options.title` **[String][164]** The title of the confirmation box (optional, default `'TERA'`)
1149
+ * `options.body` **[String][166]** The body text to display (optional, default `"Confirm?"`)
1150
+ * `options.isHtml` **[Boolean][170]** If falsy the text is rendered as plain-text otherwise it will be assumed as HTML content (optional, default `false`)
1151
+ * `options.title` **[String][166]** The title of the confirmation box (optional, default `'TERA'`)
1138
1152
 
1139
- Returns **[Promise][168]** A promise which resolves with `Promise.resolve('OK')` or rejects with `Promise.reject('CANCEL')`
1153
+ Returns **[Promise][172]** A promise which resolves with `Promise.resolve('OK')` or rejects with `Promise.reject('CANCEL')`
1140
1154
 
1141
1155
  ## uiPanic
1142
1156
 
@@ -1144,7 +1158,7 @@ Trigger a fatal error, killing the outer TERA site
1144
1158
 
1145
1159
  ### Parameters
1146
1160
 
1147
- * `text` **[String][164]?** Text to display
1161
+ * `text` **[String][166]?** Text to display
1148
1162
 
1149
1163
  ## uiProgress
1150
1164
 
@@ -1153,18 +1167,18 @@ All options are cumulative - i.e. they are merged with other options previously
1153
1167
 
1154
1168
  ### Parameters
1155
1169
 
1156
- * `options` **([Object][165] | [Boolean][173])?** Additional options to mutate behaviour, if boolean false `{close: true}` is assumed
1170
+ * `options` **([Object][167] | [Boolean][170])?** Additional options to mutate behaviour, if boolean false `{close: true}` is assumed
1157
1171
 
1158
- * `options.title` **[String][164]** Window title, can only be set on the initial call (optional, default `'TERA'`)
1159
- * `options.backdrop` **[String][164]** Set to `'static'` to prevent user being able to click outside the modal to close (optional, default `true`)
1160
- * `options.body` **[String][164]** Window body text, can only be set on the initial call (optional, default `''`)
1161
- * `options.bodyHtml` **[Boolean][173]** Treat body text as HTML (optional, default `false`)
1162
- * `options.close` **[Boolean][173]** Close the existing dialog, if true the dialog is disposed and options reset (optional, default `false`)
1163
- * `options.text` **[String][164]?** The text of the task being conducted
1164
- * `options.progress` **[Number][167]?** The current progress of the task being conducted, this is assumed to be a value less than `maxProgress`
1165
- * `options.maxProgress` **[Number][167]?** The maximum value that the progress can be
1172
+ * `options.title` **[String][166]** Window title, can only be set on the initial call (optional, default `'TERA'`)
1173
+ * `options.backdrop` **[String][166]** Set to `'static'` to prevent user being able to click outside the modal to close (optional, default `true`)
1174
+ * `options.body` **[String][166]** Window body text, can only be set on the initial call (optional, default `''`)
1175
+ * `options.bodyHtml` **[Boolean][170]** Treat body text as HTML (optional, default `false`)
1176
+ * `options.close` **[Boolean][170]** Close the existing dialog, if true the dialog is disposed and options reset (optional, default `false`)
1177
+ * `options.text` **[String][166]?** The text of the task being conducted
1178
+ * `options.progress` **[Number][169]?** The current progress of the task being conducted, this is assumed to be a value less than `maxProgress`
1179
+ * `options.maxProgress` **[Number][169]?** The maximum value that the progress can be
1166
1180
 
1167
- Returns **[Promise][168]** A promise which resolves when the dialog has been updated
1181
+ Returns **[Promise][172]** A promise which resolves when the dialog has been updated
1168
1182
 
1169
1183
  ## uiPrompt
1170
1184
 
@@ -1172,17 +1186,17 @@ Prompt the user for an input, responding with a Promisable value
1172
1186
 
1173
1187
  ### Parameters
1174
1188
 
1175
- * `text` **[String][164]?** Text to display, if specified this populates `options.body`
1176
- * `options` **[Object][165]?** Additional options to mutate behaviour
1189
+ * `text` **[String][166]?** Text to display, if specified this populates `options.body`
1190
+ * `options` **[Object][167]?** Additional options to mutate behaviour
1177
1191
 
1178
- * `options.body` **[String][164]?** Optional additional body text
1179
- * `options.isHtml` **[Boolean][173]** If truthy, treat the body as HTML (optional, default `false`)
1180
- * `options.value` **[String][164]?** Current or default value to display pre-filled
1181
- * `options.title` **[String][164]** The dialog title to display (optional, default `'Input required'`)
1182
- * `options.placeholder` **[String][164]?** Optional placeholder text
1183
- * `options.required` **[Boolean][173]** Treat nullish or empty inputs as a cancel operation (optional, default `true`)
1192
+ * `options.body` **[String][166]?** Optional additional body text
1193
+ * `options.isHtml` **[Boolean][170]** If truthy, treat the body as HTML (optional, default `false`)
1194
+ * `options.value` **[String][166]?** Current or default value to display pre-filled
1195
+ * `options.title` **[String][166]** The dialog title to display (optional, default `'Input required'`)
1196
+ * `options.placeholder` **[String][166]?** Optional placeholder text
1197
+ * `options.required` **[Boolean][170]** Treat nullish or empty inputs as a cancel operation (optional, default `true`)
1184
1198
 
1185
- Returns **[Promise][168]\<any>** Either the eventual user value or a throw with `Promise.reject('CANCEL')`
1199
+ Returns **[Promise][172]\<any>** Either the eventual user value or a throw with `Promise.reject('CANCEL')`
1186
1200
 
1187
1201
  ## uiThrow
1188
1202
 
@@ -1190,7 +1204,7 @@ Catch an error using the TERA error handler
1190
1204
 
1191
1205
  ### Parameters
1192
1206
 
1193
- * `error` **([Error][177] | [Object][165] | [String][164])** Error to handle, generally an Error object but can be a POJO or a scalar string
1207
+ * `error` **([Error][179] | [Object][167] | [String][166])** Error to handle, generally an Error object but can be a POJO or a scalar string
1194
1208
 
1195
1209
  Returns **Void** This function is fatal
1196
1210
 
@@ -1200,13 +1214,13 @@ Open a popup window containing a new site
1200
1214
 
1201
1215
  ### Parameters
1202
1216
 
1203
- * `url` **[String][164]** The URL to open
1204
- * `options` **[Object][165]?** Additional options to mutate behaviour
1217
+ * `url` **[String][166]** The URL to open
1218
+ * `options` **[Object][167]?** Additional options to mutate behaviour
1205
1219
 
1206
- * `options.width` **[Number][167]** The desired width of the window (optional, default `500`)
1207
- * `options.height` **[Number][167]** The desired height of the window (optional, default `600`)
1208
- * `options.center` **[Boolean][173]** Attempt to center the window on the screen (optional, default `true`)
1209
- * `options.permissions` **[Object][165]?** Additional permissions to set on opening, defaults to a suitable set of permission for popups (see code)
1220
+ * `options.width` **[Number][169]** The desired width of the window (optional, default `500`)
1221
+ * `options.height` **[Number][169]** The desired height of the window (optional, default `600`)
1222
+ * `options.center` **[Boolean][170]** Attempt to center the window on the screen (optional, default `true`)
1223
+ * `options.permissions` **[Object][167]?** Additional permissions to set on opening, defaults to a suitable set of permission for popups (see code)
1210
1224
 
1211
1225
  Returns **WindowProxy** The opened window object (if `noopener` is not set in permissions)
1212
1226
 
@@ -1217,10 +1231,10 @@ This function is ideally called within a requestFocus() wrapper
1217
1231
 
1218
1232
  ### Parameters
1219
1233
 
1220
- * `content` **(DOMElement | [String][164] | `false`)** Either a prepared DOM element or string to compile, set to falsy to remove existing content
1221
- * `options` **[Object][165]?** Additional options to mutate behaviour
1234
+ * `content` **(DOMElement | [String][166] | `false`)** Either a prepared DOM element or string to compile, set to falsy to remove existing content
1235
+ * `options` **[Object][167]?** Additional options to mutate behaviour
1222
1236
 
1223
- * `options.logo` **([Boolean][173] | [String][164])** Add a logo to the output, if boolean true the Tera-tools logo is used otherwise specify a path or URL (optional, default `false`)
1237
+ * `options.logo` **([Boolean][170] | [String][166])** Add a logo to the output, if boolean true the Tera-tools logo is used otherwise specify a path or URL (optional, default `false`)
1224
1238
 
1225
1239
  [1]: #projectfile
1226
1240
 
@@ -1262,318 +1276,322 @@ This function is ideally called within a requestFocus() wrapper
1262
1276
 
1263
1277
  [20]: #meta
1264
1278
 
1265
- [21]: #getcontents
1279
+ [21]: #isfolder
1266
1280
 
1267
- [22]: #parameters
1281
+ [22]: #files
1268
1282
 
1269
- [23]: #setcontents
1283
+ [23]: #getcontents
1270
1284
 
1271
- [24]: #parameters-1
1285
+ [24]: #parameters
1272
1286
 
1273
- [25]: #getrefs
1287
+ [25]: #setcontents
1274
1288
 
1275
- [26]: #setrefs
1289
+ [26]: #parameters-1
1276
1290
 
1277
- [27]: #parameters-2
1291
+ [27]: #getrefs
1278
1292
 
1279
- [28]: #serialize
1293
+ [28]: #setrefs
1280
1294
 
1281
- [29]: #deserialize
1295
+ [29]: #parameters-2
1282
1296
 
1283
- [30]: #parameters-3
1297
+ [30]: #serialize
1284
1298
 
1285
- [31]: #terafy
1299
+ [31]: #deserialize
1286
1300
 
1287
- [32]: #settings
1301
+ [32]: #parameters-3
1288
1302
 
1289
- [33]: #properties-1
1303
+ [33]: #terafy
1290
1304
 
1291
- [34]: #events
1305
+ [34]: #settings
1292
1306
 
1293
- [35]: #dom
1307
+ [35]: #properties-1
1294
1308
 
1295
- [36]: #properties-2
1309
+ [36]: #events
1296
1310
 
1297
- [37]: #methods
1311
+ [37]: #dom
1298
1312
 
1299
- [38]: #plugins
1313
+ [38]: #properties-2
1300
1314
 
1301
- [39]: #namespaces
1315
+ [39]: #methods
1302
1316
 
1303
- [40]: #send
1317
+ [40]: #plugins
1304
1318
 
1305
- [41]: #parameters-4
1319
+ [41]: #namespaces
1306
1320
 
1307
- [42]: #sendraw
1321
+ [42]: #send
1308
1322
 
1309
- [43]: #parameters-5
1323
+ [43]: #parameters-4
1310
1324
 
1311
- [44]: #rpc
1325
+ [44]: #sendraw
1312
1326
 
1313
- [45]: #parameters-6
1327
+ [45]: #parameters-5
1314
1328
 
1315
- [46]: #acceptmessage
1329
+ [46]: #rpc
1316
1330
 
1317
- [47]: #parameters-7
1331
+ [47]: #parameters-6
1318
1332
 
1319
- [48]: #acceptpostboxes
1333
+ [48]: #acceptmessage
1320
1334
 
1321
- [49]: #init
1335
+ [49]: #parameters-7
1322
1336
 
1323
- [50]: #parameters-8
1337
+ [50]: #acceptpostboxes
1324
1338
 
1325
- [51]: #detectmode
1339
+ [51]: #init
1326
1340
 
1327
- [52]: #injectcomms
1341
+ [52]: #parameters-8
1328
1342
 
1329
- [53]: #handshakeloop
1343
+ [53]: #detectmode
1330
1344
 
1331
- [54]: #parameters-9
1345
+ [54]: #injectcomms
1332
1346
 
1333
- [55]: #properties-3
1347
+ [55]: #handshakeloop
1334
1348
 
1335
- [56]: #injectstylesheet
1349
+ [56]: #parameters-9
1336
1350
 
1337
- [57]: #injectmethods
1351
+ [57]: #properties-3
1338
1352
 
1339
- [58]: #debug
1353
+ [58]: #injectstylesheet
1340
1354
 
1341
- [59]: #parameters-10
1355
+ [59]: #injectmethods
1342
1356
 
1343
- [60]: #set
1357
+ [60]: #debug
1344
1358
 
1345
- [61]: #parameters-11
1359
+ [61]: #parameters-10
1346
1360
 
1347
- [62]: #setifdev
1361
+ [62]: #set
1348
1362
 
1349
- [63]: #parameters-12
1363
+ [63]: #parameters-11
1350
1364
 
1351
- [64]: #use
1365
+ [64]: #setifdev
1352
1366
 
1353
- [65]: #parameters-13
1367
+ [65]: #parameters-12
1354
1368
 
1355
- [66]: #mixin
1369
+ [66]: #use
1356
1370
 
1357
- [67]: #parameters-14
1371
+ [67]: #parameters-13
1358
1372
 
1359
- [68]: #toggledevmode
1373
+ [68]: #mixin
1360
1374
 
1361
- [69]: #parameters-15
1375
+ [69]: #parameters-14
1362
1376
 
1363
- [70]: #togglefocus
1377
+ [70]: #toggledevmode
1364
1378
 
1365
- [71]: #parameters-16
1379
+ [71]: #parameters-15
1366
1380
 
1367
- [72]: #getentropicstring
1381
+ [72]: #togglefocus
1368
1382
 
1369
- [73]: #parameters-17
1383
+ [73]: #parameters-16
1370
1384
 
1371
- [74]: #selectprojectfile
1385
+ [74]: #getentropicstring
1372
1386
 
1373
- [75]: #parameters-18
1387
+ [75]: #parameters-17
1374
1388
 
1375
- [76]: #mountnamespace
1389
+ [76]: #selectprojectfile
1376
1390
 
1377
- [77]: #parameters-19
1391
+ [77]: #parameters-18
1378
1392
 
1379
- [78]: #actual-namespace-mounting-function-designed-to-be-overriden-by-plugins
1393
+ [78]: #mountnamespace
1380
1394
 
1381
- [79]: #parameters-20
1395
+ [79]: #parameters-19
1382
1396
 
1383
- [80]: #unmountnamespace
1397
+ [80]: #actual-namespace-mounting-function-designed-to-be-overriden-by-plugins
1384
1398
 
1385
- [81]: #parameters-21
1399
+ [81]: #parameters-20
1386
1400
 
1387
- [82]: #actual-namespace-unmounting-function-designed-to-be-overriden-by-plugins
1401
+ [82]: #unmountnamespace
1388
1402
 
1389
- [83]: #parameters-22
1403
+ [83]: #parameters-21
1390
1404
 
1391
- [84]: #handshake
1405
+ [84]: #actual-namespace-unmounting-function-designed-to-be-overriden-by-plugins
1392
1406
 
1393
- [85]: #properties-4
1407
+ [85]: #parameters-22
1394
1408
 
1395
- [86]: #setserververbosity
1409
+ [86]: #handshake
1396
1410
 
1397
- [87]: #parameters-23
1411
+ [87]: #properties-4
1398
1412
 
1399
- [88]: #user
1413
+ [88]: #setserververbosity
1400
1414
 
1401
- [89]: #properties-5
1415
+ [89]: #parameters-23
1402
1416
 
1403
- [90]: #getuser
1417
+ [90]: #user
1404
1418
 
1405
- [91]: #getcredentials
1419
+ [91]: #properties-5
1406
1420
 
1407
- [92]: #requireuser
1421
+ [92]: #getuser
1408
1422
 
1409
- [93]: #parameters-24
1423
+ [93]: #getcredentials
1410
1424
 
1411
- [94]: #project
1425
+ [94]: #requireuser
1412
1426
 
1413
- [95]: #getproject
1427
+ [95]: #parameters-24
1414
1428
 
1415
- [96]: #getprojects
1429
+ [96]: #project
1416
1430
 
1417
- [97]: #setactiveproject
1431
+ [97]: #getproject
1418
1432
 
1419
- [98]: #parameters-25
1433
+ [98]: #getprojects
1420
1434
 
1421
- [99]: #requireproject
1435
+ [99]: #setactiveproject
1422
1436
 
1423
- [100]: #parameters-26
1437
+ [100]: #parameters-25
1424
1438
 
1425
- [101]: #selectproject
1439
+ [101]: #requireproject
1426
1440
 
1427
- [102]: #parameters-27
1441
+ [102]: #parameters-26
1428
1442
 
1429
- [103]: #getnamespace
1443
+ [103]: #selectproject
1430
1444
 
1431
- [104]: #parameters-28
1445
+ [104]: #parameters-27
1432
1446
 
1433
- [105]: #setnamespace
1447
+ [105]: #getnamespace
1434
1448
 
1435
- [106]: #parameters-29
1449
+ [106]: #parameters-28
1436
1450
 
1437
- [107]: #listnamespaces
1451
+ [107]: #setnamespace
1438
1452
 
1439
- [108]: #properties-6
1453
+ [108]: #parameters-29
1440
1454
 
1441
- [109]: #getprojectstate
1455
+ [109]: #listnamespaces
1442
1456
 
1443
- [110]: #parameters-30
1457
+ [110]: #properties-6
1444
1458
 
1445
- [111]: #setprojectstate
1459
+ [111]: #getprojectstate
1446
1460
 
1447
- [112]: #parameters-31
1461
+ [112]: #parameters-30
1448
1462
 
1449
- [113]: #setprojectstatedefaults
1463
+ [113]: #setprojectstate
1450
1464
 
1451
- [114]: #parameters-32
1465
+ [114]: #parameters-31
1452
1466
 
1453
- [115]: #setprojectstaterefresh
1467
+ [115]: #setprojectstatedefaults
1454
1468
 
1455
- [116]: #filefilters
1469
+ [116]: #parameters-32
1456
1470
 
1457
- [117]: #properties-7
1471
+ [117]: #setprojectstaterefresh
1458
1472
 
1459
- [118]: #selectprojectfile-1
1473
+ [118]: #filefilters
1460
1474
 
1461
- [119]: #parameters-33
1475
+ [119]: #properties-7
1462
1476
 
1463
- [120]: #getprojectfiles
1477
+ [120]: #selectprojectfile-1
1464
1478
 
1465
- [121]: #parameters-34
1479
+ [121]: #parameters-33
1466
1480
 
1467
- [122]: #getprojectfilecontents
1481
+ [122]: #getprojectfiles
1468
1482
 
1469
- [123]: #parameters-35
1483
+ [123]: #parameters-34
1470
1484
 
1471
- [124]: #getprojectfile
1485
+ [124]: #getprojectfilecontents
1472
1486
 
1473
- [125]: #parameters-36
1487
+ [125]: #parameters-35
1474
1488
 
1475
- [126]: #createprojectfile
1489
+ [126]: #getprojectfile
1476
1490
 
1477
- [127]: #parameters-37
1491
+ [127]: #parameters-36
1478
1492
 
1479
- [128]: #moveprojectfile
1493
+ [128]: #createprojectfile
1480
1494
 
1481
- [129]: #parameters-38
1495
+ [129]: #parameters-37
1482
1496
 
1483
- [130]: #deleteprojectfile
1497
+ [130]: #moveprojectfile
1484
1498
 
1485
- [131]: #parameters-39
1499
+ [131]: #parameters-38
1486
1500
 
1487
- [132]: #setprojectfilecontents
1501
+ [132]: #deleteprojectfile
1488
1502
 
1489
- [133]: #parameters-40
1503
+ [133]: #parameters-39
1490
1504
 
1491
- [134]: #createprojectfolder
1505
+ [134]: #setprojectfilecontents
1492
1506
 
1493
- [135]: #parameters-41
1507
+ [135]: #parameters-40
1494
1508
 
1495
- [136]: #deleteprojectfolder
1509
+ [136]: #createprojectfolder
1496
1510
 
1497
- [137]: #parameters-42
1511
+ [137]: #parameters-41
1498
1512
 
1499
- [138]: #selectprojectlibrary
1513
+ [138]: #deleteprojectfolder
1500
1514
 
1501
- [139]: #parameters-43
1515
+ [139]: #parameters-42
1502
1516
 
1503
- [140]: #getprojectlibrary
1517
+ [140]: #selectprojectlibrary
1504
1518
 
1505
- [141]: #parameters-44
1519
+ [141]: #parameters-43
1506
1520
 
1507
- [142]: #setprojectlibrary
1521
+ [142]: #getprojectlibrary
1508
1522
 
1509
- [143]: #parameters-45
1523
+ [143]: #parameters-44
1510
1524
 
1511
- [144]: #projectlog
1525
+ [144]: #setprojectlibrary
1512
1526
 
1513
- [145]: #parameters-46
1527
+ [145]: #parameters-45
1514
1528
 
1515
- [146]: #setpage
1529
+ [146]: #projectlog
1516
1530
 
1517
- [147]: #parameters-47
1531
+ [147]: #parameters-46
1518
1532
 
1519
- [148]: #uialert
1533
+ [148]: #setpage
1520
1534
 
1521
- [149]: #parameters-48
1535
+ [149]: #parameters-47
1522
1536
 
1523
- [150]: #uiconfirm
1537
+ [150]: #uialert
1524
1538
 
1525
- [151]: #parameters-49
1539
+ [151]: #parameters-48
1526
1540
 
1527
- [152]: #uipanic
1541
+ [152]: #uiconfirm
1528
1542
 
1529
- [153]: #parameters-50
1543
+ [153]: #parameters-49
1530
1544
 
1531
- [154]: #uiprogress
1545
+ [154]: #uipanic
1532
1546
 
1533
- [155]: #parameters-51
1547
+ [155]: #parameters-50
1534
1548
 
1535
- [156]: #uiprompt
1549
+ [156]: #uiprogress
1536
1550
 
1537
- [157]: #parameters-52
1551
+ [157]: #parameters-51
1538
1552
 
1539
- [158]: #uithrow
1553
+ [158]: #uiprompt
1540
1554
 
1541
- [159]: #parameters-53
1555
+ [159]: #parameters-52
1542
1556
 
1543
- [160]: #uiwindow
1557
+ [160]: #uithrow
1544
1558
 
1545
- [161]: #parameters-54
1559
+ [161]: #parameters-53
1546
1560
 
1547
- [162]: #uisplat
1561
+ [162]: #uiwindow
1548
1562
 
1549
- [163]: #parameters-55
1563
+ [163]: #parameters-54
1550
1564
 
1551
- [164]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
1565
+ [164]: #uisplat
1552
1566
 
1553
- [165]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
1567
+ [165]: #parameters-55
1554
1568
 
1555
- [166]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date
1569
+ [166]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String
1556
1570
 
1557
- [167]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
1571
+ [167]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object
1558
1572
 
1559
- [168]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise
1573
+ [168]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date
1560
1574
 
1561
- [169]: https://developer.mozilla.org/docs/Web/API/Blob
1575
+ [169]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number
1562
1576
 
1563
- [170]: https://developer.mozilla.org/docs/Web/API/FormData
1577
+ [170]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean
1564
1578
 
1565
1579
  [171]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array
1566
1580
 
1567
- [172]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
1581
+ [172]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise
1582
+
1583
+ [173]: https://developer.mozilla.org/docs/Web/API/Blob
1584
+
1585
+ [174]: https://developer.mozilla.org/docs/Web/API/FormData
1568
1586
 
1569
- [173]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean
1587
+ [175]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
1570
1588
 
1571
- [174]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
1589
+ [176]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function
1572
1590
 
1573
- [175]: https://developer.mozilla.org/docs/Web/API/Window
1591
+ [177]: https://developer.mozilla.org/docs/Web/API/Window
1574
1592
 
1575
- [176]: https://developer.mozilla.org/docs/Web/API/MessageEvent
1593
+ [178]: https://developer.mozilla.org/docs/Web/API/MessageEvent
1576
1594
 
1577
- [177]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Error
1595
+ [179]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Error
1578
1596
 
1579
- [178]: https://tera-tools.com/api/logs.json
1597
+ [180]: https://tera-tools.com/api/logs.json