diff --git a/.eslintrc b/.eslintrc index 0807290..f80e2c3 100644 --- a/.eslintrc +++ b/.eslintrc @@ -18,6 +18,7 @@ "@typescript-eslint/no-unused-vars": ["error", { "args": "none" }], "@typescript-eslint/ban-ts-comment": "off", "no-prototype-builtins": "off", - "@typescript-eslint/no-empty-function": "off" + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-explicit-any": "off" } } \ No newline at end of file diff --git a/README.md b/README.md index bca91cc..b5e9951 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,22 @@ -[ ] add image to uri function (then inject into template) +## API +```js +// Implemented +await $.import('somefile.md'); +$.log(...anything); +$.data.somedata.filter(); +await $.output(path, content, open); +// To do +$.dataview or $.dv... +$.notes('/path').filter( n=>n.basename == 'my note'); +const output = $.templates.first().render(data); +// logging +// convert image (png, jpg) to data uri + +``` + ## Dev info ### First time developing plugins? diff --git a/main.ts b/main.ts index 027bd62..d3bc88a 100644 --- a/main.ts +++ b/main.ts @@ -1,4 +1,5 @@ import { CachedMetadata, Editor, MarkdownView, moment, normalizePath, Notice, Plugin, TFile } from 'obsidian'; +import {DataviewApi, getAPI as dvGetAPI} from "obsidian-dataview"; //import * as Mustache from 'mustache'; //import {render as mustacheRender} from 'mustache'; @@ -29,6 +30,17 @@ HB.registerHelper('format_date', function (value, options) { return moment(value).format(pattern); }); +HB.registerHelper('data_uri', function (value, options) { + //TODO + // Helper parameters + //const file = options.hash['file'] as string; + //const contentType = options.hash['content_type'] as string; + + // check if file exists + // convert file to data uri + +}); + interface MyPluginSettings { mySetting: string; @@ -54,10 +66,11 @@ export default class MyPlugin extends Plugin { this.addCommand({ id: 'meld-build-run', name: 'Run', - editorCallback: (editor: Editor, view: MarkdownView) => { + editorCallback: async (editor: Editor, view: MarkdownView) => { try{ + view.save(); const b = new Compiler(); - const runner = b.compile(editor, view.file); + const runner = b.compile(editor, view); runner(); }catch(e){ console.error(e); @@ -110,16 +123,30 @@ class DataSetRow implements IRowDataValueCollection{ } -interface IContext{ +interface IContext { data: IDataSetCollection; templates: ITemplateContent[]; - log: (...data: unknown[]) => void; + + //current: MarkdownView; + + //comp: Component; + //log: (...data: unknown[]) => void; + log: (message?: any, ...optionalParams: any[]) => void; + log_error: (message?: any, ...optionalParams: any[]) => void; + + notice: (message: string | DocumentFragment, timeout?: number) => void; + render: (cb :ITemplateContent, data:object) => string; - output: ( file:string, content:string, open:boolean ) => void; + output: ( file:string, content:string, open?:boolean ) => void; open: (linkText:string) => void; load_data: (filepath:string, name?:string) => Promise; load_template: (filepath:string) => Promise; import: (filepath:string) => void; + + rebuild_view: () => void; + + dv: DataviewApi | undefined; + dataview: DataviewApi | undefined; } interface ITemplateContent{ @@ -363,11 +390,12 @@ class Parser { export class Compiler{ - public compile(editor: Editor, file: TFile) : () => void { - const fileCache = app.metadataCache.getFileCache(file); + public compile(editor: Editor, view: MarkdownView) : () => void { + + const fileCache = app.metadataCache.getFileCache(view.file); if (fileCache == null){ - return () => {}; + return async () => {}; } const pzr = new Parser(); @@ -383,13 +411,26 @@ export class Compiler{ const templateBlocks = pzr.fetchCodeBlocks(editor, fileCache, ['html']); // build context + const dataViewApi = dvGetAPI(); + //const comp = new Component(); + //ma + //comp.addChild const context : IContext = { data: data, templates: templateBlocks, + + //current: view, + //comp: , + load_data: (filepath, name) => this.data_loader(data, filepath, name), load_template: (filepath) => this.template_loader(templateBlocks, filepath), import: (filepath) => this.import( data, templateBlocks, filepath), + log: x => window.console.info( 'meld-build', x ), + log_error: x => window.console.error( 'meld-build', x ), + notice: (msg, timeout) => new Notice(msg, timeout), + dv: dataViewApi, + dataview: dataViewApi, render: (cb, data) =>{ const template = HB.compile( cb.content ); const result = template(data); @@ -398,7 +439,7 @@ export class Compiler{ output: async (filename, content, open) =>{ const activeFile = app.workspace.getActiveFile(); - + //letoutputFile = normalizePath( newFileFolder.path + "/" + filename ) if (activeFile == null){ return; @@ -418,18 +459,24 @@ export class Compiler{ } await app.vault.create( newFilepath, content ); + + new Notice(`${newFilepath} created`); - if (open){ + if (open == true){ await app.workspace.openLinkText( newFilepath, '' ); } }, - open: (linktext:string) => app.workspace.openLinkText( linktext, '' ) + + open: (linktext:string) => app.workspace.openLinkText( linktext, '' ), + + rebuild_view: async () => await (view.leaf as any).rebuildView(), }; // return runner - return () => this.sandboxed(sourceCode, context); + return () => this.buildSandboxedRunnerFunction(sourceCode, context); + //return () => this.buildRunnerFunction(sourceCode, context); } private getAbsoluteFilepathFromActiveFile( path:string ) : string | undefined { @@ -516,7 +563,46 @@ export class Compiler{ // return normalizePath(result.replace(/\\/g, '/')); // } - private sandboxed(code:string, context:IContext) : FunctionConstructor { + private buildRunnerFunction(code:string, context:IContext) : FunctionConstructor { + //const frame = document.createElement('iframe'); + //document.body.appendChild(frame); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + //const f = window.Function; + //document.body.removeChild(frame); + + + // const restrictedKeys = [ + // ...Object.keys(frame.contentWindow??{}), + // 'self', + // 'document', + // 'console' + // ]; + //const undefineds = restrictedKeys.map( v=>undefined ); + + const errFrag = new DocumentFragment(); + errFrag.appendText('RUNTIME ERROR\n'); + //errFrag.c + //errFrag.appendText('RUNTIME ERROR\n'); + + const additionals = { + 'errFrag': errFrag + }; + + return window.Function( + //...restrictedKeys, + ...Object.keys(additionals), + '$', + //"'use strict';" + code + code + )( + //...undefineds, + ...Object.values(additionals), + context + ); + + } + + private buildSandboxedRunnerFunction(code:string, context:IContext) : FunctionConstructor { const frame = document.createElement('iframe'); document.body.appendChild(frame); // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -532,15 +618,65 @@ export class Compiler{ ]; const undefineds = restrictedKeys.map( v=>undefined ); + const errFrag = new DocumentFragment(); + errFrag.appendText('RUNTIME ERROR\n'); + //errFrag.c + //errFrag.appendText('RUNTIME ERROR\n'); + + const additionals = { + 'errFrag': errFrag + }; + return f( ...restrictedKeys, + ...Object.keys(additionals), '$', //"'use strict';" + code - `'use strict'; Promise.all((async () => { ${code} })());` + ` + 'use strict'; + ( async () => { + $.log('Run Start'); + ${code} + } )() + .catch( (e) => { + $.log_error(e); + errFrag.appendText(e); + $.notice(errFrag); + }) + .finally( () => { + $.log('Run End'); + }) + ; + ` )( ...undefineds, + ...Object.values(additionals), context ); + + // return f( + // ...restrictedKeys, + // '$', + // //"'use strict';" + code + // ` + // 'use strict'; + // $.log('Start'); + // Promise + // .resolve( + // ( async () => { + // ${code} + // } )() + // ) + // .catch( (e) => { + // $.log(e); + // }) + // ; + // $.log('End'); + // ` + // )( + // ...undefineds, + // context + // ); } diff --git a/package-lock.json b/package-lock.json index c8e75fb..42778e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,23 +18,36 @@ "esbuild-copy-static-files": "^0.1.0", "handlebars": "4.7.7", "obsidian": "latest", + "obsidian-dataview": "^0.5.51", "tslib": "2.4.0", "typescript": "4.7.4" } }, + "node_modules/@codemirror/language": { + "version": "6.3.1", + "resolved": "git+ssh://git@github.com/lishid/cm-language.git#6f84ca041393471ae1e2c82a0b6ec515a94e8dcf", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, "node_modules/@codemirror/state": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.4.tgz", "integrity": "sha512-g+3OJuRylV5qsXuuhrc6Cvs1NQluNioepYMM2fhnpYkNk7NgX+j0AFuevKSVKzTDmDyt9+Puju+zPdHNECzCNQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/@codemirror/view": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.6.0.tgz", "integrity": "sha512-40VaFVZI3rkyjO5GHFAbNwaW+YgZexjKyx5gxLU2DvfuXAEZX0kW0apOXb0SBRLnKIQJ+U/n2nPfxgBVFHERrg==", "dev": true, - "peer": true, "dependencies": { "@codemirror/state": "^6.1.4", "style-mod": "^4.0.0", @@ -101,6 +114,30 @@ "dev": true, "peer": true }, + "node_modules/@lezer/common": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.2.tgz", + "integrity": "sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==", + "dev": true + }, + "node_modules/@lezer/highlight": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.3.tgz", + "integrity": "sha512-3vLKLPThO4td43lYRBygmMY18JN3CPh9w+XS2j8WC30vR4yZeFG4z1iFe4jXE43NtGqe//zHW5q8ENLlHvz9gw==", + "dev": true, + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.5.tgz", + "integrity": "sha512-f9319YG1A/3ysgUE3bqCHEd7g+3ZZ71MWlwEc42mpnLVYXgfJJgtu1XAyBB4Kz8FmqmnFe9caopDqKeMMMAU6g==", + "dev": true, + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -608,6 +645,12 @@ "node": ">=6.0.0" } }, + "node_modules/emoji-regex": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", + "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==", + "dev": true + }, "node_modules/esbuild": { "version": "0.14.47", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.47.tgz", @@ -1444,6 +1487,12 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -1588,6 +1637,24 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dev": true, + "dependencies": { + "lie": "3.1.1" + } + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -1623,6 +1690,15 @@ "node": ">=10" } }, + "node_modules/luxon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz", + "integrity": "sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -1709,6 +1785,74 @@ "@codemirror/view": "^6.0.0" } }, + "node_modules/obsidian-calendar-ui": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/obsidian-calendar-ui/-/obsidian-calendar-ui-0.3.12.tgz", + "integrity": "sha512-hdoRqCPnukfRgCARgArXaqMQZ+Iai0eY7f0ZsFHHfywpv4gKg3Tx5p47UsLvRO5DD+4knlbrL7Gel57MkfcLTw==", + "dev": true, + "dependencies": { + "obsidian-daily-notes-interface": "0.8.4", + "svelte": "3.35.0", + "tslib": "2.1.0" + } + }, + "node_modules/obsidian-calendar-ui/node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, + "node_modules/obsidian-daily-notes-interface": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/obsidian-daily-notes-interface/-/obsidian-daily-notes-interface-0.8.4.tgz", + "integrity": "sha512-REKQtAuIOKDbvNH/th1C1gWmJWCP5tRn9T/mfZGZt4Zncgko7McXK0aSKFtEInipvgbZJ2nScivvyLdiWluSMw==", + "dev": true, + "dependencies": { + "obsidian": "github:obsidianmd/obsidian-api#master", + "tslib": "2.1.0" + }, + "bin": { + "obsidian-daily-notes-interface": "dist/main.js" + } + }, + "node_modules/obsidian-daily-notes-interface/node_modules/obsidian": { + "version": "1.1.7", + "resolved": "git+ssh://git@github.com/obsidianmd/obsidian-api.git#38dd22168d2925086371bfc59e36fd9121527a39", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/codemirror": "0.0.108", + "moment": "2.29.4" + }, + "peerDependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/obsidian-daily-notes-interface/node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, + "node_modules/obsidian-dataview": { + "version": "0.5.51", + "resolved": "https://registry.npmjs.org/obsidian-dataview/-/obsidian-dataview-0.5.51.tgz", + "integrity": "sha512-DXf+CdsWdBBVIIVJjhFE1V3voWjIp5I6ZT5KrU20fMMMbOw9DBRA6UvPFNaGVvXKfTgmrvxbR8Xx05mhnKTu0g==", + "dev": true, + "dependencies": { + "@codemirror/language": "git+https://github.com/lishid/cm-language.git", + "@codemirror/state": "^6.0.1", + "@codemirror/view": "^6.0.1", + "emoji-regex": "^10.0.0", + "localforage": "^1.10.0", + "luxon": "^2.4.0", + "obsidian-calendar-ui": "^0.3.12", + "papaparse": "^5.3.1", + "parsimmon": "^1.18.0", + "preact": "^10.6.5" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1769,6 +1913,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/papaparse": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz", + "integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw==", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1782,6 +1932,12 @@ "node": ">=6" } }, + "node_modules/parsimmon": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.18.1.tgz", + "integrity": "sha512-u7p959wLfGAhJpSDJVYXoyMCXWYwHia78HhRBWqk7AIbxdmlrfdp5wX0l3xv/iTSH5HvhN9K7o26hwwpgS5Nmw==", + "dev": true + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -1833,6 +1989,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/preact": { + "version": "10.11.3", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.3.tgz", + "integrity": "sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -2030,8 +2196,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/supports-color": { "version": "7.2.0", @@ -2046,6 +2211,15 @@ "node": ">=8" } }, + "node_modules/svelte": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.35.0.tgz", + "integrity": "sha512-gknlZkR2sXheu/X+B7dDImwANVvK1R0QGQLd8CNIfxxGPeXBmePnxfzb6fWwTQRsYQG7lYkZXvpXJvxvpsoB7g==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -2158,8 +2332,7 @@ "version": "2.2.6", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==", - "dev": true, - "peer": true + "dev": true }, "node_modules/which": { "version": "2.0.2", @@ -2221,19 +2394,30 @@ } }, "dependencies": { + "@codemirror/language": { + "version": "git+ssh://git@github.com/lishid/cm-language.git#6f84ca041393471ae1e2c82a0b6ec515a94e8dcf", + "dev": true, + "from": "@codemirror/language@git+https://github.com/lishid/cm-language.git", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, "@codemirror/state": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.4.tgz", "integrity": "sha512-g+3OJuRylV5qsXuuhrc6Cvs1NQluNioepYMM2fhnpYkNk7NgX+j0AFuevKSVKzTDmDyt9+Puju+zPdHNECzCNQ==", - "dev": true, - "peer": true + "dev": true }, "@codemirror/view": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.6.0.tgz", "integrity": "sha512-40VaFVZI3rkyjO5GHFAbNwaW+YgZexjKyx5gxLU2DvfuXAEZX0kW0apOXb0SBRLnKIQJ+U/n2nPfxgBVFHERrg==", "dev": true, - "peer": true, "requires": { "@codemirror/state": "^6.1.4", "style-mod": "^4.0.0", @@ -2284,6 +2468,30 @@ "dev": true, "peer": true }, + "@lezer/common": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.2.tgz", + "integrity": "sha512-SVgiGtMnMnW3ActR8SXgsDhw7a0w0ChHSYAyAUxxrOiJ1OqYWEKk/xJd84tTSPo1mo6DXLObAJALNnd0Hrv7Ng==", + "dev": true + }, + "@lezer/highlight": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.3.tgz", + "integrity": "sha512-3vLKLPThO4td43lYRBygmMY18JN3CPh9w+XS2j8WC30vR4yZeFG4z1iFe4jXE43NtGqe//zHW5q8ENLlHvz9gw==", + "dev": true, + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/lr": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.2.5.tgz", + "integrity": "sha512-f9319YG1A/3ysgUE3bqCHEd7g+3ZZ71MWlwEc42mpnLVYXgfJJgtu1XAyBB4Kz8FmqmnFe9caopDqKeMMMAU6g==", + "dev": true, + "requires": { + "@lezer/common": "^1.0.0" + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2630,6 +2838,12 @@ "esutils": "^2.0.2" } }, + "emoji-regex": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.2.1.tgz", + "integrity": "sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==", + "dev": true + }, "esbuild": { "version": "0.14.47", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.47.tgz", @@ -3170,6 +3384,12 @@ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -3283,6 +3503,24 @@ "type-check": "~0.4.0" } }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dev": true, + "requires": { + "lie": "3.1.1" + } + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -3309,6 +3547,12 @@ "yallist": "^4.0.0" } }, + "luxon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz", + "integrity": "sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A==", + "dev": true + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3376,6 +3620,70 @@ "moment": "2.29.4" } }, + "obsidian-calendar-ui": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/obsidian-calendar-ui/-/obsidian-calendar-ui-0.3.12.tgz", + "integrity": "sha512-hdoRqCPnukfRgCARgArXaqMQZ+Iai0eY7f0ZsFHHfywpv4gKg3Tx5p47UsLvRO5DD+4knlbrL7Gel57MkfcLTw==", + "dev": true, + "requires": { + "obsidian-daily-notes-interface": "0.8.4", + "svelte": "3.35.0", + "tslib": "2.1.0" + }, + "dependencies": { + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } + } + }, + "obsidian-daily-notes-interface": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/obsidian-daily-notes-interface/-/obsidian-daily-notes-interface-0.8.4.tgz", + "integrity": "sha512-REKQtAuIOKDbvNH/th1C1gWmJWCP5tRn9T/mfZGZt4Zncgko7McXK0aSKFtEInipvgbZJ2nScivvyLdiWluSMw==", + "dev": true, + "requires": { + "obsidian": "github:obsidianmd/obsidian-api#master", + "tslib": "2.1.0" + }, + "dependencies": { + "obsidian": { + "version": "git+ssh://git@github.com/obsidianmd/obsidian-api.git#38dd22168d2925086371bfc59e36fd9121527a39", + "dev": true, + "from": "obsidian@github:obsidianmd/obsidian-api#master", + "requires": { + "@types/codemirror": "0.0.108", + "moment": "2.29.4" + } + }, + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } + } + }, + "obsidian-dataview": { + "version": "0.5.51", + "resolved": "https://registry.npmjs.org/obsidian-dataview/-/obsidian-dataview-0.5.51.tgz", + "integrity": "sha512-DXf+CdsWdBBVIIVJjhFE1V3voWjIp5I6ZT5KrU20fMMMbOw9DBRA6UvPFNaGVvXKfTgmrvxbR8Xx05mhnKTu0g==", + "dev": true, + "requires": { + "@codemirror/language": "git+https://github.com/lishid/cm-language.git", + "@codemirror/state": "^6.0.1", + "@codemirror/view": "^6.0.1", + "emoji-regex": "^10.0.0", + "localforage": "^1.10.0", + "luxon": "^2.4.0", + "obsidian-calendar-ui": "^0.3.12", + "papaparse": "^5.3.1", + "parsimmon": "^1.18.0", + "preact": "^10.6.5" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3421,6 +3729,12 @@ "p-limit": "^3.0.2" } }, + "papaparse": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz", + "integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw==", + "dev": true + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3431,6 +3745,12 @@ "callsites": "^3.0.0" } }, + "parsimmon": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.18.1.tgz", + "integrity": "sha512-u7p959wLfGAhJpSDJVYXoyMCXWYwHia78HhRBWqk7AIbxdmlrfdp5wX0l3xv/iTSH5HvhN9K7o26hwwpgS5Nmw==", + "dev": true + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3464,6 +3784,12 @@ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true }, + "preact": { + "version": "10.11.3", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.11.3.tgz", + "integrity": "sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==", + "dev": true + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3581,8 +3907,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz", "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw==", - "dev": true, - "peer": true + "dev": true }, "supports-color": { "version": "7.2.0", @@ -3594,6 +3919,12 @@ "has-flag": "^4.0.0" } }, + "svelte": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.35.0.tgz", + "integrity": "sha512-gknlZkR2sXheu/X+B7dDImwANVvK1R0QGQLd8CNIfxxGPeXBmePnxfzb6fWwTQRsYQG7lYkZXvpXJvxvpsoB7g==", + "dev": true + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3677,8 +4008,7 @@ "version": "2.2.6", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz", "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg==", - "dev": true, - "peer": true + "dev": true }, "which": { "version": "2.0.2", diff --git a/package.json b/package.json index 631ae92..b839f80 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "esbuild-copy-static-files": "^0.1.0", "handlebars": "4.7.7", "obsidian": "latest", + "obsidian-dataview": "^0.5.51", "tslib": "2.4.0", "typescript": "4.7.4" }