mikuru 1.0.26 → 1.0.28

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 (57) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +36 -4
  3. package/components/MikuruAudioPlayer.mikuru +263 -0
  4. package/components/MikuruCarousel.mikuru +280 -0
  5. package/components/MikuruCodeBlock.mikuru +96 -0
  6. package/components/MikuruDropdown.mikuru +153 -0
  7. package/components/MikuruImageViewer.mikuru +269 -0
  8. package/components/MikuruModal.mikuru +159 -0
  9. package/components/MikuruProgress.mikuru +85 -0
  10. package/components/MikuruToast.mikuru +128 -0
  11. package/components/MikuruToolTip.mikuru +95 -0
  12. package/components/MikuruVideoPlayer.mikuru +635 -0
  13. package/dist/compiler/compile.js +9 -2
  14. package/dist/compiler/compile.js.map +1 -1
  15. package/dist/compiler/compileHydration.js +9 -2
  16. package/dist/compiler/compileHydration.js.map +1 -1
  17. package/dist/compiler/compileSsr.js +4 -1
  18. package/dist/compiler/compileSsr.js.map +1 -1
  19. package/dist/compiler/generate.d.ts +1 -0
  20. package/dist/compiler/generate.js +17 -2
  21. package/dist/compiler/generate.js.map +1 -1
  22. package/dist/compiler/generateHydration.js +1 -1
  23. package/dist/compiler/generateHydration.js.map +1 -1
  24. package/dist/compiler/index.d.ts +2 -0
  25. package/dist/compiler/index.js +1 -0
  26. package/dist/compiler/index.js.map +1 -1
  27. package/dist/compiler/parseSfc.js +20 -2
  28. package/dist/compiler/parseSfc.js.map +1 -1
  29. package/dist/compiler/sourceMap.js +72 -16
  30. package/dist/compiler/sourceMap.js.map +1 -1
  31. package/dist/compiler/templateTypeCheck.d.ts +19 -0
  32. package/dist/compiler/templateTypeCheck.js +270 -0
  33. package/dist/compiler/templateTypeCheck.js.map +1 -0
  34. package/dist/compiler/types.d.ts +7 -0
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.js +1 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/runtime/devtools.d.ts +19 -5
  39. package/dist/runtime/devtools.js +26 -3
  40. package/dist/runtime/devtools.js.map +1 -1
  41. package/dist/runtime/index.d.ts +2 -2
  42. package/dist/runtime/index.js +1 -1
  43. package/dist/runtime/index.js.map +1 -1
  44. package/dist/vite.d.ts +1 -0
  45. package/dist/vite.js +65 -3
  46. package/dist/vite.js.map +1 -1
  47. package/package.json +84 -2
  48. package/types/components/MikuruAudioPlayer.d.ts +12 -0
  49. package/types/components/MikuruCarousel.d.ts +21 -0
  50. package/types/components/MikuruCodeBlock.d.ts +11 -0
  51. package/types/components/MikuruDropdown.d.ts +17 -0
  52. package/types/components/MikuruImageViewer.d.ts +14 -0
  53. package/types/components/MikuruModal.d.ts +14 -0
  54. package/types/components/MikuruProgress.d.ts +12 -0
  55. package/types/components/MikuruToast.d.ts +17 -0
  56. package/types/components/MikuruToolTip.d.ts +11 -0
  57. package/types/components/MikuruVideoPlayer.d.ts +13 -0
