kawaijs 0.1.11 → 0.1.13

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 (48) hide show
  1. package/README.md +51 -4
  2. package/dist/commands/build.d.ts +1 -0
  3. package/dist/commands/build.d.ts.map +1 -1
  4. package/dist/commands/build.js +152 -1147
  5. package/dist/commands/build.js.map +1 -1
  6. package/dist/commands/create.d.ts.map +1 -1
  7. package/dist/commands/create.js +132 -55
  8. package/dist/commands/create.js.map +1 -1
  9. package/dist/commands/dev.d.ts +1 -0
  10. package/dist/commands/dev.d.ts.map +1 -1
  11. package/dist/commands/dev.js +301 -1258
  12. package/dist/commands/dev.js.map +1 -1
  13. package/dist/commands/embed.d.ts +25 -0
  14. package/dist/commands/embed.d.ts.map +1 -0
  15. package/dist/commands/embed.js +110 -0
  16. package/dist/commands/embed.js.map +1 -0
  17. package/dist/commands/validate.d.ts.map +1 -1
  18. package/dist/commands/validate.js +104 -6
  19. package/dist/commands/validate.js.map +1 -1
  20. package/dist/config.d.ts +119 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +93 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/i18n.d.ts +8 -0
  25. package/dist/i18n.d.ts.map +1 -0
  26. package/dist/i18n.js +49 -0
  27. package/dist/i18n.js.map +1 -0
  28. package/dist/index.d.ts +7 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +68 -33
  31. package/dist/index.js.map +1 -1
  32. package/dist/parse-args.d.ts +29 -0
  33. package/dist/parse-args.d.ts.map +1 -0
  34. package/dist/parse-args.js +106 -0
  35. package/dist/parse-args.js.map +1 -0
  36. package/dist/pwa.d.ts +22 -0
  37. package/dist/pwa.d.ts.map +1 -0
  38. package/dist/pwa.js +151 -0
  39. package/dist/pwa.js.map +1 -0
  40. package/dist/runtime-bundle.d.ts +3 -0
  41. package/dist/runtime-bundle.d.ts.map +1 -0
  42. package/dist/runtime-bundle.js +76 -0
  43. package/dist/runtime-bundle.js.map +1 -0
  44. package/dist/seo.d.ts +81 -0
  45. package/dist/seo.d.ts.map +1 -0
  46. package/dist/seo.js +534 -0
  47. package/dist/seo.js.map +1 -0
  48. package/package.json +8 -7
