@iebh/tera-fy 2.0.0 → 2.0.2

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