Merge pull request #1340 from hgiesel/exportinternal

Export Svelte internals
This commit is contained in:
Damien Elmes 2021-08-24 10:42:17 +10:00 committed by GitHub
commit 1dd3583b43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 41 additions and 3 deletions

View File

@ -50,6 +50,7 @@ ts_library(
"lib",
"//ts/components",
"//ts/lib",
"//ts/sveltelib",
"@npm//@popperjs",
"@npm//svelte2tsx",
],

View File

@ -5,6 +5,8 @@
@typescript-eslint/no-explicit-any: "off",
*/
import "sveltelib/export-runtime";
import { getDeckOptionsInfo, DeckOptionsState } from "./lib";
import { setupI18n, ModuleName } from "lib/i18n";
import { checkNightMode } from "lib/nightmode";

View File

@ -5,6 +5,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
<script context="module" lang="typescript">
import IconButton from "components/IconButton.svelte";
import LabelButton from "components/LabelButton.svelte";
import WithShortcut from "components/WithShortcut.svelte";
import WithContext from "components/WithContext.svelte";
import WithState from "components/WithState.svelte";
@ -14,6 +15,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
export const components = {
IconButton,
LabelButton,
WithShortcut,
WithContext,
WithState,
contextKeys: { ...contextKeys, ...editorContextKeys },

View File

@ -6,6 +6,8 @@
@typescript-eslint/no-explicit-any: "off",
*/
import "sveltelib/export-runtime";
import { filterHTML } from "html-filter";
import { updateActiveButtons } from "./toolbar";
import { setupI18n, ModuleName } from "lib/i18n";

19
ts/lib/runtime-require.ts Normal file
View File

@ -0,0 +1,19 @@
// Copyright: Ankitects Pty Ltd and contributors
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
/* eslint
@typescript-eslint/no-explicit-any: "off",
*/
/// This can be extended to allow require() calls at runtime, for libraries
/// that are not included at bundling time.
export const runtimeLibraries = {};
// Export require() as a global.
(globalThis as any).require = function (name: string): unknown {
const lib = runtimeLibraries[name];
if (lib === undefined) {
throw new Error(`Cannot require(${name}) at runtime.`);
}
return lib;
};

View File

@ -13,6 +13,7 @@ ts_library(
tsconfig = "//:tsconfig.json",
visibility = ["//visibility:public"],
deps = [
"//ts/lib",
"@npm//svelte",
"@npm//tslib",
],

View File

@ -0,0 +1,11 @@
// Copyright: Ankitects Pty Ltd and contributors
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
//
// Expose the Svelte runtime bundled with Anki, so that add-ons can require() it.
// If they were to bundle their own runtime, things like bindings and contexts
// would not work.
import { runtimeLibraries } from "lib/runtime-require";
import * as svelteRuntime from "svelte/internal";
runtimeLibraries["svelte/internal"] = svelteRuntime;

View File

@ -4215,9 +4215,9 @@ svelte2tsx@^0.1.133:
pascal-case "^3.1.1"
svelte@^3.25.0:
version "3.38.2"
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.38.2.tgz#55e5c681f793ae349b5cc2fe58e5782af4275ef5"
integrity sha512-q5Dq0/QHh4BLJyEVWGe7Cej5NWs040LWjMbicBGZ+3qpFWJ1YObRmUDZKbbovddLC9WW7THTj3kYbTOFmU9fbg==
version "3.42.2"
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.42.2.tgz#0246c175c820c1aeca07300c48573a15aae3c1e4"
integrity sha512-FOyNYKXb8wdE0Ot+Ctt2/OyDLsNBP8+V6PUE9ag6ZKeLslIou0LnMu1fhtWUA+HjzKTbAM1yj+4PFLtg/3pMJA==
symbol-tree@^3.2.4:
version "3.2.4"