@@ -0,0 +1,76 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { createRequire } from 'node:module';
5
+ import * as esbuild from 'esbuild';
6
+ const require = createRequire(import.meta.url);
7
+ export function getBaseThemeCss() {
8
+ const dirname = path.dirname(fileURLToPath(import.meta.url));
9
+ const candidates = [
10
+ path.resolve(dirname, '..', '..', 'renderer-dom', 'src', 'theme.css'),
11
+ path.resolve(dirname, '..', '..', 'renderer-dom', 'dist', 'theme.css'),
12
+ path.resolve(dirname, '..', '..', '..', 'renderer-dom', 'src', 'theme.css'),
13
+ path.resolve(dirname, '..', '..', '..', 'renderer-dom', 'dist', 'theme.css'),
14
+ path.resolve(dirname, '..', '..', 'node_modules', '@kawaijs', 'renderer-dom', 'src', 'theme.css'),
15
+ path.resolve(dirname, '..', '..', 'node_modules', '@kawaijs', 'renderer-dom', 'dist', 'theme.css')
16
+ ];
17
+ for (const c of candidates) {
18
+ if (fs.existsSync(c)) {
19
+ return fs.readFileSync(c, 'utf-8');
20
+ }
21
+ }
22
+ try {
23
+ const pkgPath = require.resolve('@kawaijs/renderer-dom/package.json');
24
+ const cssCandidate = path.join(path.dirname(pkgPath), 'src', 'theme.css');
25
+ if (fs.existsSync(cssCandidate)) {
26
+ return fs.readFileSync(cssCandidate, 'utf-8');
27
+ }
28
+ }
29
+ catch { }
30
+ return '';
31
+ }
32
+ function resolveRendererDomEntry() {
33
+ const dirname = path.dirname(fileURLToPath(import.meta.url));
34
+ const candidates = [
35
+ path.resolve(dirname, '..', '..', 'renderer-dom', 'src', 'index.ts'),
36
+ path.resolve(dirname, '..', '..', 'renderer-dom', 'dist', 'index.js'),
37
+ path.resolve(dirname, '..', '..', '..', 'renderer-dom', 'src', 'index.ts'),
38
+ path.resolve(dirname, '..', '..', '..', 'renderer-dom', 'dist', 'index.js'),
39
+ ];
40
+ for (const c of candidates) {
41
+ if (fs.existsSync(c)) {
42
+ return c;
43
+ }
44
+ }
45
+ try {
46
+ return require.resolve('@kawaijs/renderer-dom');
47
+ }
48
+ catch {
49
+ throw new Error('Could not resolve @kawaijs/renderer-dom package entry point.');
50
+ }
51
+ }
52
+ export function getInlineRuntimeScript(assetPrefix = '/') {
53
+ // Always rebuild so CLI picks up renderer-dom source edits without a process restart.
54
+ // Page loads are infrequent enough that sync esbuild cost is acceptable in dev/build.
55
+ const entry = resolveRendererDomEntry();
56
+ const result = esbuild.buildSync({
57
+ entryPoints: [entry],
58
+ bundle: true,
59
+ format: 'iife',
60
+ globalName: 'KawaiJS',
61
+ write: false,
62
+ minify: false,
63
+ target: 'es2022'
64
+ });
65
+ if (!result.outputFiles || result.outputFiles.length === 0) {
66
+ throw new Error('Failed to bundle @kawaijs/renderer-dom with esbuild.');
67
+ }
68
+ const bundle = result.outputFiles[0].text;
69
+ const prefix = assetPrefix.endsWith('/') ? assetPrefix : assetPrefix + '/';
70
+ return `
71
+ const ASSET_PREFIX = '${prefix}';
72
+ ${bundle}
73
+ const { mountKawaApp, DOMRenderer, StoryVM } = KawaiJS;
74
+ `;
75
+ }
76
+ //# sourceMappingURL=runtime-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-bundle.js","sourceRoot":"","sources":["../src/runtime-bundle.ts"],"names":[],"mappings":"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"}
package/dist/seo.d.ts ADDED
@@ -0,0 +1,81 @@
1
+ import type { KawaProjectConfig } from './config.js';
2
+ export interface ResolvedIcon {
3
+ /** Absolute path on disk (if a real file exists). */
4
+ readonly absolutePath?: string;
5
+ /** Public href used in HTML / manifest (e.g. `./favicon.svg`). */
6
+ readonly href: string;
7
+ /** MIME type for <link rel="icon">. */
8
+ readonly mimeType: string;
9
+ /** File basename written to dist (e.g. favicon.svg). */
10
+ readonly outFileName: string;
11
+ /** True when falling back to the generated PWA SVG. */
12
+ readonly isGenerated: boolean;
13
+ }
14
+ /**
15
+ * Resolve a project-relative asset path against common locations.
16
+ */
17
+ export declare function resolveProjectAssetPath(rootDir: string, relativePath: string): string | null;
18
+ /**
19
+ * Find a user-provided favicon/icon for the project.
20
+ * Prefers `seo.favicon`, then common filenames under game/ / assets/.
21
+ */
22
+ export declare function resolveFavicon(rootDir: string, config: KawaProjectConfig): ResolvedIcon;
23
+ export declare function resolveAppleTouchIcon(rootDir: string, config: KawaProjectConfig, favicon: ResolvedIcon): ResolvedIcon;
24
+ export interface SeoHeadInput {
25
+ readonly config: KawaProjectConfig;
26
+ readonly favicon: ResolvedIcon;
27
+ readonly appleTouchIcon: ResolvedIcon;
28
+ /** Absolute or site URL for canonical / og:url when known. */
29
+ readonly pageUrl?: string;
30
+ /** When false, skip PWA-only tags (caller may add them separately). */
31
+ readonly includeIconLinks?: boolean;
32
+ }
33
+ /**
34
+ * Full SEO + social + favicon <head> fragment for CLI HTML shells.
35
+ */
36
+ export declare function renderSeoHeadTags(input: SeoHeadInput): string;
37
+ export declare function buildDefaultJsonLd(input: {
38
+ readonly title: string;
39
+ readonly description: string;
40
+ readonly author?: string;
41
+ readonly canonical?: string;
42
+ readonly image?: string;
43
+ readonly faq?: readonly {
44
+ readonly question: string;
45
+ readonly answer: string;
46
+ }[];
47
+ readonly sameAs?: readonly string[];
48
+ }): Record<string, unknown>;
49
+ export declare function resolveHtmlLang(config: KawaProjectConfig): string;
50
+ /**
51
+ * Copy user favicon / apple-touch into dist. Returns public hrefs actually written.
52
+ */
53
+ export declare function writeSeoIconsToDist(outDir: string, favicon: ResolvedIcon, appleTouchIcon: ResolvedIcon, generatedIconSvg?: string): {
54
+ faviconHref: string;
55
+ appleHref: string;
56
+ pwaIconFile: string;
57
+ };
58
+ /** Normalize a canonical URL to a directory base ending with `/`. */
59
+ export declare function canonicalBaseUrl(canonicalUrl: string): string | null;
60
+ /** Simple robots.txt when a canonical site URL is configured. */
61
+ export declare function renderRobotsTxt(canonicalUrl?: string): string;
62
+ export type SitemapChangeFreq = 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
63
+ export interface SitemapEntryOptions {
64
+ readonly loc?: string;
65
+ readonly path?: string;
66
+ readonly changefreq?: SitemapChangeFreq;
67
+ readonly priority?: number;
68
+ readonly lastmod?: string;
69
+ /** Alternate language URLs for xhtml:link hreflang annotations. */
70
+ readonly alternates?: readonly {
71
+ readonly hreflang: string;
72
+ readonly href: string;
73
+ }[];
74
+ }
75
+ /** sitemap.xml for the built site (+ deep-link paths / extra entries). */
76
+ export declare function renderSitemapXml(canonicalUrl: string, extraPaths?: readonly (string | SitemapEntryOptions)[]): string;
77
+ /** llms.txt — machine-readable summary for AI crawlers (GEO). */
78
+ export declare function renderLlmsTxt(config: KawaProjectConfig): string;
79
+ /** Crawlable FAQ / summary for bots when JS is unavailable (AEO). */
80
+ export declare function renderNoscriptDocs(config: KawaProjectConfig): string;
81
+ //# sourceMappingURL=seo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../src/seo.ts"],"names":[],"mappings":"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"}