replace exportToHtml by Object.assign(window, { obj })

This commit is contained in:
imperosol
2026-05-21 22:41:51 +02:00
parent 6cec2e74d0
commit ce0ddcd184
5 changed files with 7 additions and 21 deletions
@@ -1,4 +1,3 @@
import { exportToHtml } from "#core:utils/globals.ts";
import { newsDeleteNews, newsFetchNewsDates, newsPublishNews } from "#openapi"; import { newsDeleteNews, newsFetchNewsDates, newsPublishNews } from "#openapi";
// This will be used in jinja templates, // This will be used in jinja templates,
@@ -13,7 +12,8 @@ const AlertState = {
// biome-ignore lint/style/useNamingConvention: this feels more like an enum // biome-ignore lint/style/useNamingConvention: this feels more like an enum
DISPLAYED: 4, // When published at page generation DISPLAYED: 4, // When published at page generation
}; };
exportToHtml("AlertState", AlertState); // biome-ignore lint/style/useNamingConvention: it's an enum, PascalCase is better
Object.assign(window, { AlertState });
document.addEventListener("alpine:init", () => { document.addEventListener("alpine:init", () => {
Alpine.data("moderationAlert", (newsId: number) => ({ Alpine.data("moderationAlert", (newsId: number) => ({
+3 -3
View File
@@ -1,6 +1,5 @@
// biome-ignore lint/performance/noNamespaceImport: this is the recommended way from the documentation // biome-ignore lint/performance/noNamespaceImport: this is the recommended way from the documentation
import * as Sentry from "@sentry/browser"; import * as Sentry from "@sentry/browser";
import { exportToHtml } from "#core:utils/globals.ts";
interface LoggedUser { interface LoggedUser {
name: string; name: string;
@@ -13,7 +12,7 @@ interface SentryOptions {
user?: LoggedUser; user?: LoggedUser;
} }
exportToHtml("loadSentryPopup", (options: SentryOptions) => { const loadSentryPopup = (options: SentryOptions) => {
Sentry.init({ Sentry.init({
dsn: options.dsn, dsn: options.dsn,
}); });
@@ -21,4 +20,5 @@ exportToHtml("loadSentryPopup", (options: SentryOptions) => {
eventId: options.eventId, eventId: options.eventId,
...(options.user ?? {}), ...(options.user ?? {}),
}); });
}); };
Object.assign(window, { loadSentryPopup });
-14
View File
@@ -5,17 +5,3 @@ declare global {
const gettext: (text: string) => string; const gettext: (text: string) => string;
const interpolate: <T>(fmt: string, args: string[] | T, isNamed?: boolean) => string; const interpolate: <T>(fmt: string, args: string[] | T, isNamed?: boolean) => string;
} }
/**
* Helper function to export typescript functions to regular html and jinja files
* Without it, you either have to use the any keyword and suppress warnings or do a
* very painful type conversion workaround which is only here to please the linter
*
* This is only useful if you're using typescript, this is equivalent to doing
* window.yourFunction = yourFunction
**/
// biome-ignore lint/suspicious/noExplicitAny: Avoid strange tricks to export functions
export function exportToHtml(name: string, func: any) {
// biome-ignore lint/suspicious/noExplicitAny: Avoid strange tricks to export functions
(window as any)[name] = func;
}
+1 -1
View File
@@ -51,7 +51,7 @@ Dans le cas où une paire clef-valeur du localStorage subit un changement
dans son schéma de données, utilisez `versionedLocalStorage` : dans son schéma de données, utilisez `versionedLocalStorage` :
```typescript ```typescript
import { versionedLocalStorage } from "#core:core/cache"; import { versionedLocalStorage } from "#core:core/localstorage";
const foo = () => { const foo = () => {
let obj = versionedLocalStorage.getItem("<key>", { version: 1 }); let obj = versionedLocalStorage.getItem("<key>", { version: 1 });
@@ -1,4 +1,4 @@
import { versionedLocalStorage } from "#core:core/cache"; import { versionedLocalStorage } from "#core:core/localstorage";
interface BasketItem { interface BasketItem {
priceId: number; priceId: number;