@iebh/tera-fy 1.15.9 → 2.0.0

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