kawaijs 0.1.0

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.
package/bin/kawa.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { runCLI } from '../dist/index.js';
3
+
4
+ runCLI(process.argv.slice(2));
@@ -0,0 +1,2 @@
1
+ export declare function createProject(projectName: string): boolean;
2
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CA2G1D"}
@@ -0,0 +1,102 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ export function createProject(projectName) {
4
+ const targetDir = path.resolve(process.cwd(), projectName);
5
+ if (fs.existsSync(targetDir)) {
6
+ console.error(`❌ Error: Directory '${projectName}' already exists.`);
7
+ return false;
8
+ }
9
+ console.log(`\n✨ Creating a new Kawaijs visual novel in: ${targetDir}\n`);
10
+ fs.mkdirSync(targetDir, { recursive: true });
11
+ fs.mkdirSync(path.join(targetDir, 'game', 'assets', 'backgrounds'), { recursive: true });
12
+ fs.mkdirSync(path.join(targetDir, 'game', 'assets', 'characters'), { recursive: true });
13
+ fs.mkdirSync(path.join(targetDir, 'game', 'assets', 'audio'), { recursive: true });
14
+ // 1. game/script.kawa
15
+ const starterScript = `# Kawaijs Visual Novel Script
16
+ character yumia "Yumia" #f43f5e
17
+
18
+ label start:
19
+ scene bg classroom
20
+ show yumia happy at center
21
+
22
+ yumia "Hello! Welcome to Kawaijs."
23
+ yumia "This is a web-native visual novel engine inspired by Ren'Py."
24
+
25
+ menu:
26
+ "Tell me more!":
27
+ jump tell_more
28
+
29
+ "Let's make a game!":
30
+ jump make_game
31
+
32
+ label tell_more:
33
+ show yumia excited at center
34
+ yumia "Kawaijs scripts compile to pure static web apps that run anywhere!"
35
+ yumia "You can customize every pixel using standard CSS."
36
+ jump conclusion
37
+
38
+ label make_game:
39
+ yumia "Awesome! Open game/script.kawa and start writing your story."
40
+ jump conclusion
41
+
42
+ label conclusion:
43
+ "Thank you for trying Kawaijs!"
44
+ return
45
+ `;
46
+ fs.writeFileSync(path.join(targetDir, 'game', 'script.kawa'), starterScript, 'utf-8');
47
+ // 2. game/style.css
48
+ const starterStyle = `/* Custom Visual Novel Styles */
49
+ :root {
50
+ --kawa-primary-accent: #f43f5e;
51
+ --kawa-dialogue-bg: rgba(15, 23, 42, 0.88);
52
+ --kawa-dialogue-border: rgba(244, 63, 94, 0.4);
53
+ }
54
+ `;
55
+ fs.writeFileSync(path.join(targetDir, 'game', 'style.css'), starterStyle, 'utf-8');
56
+ // 3. package.json
57
+ const starterPkg = {
58
+ name: projectName,
59
+ version: '0.1.0',
60
+ private: true,
61
+ type: 'module',
62
+ scripts: {
63
+ dev: 'kawa dev',
64
+ build: 'kawa build',
65
+ validate: 'kawa validate'
66
+ },
67
+ dependencies: {
68
+ kawaijs: '^0.1.0'
69
+ }
70
+ };
71
+ fs.writeFileSync(path.join(targetDir, 'package.json'), JSON.stringify(starterPkg, null, 2), 'utf-8');
72
+ // 4. README.md
73
+ const starterReadme = `# ${projectName}
74
+
75
+ A visual novel created with **Kawaijs**.
76
+
77
+ ## Getting Started
78
+
79
+ 1. Validate script:
80
+ \`\`\`bash
81
+ npx kawa validate
82
+ \`\`\`
83
+
84
+ 2. Run development server:
85
+ \`\`\`bash
86
+ npx kawa dev
87
+ \`\`\`
88
+
89
+ 3. Build static web game:
90
+ \`\`\`bash
91
+ npx kawa build
92
+ \`\`\`
93
+ `;
94
+ fs.writeFileSync(path.join(targetDir, 'README.md'), starterReadme, 'utf-8');
95
+ console.log(`✅ Successfully initialized ${projectName}!`);
96
+ console.log(`\nNext steps:`);
97
+ console.log(` cd ${projectName}`);
98
+ console.log(` npx kawa validate`);
99
+ console.log(` npx kawa dev\n`);
100
+ return true;
101
+ }
102
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAE3D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,uBAAuB,WAAW,mBAAmB,CAAC,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,+CAA+C,SAAS,IAAI,CAAC,CAAC;IAE1E,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzF,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnF,sBAAsB;IACtB,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BvB,CAAC;IACA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAEtF,oBAAoB;IACpB,MAAM,YAAY,GAAG;;;;;;CAMtB,CAAC;IACA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAEnF,kBAAkB;IAClB,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,eAAe;SAC1B;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,QAAQ;SAClB;KACF,CAAC;IACF,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAErG,eAAe;IACf,MAAM,aAAa,GAAG,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;CAoBvC,CAAC;IACA,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAE5E,OAAO,CAAC,GAAG,CAAC,8BAA8B,WAAW,GAAG,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEhC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function validateProject(targetPath?: string): boolean;
2
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,CAAC,UAAU,SAAM,GAAG,OAAO,CA8CzD"}
@@ -0,0 +1,50 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { compileScript, formatDiagnostic, KawaError } from '@kawaijs/parser';
4
+ export function validateProject(targetPath = '.') {
5
+ const resolvedPath = path.resolve(targetPath);
6
+ console.log(`\n🔍 Validating Kawaijs script at: ${resolvedPath}\n`);
7
+ let scriptFile = resolvedPath;
8
+ if (fs.existsSync(resolvedPath) && fs.statSync(resolvedPath).isDirectory()) {
9
+ const candidate = path.join(resolvedPath, 'game', 'script.kawa');
10
+ if (fs.existsSync(candidate)) {
11
+ scriptFile = candidate;
12
+ }
13
+ else {
14
+ const rootCandidate = path.join(resolvedPath, 'script.kawa');
15
+ if (fs.existsSync(rootCandidate)) {
16
+ scriptFile = rootCandidate;
17
+ }
18
+ }
19
+ }
20
+ if (!fs.existsSync(scriptFile)) {
21
+ console.error(`❌ Error: No .kawa script file found at '${scriptFile}'`);
22
+ return false;
23
+ }
24
+ try {
25
+ const source = fs.readFileSync(scriptFile, 'utf-8');
26
+ const story = compileScript(source, path.basename(scriptFile));
27
+ const charCount = Object.keys(story.characters).length;
28
+ const labelCount = Object.keys(story.labels).filter(l => !l.startsWith('__')).length;
29
+ console.log(`✅ Script validation successful!`);
30
+ console.log(` - File: ${path.basename(scriptFile)}`);
31
+ console.log(` - Characters declared: ${charCount}`);
32
+ console.log(` - Story labels: ${labelCount}`);
33
+ console.log(` - Start label: '${story.meta.startLabel}'`);
34
+ return true;
35
+ }
36
+ catch (err) {
37
+ if (err instanceof KawaError) {
38
+ const source = fs.existsSync(scriptFile) ? fs.readFileSync(scriptFile, 'utf-8') : undefined;
39
+ console.error(formatDiagnostic(err.diagnostic, source));
40
+ }
41
+ else if (err instanceof Error) {
42
+ console.error(`❌ Error: ${err.message}`);
43
+ }
44
+ else {
45
+ console.error('❌ Unknown validation error:', err);
46
+ }
47
+ return false;
48
+ }
49
+ }
50
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export * from '@kawaijs/ast';
2
+ export * from '@kawaijs/parser';
3
+ export * from '@kawaijs/runtime';
4
+ export * from '@kawaijs/renderer-dom';
5
+ import { createProject } from './commands/create.js';
6
+ import { validateProject } from './commands/validate.js';
7
+ export { createProject, validateProject };
8
+ export declare function runCLI(args: string[]): void;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AAE1C,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAqD3C"}
package/dist/index.js ADDED
@@ -0,0 +1,58 @@
1
+ export * from '@kawaijs/ast';
2
+ export * from '@kawaijs/parser';
3
+ export * from '@kawaijs/runtime';
4
+ export * from '@kawaijs/renderer-dom';
5
+ import { createProject } from './commands/create.js';
6
+ import { validateProject } from './commands/validate.js';
7
+ export { createProject, validateProject };
8
+ export function runCLI(args) {
9
+ const command = args[0];
10
+ switch (command) {
11
+ case 'create': {
12
+ const projectName = args[1] ?? 'my-novel';
13
+ createProject(projectName);
14
+ break;
15
+ }
16
+ case 'validate': {
17
+ const targetPath = args[1] ?? '.';
18
+ const ok = validateProject(targetPath);
19
+ if (!ok) {
20
+ process.exitCode = 1;
21
+ }
22
+ break;
23
+ }
24
+ case 'version':
25
+ case '-v':
26
+ case '--version': {
27
+ console.log('Kawaijs v0.1.0');
28
+ break;
29
+ }
30
+ case 'help':
31
+ case '-h':
32
+ case '--help':
33
+ default: {
34
+ console.log(`
35
+ 🌸 Kawaijs — Web-Native Visual Novel Engine & Toolchain
36
+
37
+ Usage:
38
+ kawa <command> [arguments]
39
+ kawaijs <command> [arguments]
40
+
41
+ Commands:
42
+ create <name> Scaffold a new visual novel project
43
+ validate [path] Validate Kawa Script syntax, labels, and links
44
+ dev Start the local development server (with HMR)
45
+ build Build a static production web bundle
46
+ help Show this help message
47
+ version Show version information
48
+
49
+ Example:
50
+ kawa create my-novel
51
+ cd my-novel
52
+ kawa validate
53
+ `);
54
+ break;
55
+ }
56
+ }
57
+ }
58
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC;AAE1C,MAAM,UAAU,MAAM,CAAC,IAAc;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;YAC1C,aAAa,CAAC,WAAW,CAAC,CAAC;YAC3B,MAAM;QACR,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YAClC,MAAM,EAAE,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,SAAS,CAAC;QACf,KAAK,IAAI,CAAC;QACV,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI,CAAC;QACV,KAAK,QAAQ,CAAC;QACd,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;CAmBjB,CAAC,CAAC;YACG,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "kawaijs",
3
+ "version": "0.1.0",
4
+ "description": "Web-native visual novel engine and toolchain inspired by Ren'Py",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "type": "module",
8
+ "bin": {
9
+ "kawa": "bin/kawa.js",
10
+ "kawaijs": "bin/kawa.js"
11
+ },
12
+ "files": [
13
+ "dist",
14
+ "bin"
15
+ ],
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/biagio-scaglia/KawaiJS.git",
22
+ "directory": "packages/cli"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/biagio-scaglia/KawaiJS/issues"
26
+ },
27
+ "homepage": "https://github.com/biagio-scaglia/KawaiJS#readme",
28
+ "scripts": {
29
+ "build": "tsc",
30
+ "typecheck": "tsc --noEmit"
31
+ },
32
+ "dependencies": {
33
+ "@kawaijs/ast": "^0.1.0",
34
+ "@kawaijs/parser": "^0.1.0",
35
+ "@kawaijs/runtime": "^0.1.0",
36
+ "@kawaijs/renderer-dom": "^0.1.0"
37
+ },
38
+ "keywords": [
39
+ "kawaijs",
40
+ "visual-novel",
41
+ "renpy",
42
+ "game-engine",
43
+ "web-native",
44
+ "cli",
45
+ "typescript"
46
+ ],
47
+ "author": "Biagio Scaglia",
48
+ "license": "MIT"
49
+ }