@iebh/tera-fy 1.14.2 → 1.15.0

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