jsdoc fixes to make export simpler

This commit is contained in:
zadam
2023-01-03 14:31:46 +01:00
parent b80bf0ffb6
commit c5ab6fa2fa
46 changed files with 1583 additions and 10465 deletions

View File

@@ -98,7 +98,7 @@ class Becca {
return filteredNotes;
}
/** @returns {Branch|null} */
/** @returns {BBranch|null} */
getBranch(branchId) {
return this.branches[branchId];
}
@@ -108,7 +108,7 @@ class Becca {
return this.attributes[attributeId];
}
/** @returns {Branch|null} */
/** @returns {BBranch|null} */
getBranchFromChildAndParent(childNoteId, parentNoteId) {
return this.childParentToBranch[`${childNoteId}-${parentNoteId}`];
}

View File

@@ -89,7 +89,7 @@ class BNote extends AbstractBeccaEntity {
}
init() {
/** @type {Branch[]}
/** @type {BBranch[]}
* @private */
this.parentBranches = [];
/** @type {BNote[]}
@@ -151,7 +151,7 @@ class BNote extends AbstractBeccaEntity {
return this.isContentAvailable() ? this.title : '[protected]';
}
/** @returns {Branch[]} */
/** @returns {BBranch[]} */
getParentBranches() {
return this.parentBranches;
}
@@ -159,14 +159,14 @@ class BNote extends AbstractBeccaEntity {
/**
* Returns <i>strong</i> (as opposed to <i>weak</i>) parent branches. See isWeak for details.
*
* @returns {Branch[]}
* @returns {BBranch[]}
*/
getStrongParentBranches() {
return this.getParentBranches().filter(branch => !branch.isWeak);
}
/**
* @returns {Branch[]}
* @returns {BBranch[]}
* @deprecated use getParentBranches() instead
*/
getBranches() {
@@ -188,7 +188,7 @@ class BNote extends AbstractBeccaEntity {
return this.children && this.children.length > 0;
}
/** @returns {Branch[]} */
/** @returns {BBranch[]} */
getChildBranches() {
return this.children.map(childNote => this.becca.getBranchFromChildAndParent(childNote.noteId, this.noteId));
}

View File

@@ -7,7 +7,7 @@ import noteTooltipService from './note_tooltip.js';
import protectedSessionService from './protected_session.js';
import dateNotesService from './date_notes.js';
import searchService from './search.js';
import CollapsibleWidget from '../widgets/collapsible_widget.js';
import RightPanelWidget from '../widgets/right_panel_widget.js';
import ws from "./ws.js";
import appContext from "../components/app_context.js";
import NoteContextAwareWidget from "../widgets/note_context_aware_widget.js";
@@ -35,8 +35,14 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, $contain
// to keep consistency with backend API
this.dayjs = dayjs;
/** @property {CollapsibleWidget} */
this.CollapsibleWidget = CollapsibleWidget;
/**
* @property {RightPanelWidget}
* @deprecated use api.RightPanelWidget instead
*/
this.CollapsibleWidget = RightPanelWidget;
/** @property {RightPanelWidget} */
this.RightPanelWidget = RightPanelWidget;
/** @property {NoteContextAwareWidget} */
this.NoteContextAwareWidget = NoteContextAwareWidget;
@@ -123,22 +129,18 @@ function FrontendScriptApi(startNote, currentNote, originEntity = null, $contain
}
};
/**
* @typedef {Object} AddButtonToToolbarOptions
* @property {string} [id] - id of the button, used to identify the old instances of this button to be replaced
* ID is optional because of BC, but not specifying it is deprecated. ID can be alphanumeric only.
* @property {string} title
* @property {string} [icon] - name of the boxicon to be used (e.g. "time" for "bx-time" icon)
* @property {function} action - callback handling the click on the button
* @property {string} [shortcut] - keyboard shortcut for the button, e.g. "alt+t"
*/
/**
* Adds a new launcher to the launchbar. If the launcher (id) already exists, it will be updated.
*
* @deprecated you can now create/modify launchers in the top-left Menu -> Configure Launchbar
* for special needs there's also backend API's createOrUpdateLauncher()
* @param {AddButtonToToolbarOptions} opts
* @param {object} opts
* @property {string} [opts.id] - id of the button, used to identify the old instances of this button to be replaced
* ID is optional because of BC, but not specifying it is deprecated. ID can be alphanumeric only.
* @property {string} opts.title
* @property {string} [opts.icon] - name of the boxicon to be used (e.g. "time" for "bx-time" icon)
* @property {function} opts.action - callback handling the click on the button
* @property {string} [opts.shortcut] - keyboard shortcut for the button, e.g. "alt+t"
*/
this.addButtonToToolbar = async opts => {
console.warn("api.addButtonToToolbar() has been deprecated since v0.58 and may be removed in the future. Use Menu -> Configure Launchbar to create/update launchers instead.");

View File

@@ -1,7 +1,7 @@
import CollapsibleWidget from "../collapsible_widget.js";
import linkService from "../../services/link.js";
import server from "../../services/server.js";
import froca from "../../services/froca.js";
import NoteContextAwareWidget from "../note_context_aware_widget.js";
const TPL = `
<div class="edited-notes-widget">
@@ -20,7 +20,7 @@ const TPL = `
</div>
`;
export default class EditedNotesWidget extends CollapsibleWidget {
export default class EditedNotesWidget extends NoteContextAwareWidget {
get name() {
return "editedNotes";
}

View File

@@ -9,10 +9,7 @@ const WIDGET_TPL = `
</div>
</div>`;
/**
* TODO: rename, it's not collapsible anymore
*/
export default class CollapsibleWidget extends NoteContextAwareWidget {
export default class RightPanelWidget extends NoteContextAwareWidget {
get widgetTitle() { return "Untitled widget"; }
get help() { return {}; }
@@ -33,6 +30,6 @@ export default class CollapsibleWidget extends NoteContextAwareWidget {
this.initialized = this.doRenderBody();
}
/** for overriding */
/* for overriding */
async doRenderBody() {}
}

View File

@@ -15,7 +15,7 @@
*/
import attributeService from "../services/attributes.js";
import CollapsibleWidget from "./collapsible_widget.js";
import RightPanelWidget from "./right_panel_widget.js";
import options from "../services/options.js";
const TPL = `<div class="toc-widget">
@@ -76,7 +76,7 @@ function findHeadingNodeByIndex(parent, headingIndex) {
return headingNode;
}
export default class TocWidget extends CollapsibleWidget {
export default class TocWidget extends RightPanelWidget {
get widgetTitle() {
return "Table of Contents";
}

View File

@@ -68,7 +68,7 @@ function BackendScriptApi(currentNote, apiParams) {
/**
* @method
* @param {string} branchId
* @returns {Branch|null}
* @returns {BBranch|null}
*/
this.getBranch = branchId => becca.getBranch(branchId);
@@ -171,20 +171,13 @@ function BackendScriptApi(currentNote, apiParams) {
*/
this.toggleNoteInParent = cloningService.toggleNoteInParent;
/**
* @typedef {object} CreateNoteAttribute
* @property {string} type - attribute type - label, relation etc.
* @property {string} name - attribute name
* @property {string} [value] - attribute value
*/
/**
* Create text note. See also createNewNote() for more options.
*
* @param {string} parentNoteId
* @param {string} title
* @param {string} content
* @return {{note: BNote, branch: Branch}} - object having "note" and "branch" keys representing respective objects
* @return {{note: BNote, branch: BBranch}} - object having "note" and "branch" keys representing respective objects
*/
this.createTextNote = (parentNoteId, title, content = '') => noteService.createNewNote({
parentNoteId,
@@ -200,7 +193,7 @@ function BackendScriptApi(currentNote, apiParams) {
* @param {string} parentNoteId
* @param {string} title
* @param {object} content
* @return {{note: BNote, branch: Branch}} object having "note" and "branch" keys representing respective objects
* @return {{note: BNote, branch: BBranch}} object having "note" and "branch" keys representing respective objects
*/
this.createDataNote = (parentNoteId, title, content = {}) => noteService.createNewNote({
parentNoteId,
@@ -210,43 +203,23 @@ function BackendScriptApi(currentNote, apiParams) {
mime: 'application/json'
});
/**
* @typedef {object} CreateNewNoteParams
* @property {string} parentNoteId - MANDATORY
* @property {string} title - MANDATORY
* @property {string|buffer} content - MANDATORY
* @property {string} type - text, code, file, image, search, book, relationMap, canvas - MANDATORY
* @property {string} mime - value is derived from default mimes for type
* @property {boolean} isProtected - default is false
* @property {boolean} isExpanded - default is false
* @property {string} prefix - default is empty string
* @property {int} notePosition - default is last existing notePosition in a parent + 10
*/
/**
* @method
*
* @param {CreateNewNoteParams} [params]
* @returns {{note: BNote, branch: Branch}} object contains newly created entities note and branch
* @property {object} params
* @property {string} params.parentNoteId
* @property {string} params.title
* @property {string|buffer} params.content
* @property {string} params.type - text, code, file, image, search, book, relationMap, canvas
* @property {string} [params.mime] - value is derived from default mimes for type
* @property {boolean} [params.isProtected=false]
* @property {boolean} [params.isExpanded=false]
* @property {string} [params.prefix='']
* @property {int} [params.notePosition] - default is last existing notePosition in a parent + 10
* @returns {{note: BNote, branch: BBranch}} object contains newly created entities note and branch
*/
this.createNewNote = noteService.createNewNote;
/**
* @typedef {object} CreateNoteAttribute
* @property {string} type - attribute type - label, relation etc.
* @property {string} name - attribute name
* @property {string} [value] - attribute value
*/
/**
* @typedef {object} CreateNoteExtraOptions
* @property {boolean} [json=false] - should the note be JSON
* @property {boolean} [isProtected=false] - should the note be protected
* @property {string} [type='text'] - note type
* @property {string} [mime='text/html'] - MIME type of the note
* @property {CreateNoteAttribute[]} [attributes=[]] - attributes to be created for this note
*/
/**
* @method
* @deprecated please use createTextNote() with similar API for simpler use cases or createNewNote() for more complex needs
@@ -254,8 +227,16 @@ function BackendScriptApi(currentNote, apiParams) {
* @param {string} parentNoteId - create new note under this parent
* @param {string} title
* @param {string} [content=""]
* @param {CreateNoteExtraOptions} [extraOptions={}]
* @returns {{note: BNote, branch: Branch}} object contains newly created entities note and branch
* @param {object} [extraOptions={}]
* @property {boolean} [extraOptions.json=false] - should the note be JSON
* @property {boolean} [extraOptions.isProtected=false] - should the note be protected
* @property {string} [extraOptions.type='text'] - note type
* @property {string} [extraOptions.mime='text/html'] - MIME type of the note
* @property {object[]} [extraOptions.attributes=[]] - attributes to be created for this note
* @property {string} extraOptions.attributes.type - attribute type - label, relation etc.
* @property {string} extraOptions.attributes.name - attribute name
* @property {string} [extraOptions.attributes.value] - attribute value
* @returns {{note: BNote, branch: BBranch}} object contains newly created entities note and branch
*/
this.createNote = (parentNoteId, title, content = "", extraOptions= {}) => {
extraOptions.parentNoteId = parentNoteId;
@@ -398,20 +379,16 @@ function BackendScriptApi(currentNote, apiParams) {
*/
this.sortNotesByTitle = parentNoteId => treeService.sortNotes(parentNoteId);
/**
* @typedef {Object} SortConfig
* @property {string} [sortBy=title] - 'title', 'dateCreated', 'dateModified' or a label name
* see https://github.com/zadam/trilium/wiki/Sorting for details.
* @property {boolean} [reverse=false]
* @property {boolean} [foldersFirst=false]
*/
/**
* Sort child notes of a given note.
*
* @method
* @param {string} parentNoteId - this note's child notes will be sorted
* @param {SortConfig} [sortConfig]
* @param {object} [sortConfig]
* @property {string} [sortConfig.sortBy=title] - 'title', 'dateCreated', 'dateModified' or a label name
* see https://github.com/zadam/trilium/wiki/Sorting for details.
* @property {boolean} [sortConfig.reverse=false]
* @property {boolean} [sortConfig.foldersFirst=false]
*/
this.sortNotes = (parentNoteId, sortConfig = {}) => treeService.sortNotes(
parentNoteId,
@@ -484,27 +461,24 @@ function BackendScriptApi(currentNote, apiParams) {
* @return {{syncVersion, appVersion, buildRevision, dbVersion, dataDirectory, buildDate}|*} - object representing basic info about running Trilium version
*/
this.getAppInfo = () => appInfo
/**
* @typedef {Object} CreateOrUpdateLauncher
* @property {string} id - id of the launcher, only alphanumeric at least 6 characters long
* @property {string} type - one of
* * "note" - activating the launcher will navigate to the target note (specified in targetNoteId param)
* * "script" - activating the launcher will execute the script (specified in scriptNoteId param)
* * "customWidget" - the launcher will be rendered with a custom widget (specified in widgetNoteId param)
* @property {string} title
* @property {boolean} [isVisible=false] - if true, will be created in the "Visible launchers", otherwise in "Available launchers"
* @property {string} [icon] - name of the boxicon to be used (e.g. "bx-time")
* @property {string} [keyboardShortcut] - will activate the target note/script upon pressing, e.g. "ctrl+e"
* @property {string} [targetNoteId] - for type "note"
* @property {string} [scriptNoteId] - for type "script"
* @property {string} [widgetNoteId] - for type "customWidget"
*/
/**
* Creates a new launcher to the launchbar. If the launcher (id) already exists, it will be updated.
*
* @param {CreateOrUpdateLauncher} opts
* @param {object} opts
* @property {string} opts.id - id of the launcher, only alphanumeric at least 6 characters long
* @property {string} opts.type - one of
* * "note" - activating the launcher will navigate to the target note (specified in targetNoteId param)
* * "script" - activating the launcher will execute the script (specified in scriptNoteId param)
* * "customWidget" - the launcher will be rendered with a custom widget (specified in widgetNoteId param)
* @property {string} opts.title
* @property {boolean} [opts.isVisible=false] - if true, will be created in the "Visible launchers", otherwise in "Available launchers"
* @property {string} [opts.icon] - name of the boxicon to be used (e.g. "bx-time")
* @property {string} [opts.keyboardShortcut] - will activate the target note/script upon pressing, e.g. "ctrl+e"
* @property {string} [opts.targetNoteId] - for type "note"
* @property {string} [opts.scriptNoteId] - for type "script"
* @property {string} [opts.widgetNoteId] - for type "customWidget"
* @returns {{note: BNote}}
*/
this.createOrUpdateLauncher = opts => {
if (!opts.id) { throw new Error("ID is a mandatory parameter for api.createOrUpdateLauncher(opts)"); }
@@ -561,6 +535,8 @@ function BackendScriptApi(currentNote, apiParams) {
} else {
launcherNote.removeLabel('keyboardShortcut');
}
return {note: launcherNote};
};
/**

View File

@@ -19,7 +19,7 @@ const ValidationError = require("../../errors/validation_error");
/**
* @param {TaskContext} taskContext
* @param {Branch} branch
* @param {BBranch} branch
* @param {string} format - 'html' or 'markdown'
*/
async function exportToZip(taskContext, branch, format, res, setHeaders = true) {