veryfront 0.1.21 → 0.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/bin/veryfront.js +24 -11
  2. package/esm/cli/commands/task/command-help.d.ts +3 -0
  3. package/esm/cli/commands/task/command-help.d.ts.map +1 -0
  4. package/esm/cli/commands/task/command-help.js +20 -0
  5. package/esm/cli/commands/task/command.d.ts +5 -0
  6. package/esm/cli/commands/task/command.d.ts.map +1 -0
  7. package/esm/cli/commands/task/command.js +79 -0
  8. package/esm/cli/commands/task/handler.d.ts +24 -0
  9. package/esm/cli/commands/task/handler.d.ts.map +1 -0
  10. package/esm/cli/commands/task/handler.js +17 -0
  11. package/esm/cli/help/command-definitions.d.ts.map +1 -1
  12. package/esm/cli/help/command-definitions.js +2 -0
  13. package/esm/cli/router.d.ts.map +1 -1
  14. package/esm/cli/router.js +2 -0
  15. package/esm/deno.d.ts +1 -0
  16. package/esm/deno.js +2 -1
  17. package/esm/src/discovery/discovery-engine.d.ts.map +1 -1
  18. package/esm/src/discovery/discovery-engine.js +6 -1
  19. package/esm/src/discovery/handlers/index.d.ts +1 -0
  20. package/esm/src/discovery/handlers/index.d.ts.map +1 -1
  21. package/esm/src/discovery/handlers/index.js +1 -0
  22. package/esm/src/discovery/handlers/task-handler.d.ts +7 -0
  23. package/esm/src/discovery/handlers/task-handler.d.ts.map +1 -0
  24. package/esm/src/discovery/handlers/task-handler.js +19 -0
  25. package/esm/src/discovery/types.d.ts +3 -0
  26. package/esm/src/discovery/types.d.ts.map +1 -1
  27. package/esm/src/platform/adapters/fs/veryfront/adapter.d.ts +0 -2
  28. package/esm/src/platform/adapters/fs/veryfront/adapter.d.ts.map +1 -1
  29. package/esm/src/platform/adapters/fs/veryfront/adapter.js +3 -7
  30. package/esm/src/studio/bridge-template.d.ts.map +1 -1
  31. package/esm/src/studio/bridge-template.js +3 -2
  32. package/esm/src/task/discovery.d.ts +83 -0
  33. package/esm/src/task/discovery.d.ts.map +1 -0
  34. package/esm/src/task/discovery.js +149 -0
  35. package/esm/src/task/runner.d.ts +34 -0
  36. package/esm/src/task/runner.d.ts.map +1 -0
  37. package/esm/src/task/runner.js +45 -0
  38. package/esm/src/task/types.d.ts +34 -0
  39. package/esm/src/task/types.d.ts.map +1 -0
  40. package/esm/src/task/types.js +16 -0
  41. package/esm/src/transforms/mdx/esm-module-loader/jsx/runtime-loader.js +1 -1
  42. package/esm/src/workflow/claude-code/tool.d.ts +5 -5
  43. package/package.json +2 -2
  44. package/src/cli/commands/task/command-help.ts +22 -0
  45. package/src/cli/commands/task/command.ts +98 -0
  46. package/src/cli/commands/task/handler.ts +23 -0
  47. package/src/cli/help/command-definitions.ts +2 -0
  48. package/src/cli/router.ts +2 -0
  49. package/src/deno.js +2 -1
  50. package/src/src/discovery/discovery-engine.ts +7 -0
  51. package/src/src/discovery/handlers/index.ts +1 -0
  52. package/src/src/discovery/handlers/task-handler.ts +23 -0
  53. package/src/src/discovery/types.ts +3 -0
  54. package/src/src/platform/adapters/fs/veryfront/adapter.ts +3 -7
  55. package/src/src/studio/bridge-template.ts +3 -2
  56. package/src/src/task/discovery.ts +228 -0
  57. package/src/src/task/runner.ts +94 -0
  58. package/src/src/task/types.ts +40 -0
  59. package/src/src/transforms/mdx/esm-module-loader/jsx/runtime-loader.ts +1 -1
  60. package/esm/deps/esm.sh/react@19.1.1/jsx-dev-runtime.d.ts +0 -2
  61. package/esm/deps/esm.sh/react@19.1.1/jsx-dev-runtime.d.ts.map +0 -1
  62. package/esm/deps/esm.sh/react@19.1.1/jsx-dev-runtime.js +0 -3
  63. package/src/deps/esm.sh/@types/react@19.1.17/global.d.ts +0 -165
  64. package/src/deps/esm.sh/@types/react@19.1.17/index.d.ts +0 -4267
  65. package/src/deps/esm.sh/@types/react@19.1.17/jsx-dev-runtime.d.ts +0 -45
  66. package/src/deps/esm.sh/csstype@3.1.3/index.d.ts +0 -21297
  67. package/src/deps/esm.sh/react@19.1.1/jsx-dev-runtime.d.ts +0 -45
  68. package/src/deps/esm.sh/react@19.1.1/jsx-dev-runtime.js +0 -3
