mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
Merge branch 'master' into stable
This commit is contained in:
commit
0fdb6af98a
@ -1,8 +1,22 @@
|
|||||||
function ScriptContext(startNote, allNotes) {
|
function ScriptContext(startNote, allNotes) {
|
||||||
|
const modules = {};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
modules: {},
|
modules: modules,
|
||||||
notes: toObject(allNotes, note => [note.noteId, note]),
|
notes: toObject(allNotes, note => [note.noteId, note]),
|
||||||
apis: toObject(allNotes, note => [note.noteId, ScriptApi(startNote, note)]),
|
apis: toObject(allNotes, note => [note.noteId, ScriptApi(startNote, note)]),
|
||||||
|
require: moduleNoteIds => {
|
||||||
|
return moduleName => {
|
||||||
|
const candidates = allNotes.filter(note => moduleNoteIds.includes(note.noteId));
|
||||||
|
const note = candidates.find(c => c.title === moduleName);
|
||||||
|
|
||||||
|
if (!note) {
|
||||||
|
throw new Error("Could not find module note " + moduleName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return modules[note.noteId].exports;
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Binary file not shown.
@ -111,13 +111,15 @@ async function getScriptBundle(note, root = true, scriptEnv = null, includedNote
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const moduleNoteIds = modules.map(mod => mod.noteId);
|
||||||
|
|
||||||
if (note.isJavaScript()) {
|
if (note.isJavaScript()) {
|
||||||
bundle.script += `
|
bundle.script += `
|
||||||
apiContext.modules['${note.noteId}'] = {};
|
apiContext.modules['${note.noteId}'] = {};
|
||||||
${root ? 'return ' : ''}await (async function(exports, module, api` + (modules.length > 0 ? ', ' : '') +
|
${root ? 'return ' : ''}await (async function(exports, module, require, api` + (modules.length > 0 ? ', ' : '') +
|
||||||
modules.map(child => sanitizeVariableName(child.title)).join(', ') + `) {
|
modules.map(child => sanitizeVariableName(child.title)).join(', ') + `) {
|
||||||
${note.content}
|
${note.content}
|
||||||
})({}, apiContext.modules['${note.noteId}'], apiContext.apis['${note.noteId}']` + (modules.length > 0 ? ', ' : '') +
|
})({}, apiContext.modules['${note.noteId}'], apiContext.require(${JSON.stringify(moduleNoteIds)}), apiContext.apis['${note.noteId}']` + (modules.length > 0 ? ', ' : '') +
|
||||||
modules.map(mod => `apiContext.modules['${mod.noteId}'].exports`).join(', ') + `);
|
modules.map(mod => `apiContext.modules['${mod.noteId}'].exports`).join(', ') + `);
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,18 @@ function ScriptContext(dataKey, startNote, allNotes) {
|
|||||||
this.modules = {};
|
this.modules = {};
|
||||||
this.notes = utils.toObject(allNotes, note => [note.noteId, note]);
|
this.notes = utils.toObject(allNotes, note => [note.noteId, note]);
|
||||||
this.apis = utils.toObject(allNotes, note => [note.noteId, new ScriptApi(dataKey, startNote, note)]);
|
this.apis = utils.toObject(allNotes, note => [note.noteId, new ScriptApi(dataKey, startNote, note)]);
|
||||||
|
this.require = moduleNoteIds => {
|
||||||
|
return moduleName => {
|
||||||
|
const candidates = allNotes.filter(note => moduleNoteIds.includes(note.noteId));
|
||||||
|
const note = candidates.find(c => c.title === moduleName);
|
||||||
|
|
||||||
|
if (!note) {
|
||||||
|
throw new Error("Could not find module note " + moduleName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.modules[note.noteId].exports;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function ScriptApi(dataKey, startNote, currentNote) {
|
function ScriptApi(dataKey, startNote, currentNote) {
|
||||||
@ -26,7 +38,8 @@ function ScriptApi(dataKey, startNote, currentNote) {
|
|||||||
|
|
||||||
this.utils = {
|
this.utils = {
|
||||||
unescapeHtml: utils.unescapeHtml,
|
unescapeHtml: utils.unescapeHtml,
|
||||||
isoDateTimeStr: utils.dateStr
|
isoDateTimeStr: utils.dateStr,
|
||||||
|
isoDateStr: date => utils.dateStr(date).substr(0, 10)
|
||||||
};
|
};
|
||||||
|
|
||||||
this.getInstanceName = () => config.General ? config.General.instanceName : null;
|
this.getInstanceName = () => config.General ? config.General.instanceName : null;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user