@iebh/tera-fy 2.2.0 → 2.2.4

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