@polyipseity/obsidian-plugin-library
Version:
Library for Obsidian plugins.
1,235 lines • 299 kB
TypeScript
import type { AsyncOrSyncType, Builtin, DeepReadonly, IsUnknown } from "ts-essentials";
import type { DistributeKeys, DistributeValues, Evaluate, IsExact } from "../src/types.js";
import type { I18nNamespaces, I18nResources } from "../src/i18n.js";
import { merge } from "ts-deepmerge";
export type NormalizeLocale<T> = T extends Builtin ? T : T extends {} ? {
[K in keyof T as K extends `${infer K0}_${string}` ? K0 : K]: NormalizeLocale<T[K]>;
} : IsUnknown<T> extends true ? unknown : T;
export declare function syncLocale<Expected>(): <Actual>(locale: IsExact<NormalizeLocale<Expected>, NormalizeLocale<Actual>> extends false ? never : Actual) => Actual;
export type AwaitResources<T extends I18nResources, Default extends keyof T> = {
[K in keyof T[Default]]: Awaited<ReturnType<T[Default][K]>>;
};
export type MergeResources<Ts extends readonly I18nResources[]> = {
[K in DistributeKeys<Ts[number]>]: Evaluate<MergeNamespaces<readonly DistributeValues<Ts[number], K>[]>>;
};
export type MergeNamespaces<Ts extends readonly I18nNamespaces[]> = {
[K in DistributeKeys<Ts[number]>]: () => PromiseLike<ReturnType<typeof merge<AsyncOrSyncType<ReturnType<DistributeValues<Ts[number], K>>>[]>>>;
};
export declare function mergeResources<const Ts extends readonly I18nResources[]>(...resources: Ts): DeepReadonly<MergeResources<Ts>>;
export declare namespace LibraryLocales {
const RETURN_NULL = false, DEFAULT_LANGUAGE = "en", DEFAULT_NAMESPACE = "translation", FALLBACK_LANGUAGES: {
readonly default: readonly ["en"];
readonly zh: readonly ["zh-Hans", "en"];
readonly "zh-CN": readonly ["zh-Hans", "zh", "en"];
readonly "zh-TW": readonly ["zh-Hant", "zh", "en"];
}, FORMATTERS: {
readonly capitalize: (lng: string | undefined) => (value: unknown) => string;
readonly startCase: (lng: string | undefined) => (value: unknown) => string;
readonly uncapitalize: (lng: string | undefined) => (value: unknown) => string;
};
const RESOURCES: {
readonly af: {
readonly translation: () => Promise<{
commands: {
"export-settings-clipboard": string;
"export-settings-current-file": string;
"import-settings-clipboard": string;
"import-settings-current-file": string;
};
components: {
dialog: {
cancel: string;
confirm: string;
"double-confirm-hint": string;
};
dropdown: {
placeholder: string;
};
"edit-data": {
data: string;
export: string;
"export-to-clipboard": string;
import: string;
"import-from-clipboard": string;
reset: string;
};
find: {
"case-sensitive": string;
close: string;
"input-placeholder": string;
next: string;
previous: string;
regex: string;
results: string;
"too-many-results": string;
"whole-word": string;
};
list: {
append: string;
"move-down": string;
"move-up": string;
name_few: string;
name_one: string;
name_other: string;
name_two: string;
prepend: string;
"preset-placeholder": string;
remove: string;
};
"rules-list": {
description: string;
};
suggest: {
instructions: {
dismiss: string;
"dismiss-purpose": string;
navigate: string;
"navigate-purpose": string;
use: string;
"use-purpose": string;
};
};
};
dialogs: {
"overwrite-existing-frontmatter": string;
};
errors: {
"error-exporting-settings": string;
"error-importing-settings": string;
"error-opening-documentation": string;
"error-processing-frontmatter": string;
"malformed-data": string;
"missing-interpolation": string;
"missing-translation": string;
"no-formatter": string;
"private-API-changed": string;
"retry-outdated-frontmatter": string;
};
generic: {
API: string;
app: string;
background: string;
cancel: string;
clipboard: string;
close: string;
command: string;
"command-palette": string;
confirm: string;
"current-file": string;
data: string;
disable: string;
dismiss: string;
edit: string;
exist: string;
exist_gerund: string;
export: string;
export_gerund: string;
file: string;
find: string;
frontmatter: string;
import: string;
import_gerund: string;
language: string;
language_one: string;
language_other: string;
list: string;
"list-description_one": string;
"list-description_other": string;
"list-description_zero": string;
navigate: string;
notice: string;
open: string;
open_gerund: string;
ordinal_few: string;
ordinal_one: string;
ordinal_other: string;
ordinal_two: string;
overwrite: string;
plugin: string;
reset: string;
retry: string;
rule: string;
rule_one: string;
rule_other: string;
setting: string;
setting_one: string;
setting_other: string;
timeout: string;
use: string;
};
settings: {
"all-settings": string;
"all-settings-actions": {
edit: string;
recover: string;
reload: string;
reset: string;
undo: string;
};
description: string;
"error-notice-timeout": string;
"error-notice-timeout-description": string;
language: string;
"language-default": string;
"language-description": string;
"notice-timeout": string;
"notice-timeout-description": string;
reset: string;
};
}>;
};
readonly am: {
readonly translation: () => Promise<{
commands: {
"export-settings-clipboard": string;
"export-settings-current-file": string;
"import-settings-clipboard": string;
"import-settings-current-file": string;
};
components: {
dialog: {
cancel: string;
confirm: string;
"double-confirm-hint": string;
};
dropdown: {
placeholder: string;
};
"edit-data": {
data: string;
export: string;
"export-to-clipboard": string;
import: string;
"import-from-clipboard": string;
reset: string;
};
find: {
"case-sensitive": string;
close: string;
"input-placeholder": string;
next: string;
previous: string;
regex: string;
results: string;
"too-many-results": string;
"whole-word": string;
};
list: {
append: string;
"move-down": string;
"move-up": string;
name_few: string;
name_one: string;
name_other: string;
name_two: string;
prepend: string;
"preset-placeholder": string;
remove: string;
};
"rules-list": {
description: string;
};
suggest: {
instructions: {
dismiss: string;
"dismiss-purpose": string;
navigate: string;
"navigate-purpose": string;
use: string;
"use-purpose": string;
};
};
};
dialogs: {
"overwrite-existing-frontmatter": string;
};
errors: {
"error-exporting-settings": string;
"error-importing-settings": string;
"error-opening-documentation": string;
"error-processing-frontmatter": string;
"malformed-data": string;
"missing-interpolation": string;
"missing-translation": string;
"no-formatter": string;
"private-API-changed": string;
"retry-outdated-frontmatter": string;
};
generic: {
API: string;
app: string;
background: string;
cancel: string;
clipboard: string;
close: string;
command: string;
"command-palette": string;
confirm: string;
"current-file": string;
data: string;
disable: string;
dismiss: string;
edit: string;
exist: string;
exist_gerund: string;
export: string;
export_gerund: string;
file: string;
find: string;
frontmatter: string;
import: string;
import_gerund: string;
language: string;
language_one: string;
language_other: string;
list: string;
"list-description_one": string;
"list-description_other": string;
"list-description_zero": string;
navigate: string;
notice: string;
open: string;
open_gerund: string;
ordinal_few: string;
ordinal_one: string;
ordinal_other: string;
ordinal_two: string;
overwrite: string;
plugin: string;
reset: string;
retry: string;
rule: string;
rule_one: string;
rule_other: string;
setting: string;
setting_one: string;
setting_other: string;
timeout: string;
use: string;
};
settings: {
"all-settings": string;
"all-settings-actions": {
edit: string;
recover: string;
reload: string;
reset: string;
undo: string;
};
description: string;
"error-notice-timeout": string;
"error-notice-timeout-description": string;
language: string;
"language-default": string;
"language-description": string;
"notice-timeout": string;
"notice-timeout-description": string;
reset: string;
};
}>;
};
readonly ar: {
readonly translation: () => Promise<{
commands: {
"export-settings-clipboard": string;
"export-settings-current-file": string;
"import-settings-clipboard": string;
"import-settings-current-file": string;
};
components: {
dialog: {
cancel: string;
confirm: string;
"double-confirm-hint": string;
};
dropdown: {
placeholder: string;
};
"edit-data": {
data: string;
export: string;
"export-to-clipboard": string;
import: string;
"import-from-clipboard": string;
reset: string;
};
find: {
"case-sensitive": string;
close: string;
"input-placeholder": string;
next: string;
previous: string;
regex: string;
results: string;
"too-many-results": string;
"whole-word": string;
};
list: {
append: string;
"move-down": string;
"move-up": string;
name_few: string;
name_one: string;
name_other: string;
name_two: string;
prepend: string;
"preset-placeholder": string;
remove: string;
};
"rules-list": {
description: string;
};
suggest: {
instructions: {
dismiss: string;
"dismiss-purpose": string;
navigate: string;
"navigate-purpose": string;
use: string;
"use-purpose": string;
};
};
};
dialogs: {
"overwrite-existing-frontmatter": string;
};
errors: {
"error-exporting-settings": string;
"error-importing-settings": string;
"error-opening-documentation": string;
"error-processing-frontmatter": string;
"malformed-data": string;
"missing-interpolation": string;
"missing-translation": string;
"no-formatter": string;
"private-API-changed": string;
"retry-outdated-frontmatter": string;
};
generic: {
API: string;
app: string;
background: string;
cancel: string;
clipboard: string;
close: string;
command: string;
"command-palette": string;
confirm: string;
"current-file": string;
data: string;
disable: string;
dismiss: string;
edit: string;
exist: string;
exist_gerund: string;
export: string;
export_gerund: string;
file: string;
find: string;
frontmatter: string;
import: string;
import_gerund: string;
language: string;
language_one: string;
language_other: string;
list: string;
"list-description_one": string;
"list-description_other": string;
"list-description_zero": string;
navigate: string;
notice: string;
open: string;
open_gerund: string;
ordinal_few: string;
ordinal_one: string;
ordinal_other: string;
ordinal_two: string;
overwrite: string;
plugin: string;
reset: string;
retry: string;
rule: string;
rule_one: string;
rule_other: string;
setting: string;
setting_one: string;
setting_other: string;
timeout: string;
use: string;
};
settings: {
"all-settings": string;
"all-settings-actions": {
edit: string;
recover: string;
reload: string;
reset: string;
undo: string;
};
description: string;
"error-notice-timeout": string;
"error-notice-timeout-description": string;
language: string;
"language-default": string;
"language-description": string;
"notice-timeout": string;
"notice-timeout-description": string;
reset: string;
};
}>;
};
readonly be: {
readonly translation: () => Promise<{
commands: {
"export-settings-clipboard": string;
"export-settings-current-file": string;
"import-settings-clipboard": string;
"import-settings-current-file": string;
};
components: {
dialog: {
cancel: string;
confirm: string;
"double-confirm-hint": string;
};
dropdown: {
placeholder: string;
};
"edit-data": {
data: string;
export: string;
"export-to-clipboard": string;
import: string;
"import-from-clipboard": string;
reset: string;
};
find: {
"case-sensitive": string;
close: string;
"input-placeholder": string;
next: string;
previous: string;
regex: string;
results: string;
"too-many-results": string;
"whole-word": string;
};
list: {
append: string;
"move-down": string;
"move-up": string;
name_few: string;
name_one: string;
name_other: string;
name_two: string;
prepend: string;
"preset-placeholder": string;
remove: string;
};
"rules-list": {
description: string;
};
suggest: {
instructions: {
dismiss: string;
"dismiss-purpose": string;
navigate: string;
"navigate-purpose": string;
use: string;
"use-purpose": string;
};
};
};
dialogs: {
"overwrite-existing-frontmatter": string;
};
errors: {
"error-exporting-settings": string;
"error-importing-settings": string;
"error-opening-documentation": string;
"error-processing-frontmatter": string;
"malformed-data": string;
"missing-interpolation": string;
"missing-translation": string;
"no-formatter": string;
"private-API-changed": string;
"retry-outdated-frontmatter": string;
};
generic: {
API: string;
app: string;
background: string;
cancel: string;
clipboard: string;
close: string;
command: string;
"command-palette": string;
confirm: string;
"current-file": string;
data: string;
disable: string;
dismiss: string;
edit: string;
exist: string;
exist_gerund: string;
export: string;
export_gerund: string;
file: string;
find: string;
frontmatter: string;
import: string;
import_gerund: string;
language: string;
language_one: string;
language_other: string;
list: string;
"list-description_one": string;
"list-description_other": string;
"list-description_zero": string;
navigate: string;
notice: string;
open: string;
open_gerund: string;
ordinal_few: string;
ordinal_one: string;
ordinal_other: string;
ordinal_two: string;
overwrite: string;
plugin: string;
reset: string;
retry: string;
rule: string;
rule_one: string;
rule_other: string;
setting: string;
setting_one: string;
setting_other: string;
timeout: string;
use: string;
};
settings: {
"all-settings": string;
"all-settings-actions": {
edit: string;
recover: string;
reload: string;
reset: string;
undo: string;
};
description: string;
"error-notice-timeout": string;
"error-notice-timeout-description": string;
language: string;
"language-default": string;
"language-description": string;
"notice-timeout": string;
"notice-timeout-description": string;
reset: string;
};
}>;
};
readonly bg: {
readonly translation: () => Promise<{
commands: {
"export-settings-clipboard": string;
"export-settings-current-file": string;
"import-settings-clipboard": string;
"import-settings-current-file": string;
};
components: {
dialog: {
cancel: string;
confirm: string;
"double-confirm-hint": string;
};
dropdown: {
placeholder: string;
};
"edit-data": {
data: string;
export: string;
"export-to-clipboard": string;
import: string;
"import-from-clipboard": string;
reset: string;
};
find: {
"case-sensitive": string;
close: string;
"input-placeholder": string;
next: string;
previous: string;
regex: string;
results: string;
"too-many-results": string;
"whole-word": string;
};
list: {
append: string;
"move-down": string;
"move-up": string;
name_few: string;
name_one: string;
name_other: string;
name_two: string;
prepend: string;
"preset-placeholder": string;
remove: string;
};
"rules-list": {
description: string;
};
suggest: {
instructions: {
dismiss: string;
"dismiss-purpose": string;
navigate: string;
"navigate-purpose": string;
use: string;
"use-purpose": string;
};
};
};
dialogs: {
"overwrite-existing-frontmatter": string;
};
errors: {
"error-exporting-settings": string;
"error-importing-settings": string;
"error-opening-documentation": string;
"error-processing-frontmatter": string;
"malformed-data": string;
"missing-interpolation": string;
"missing-translation": string;
"no-formatter": string;
"private-API-changed": string;
"retry-outdated-frontmatter": string;
};
generic: {
API: string;
app: string;
background: string;
cancel: string;
clipboard: string;
close: string;
command: string;
"command-palette": string;
confirm: string;
"current-file": string;
data: string;
disable: string;
dismiss: string;
edit: string;
exist: string;
exist_gerund: string;
export: string;
export_gerund: string;
file: string;
find: string;
frontmatter: string;
import: string;
import_gerund: string;
language: string;
language_one: string;
language_other: string;
list: string;
"list-description_one": string;
"list-description_other": string;
"list-description_zero": string;
navigate: string;
notice: string;
open: string;
open_gerund: string;
ordinal_few: string;
ordinal_one: string;
ordinal_other: string;
ordinal_two: string;
overwrite: string;
plugin: string;
reset: string;
retry: string;
rule: string;
rule_one: string;
rule_other: string;
setting: string;
setting_one: string;
setting_other: string;
timeout: string;
use: string;
};
settings: {
"all-settings": string;
"all-settings-actions": {
edit: string;
recover: string;
reload: string;
reset: string;
undo: string;
};
description: string;
"error-notice-timeout": string;
"error-notice-timeout-description": string;
language: string;
"language-default": string;
"language-description": string;
"notice-timeout": string;
"notice-timeout-description": string;
reset: string;
};
}>;
};
readonly bn: {
readonly translation: () => Promise<{
commands: {
"export-settings-clipboard": string;
"export-settings-current-file": string;
"import-settings-clipboard": string;
"import-settings-current-file": string;
};
components: {
dialog: {
cancel: string;
confirm: string;
"double-confirm-hint": string;
};
dropdown: {
placeholder: string;
};
"edit-data": {
data: string;
export: string;
"export-to-clipboard": string;
import: string;
"import-from-clipboard": string;
reset: string;
};
find: {
"case-sensitive": string;
close: string;
"input-placeholder": string;
next: string;
previous: string;
regex: string;
results: string;
"too-many-results": string;
"whole-word": string;
};
list: {
append: string;
"move-down": string;
"move-up": string;
name_few: string;
name_one: string;
name_other: string;
name_two: string;
prepend: string;
"preset-placeholder": string;
remove: string;
};
"rules-list": {
description: string;
};
suggest: {
instructions: {
dismiss: string;
"dismiss-purpose": string;
navigate: string;
"navigate-purpose": string;
use: string;
"use-purpose": string;
};
};
};
dialogs: {
"overwrite-existing-frontmatter": string;
};
errors: {
"error-exporting-settings": string;
"error-importing-settings": string;
"error-opening-documentation": string;
"error-processing-frontmatter": string;
"malformed-data": string;
"missing-interpolation": string;
"missing-translation": string;
"no-formatter": string;
"private-API-changed": string;
"retry-outdated-frontmatter": string;
};
generic: {
API: string;
app: string;
background: string;
cancel: string;
clipboard: string;
close: string;
command: string;
"command-palette": string;
confirm: string;
"current-file": string;
data: string;
disable: string;
dismiss: string;
edit: string;
exist: string;
exist_gerund: string;
export: string;
export_gerund: string;
file: string;
find: string;
frontmatter: string;
import: string;
import_gerund: string;
language: string;
language_one: string;
language_other: string;
list: string;
"list-description_one": string;
"list-description_other": string;
"list-description_zero": string;
navigate: string;
notice: string;
open: string;
open_gerund: string;
ordinal_few: string;
ordinal_one: string;
ordinal_other: string;
ordinal_two: string;
overwrite: string;
plugin: string;
reset: string;
retry: string;
rule: string;
rule_one: string;
rule_other: string;
setting: string;
setting_one: string;
setting_other: string;
timeout: string;
use: string;
};
settings: {
"all-settings": string;
"all-settings-actions": {
edit: string;
recover: string;
reload: string;
reset: string;
undo: string;
};
description: string;
"error-notice-timeout": string;
"error-notice-timeout-description": string;
language: string;
"language-default": string;
"language-description": string;
"notice-timeout": string;
"notice-timeout-description": string;
reset: string;
};
}>;
};
readonly ca: {
readonly translation: () => Promise<{
commands: {
"export-settings-clipboard": string;
"export-settings-current-file": string;
"import-settings-clipboard": string;
"import-settings-current-file": string;
};
components: {
dialog: {
cancel: string;
confirm: string;
"double-confirm-hint": string;
};
dropdown: {
placeholder: string;
};
"edit-data": {
data: string;
export: string;
"export-to-clipboard": string;
import: string;
"import-from-clipboard": string;
reset: string;
};
find: {
"case-sensitive": string;
close: string;
"input-placeholder": string;
next: string;
previous: string;
regex: string;
results: string;
"too-many-results": string;
"whole-word": string;
};
list: {
append: string;
"move-down": string;
"move-up": string;
name_few: string;
name_one: string;
name_other: string;
name_two: string;
prepend: string;
"preset-placeholder": string;
remove: string;
};
"rules-list": {
description: string;
};
suggest: {
instructions: {
dismiss: string;
"dismiss-purpose": string;
navigate: string;
"navigate-purpose": string;
use: string;
"use-purpose": string;
};
};
};
dialogs: {
"overwrite-existing-frontmatter": string;
};
errors: {
"error-exporting-settings": string;
"error-importing-settings": string;
"error-opening-documentation": string;
"error-processing-frontmatter": string;
"malformed-data": string;
"missing-interpolation": string;
"missing-translation": string;
"no-formatter": string;
"private-API-changed": string;
"retry-outdated-frontmatter": string;
};
generic: {
API: string;
app: string;
background: string;
cancel: string;
clipboard: string;
close: string;
command: string;
"command-palette": string;
confirm: string;
"current-file": string;
data: string;
disable: string;
dismiss: string;
edit: string;
exist: string;
exist_gerund: string;
export: string;
export_gerund: string;
file: string;
find: string;
frontmatter: string;
import: string;
import_gerund: string;
language: string;
language_one: string;
language_other: string;
list: string;
"list-description_one": string;
"list-description_other": string;
"list-description_zero": string;
navigate: string;
notice: string;
open: string;
open_gerund: string;
ordinal_few: string;
ordinal_one: string;
ordinal_other: string;
ordinal_two: string;
overwrite: string;
plugin: string;
reset: string;
retry: string;
rule: string;
rule_one: string;
rule_other: string;
setting: string;
setting_one: string;
setting_other: string;
timeout: string;
use: string;
};
settings: {
"all-settings": string;
"all-settings-actions": {
edit: string;
recover: string;
reload: string;
reset: string;
undo: string;
};
description: string;
"error-notice-timeout": string;
"error-notice-timeout-description": string;
language: string;
"language-default": string;
"language-description": string;
"notice-timeout": string;
"notice-timeout-description": string;
reset: string;
};
}>;
};
readonly cs: {
readonly translation: () => Promise<{
commands: {
"export-settings-clipboard": string;
"export-settings-current-file": string;
"import-settings-clipboard": string;
"import-settings-current-file": string;
};
components: {
dialog: {
cancel: string;
confirm: string;
"double-confirm-hint": string;
};
dropdown: {
placeholder: string;
};
"edit-data": {
data: string;
export: string;
"export-to-clipboard": string;
import: string;
"import-from-clipboard": string;
reset: string;
};
find: {
"case-sensitive": string;
close: string;
"input-placeholder": string;
next: string;
previous: string;
regex: string;
results: string;
"too-many-results": string;
"whole-word": string;
};
list: {
append: string;
"move-down": string;
"move-up": string;
name_few: string;
name_one: string;
name_other: string;
name_two: string;
prepend: string;
"preset-placeholder": string;
remove: string;
};
"rules-list": {
description: string;
};
suggest: {
instructions: {
dismiss: string;
"dismiss-purpose": string;
navigate: string;
"navigate-purpose": string;
use: string;
"use-purpose": string;
};
};
};
dialogs: {
"overwrite-existing-frontmatter": string;
};
errors: {
"error-exporting-settings": string;
"error-importing-settings": string;
"error-opening-documentation": string;
"error-processing-frontmatter": string;
"malformed-data": string;
"missing-interpolation": string;
"missing-translation": string;
"no-formatter": string;
"private-API-changed": string;
"retry-outdated-frontmatter": string;
};
generic: {
API: string;
app: string;
background: string;
cancel: string;
clipboard: string;
close: string;
command: string;
"command-palette": string;
confirm: string;
"current-file": string;
data: string;
disable: string;
dismiss: string;
edit: string;
exist: string;
exist_gerund: string;
export: string;
export_gerund: string;
file: string;
find: string;
frontmatter: string;
import: string;
import_gerund: string;
language: string;
language_one: string;
language_other: string;
list: string;
"list-description_one": string;
"list-description_other": string;
"list-description_zero": string;
navigate: string;
notice: string;
open: string;
open_gerund: string;
ordinal_few: string;
ordinal_one: string;
ordinal_other: string;
ordinal_two: string;
overwrite: string;
plugin: string;
reset: string;
retry: string;
rule: string;
rule_one: string;
rule_other: string;
setting: string;
setting_one: string;
setting_other: string;
timeout: string;
use: string;
};
settings: {
"all-settings": string;
"all-settings-actions": {
edit: string;
recover: string;
reload: string;
reset: string;
undo: string;
};
description: string;
"error-notice-timeout": string;
"error-notice-timeout-description": string;
language: string;
"language-default": string;
"language-description": string;
"notice-timeout": string;
"notice-timeout-description": string;
reset: string;
};
}>;
};
readonly da: {
readonly translation: () => Promise<{
commands: {
"export-settings-clipboard": string;
"export-settings-current-file": stri