@@ -490,7 +490,7 @@ export function generateStudioBridgeScript(options: StudioBridgeOptions): string
490
490
 
491
491
  html2canvasPromise = new Promise((resolve, reject) => {
492
492
  const script = document.createElement('script');
493
- script.src = 'https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js';
493
+ script.src = 'https://cdn.jsdelivr.net/npm/html2canvas-pro@2.0.0/dist/html2canvas-pro.min.js';
494
494
  script.onload = () => {
495
495
  html2canvasLoaded = true;
496
496
  resolve();
@@ -528,7 +528,8 @@ export function generateStudioBridgeScript(options: StudioBridgeOptions): string
528
528
  await new Promise(r => setTimeout(r, 100));
529
529
  }
530
530
 
531
- const canvas = await window.html2canvas(document.body, canvasOptions);
531
+ const html2canvasFn = window.html2canvas.default || window.html2canvas;
532
+ const canvas = await html2canvasFn(document.body, canvasOptions);
532
533
  const dataUrl = canvas.toDataURL('image/png', quality);
533
534
 
534
535
  window.scrollTo(0, originalScrollY);
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Task Discovery
3
+ *
4
+ * Discovers task definitions from user's project `tasks/` directory.
5
+ * Follows the same patterns as workflow-discovery.ts.
6
+ *
7
+ * Scans:
8
+ * - tasks/*.ts - task definition files
9
+ * - tasks/**\/*.ts - nested task files
10
+ *
11
+ * Task files should export a task definition:
12
+ * ```typescript
13
+ * export default {
14
+ * name: "Sync external data",
15
+ * run: async (ctx) => {
16
+ * console.log("Syncing data...")
17
+ * return { synced: 42 }
18
+ * }
19
+ * }
20
+ * ```
21
+ */
22
+
23
+ import { join } from "../../deps/jsr.io/@std/path/1.1.4/mod.js";
24
+ import { logger as baseLogger } from "../utils/index.js";
25
+ import type { RuntimeAdapter } from "../platform/index.js";
26
+ import type { VeryfrontConfig } from "../config/index.js";
27
+ import { collectFiles } from "../utils/file-discovery.js";
28
+ import { loadHandlerModule } from "../routing/api/module-loader/loader.js";
29
+ import type { TaskDefinition } from "./types.js";
30
+ import { isTaskDefinition } from "./types.js";
31
+
32
+ const logger = baseLogger.component("task-discovery");
33
+
34
+ /**
35
+ * Discovered task info
36
+ */
37
+ export interface DiscoveredTask {
38
+ /** Task ID derived from file path (e.g., "sync-data" from tasks/sync-data.ts) */
39
+ id: string;
40
+
41
+ /** Human-readable name from task definition */
42
+ name: string;
43
+
44
+ /** File path where the task is defined */
45
+ filePath: string;
46
+
47
+ /** Export name (e.g., "default" or named export) */
48
+ exportName: string;
49
+
50
+ /** The task definition */
51
+ definition: TaskDefinition;
52
+ }
53
+
54
+ /**
55
+ * Options for task discovery
56
+ */
57
+ export interface TaskDiscoveryOptions {
58
+ /** Project directory */
59
+ projectDir: string;
60
+
61
+ /** Runtime adapter for filesystem operations */
62
+ adapter: RuntimeAdapter;
63
+
64
+ /** Veryfront config (for import maps, etc.) */
65
+ config?: VeryfrontConfig;
66
+
67
+ /** Base directory for tasks (default: "tasks") */
68
+ tasksDir?: string;
69
+
70
+ /** Enable debug logging */
71
+ debug?: boolean;
72
+ }
73
+
74
+ /**
75
+ * Result of task discovery
76
+ */
77
+ export interface TaskDiscoveryResult {
78
+ /** All discovered tasks */
79
+ tasks: DiscoveredTask[];
80
+
81
+ /** Errors encountered during discovery */
82
+ errors: Array<{ filePath: string; error: string }>;
83
+ }
84
+
85
+ /**
86
+ * Derive task ID from file path (e.g., "tasks/sync-data.ts" → "sync-data")
87
+ */
88
+ export function deriveTaskId(filePath: string, tasksDir: string): string {
89
+ // Remove the tasks dir prefix and extension
90
+ let relative = filePath;
91
+ const dirPrefix = tasksDir.endsWith("/") ? tasksDir : `${tasksDir}/`;
92
+ if (relative.startsWith(dirPrefix)) {
93
+ relative = relative.slice(dirPrefix.length);
94
+ }
95
+ // Remove extension
96
+ return relative.replace(/\.(ts|tsx|js|jsx)$/, "");
97
+ }
98
+
99
+ /**
100
+ * Discover all tasks in a project
101
+ */
102
+ export async function discoverTasks(
103
+ options: TaskDiscoveryOptions,
104
+ ): Promise<TaskDiscoveryResult> {
105
+ const {
106
+ projectDir,
107
+ adapter,
108
+ config,
109
+ tasksDir = "tasks",
110
+ debug = false,
111
+ } = options;
112
+
113
+ const tasks: DiscoveredTask[] = [];
114
+ const errors: Array<{ filePath: string; error: string }> = [];
115
+
116
+ const fsType = config?.fs?.type ?? "local";
117
+ const useRelativePaths = fsType === "github" || fsType === "veryfront-api";
118
+ const baseDir = useRelativePaths ? tasksDir : join(projectDir, tasksDir);
119
+
120
+ if (debug) {
121
+ logger.info(`Scanning ${baseDir} for tasks`);
122
+ }
123
+
124
+ try {
125
+ const dirExists = await adapter.fs.exists(baseDir);
126
+ if (!dirExists) {
127
+ if (debug) {
128
+ logger.info(`No tasks directory found at ${baseDir}`);
129
+ }
130
+ return { tasks, errors };
131
+ }
132
+
133
+ const files = await collectFiles({
134
+ baseDir,
135
+ extensions: [".ts", ".tsx", ".js", ".jsx"],
136
+ recursive: true,
137
+ ignorePatterns: ["node_modules", ".git", "__tests__", "*.test.*", "*.spec.*"],
138
+ adapter,
139
+ });
140
+
141
+ if (debug) {
142
+ logger.info(`Found ${files.length} potential task files`);
143
+ }
144
+
145
+ for (const file of files) {
146
+ try {
147
+ const module = await loadHandlerModule({
148
+ projectDir,
149
+ modulePath: file.path,
150
+ adapter,
151
+ config,
152
+ });
153
+
154
+ if (!module) continue;
155
+
156
+ // Prefer default export (aligned with discovery-engine behaviour)
157
+ const defaultExport = (module as Record<string, unknown>).default;
158
+ if (isTaskDefinition(defaultExport)) {
159
+ const id = deriveTaskId(file.path, baseDir);
160
+ tasks.push({
161
+ id,
162
+ name: defaultExport.name || id,
163
+ filePath: file.path,
164
+ exportName: "default",
165
+ definition: defaultExport,
166
+ });
167
+
168
+ if (debug) {
169
+ logger.info(`Found task "${id}" in ${file.path} (export: default)`);
170
+ }
171
+ } else {
172
+ // Fallback: check named exports
173
+ for (const [exportName, value] of Object.entries(module)) {
174
+ if (exportName === "default") continue;
175
+ if (isTaskDefinition(value)) {
176
+ const id = deriveTaskId(file.path, baseDir);
177
+ tasks.push({
178
+ id,
179
+ name: value.name || id,
180
+ filePath: file.path,
181
+ exportName,
182
+ definition: value,
183
+ });
184
+
185
+ if (debug) {
186
+ logger.info(`Found task "${id}" in ${file.path} (export: ${exportName})`);
187
+ }
188
+ break; // Only take the first valid named export per file
189
+ }
190
+ }
191
+ }
192
+ } catch (error) {
193
+ const errorMsg = error instanceof Error ? error.message : String(error);
194
+ errors.push({ filePath: file.path, error: errorMsg });
195
+
196
+ if (debug) {
197
+ logger.warn(`Failed to load ${file.path}: ${errorMsg}`);
198
+ }
199
+ }
200
+ }
201
+
202
+ if (debug) {
203
+ logger.info(`Discovered ${tasks.length} tasks`);
204
+ }
205
+
206
+ return { tasks, errors };
207
+ } catch (error) {
208
+ const errorMsg = error instanceof Error ? error.message : String(error);
209
+ logger.error(`Task discovery failed: ${errorMsg}`);
210
+ errors.push({ filePath: baseDir, error: errorMsg });
211
+ return { tasks, errors };
212
+ }
213
+ }
214
+
215
+ /**
216
+ * Find a specific task by ID
217
+ *
218
+ * TODO: Optimise by short-circuiting discovery once the target task is found
219
+ * instead of discovering all tasks first. This is consistent with the workflow
220
+ * pattern but could be improved for large projects with many task files.
221
+ */
222
+ export async function findTaskById(
223
+ taskId: string,
224
+ options: TaskDiscoveryOptions,
225
+ ): Promise<DiscoveredTask | null> {
226
+ const { tasks } = await discoverTasks(options);
227
+ return tasks.find((t) => t.id === taskId) ?? null;
228
+ }
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Task Runner
3
+ *
4
+ * Executes a discovered task by calling its run() function
5
+ * with the appropriate context.
6
+ */
7
+ import * as dntShim from "../../_dnt.shims.js";
8
+
9
+
10
+ import { logger as baseLogger } from "../utils/index.js";
11
+ import type { DiscoveredTask } from "./discovery.js";
12
+ import type { TaskContext } from "./types.js";
13
+
14
+ const logger = baseLogger.component("task-runner");
15
+
16
+ /**
17
+ * Options for running a task
18
+ */
19
+ export interface RunTaskOptions {
20
+ /** The discovered task to run */
21
+ task: DiscoveredTask;
22
+
23
+ /** Additional config to pass to the task */
24
+ config?: Record<string, unknown>;
25
+
26
+ /** Project ID (for cloud context) */
27
+ projectId?: string;
28
+
29
+ /** If set, only these env var names are passed to the task. */
30
+ envAllowlist?: string[];
31
+
32
+ /** Enable debug logging */
33
+ debug?: boolean;
34
+ }
35
+
36
+ /**
37
+ * Result of running a task
38
+ */
39
+ export interface TaskRunResult {
40
+ /** Whether the task completed successfully */
41
+ success: boolean;
42
+
43
+ /** Return value from the task's run() */
44
+ result?: unknown;
45
+
46
+ /** Error if the task failed */
47
+ error?: string;
48
+
49
+ /** Execution duration in milliseconds */
50
+ durationMs: number;
51
+ }
52
+
53
+ /**
54
+ * Run a task with the given options
55
+ */
56
+ export async function runTask(options: RunTaskOptions): Promise<TaskRunResult> {
57
+ const { task, config = {}, projectId, envAllowlist, debug = false } = options;
58
+ const start = Date.now();
59
+
60
+ if (debug) {
61
+ logger.info(`Running task "${task.id}" (${task.name})`);
62
+ }
63
+
64
+ const env: Record<string, string> = { ...dntShim.Deno.env.toObject() };
65
+ if (envAllowlist) {
66
+ for (const k of Object.keys(env)) {
67
+ if (!envAllowlist.includes(k)) delete env[k];
68
+ }
69
+ }
70
+
71
+ const ctx: TaskContext = {
72
+ env,
73
+ config,
74
+ projectId,
75
+ };
76
+
77
+ try {
78
+ const result = await task.definition.run(ctx);
79
+ const durationMs = Date.now() - start;
80
+
81
+ if (debug) {
82
+ logger.info(`Task "${task.id}" completed in ${durationMs}ms`);
83
+ }
84
+
85
+ return { success: true, result, durationMs };
86
+ } catch (error) {
87
+ const durationMs = Date.now() - start;
88
+ const errorMsg = error instanceof Error ? error.message : String(error);
89
+
90
+ logger.error(`Task "${task.id}" failed: ${errorMsg}`);
91
+
92
+ return { success: false, error: errorMsg, durationMs };
93
+ }
94
+ }
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Task Types
3
+ *
4
+ * Type definitions for the task execution system.
5
+ * Tasks are user-defined functions in `tasks/` that can run
6
+ * locally via `veryfront task <name>` or in the cloud as Jobs/CronJobs.
7
+ */
8
+
9
+ /**
10
+ * Context passed to task run() function
11
+ */
12
+ export interface TaskContext {
13
+ /** Environment variables */
14
+ env: Record<string, string>;
15
+ /** Job config (when run as a cloud job) */
16
+ config: Record<string, unknown>;
17
+ /** Project ID (when run as a cloud job) */
18
+ projectId?: string;
19
+ }
20
+
21
+ /**
22
+ * Task definition exported from a tasks/ file
23
+ */
24
+ export interface TaskDefinition {
25
+ /** Human-readable name */
26
+ name?: string;
27
+ /** Task description */
28
+ description?: string;
29
+ /** The function to execute */
30
+ run: (ctx: TaskContext) => Promise<unknown> | unknown;
31
+ }
32
+
33
+ /**
34
+ * Type guard: checks if a value looks like a TaskDefinition
35
+ */
36
+ export function isTaskDefinition(value: unknown): value is TaskDefinition {
37
+ if (!value || typeof value !== "object") return false;
38
+ const obj = value as Record<string, unknown>;
39
+ return typeof obj.run === "function";
40
+ }
@@ -7,7 +7,7 @@ export interface JSXRuntime {
7
7
 
8
8
  export async function loadJSXRuntime(): Promise<JSXRuntime> {
9
9
  // deno-lint-ignore no-explicit-any
10
- const runtime = (await import("../../../../../deps/esm.sh/react@19.1.1/jsx-dev-runtime.js")) as any;
10
+ const runtime = (await import("react/jsx-dev-runtime")) as any;
11
11
 
12
12
  return {
13
13
  Fragment: runtime.Fragment,
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=jsx-dev-runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsx-dev-runtime.d.ts","sourceRoot":"","sources":["../../../../src/deps/esm.sh/react@19.1.1/jsx-dev-runtime.js"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- /* esm.sh - react@19.1.1/jsx-dev-runtime */
2
- export * from "react/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/es2022/jsx-dev-runtime.development.mjs";
3
- export { default } from "react/X-ZGNzc3R5cGVAMy4yLjMKZXJlYWN0/es2022/jsx-dev-runtime.development.mjs";
@@ -1,165 +0,0 @@
1
- /*
2
- React projects that don't include the DOM library need these interfaces to compile.
3
- React Native applications use React, but there is no DOM available. The JavaScript runtime
4
- is ES6/ES2015 only. These definitions allow such projects to compile with only `--lib ES6`.
5
-
6
- Warning: all of these interfaces are empty. If you want type definitions for various properties
7
- (such as HTMLInputElement.prototype.value), you need to add `--lib DOM` (via command line or tsconfig.json).
8
- */
9
-
10
- interface Event {}
11
- interface AnimationEvent extends Event {}
12
- interface ClipboardEvent extends Event {}
13
- interface CompositionEvent extends Event {}
14
- interface DragEvent extends Event {}
15
- interface FocusEvent extends Event {}
16
- interface InputEvent extends Event {}
17
- interface KeyboardEvent extends Event {}
18
- interface MouseEvent extends Event {}
19
- interface TouchEvent extends Event {}
20
- interface PointerEvent extends Event {}
21
- interface ToggleEvent extends Event {}
22
- interface TransitionEvent extends Event {}
23
- interface UIEvent extends Event {}
24
- interface WheelEvent extends Event {}
25
-
26
- interface EventTarget {}
27
- interface Document {}
28
- interface DataTransfer {}
29
- interface StyleMedia {}
30
-
31
- interface Element {}
32
- interface DocumentFragment {}
33
-
34
- interface HTMLElement extends Element {}
35
- interface HTMLAnchorElement extends HTMLElement {}
36
- interface HTMLAreaElement extends HTMLElement {}
37
- interface HTMLAudioElement extends HTMLElement {}
38
- interface HTMLBaseElement extends HTMLElement {}
39
- interface HTMLBodyElement extends HTMLElement {}
40
- interface HTMLBRElement extends HTMLElement {}
41
- interface HTMLButtonElement extends HTMLElement {}
42
- interface HTMLCanvasElement extends HTMLElement {}
43
- interface HTMLDataElement extends HTMLElement {}
44
- interface HTMLDataListElement extends HTMLElement {}
45
- interface HTMLDetailsElement extends HTMLElement {}
46
- interface HTMLDialogElement extends HTMLElement {}
47
- interface HTMLDivElement extends HTMLElement {}
48
- interface HTMLDListElement extends HTMLElement {}
49
- interface HTMLEmbedElement extends HTMLElement {}
50
- interface HTMLFieldSetElement extends HTMLElement {}
51
- interface HTMLFormElement extends HTMLElement {}
52
- interface HTMLHeadingElement extends HTMLElement {}
53
- interface HTMLHeadElement extends HTMLElement {}
54
- interface HTMLHRElement extends HTMLElement {}
55
- interface HTMLHtmlElement extends HTMLElement {}
56
- interface HTMLIFrameElement extends HTMLElement {}
57
- interface HTMLImageElement extends HTMLElement {}
58
- interface HTMLInputElement extends HTMLElement {}
59
- interface HTMLModElement extends HTMLElement {}
60
- interface HTMLLabelElement extends HTMLElement {}
61
- interface HTMLLegendElement extends HTMLElement {}
62
- interface HTMLLIElement extends HTMLElement {}
63
- interface HTMLLinkElement extends HTMLElement {}
64
- interface HTMLMapElement extends HTMLElement {}
65
- interface HTMLMetaElement extends HTMLElement {}
66
- interface HTMLMeterElement extends HTMLElement {}
67
- interface HTMLObjectElement extends HTMLElement {}
68
- interface HTMLOListElement extends HTMLElement {}
69
- interface HTMLOptGroupElement extends HTMLElement {}
70
- interface HTMLOptionElement extends HTMLElement {}
71
- interface HTMLOutputElement extends HTMLElement {}
72
- interface HTMLParagraphElement extends HTMLElement {}
73
- interface HTMLParamElement extends HTMLElement {}
74
- interface HTMLPreElement extends HTMLElement {}
75
- interface HTMLProgressElement extends HTMLElement {}
76
- interface HTMLQuoteElement extends HTMLElement {}
77
- interface HTMLSlotElement extends HTMLElement {}
78
- interface HTMLScriptElement extends HTMLElement {}
79
- interface HTMLSelectElement extends HTMLElement {}
80
- interface HTMLSourceElement extends HTMLElement {}
81
- interface HTMLSpanElement extends HTMLElement {}
82
- interface HTMLStyleElement extends HTMLElement {}
83
- interface HTMLTableElement extends HTMLElement {}
84
- interface HTMLTableColElement extends HTMLElement {}
85
- interface HTMLTableDataCellElement extends HTMLElement {}
86
- interface HTMLTableHeaderCellElement extends HTMLElement {}
87
- interface HTMLTableRowElement extends HTMLElement {}
88
- interface HTMLTableSectionElement extends HTMLElement {}
89
- interface HTMLTemplateElement extends HTMLElement {}
90
- interface HTMLTextAreaElement extends HTMLElement {}
91
- interface HTMLTimeElement extends HTMLElement {}
92
- interface HTMLTitleElement extends HTMLElement {}
93
- interface HTMLTrackElement extends HTMLElement {}
94
- interface HTMLUListElement extends HTMLElement {}
95
- interface HTMLVideoElement extends HTMLElement {}
96
- interface HTMLWebViewElement extends HTMLElement {}
97
-
98
- interface SVGElement extends Element {}
99
- interface SVGSVGElement extends SVGElement {}
100
- interface SVGCircleElement extends SVGElement {}
101
- interface SVGClipPathElement extends SVGElement {}
102
- interface SVGDefsElement extends SVGElement {}
103
- interface SVGDescElement extends SVGElement {}
104
- interface SVGEllipseElement extends SVGElement {}
105
- interface SVGFEBlendElement extends SVGElement {}
106
- interface SVGFEColorMatrixElement extends SVGElement {}
107
- interface SVGFEComponentTransferElement extends SVGElement {}
108
- interface SVGFECompositeElement extends SVGElement {}
109
- interface SVGFEConvolveMatrixElement extends SVGElement {}
110
- interface SVGFEDiffuseLightingElement extends SVGElement {}
111
- interface SVGFEDisplacementMapElement extends SVGElement {}
112
- interface SVGFEDistantLightElement extends SVGElement {}
113
- interface SVGFEDropShadowElement extends SVGElement {}
114
- interface SVGFEFloodElement extends SVGElement {}
115
- interface SVGFEFuncAElement extends SVGElement {}
116
- interface SVGFEFuncBElement extends SVGElement {}
117
- interface SVGFEFuncGElement extends SVGElement {}
118
- interface SVGFEFuncRElement extends SVGElement {}
119
- interface SVGFEGaussianBlurElement extends SVGElement {}
120
- interface SVGFEImageElement extends SVGElement {}
121
- interface SVGFEMergeElement extends SVGElement {}
122
- interface SVGFEMergeNodeElement extends SVGElement {}
123
- interface SVGFEMorphologyElement extends SVGElement {}
124
- interface SVGFEOffsetElement extends SVGElement {}
125
- interface SVGFEPointLightElement extends SVGElement {}
126
- interface SVGFESpecularLightingElement extends SVGElement {}
127
- interface SVGFESpotLightElement extends SVGElement {}
128
- interface SVGFETileElement extends SVGElement {}
129
- interface SVGFETurbulenceElement extends SVGElement {}
130
- interface SVGFilterElement extends SVGElement {}
131
- interface SVGForeignObjectElement extends SVGElement {}
132
- interface SVGGElement extends SVGElement {}
133
- interface SVGImageElement extends SVGElement {}
134
- interface SVGLineElement extends SVGElement {}
135
- interface SVGLinearGradientElement extends SVGElement {}
136
- interface SVGMarkerElement extends SVGElement {}
137
- interface SVGMaskElement extends SVGElement {}
138
- interface SVGMetadataElement extends SVGElement {}
139
- interface SVGPathElement extends SVGElement {}
140
- interface SVGPatternElement extends SVGElement {}
141
- interface SVGPolygonElement extends SVGElement {}
142
- interface SVGPolylineElement extends SVGElement {}
143
- interface SVGRadialGradientElement extends SVGElement {}
144
- interface SVGRectElement extends SVGElement {}
145
- interface SVGSetElement extends SVGElement {}
146
- interface SVGStopElement extends SVGElement {}
147
- interface SVGSwitchElement extends SVGElement {}
148
- interface SVGSymbolElement extends SVGElement {}
149
- interface SVGTextElement extends SVGElement {}
150
- interface SVGTextPathElement extends SVGElement {}
151
- interface SVGTSpanElement extends SVGElement {}
152
- interface SVGUseElement extends SVGElement {}
153
- interface SVGViewElement extends SVGElement {}
154
-
155
- interface FormData {}
156
- interface Text {}
157
- interface TouchList {}
158
- interface WebGLRenderingContext {}
159
- interface WebGL2RenderingContext {}
160
-
161
- interface TrustedHTML {}
162
-
163
- interface Blob {}
164
- interface MediaStream {}
165
- interface MediaSource {}