@@ -15,7 +15,7 @@ export function createSourceMap(code, descriptor, root) {
15
15
  let previousSourceLine = 0;
16
16
  let previousSourceColumn = 0;
17
17
  for (const line of generatedLines) {
18
- const original = pickOriginalLocation(line, {
18
+ const segments = createLineSegments(line, {
19
19
  templateLocation,
20
20
  scriptLocation,
21
21
  styleLocation,
@@ -23,21 +23,21 @@ export function createSourceMap(code, descriptor, root) {
23
23
  styleLineCandidates,
24
24
  templateCandidates
25
25
  });
26
- const generatedColumn = Math.max(0, line.length - line.trimStart().length);
27
- const sourceIndex = 0;
28
- const originalLine = original.line - 1;
29
- const originalColumn = original.column - 1;
30
- mappings.push([
31
- [
32
- generatedColumn,
33
- sourceIndex - previousSourceIndex,
34
- originalLine - previousSourceLine,
35
- originalColumn - previousSourceColumn
36
- ]
37
- ]);
38
- previousSourceIndex = sourceIndex;
39
- previousSourceLine = originalLine;
40
- previousSourceColumn = originalColumn;
26
+ let previousGeneratedColumn = 0;
27
+ const encodedLine = [];
28
+ for (const segment of segments) {
29
+ encodedLine.push([
30
+ segment.generatedColumn - previousGeneratedColumn,
31
+ segment.sourceIndex - previousSourceIndex,
32
+ segment.originalLine - previousSourceLine,
33
+ segment.originalColumn - previousSourceColumn
34
+ ]);
35
+ previousGeneratedColumn = segment.generatedColumn;
36
+ previousSourceIndex = segment.sourceIndex;
37
+ previousSourceLine = segment.originalLine;
38
+ previousSourceColumn = segment.originalColumn;
39
+ }
40
+ mappings.push(encodedLine);
41
41
  }
42
42
  return {
43
43
  version: 3,
@@ -48,6 +48,62 @@ export function createSourceMap(code, descriptor, root) {
48
48
  mappings: mappings.map((segments) => segments.map((segment) => segment.map(encodeVlq).join("")).join(",")).join(";")
49
49
  };
50
50
  }
51
+ function createLineSegments(generatedLine, context) {
52
+ const segments = [];
53
+ for (const candidate of [
54
+ ...context.scriptLineCandidates,
55
+ ...context.styleLineCandidates,
56
+ ...context.templateCandidates
57
+ ]) {
58
+ for (const column of findNeedleColumns(generatedLine, candidate.needle)) {
59
+ segments.push({
60
+ generatedColumn: column,
61
+ sourceIndex: 0,
62
+ originalLine: candidate.line - 1,
63
+ originalColumn: candidate.column - 1
64
+ });
65
+ }
66
+ }
67
+ if (segments.length > 0) {
68
+ return dedupeSegments(segments).sort((left, right) => left.generatedColumn - right.generatedColumn);
69
+ }
70
+ const generatedColumn = Math.max(0, generatedLine.length - generatedLine.trimStart().length);
71
+ const original = pickOriginalLocation(generatedLine, context);
72
+ return [
73
+ {
74
+ generatedColumn,
75
+ sourceIndex: 0,
76
+ originalLine: original.line - 1,
77
+ originalColumn: original.column - 1
78
+ }
79
+ ];
80
+ }
81
+ function findNeedleColumns(line, needle) {
82
+ const columns = [];
83
+ let cursor = 0;
84
+ while (cursor < line.length) {
85
+ const index = line.indexOf(needle, cursor);
86
+ if (index === -1) {
87
+ break;
88
+ }
89
+ columns.push(index);
90
+ cursor = index + Math.max(1, needle.length);
91
+ }
92
+ return columns;
93
+ }
94
+ function dedupeSegments(segments) {
95
+ const seen = new Set();
96
+ const result = [];
97
+ for (const segment of segments) {
98
+ const key = `${segment.generatedColumn}:${segment.sourceIndex}:${segment.originalLine}:${segment.originalColumn}`;
99
+ if (seen.has(key)) {
100
+ continue;
101
+ }
102
+ seen.add(key);
103
+ result.push(segment);
104
+ }
105
+ return result;
106
+ }
51
107
  function pickOriginalLocation(generatedLine, context) {
52
108
  const trimmedLine = generatedLine.trim();
53
109
  const scriptCandidate = context.scriptLineCandidates.find((candidate) => candidate.needle === trimmedLine);
@@ -1 +1 @@
1
- {"version":3,"file":"sourceMap.js","sourceRoot":"","sources":["../../src/compiler/sourceMap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sourceMap.js","sourceRoot":"","sources":["../../src/compiler/sourceMap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ElementNode, SfcDescriptor } from "./types.js";
2
+ export type TemplateTypeCheckDiagnostic = {
3
+ message: string;
4
+ line: number;
5
+ column: number;
6
+ offset: number;
7
+ filename?: string;
8
+ code?: number;
9
+ };
10
+ export type TemplateTypeCheckResult = {
11
+ ok: boolean;
12
+ diagnostics: TemplateTypeCheckDiagnostic[];
13
+ code: string;
14
+ };
15
+ export declare function typeCheckTemplate(source: string, options?: {
16
+ filename?: string;
17
+ }): TemplateTypeCheckResult;
18
+ export declare function typeCheckTemplateDescriptor(descriptor: SfcDescriptor, ast: ElementNode): TemplateTypeCheckResult;
19
+ export declare function assertTemplateTypeCheck(descriptor: SfcDescriptor, ast: ElementNode): TemplateTypeCheckResult;
@@ -0,0 +1,270 @@
1
+ import * as ts from "typescript";
2
+ import { createCompileError, getSourceLocation } from "./errors.js";
3
+ import { compileTemplateExpression, parseForExpression, validateTemplateExpression } from "./parseExpression.js";
4
+ import { parseSfc } from "./parseSfc.js";
5
+ import { parseTemplate } from "./parseTemplate.js";
6
+ export function typeCheckTemplate(source, options = {}) {
7
+ const descriptor = parseSfc(source, options.filename);
8
+ const ast = parseTemplate(descriptor.template, {
9
+ filename: options.filename,
10
+ source,
11
+ offset: descriptor.templateOffset
12
+ });
13
+ return typeCheckTemplateDescriptor(descriptor, ast);
14
+ }
15
+ export function typeCheckTemplateDescriptor(descriptor, ast) {
16
+ const source = descriptor.source ?? "";
17
+ const filename = descriptor.filename ?? "anonymous.mikuru";
18
+ const expressions = collectTemplateCheckExpressions(ast, source, filename);
19
+ const emitted = generateTypeCheckLines(descriptor, expressions);
20
+ const code = emitted.map((line) => line.text).join("\n");
21
+ const diagnostics = runTypeScriptCheck(code, filename, emitted);
22
+ return {
23
+ ok: diagnostics.length === 0,
24
+ diagnostics,
25
+ code
26
+ };
27
+ }
28
+ export function assertTemplateTypeCheck(descriptor, ast) {
29
+ const result = typeCheckTemplateDescriptor(descriptor, ast);
30
+ if (!result.ok) {
31
+ const diagnostic = result.diagnostics[0];
32
+ throw createCompileError(`Template type check failed: ${diagnostic.message}`, descriptor.source ?? "", diagnostic.offset, descriptor.filename);
33
+ }
34
+ return result;
35
+ }
36
+ function collectTemplateCheckExpressions(root, source, filename) {
37
+ const expressions = [];
38
+ visitNode(root, [], expressions, { source, filename }, false);
39
+ return expressions;
40
+ }
41
+ function visitNode(node, scopes, expressions, context, inPre) {
42
+ if (node.type === "text") {
43
+ if (inPre) {
44
+ return;
45
+ }
46
+ for (const part of node.parts) {
47
+ if (part.type === "expression") {
48
+ expressions.push({ expression: part.value, usage: "interpolation", location: part.loc, scopes });
49
+ }
50
+ }
51
+ return;
52
+ }
53
+ const pre = inPre || hasAttr(node, "v-pre");
54
+ if (pre) {
55
+ for (const child of node.children) {
56
+ visitNode(child, scopes, expressions, context, true);
57
+ }
58
+ return;
59
+ }
60
+ let childScopes = scopes;
61
+ for (const attr of node.attrs) {
62
+ if (attr.name === "v-for" && attr.value !== true) {
63
+ const parsed = parseForExpression(attr.value, toExpressionContext(attr.valueLoc, context));
64
+ const scope = {
65
+ item: parsed.item,
66
+ index: parsed.index,
67
+ source: parsed.source,
68
+ location: attr.valueLoc
69
+ };
70
+ expressions.push({ expression: parsed.source, usage: "v-for source", location: attr.valueLoc, scopes });
71
+ childScopes = [...scopes, scope];
72
+ continue;
73
+ }
74
+ collectAttributeExpression(attr, expressions, childScopes, context);
75
+ }
76
+ for (const child of node.children) {
77
+ visitNode(child, childScopes, expressions, context, false);
78
+ }
79
+ }
80
+ function collectAttributeExpression(attr, expressions, scopes, context) {
81
+ const dynamicBinding = getDynamicBindingArgument(attr.name);
82
+ if (dynamicBinding) {
83
+ expressions.push({ expression: dynamicBinding.expression, usage: attr.name, location: attr.loc, scopes });
84
+ }
85
+ const dynamicEvent = getDynamicEventArgument(attr.name);
86
+ if (dynamicEvent) {
87
+ expressions.push({ expression: dynamicEvent.expression, usage: attr.name, location: attr.loc, scopes });
88
+ }
89
+ if (isExpressionAttribute(attr.name) && attr.value !== true) {
90
+ expressions.push({ expression: attr.value, usage: attr.name, location: attr.valueLoc, scopes });
91
+ return;
92
+ }
93
+ if (isEventAttribute(attr.name) && attr.value !== true) {
94
+ const handler = attr.value.trim().replace(/;\s*$/, "");
95
+ expressions.push({ expression: handler, usage: attr.name, location: attr.valueLoc, scopes, statement: !canParseExpression(handler, attr.valueLoc, context) });
96
+ }
97
+ }
98
+ function generateTypeCheckLines(descriptor, expressions) {
99
+ const lines = [
100
+ { text: `type __MikuruRefValue<T> = T extends { value: infer V } ? V : T;` },
101
+ { text: `declare const __mikuru_template_target: Element;` },
102
+ { text: `declare function unwrap<T>(value: T): __MikuruRefValue<T>;` },
103
+ { text: `declare function __mikuru_unwrap<T>(value: T): __MikuruRefValue<T>;` },
104
+ { text: `declare function __mikuru_for_entries<T>(source: T): Array<[number, __MikuruIterableItem<__MikuruRefValue<T>>]>;` },
105
+ { text: `type __MikuruIterableItem<T> = T extends readonly (infer U)[] ? U : T extends Iterable<infer U> ? U : T extends Record<string, infer V> ? V : never;` },
106
+ { text: `type __MikuruInferProp<T> = T extends StringConstructor ? string : T extends NumberConstructor ? number : T extends BooleanConstructor ? boolean : unknown;` },
107
+ { text: `declare function defineProps<T extends Record<string, unknown> = Record<string, unknown>>(): T;` },
108
+ { text: `declare function defineProps<const T extends Record<string, unknown>>(props: T): { [K in keyof T]: __MikuruInferProp<T[K]> };` },
109
+ { text: `declare function defineEmits<T extends Record<string, unknown> = Record<string, unknown>>(...args: unknown[]): (name: keyof T | string, ...payload: unknown[]) => void;` },
110
+ { text: `declare function defineOptions(options: Record<string, unknown>): void;` },
111
+ { text: `declare function useAttrs(): Record<string, unknown>;` },
112
+ { text: "" }
113
+ ];
114
+ if (descriptor.script?.trim()) {
115
+ lines.push(...descriptor.script.split(/\r?\n/).map((text) => ({ text })));
116
+ lines.push({ text: "" });
117
+ }
118
+ lines.push({ text: "function __mikuru_template_type_check() {" });
119
+ lines.push({ text: " void __mikuru_template_target;" });
120
+ for (const expression of expressions) {
121
+ emitExpressionCheck(lines, expression, 1);
122
+ }
123
+ lines.push({ text: "}" });
124
+ return lines;
125
+ }
126
+ function emitExpressionCheck(lines, expression, indent) {
127
+ let depth = indent;
128
+ for (const scope of expression.scopes) {
129
+ const sourceExpression = compileTemplateExpression(scope.source, "v-for source", toExpressionContextFromLocation(scope.location));
130
+ lines.push({ text: `${" ".repeat(depth)}for (const [__mikuru_index, __mikuru_item] of __mikuru_for_entries(${sourceExpression})) {`, location: scope.location });
131
+ depth += 1;
132
+ lines.push({ text: `${" ".repeat(depth)}const ${scope.item} = __mikuru_item;`, location: scope.location });
133
+ if (scope.index) {
134
+ lines.push({ text: `${" ".repeat(depth)}const ${scope.index} = __mikuru_index;`, location: scope.location });
135
+ }
136
+ }
137
+ const indentText = " ".repeat(depth);
138
+ if (expression.statement) {
139
+ lines.push({ text: `${indentText}(() => { ${expression.expression}; });`, location: expression.location });
140
+ }
141
+ else {
142
+ const compiled = compileTemplateExpression(expression.expression, expression.usage, toExpressionContextFromLocation(expression.location));
143
+ lines.push({ text: `${indentText}void (${compiled});`, location: expression.location });
144
+ }
145
+ for (let index = expression.scopes.length - 1; index >= 0; index -= 1) {
146
+ depth -= 1;
147
+ lines.push({ text: `${" ".repeat(depth)}}`, location: expression.scopes[index]?.location });
148
+ }
149
+ }
150
+ function runTypeScriptCheck(code, filename, emitted) {
151
+ const fileName = `${filename}.template-check.ts`;
152
+ const compilerOptions = {
153
+ allowJs: false,
154
+ checkJs: false,
155
+ lib: ["lib.es2022.d.ts", "lib.dom.d.ts", "lib.dom.iterable.d.ts"],
156
+ module: ts.ModuleKind.NodeNext,
157
+ moduleResolution: ts.ModuleResolutionKind.NodeNext,
158
+ noEmit: true,
159
+ skipLibCheck: true,
160
+ strict: true,
161
+ target: ts.ScriptTarget.ES2022,
162
+ types: []
163
+ };
164
+ const defaultHost = ts.createCompilerHost(compilerOptions, true);
165
+ const host = {
166
+ ...defaultHost,
167
+ getSourceFile(name, languageVersion, onError, shouldCreateNewSourceFile) {
168
+ if (normalizePath(name) === normalizePath(fileName)) {
169
+ return ts.createSourceFile(fileName, code, languageVersion, true, ts.ScriptKind.TS);
170
+ }
171
+ return defaultHost.getSourceFile(name, languageVersion, onError, shouldCreateNewSourceFile);
172
+ },
173
+ fileExists(name) {
174
+ return normalizePath(name) === normalizePath(fileName) || defaultHost.fileExists(name);
175
+ },
176
+ readFile(name) {
177
+ return normalizePath(name) === normalizePath(fileName) ? code : defaultHost.readFile(name);
178
+ },
179
+ writeFile() { }
180
+ };
181
+ const program = ts.createProgram([fileName], compilerOptions, host);
182
+ const sourceFile = program.getSourceFile(fileName);
183
+ const diagnostics = ts.getPreEmitDiagnostics(program, sourceFile);
184
+ return diagnostics
185
+ .filter((diagnostic) => diagnostic.file && diagnostic.start !== undefined)
186
+ .map((diagnostic) => {
187
+ const location = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
188
+ const original = emitted[location.line]?.location;
189
+ const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
190
+ const fallback = original ?? getSourceLocation(diagnostic.file.text, diagnostic.start, filename);
191
+ return {
192
+ message,
193
+ line: fallback.line,
194
+ column: fallback.column,
195
+ offset: fallback.offset,
196
+ filename: fallback.filename ?? filename,
197
+ code: typeof diagnostic.code === "number" ? diagnostic.code : undefined
198
+ };
199
+ });
200
+ }
201
+ function isExpressionAttribute(name) {
202
+ return name === "v-if" ||
203
+ name === "v-else-if" ||
204
+ name === "v-show" ||
205
+ name === "v-html" ||
206
+ name === "v-text" ||
207
+ name === "v-model" ||
208
+ getBindingName(name) !== undefined;
209
+ }
210
+ function isEventAttribute(name) {
211
+ return name.startsWith("@") || name.startsWith("v-on:");
212
+ }
213
+ function hasAttr(node, name) {
214
+ return node.attrs.some((attr) => attr.name === name);
215
+ }
216
+ function getBindingName(name) {
217
+ if (getDynamicBindingArgument(name)) {
218
+ return "dynamic";
219
+ }
220
+ const rawName = name.startsWith(":")
221
+ ? name.slice(1)
222
+ : name.startsWith("v-bind:")
223
+ ? name.slice("v-bind:".length)
224
+ : undefined;
225
+ return rawName ? rawName.split(".")[0] : undefined;
226
+ }
227
+ function getDynamicBindingArgument(name) {
228
+ const dynamic = parseDynamicArgument(name, [":", "v-bind:"]);
229
+ return dynamic ? { expression: dynamic.expression } : undefined;
230
+ }
231
+ function getDynamicEventArgument(name) {
232
+ const dynamic = parseDynamicArgument(name, ["@", "v-on:"]);
233
+ return dynamic ? { expression: dynamic.expression } : undefined;
234
+ }
235
+ function parseDynamicArgument(name, prefixes) {
236
+ for (const prefix of prefixes) {
237
+ if (!name.startsWith(`${prefix}[`)) {
238
+ continue;
239
+ }
240
+ const argumentStart = prefix.length + 1;
241
+ const argumentEnd = name.indexOf("]", argumentStart);
242
+ if (argumentEnd === -1) {
243
+ return undefined;
244
+ }
245
+ const expression = name.slice(argumentStart, argumentEnd).trim();
246
+ if (expression) {
247
+ return { expression };
248
+ }
249
+ }
250
+ return undefined;
251
+ }
252
+ function canParseExpression(expression, location, context) {
253
+ try {
254
+ validateTemplateExpression(expression, "event handler", location ? { source: context.source, offset: location.offset, filename: context.filename } : undefined);
255
+ return true;
256
+ }
257
+ catch {
258
+ return false;
259
+ }
260
+ }
261
+ function toExpressionContext(location, context) {
262
+ return location ? { source: context.source, offset: location.offset, filename: context.filename } : undefined;
263
+ }
264
+ function toExpressionContextFromLocation(location) {
265
+ return location ? { source: "", offset: 0, filename: location.filename } : undefined;
266
+ }
267
+ function normalizePath(value) {
268
+ return value.replace(/\\/g, "/");
269
+ }
270
+ //# sourceMappingURL=templateTypeCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateTypeCheck.js","sourceRoot":"","sources":["../../src/compiler/templateTypeCheck.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { SourceLocation } from "./errors.js";
2
+ import type { TemplateTypeCheckResult } from "./templateTypeCheck.js";
2
3
  export type SfcDescriptor = {
3
4
  filename?: string;
4
5
  source?: string;
@@ -9,6 +10,8 @@ export type SfcDescriptor = {
9
10
  style?: string;
10
11
  styleOffset?: number;
11
12
  styleScoped?: boolean;
13
+ styleLang?: string;
14
+ styleModule?: boolean | string;
12
15
  };
13
16
  export type TemplateNode = ElementNode | TextNode;
14
17
  export type ElementNode = {
@@ -74,6 +77,8 @@ export type CompileOptions = {
74
77
  filename?: string;
75
78
  debug?: boolean;
76
79
  batchedUpdates?: boolean;
80
+ externalStyles?: boolean;
81
+ templateTypeCheck?: boolean;
77
82
  };
78
83
  export type CompileResult = {
79
84
  code: string;
@@ -81,12 +86,14 @@ export type CompileResult = {
81
86
  descriptor: SfcDescriptor;
82
87
  ast: ElementNode;
83
88
  bindings: Binding[];
89
+ templateTypeCheck?: TemplateTypeCheckResult;
84
90
  };
85
91
  export type SsrCompileResult = {
86
92
  code: string;
87
93
  descriptor: SfcDescriptor;
88
94
  ast: ElementNode;
89
95
  bindings: Binding[];
96
+ templateTypeCheck?: TemplateTypeCheckResult;
90
97
  };
91
98
  export type SourceMap = {
92
99
  version: 3;
package/dist/index.d.ts CHANGED
@@ -2,6 +2,6 @@ export { compile } from "./compiler/index.js";
2
2
  export { compileHydration } from "./compiler/index.js";
3
3
  export { compileSsr } from "./compiler/index.js";
4
4
  export type { CompileOptions, CompileResult, SsrCompileResult } from "./compiler/index.js";
5
- export { computed, createDebugDiagnostic, createDebugInspector, defineAsyncComponent, effect, emitDebugDiagnostic, flushJobs, inject, isProxy, isReactive, isReadonly, isRef, nextTick, onActivated, onBeforeUnmount, onDeactivated, onMounted, onUnmounted, provide, queueJob, reactive, readonly, ref, toRaw, toRef, toRefs, unref, unwrap, watch, watchEffect } from "./runtime/index.js";
6
- export type { MikuruDebugDiagnostic, MikuruDebugDiagnosticLevel, MikuruDebugDiagnosticSource, MikuruDebugComponentMetadata, MikuruDebugEvent, MikuruDebugInspector, MikuruDebugListener, MikuruDevtoolsHook } from "./runtime/index.js";
5
+ export { computed, createDebugDiagnostic, createDebugInspector, createDevtoolsInspector, defineAsyncComponent, effect, emitDebugDiagnostic, flushJobs, inject, isProxy, isReactive, isReadonly, isRef, nextTick, onActivated, onBeforeUnmount, onDeactivated, onMounted, onUnmounted, provide, queueJob, reactive, readonly, ref, toRaw, toRef, toRefs, unref, unwrap, watch, watchEffect } from "./runtime/index.js";
6
+ export type { MikuruDebugDiagnostic, MikuruDebugDiagnosticLevel, MikuruDebugDiagnosticSource, MikuruDebugComponentMetadata, MikuruDebugEvent, MikuruDebugInspector, MikuruDebugListener, MikuruDevtoolsEvent, MikuruDevtoolsHook, MikuruDevtoolsInspector, MikuruDevtoolsListener, MikuruDevtoolsSnapshot } from "./runtime/index.js";
7
7
  export type { AsyncComponentLoader, AsyncComponentOptions, ComputedRef, EffectFn, EffectOptions, EffectRunner, EffectScheduler, MikuruAsyncComponent, MikuruAsyncBoundaryFallbackProps, MikuruComponent, MikuruComponentInstance, MikuruErrorBoundaryFallbackProps, MikuruErrorInfo, MikuruErrorPhase, Reactive, ReadonlyReactive, Ref, SchedulerJob, ToRefs, WatchCallback, WatchCleanup, WatchCleanupRegistrar, WatchEffectCleanup, WatchEffectCleanupRegistrar, WatchEffectFn, WatchOptions, WatchSource, WritableComputedOptions, WritableComputedRef } from "./runtime/index.js";
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { compile } from "./compiler/index.js";
2
2
  export { compileHydration } from "./compiler/index.js";
3
3
  export { compileSsr } from "./compiler/index.js";
4
- export { computed, createDebugDiagnostic, createDebugInspector, defineAsyncComponent, effect, emitDebugDiagnostic, flushJobs, inject, isProxy, isReactive, isReadonly, isRef, nextTick, onActivated, onBeforeUnmount, onDeactivated, onMounted, onUnmounted, provide, queueJob, reactive, readonly, ref, toRaw, toRef, toRefs, unref, unwrap, watch, watchEffect } from "./runtime/index.js";
4
+ export { computed, createDebugDiagnostic, createDebugInspector, createDevtoolsInspector, defineAsyncComponent, effect, emitDebugDiagnostic, flushJobs, inject, isProxy, isReactive, isReadonly, isRef, nextTick, onActivated, onBeforeUnmount, onDeactivated, onMounted, onUnmounted, provide, queueJob, reactive, readonly, ref, toRaw, toRef, toRefs, unref, unwrap, watch, watchEffect } from "./runtime/index.js";
5
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,EACN,mBAAmB,EACnB,SAAS,EACT,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,KAAK,EACL,QAAQ,EACR,WAAW,EACX,eAAe,EACf,aAAa,EACb,SAAS,EACT,WAAW,EACX,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,KAAK,EACL,KAAK,EACL,MAAM,EACN,KAAK,EACL,MAAM,EACN,KAAK,EACL,WAAW,EACZ,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,MAAM,EACN,mBAAmB,EACnB,SAAS,EACT,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,KAAK,EACL,QAAQ,EACR,WAAW,EACX,eAAe,EACf,aAAa,EACb,SAAS,EACT,WAAW,EACX,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,KAAK,EACL,KAAK,EACL,MAAM,EACN,KAAK,EACL,MAAM,EACN,KAAK,EACL,WAAW,EACZ,MAAM,oBAAoB,CAAC"}
@@ -3,6 +3,9 @@ export type MikuruDebugEvent = {
3
3
  timestamp: number;
4
4
  payload?: Record<string, unknown>;
5
5
  };
6
+ export type MikuruDevtoolsEvent = MikuruDebugEvent & {
7
+ version: 1;
8
+ };
6
9
  export type MikuruDebugDiagnosticLevel = "info" | "warning" | "error";
7
10
  export type MikuruDebugDiagnosticSource = "compiler" | "runtime" | "router" | "ssr" | "hydration" | string;
8
11
  export type MikuruDebugDiagnostic = {
@@ -18,6 +21,7 @@ export type MikuruDebugDiagnostic = {
18
21
  [key: string]: unknown;
19
22
  };
20
23
  export type MikuruDebugListener = (event: MikuruDebugEvent) => void;
24
+ export type MikuruDevtoolsListener = (event: MikuruDevtoolsEvent) => void;
21
25
  export type MikuruDebugComponentMetadata = {
22
26
  id: number;
23
27
  name?: string;
@@ -41,23 +45,32 @@ export type MikuruDebugComponentRegistration = {
41
45
  export type MikuruDevtoolsHook = {
42
46
  components?: Map<number, MikuruDebugComponentMetadata>;
43
47
  events?: MikuruDebugEvent[];
44
- listeners?: Set<MikuruDebugListener>;
48
+ listeners?: Set<MikuruDevtoolsListener>;
45
49
  nextId?: number;
46
50
  registerComponent?(metadata: MikuruDebugComponentMetadata): void | (() => void);
47
- emit?(event: MikuruDebugEvent): void;
51
+ emit?(event: MikuruDevtoolsEvent): void;
48
52
  };
49
53
  export type MikuruDebugInspector = {
50
54
  hook: MikuruDevtoolsHook;
51
55
  getComponents(): MikuruDebugComponentMetadata[];
52
56
  getComponentTree(): MikuruDebugComponentTreeNode[];
53
- getEvents(): MikuruDebugEvent[];
54
- getEventsByType(type: string): MikuruDebugEvent[];
57
+ getEvents(): MikuruDevtoolsEvent[];
58
+ getEventsByType(type: string): MikuruDevtoolsEvent[];
59
+ getSnapshot(): MikuruDevtoolsSnapshot;
55
60
  clearEvents(): void;
56
- subscribe(listener: MikuruDebugListener): () => void;
61
+ subscribe(listener: MikuruDevtoolsListener): () => void;
57
62
  };
58
63
  export type MikuruDebugComponentTreeNode = MikuruDebugComponentMetadata & {
59
64
  childrenTree: MikuruDebugComponentTreeNode[];
60
65
  };
66
+ export type MikuruDevtoolsInspector = MikuruDebugInspector;
67
+ export type MikuruDevtoolsSnapshot = {
68
+ version: 1;
69
+ capturedAt: number;
70
+ components: MikuruDebugComponentMetadata[];
71
+ componentTree: MikuruDebugComponentTreeNode[];
72
+ events: MikuruDevtoolsEvent[];
73
+ };
61
74
  declare global {
62
75
  var __MIKURU_DEVTOOLS__: MikuruDevtoolsHook | undefined;
63
76
  }
@@ -70,3 +83,4 @@ export declare function emitDebugEvent(type: string, payload?: Record<string, un
70
83
  export declare function createDebugDiagnostic(source: MikuruDebugDiagnosticSource, level: MikuruDebugDiagnosticLevel, message: string, details?: Omit<MikuruDebugDiagnostic, "source" | "level" | "message">): MikuruDebugDiagnostic;
71
84
  export declare function emitDebugDiagnostic(source: MikuruDebugDiagnosticSource, level: MikuruDebugDiagnosticLevel, message: string, details?: Omit<MikuruDebugDiagnostic, "source" | "level" | "message">): MikuruDebugDiagnostic;
72
85
  export declare function createDebugInspector(hook?: MikuruDevtoolsHook): MikuruDebugInspector;
86
+ export declare function createDevtoolsInspector(hook?: MikuruDevtoolsHook): MikuruDevtoolsInspector;