There's a new callback function for plugins to react to when plugin settings (data.json) get changed on disk. This callback can be used to reload settings when they are updated by an external application or when the settings get synced using a file syncing service like Obsidian Sync.
New Vault.getFileByPath and Vault.getFolderByPath utility functions
The getAbstractFileByPath has long been a point of confusion with plugin developers. More often than not,
you are looking for either a file or a folder. And you know which you want at call-time. Instead of using
getAbstractFileByPath then checking if the result is an instance of TFile or TFolder, now you can just
use getFileByPath or getFolderByPath to automatically do this check.
View.scope is now public
Finally scope is made public on the View class. This means you can assign hotkeys for when your view is
active and focused.
New getFrontMatterInfo utility
There is now a canonical way to find the offsets of where the frontmatter ends and where the content starts in a file.
FileManager.getAvailablePathForAttachment
If your plugin saves attachments to the vault, you should be using getAvailablePathForAttachment. It will generate a safe path for you to use that respects the user's settings for file attachments.
v1.4.4
We've exposed our helper function for setting tooltips on elements (setTooltip) as well as added a new progress bar component.
The FileManager.processFrontMatter function now also exposes the DataWriteOptions argument to be consistent with the other process and write functions.
v1.4.0
We've made some changes to CachedMetadata to support Properties. FrontMatterCache is now no longer a CacheItem—meaning that it doesn't have a position. Instead, is it a Reference.
Another big change in v.1.4 is that frontmatter now supports wikilinks. If a value in the frontmatter can be interpreted as a link, it will be cached inside CachedMetadata.frontmatterLinks.
v1.1.3
Updated the Canvas spec to indicate that colors can be stored in 1 or 2 formats:
as a hex string (i.e. "#FFFFFF")
as a number "1", "2", etc.
If it's a number, this refers to the palette position. It can be themed via CSS variables.
Support TypeScript experimental decorators on abstract class fields (#3684)
With this release, you can now use TypeScript experimental decorators on abstract class fields. This was silently compiled incorrectly in esbuild 0.19.7 and below, and was an error from esbuild 0.19.8 to esbuild 0.20.1. Code such as the following should now work correctly:
// Original code
const log = (x: any, y: string) => console.log(y)
abstract class Foo { @log abstract foo: string }
new class extends Foo { foo = '' }
// Old output (with --loader=ts --tsconfig-raw={"compilerOptions":{"experimentalDecorators":true}})
const log = (x, y) => console.log(y);
class Foo {
}
new class extends Foo {
foo = "";
}();
// New output (with --loader=ts --tsconfig-raw={"compilerOptions":{"experimentalDecorators":true}})
const log = (x, y) => console.log(y);
class Foo {
}
__decorateClass([
log
], Foo.prototype, "foo", 2);
new class extends Foo {
foo = "";
}();
JSON loader now preserves __proto__ properties (#3700)
Copying JSON source code into a JavaScript file will change its meaning if a JSON object contains the __proto__ key. A literal __proto__ property in a JavaScript object literal sets the prototype of the object instead of adding a property named __proto__, while a literal __proto__ property in a JSON object literal just adds a property named __proto__. With this release, esbuild will now work around this problem by converting JSON to JavaScript with a computed property key in this case:
// Original code
import data from 'data:application/json,{"__proto__":{"fail":true}}'
if (Object.getPrototypeOf(data)?.fail) throw 'fail'
// Old output (with --bundle)
(() => {
// <data:application/json,{"proto":{"fail":true}}>
var json_proto_fail_true_default = { proto: { fail: true } };
// entry.js
if (Object.getPrototypeOf(json_proto_fail_true_default)?.fail)
throw "fail";
})();
Support TypeScript experimental decorators on abstract class fields (#3684)
With this release, you can now use TypeScript experimental decorators on abstract class fields. This was silently compiled incorrectly in esbuild 0.19.7 and below, and was an error from esbuild 0.19.8 to esbuild 0.20.1. Code such as the following should now work correctly:
// Original code
const log = (x: any, y: string) => console.log(y)
abstract class Foo { @log abstract foo: string }
new class extends Foo { foo = '' }
// Old output (with --loader=ts --tsconfig-raw={"compilerOptions":{"experimentalDecorators":true}})
const log = (x, y) => console.log(y);
class Foo {
}
new class extends Foo {
foo = "";
}();
// New output (with --loader=ts --tsconfig-raw={"compilerOptions":{"experimentalDecorators":true}})
const log = (x, y) => console.log(y);
class Foo {
}
__decorateClass([
log
], Foo.prototype, "foo", 2);
new class extends Foo {
foo = "";
}();
JSON loader now preserves __proto__ properties (#3700)
Copying JSON source code into a JavaScript file will change its meaning if a JSON object contains the __proto__ key. A literal __proto__ property in a JavaScript object literal sets the prototype of the object instead of adding a property named __proto__, while a literal __proto__ property in a JSON object literal just adds a property named __proto__. With this release, esbuild will now work around this problem by converting JSON to JavaScript with a computed property key in this case:
// Original code
import data from 'data:application/json,{"__proto__":{"fail":true}}'
if (Object.getPrototypeOf(data)?.fail) throw 'fail'
// Old output (with --bundle)
(() => {
// <data:application/json,{"proto":{"fail":true}}>
var json_proto_fail_true_default = { proto: { fail: true } };
// entry.js
if (Object.getPrototypeOf(json_proto_fail_true_default)?.fail)
throw "fail";
})();
Bumps the dependencies group with 10 updates:
20.11.17
20.11.28
18.2.55
18.2.66
18.2.19
18.2.22
1.4.11
1.5.7
6.21.0
7.2.0
6.21.0
7.2.0
0.20.0
0.20.2
8.56.0
8.57.0
7.33.2
7.34.0
5.3.3
5.4.2
Updates
@types/node
from 20.11.17 to 20.11.28Commits
Updates
@types/react
from 18.2.55 to 18.2.66Commits
Updates
@types/react-dom
from 18.2.19 to 18.2.22Commits
Updates
obsidian
from 1.4.11 to 1.5.7Changelog
Sourced from obsidian's changelog.
... (truncated)
Commits
Updates
@typescript-eslint/eslint-plugin
from 6.21.0 to 7.2.0Release notes
Sourced from
@typescript-eslint/eslint-plugin
's releases.... (truncated)
Changelog
Sourced from
@typescript-eslint/eslint-plugin
's changelog.... (truncated)
Commits
95cf139
chore(release): publish 7.2.0c0e3267
fix(eslint-plugin): [prefer-find] support ternary branches in prefer-find (#8...25e6518
fix(eslint-plugin): [no-unnecessary-condition] handle union array and tuple t...ef0e5cc
fix(eslint-plugin): [no-useless-template-literals] detect TemplateLiteral (#8...5292399
fix(eslint-plugin): [no-var-requires, no-require-imports] support template li...c06ce1a
fix(eslint-plugin): [member-ordering] report alphabetical sorting for all gro...32d8a8f
feat(eslint-plugin): [prefer-string-starts-ends-with] add allowSingleElementE...4c8b06d
fix(eslint-plugin): expose *-type-checked-only configs for extension (#8600)49d79a6
docs: alphabetize consistent-type-imports options for consistent type imports...21375f6
chore: enable no-non-null-assertion internally, excluding tests (#8019)Updates
@typescript-eslint/parser
from 6.21.0 to 7.2.0Release notes
Sourced from
@typescript-eslint/parser
's releases.... (truncated)
Changelog
Sourced from
@typescript-eslint/parser
's changelog.... (truncated)
Commits
95cf139
chore(release): publish 7.2.088b7463
chore(release): publish 7.1.14bc6944
chore(release): publish 7.1.0677e7cc
chore(release): publish 7.0.24f3215f
chore(release): publish 7.0.1b27de99
chore(release): publish 7.0.01aa393c
chore(deps): update dependency prettier to v3.2.5 (#8401)8ef5f4b
feat: add support for flat configs (#7935)1200b4c
chore(deps): update nx to v17.3.0 (#8317)584db29
feat: bump ESLint, NodeJS, and TS minimum version requirements (#8377)Updates
esbuild
from 0.20.0 to 0.20.2Release notes
Sourced from esbuild's releases.
... (truncated)
Changelog
Sourced from esbuild's changelog.
... (truncated)
Commits
617edda
publish 0.20.2 to npm4780075
fix #3700: json loader preserves__proto__
keys30bed2d
better errors for invalid js decorator syntax300eeb7
ts: allow non-null assertions in js decorators4d997d9
fix #3698: yarn pnp edge case withtsconfig.json
cf42954
resolver: improve some debug loggingb0765ae
fix some lintsdfa6206
fix some comments (closes #3683)ae5cc17
fix #3684:abstract
experimental decoratorsc809af0
fix #2388: allow consuming types without dom types (#3679)Updates
eslint
from 8.56.0 to 8.57.0Release notes
Sourced from eslint's releases.
Changelog
Sourced from eslint's changelog.
... (truncated)
Commits
abea3b6
8.57.01cd3f8c
Build: changelog update for 8.57.01813aec
chore: upgrade@eslint/js
@8
.57.0 (#18143)5c356bb
chore: package.json update for@eslint/js
release84922d0
docs: Show prerelease version in dropdown (#18139)1120b9b
feat: Add loadESLint() API method for v8 (#18098)5b8c363
docs: Switch to Ethical Ads (#18117)2196d97
fix: handle absolute file paths inFlatRuleTester
(#18064)f4a1fe2
test: add more tests for ignoring files and directories (#18068)69dd1d1
fix: Ensure config keys are printed for config errors (#18067)Updates
eslint-plugin-react
from 7.33.2 to 7.34.0Release notes
Sourced from eslint-plugin-react's releases.
... (truncated)
Changelog
Sourced from eslint-plugin-react's changelog.