valence-cli 1.2.0 → 1.2.2
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/README.md +0 -18
- package/README.original.md +138 -0
- package/dist/commands/add.js +1 -1
- package/dist/commands/build.js +1 -1
- package/dist/commands/codegen.js +1 -1
- package/dist/commands/doctor.js +1 -1
- package/dist/commands/generate.js +1 -1
- package/dist/commands/lifecycle.js +1 -1
- package/dist/commands/new.d.ts +3 -1
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +1 -1
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/publish.js +1 -1
- package/dist/commands/template.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/templates/angular.d.ts +6 -0
- package/dist/templates/angular.d.ts.map +1 -0
- package/dist/templates/angular.js +1 -0
- package/dist/templates/angular.js.map +1 -0
- package/dist/templates/components.d.ts +4 -0
- package/dist/templates/components.d.ts.map +1 -0
- package/dist/templates/components.js +1 -0
- package/dist/templates/components.js.map +1 -0
- package/dist/templates/config.d.ts +2 -0
- package/dist/templates/config.d.ts.map +1 -0
- package/dist/templates/config.js +1 -0
- package/dist/templates/config.js.map +1 -0
- package/dist/templates/electron.d.ts +16 -0
- package/dist/templates/electron.d.ts.map +1 -0
- package/dist/templates/electron.js +1 -0
- package/dist/templates/electron.js.map +1 -0
- package/dist/templates/index.d.ts +5 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +1 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates.d.ts +1 -24
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +1 -1
- package/dist/templates.js.map +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/update.js +1 -1
- package/dist/utils/validation.js +1 -1
- package/dist/utils/validation.js.map +1 -1
- package/package.json +4 -1
package/dist/templates.d.ts
CHANGED
|
@@ -1,25 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export declare const electronPreloadTemplate = "\nwindow.addEventListener('DOMContentLoaded', () => {\n const replaceText = (selector: string, text: string) => {\n const element = document.getElementById(selector);\n if (element) element.innerText = text;\n };\n\n for (const type of ['chrome', 'node', 'electron']) {\n replaceText(`${type}-version`, process.versions[type as keyof NodeJS.ProcessVersions] || '');\n }\n\n});\n\n// VALENCE: CONTEXT_BRIDGE\n";
|
|
3
|
-
export declare const electronTsConfigTemplate: {
|
|
4
|
-
compilerOptions: {
|
|
5
|
-
module: string;
|
|
6
|
-
target: string;
|
|
7
|
-
outDir: string;
|
|
8
|
-
rootDir: string;
|
|
9
|
-
sourceMap: boolean;
|
|
10
|
-
strict: boolean;
|
|
11
|
-
skipLibCheck: boolean;
|
|
12
|
-
};
|
|
13
|
-
include: string[];
|
|
14
|
-
};
|
|
15
|
-
export declare const forgeConfigTemplate = "\nmodule.exports = {\n packagerConfig: {},\n rebuildConfig: {},\n makers: [\n {\n name: '@electron-forge/maker-squirrel',\n config: {},\n },\n {\n name: '@electron-forge/maker-zip',\n platforms: ['darwin', 'win32'],\n },\n {\n name: '@electron-forge/maker-deb',\n config: {},\n },\n {\n name: '@electron-forge/maker-rpm',\n config: {},\n },\n ],\n};\n";
|
|
16
|
-
export declare const stylesScssTemplate = "\nhtml, body {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n background-color: #0d0d0d;\n font-family: 'Segoe UI', sans-serif;\n color: #fff;\n}\n";
|
|
17
|
-
export declare const appComponentTsTemplate = "\nimport { Component, NgZone, AfterViewInit, OnDestroy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterOutlet } from '@angular/router';\nimport { ValenceEngineService } from './valence-engine.service';\nimport { TopnavComponent } from './core/topnav/topnav.component';\n\n@Component({\n selector: 'app-root',\n standalone: true,\n imports: [CommonModule, RouterOutlet, TopnavComponent],\n templateUrl: './app.component.html',\n styleUrl: './app.component.scss'\n})\nexport class AppComponent implements AfterViewInit, OnDestroy {\n public title: string = 'Valence Project';\n\n constructor(public engineService: ValenceEngineService, private ngZone: NgZone) {}\n\n ngAfterViewInit(): void {\n const canvas = document.getElementById('renderCanvas') as HTMLCanvasElement;\n if (canvas) {\n this.ngZone.runOutsideAngular(() => {\n this.engineService.initEngine(canvas);\n });\n }\n }\n\n ngOnDestroy(): void {\n this.engineService.dispose();\n }\n}\n";
|
|
18
|
-
export declare const appComponentHtmlTemplate = "\n<div class=\"app-container\">\n <app-topnav [title]=\"title\"></app-topnav>\n <div class=\"canvas-wrapper\">\n <canvas #renderCanvas id=\"renderCanvas\"></canvas>\n \n <!-- UI Overlay -->\n <div class=\"ui-overlay\">\n <div class=\"logo-container\">\n <svg width=\"200\" height=\"200\" viewBox=\"0 0 200 200\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <filter id=\"bloom\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur stdDeviation=\"3\" result=\"coloredBlur\"/>\n <feMerge>\n <feMergeNode in=\"coloredBlur\"/>\n <feMergeNode in=\"SourceGraphic\"/>\n </feMerge>\n </filter>\n <linearGradient id=\"lineGradient\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" style=\"stop-color:#47848F;stop-opacity:0.2\" />\n <stop offset=\"50%\" style=\"stop-color:#47848F;stop-opacity:0.8\" />\n <stop offset=\"100%\" style=\"stop-color:#DD0031;stop-opacity:0.2\" />\n </linearGradient>\n </defs>\n \n <!-- Neural Connections (Axons) -->\n <g stroke=\"url(#lineGradient)\" stroke-width=\"2\" filter=\"url(#bloom)\">\n <!-- Main V Structure -->\n <line x1=\"50\" y1=\"50\" x2=\"100\" y2=\"150\" />\n <line x1=\"150\" y1=\"50\" x2=\"100\" y2=\"150\" />\n \n <!-- Network Interconnects -->\n <line x1=\"50\" y1=\"50\" x2=\"80\" y2=\"90\" />\n <line x1=\"150\" y1=\"50\" x2=\"120\" y2=\"90\" />\n <line x1=\"80\" y1=\"90\" x2=\"120\" y2=\"90\" opacity=\"0.5\"/>\n <line x1=\"80\" y1=\"90\" x2=\"100\" y2=\"150\" />\n <line x1=\"120\" y1=\"90\" x2=\"100\" y2=\"150\" />\n </g>\n\n <!-- Data Flow Particles -->\n <circle r=\"2\" fill=\"#fff\" filter=\"url(#bloom)\">\n <animateMotion dur=\"3s\" repeatCount=\"indefinite\" path=\"M50,50 L80,90 L100,150\" />\n </circle>\n <circle r=\"2\" fill=\"#fff\" filter=\"url(#bloom)\">\n <animateMotion dur=\"3s\" begin=\"1.5s\" repeatCount=\"indefinite\" path=\"M150,50 L120,90 L100,150\" />\n </circle>\n <circle r=\"2\" fill=\"#DD0031\" filter=\"url(#bloom)\">\n <animateMotion dur=\"4s\" begin=\"0.5s\" repeatCount=\"indefinite\" path=\"M50,50 L100,150\" />\n </circle>\n\n <!-- Nodes -->\n <g fill=\"#47848F\" filter=\"url(#bloom)\">\n <!-- Top Nodes -->\n <circle cx=\"50\" cy=\"50\" r=\"6\">\n <animate attributeName=\"r\" values=\"6;8;6\" dur=\"2s\" repeatCount=\"indefinite\" />\n <animate attributeName=\"fill-opacity\" values=\"0.6;1;0.6\" dur=\"2s\" repeatCount=\"indefinite\" />\n </circle>\n <circle cx=\"150\" cy=\"50\" r=\"6\">\n <animate attributeName=\"r\" values=\"6;8;6\" dur=\"2.2s\" repeatCount=\"indefinite\" />\n <animate attributeName=\"fill-opacity\" values=\"0.6;1;0.6\" dur=\"2.2s\" repeatCount=\"indefinite\" />\n </circle>\n \n <!-- Mid Nodes -->\n <circle cx=\"80\" cy=\"90\" r=\"5\">\n <animate attributeName=\"r\" values=\"5;7;5\" dur=\"1.8s\" repeatCount=\"indefinite\" />\n </circle>\n <circle cx=\"120\" cy=\"90\" r=\"5\">\n <animate attributeName=\"r\" values=\"5;7;5\" dur=\"1.9s\" repeatCount=\"indefinite\" />\n </circle>\n\n <!-- Bottom Node (The Combine) -->\n <circle cx=\"100\" cy=\"150\" r=\"8\" fill=\"#DD0031\">\n <animate attributeName=\"r\" values=\"8;12;8\" dur=\"1s\" repeatCount=\"indefinite\" />\n <animate attributeName=\"fill-opacity\" values=\"0.8;1;0.8\" dur=\"1s\" repeatCount=\"indefinite\" />\n </circle>\n </g>\n \n <text x=\"100\" y=\"190\" font-family=\"Segoe UI, Arial\" font-size=\"20\" fill=\"#fff\" text-anchor=\"middle\" letter-spacing=\"8\" font-weight=\"300\" opacity=\"0.8\">VALENCE</text>\n </svg>\n </div>\n\n <div class=\"debug-panel\">\n <div class=\"stat-row\"><span class=\"label\">FPS:</span> <span class=\"value\">{{ engineService.fps() }}</span></div>\n <div class=\"stat-row info\"><small>Angular + Electron + Babylon</small></div>\n <div class=\"instructions\">Use Arrow Keys / Mouse Drag to move</div>\n </div>\n </div>\n </div>\n</div>\n";
|
|
19
|
-
export declare const appComponentScssTemplate = "\n.app-container {\n width: 100vw;\n height: 100vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: #000;\n}\n\n.canvas-wrapper {\n flex: 1;\n position: relative;\n overflow: hidden;\n}\n\n#renderCanvas {\n width: 100%;\n height: 100%;\n touch-action: none;\n outline: none;\n}\n\n.ui-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none; // Let clicks pass to canvas\n \n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n\n.logo-container {\n padding: 2rem;\n opacity: 0.8;\n animation: float 6s ease-in-out infinite;\n}\n\n.debug-panel {\n position: absolute;\n top: 2rem;\n right: 2rem;\n background: rgba(0, 0, 0, 0.7);\n border-left: 4px solid #47848F;\n padding: 1rem;\n border-radius: 4px;\n color: #fff;\n font-family: 'Consolas', 'Monaco', monospace;\n backdrop-filter: blur(5px);\n pointer-events: auto; // Allow selecting text\n \n .stat-row {\n display: flex;\n justify-content: space-between;\n margin-bottom: 0.5rem;\n min-width: 200px;\n \n .label {\n color: #aaa;\n margin-right: 1rem;\n }\n .value {\n color: #4dbf00;\n font-weight: bold;\n }\n }\n .info {\n margin-top: 1rem;\n padding-top: 0.5rem;\n border-top: 1px solid #333;\n text-align: right;\n opacity: 0.7;\n }\n .instructions {\n margin-top: 0.5rem;\n font-size: 0.8rem;\n color: #ddd;\n text-align: right;\n }\n}\n\n@keyframes float {\n 0% { transform: translateY(0px); }\n 50% { transform: translateY(-10px); }\n 100% { transform: translateY(0px); }\n}\n";
|
|
20
|
-
export declare const valenceEngineServiceTemplate = "\nimport { Injectable, NgZone, OnDestroy, signal, WritableSignal } from '@angular/core';\nimport { Engine, WebGPUEngine, Scene, FreeCamera, Vector3, HemisphericLight, MeshBuilder, Color4, Mesh } from 'babylonjs';\n// VALENCE: IMPORTS\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ValenceEngineService implements OnDestroy {\n private engine?: Engine | WebGPUEngine;\n private scene?: Scene;\n private plane?: Mesh;\n // VALENCE: PROPERTIES\n\n public fps: WritableSignal<string> = signal('0');\n\n constructor(private ngZone: NgZone) {}\n\n public async initEngine(canvas: HTMLCanvasElement): Promise<void> {\n // Attempt WebGPU, fall back to WebGL\n try {\n if (await WebGPUEngine.IsSupportedAsync) {\n this.engine = new WebGPUEngine(canvas);\n await (this.engine as WebGPUEngine).initAsync();\n } else {\n this.engine = new Engine(canvas, true);\n }\n } catch (e) {\n console.warn('WebGPU failed, falling back to WebGL', e);\n this.engine = new Engine(canvas, true);\n }\n \n // VALENCE: PRE_SCENE_INIT\n\n this.scene = this.createScene();\n\n // VALENCE: POST_SCENE_INIT\n\n this.ngZone.runOutsideAngular(() => {\n if (!this.engine) return;\n \n this.engine.runRenderLoop(() => {\n if (this.scene) {\n this.scene.render();\n // Update specific meshes\n if (this.plane) {\n this.plane.rotation.y += 0.01;\n this.plane.rotation.x += 0.005;\n }\n // VALENCE: RENDER_LOOP\n }\n \n // Update FPS rarely to avoid UI thrashing, or just every frame if signal handles it efficient?\n // actually better to throttle it slightly for UI, but signal is fine.\n this.fps.set(this.engine?.getFps().toFixed(0) || '0');\n });\n });\n\n window.addEventListener('resize', () => {\n this.engine?.resize();\n });\n }\n\n private createScene(): Scene {\n if (!this.engine) throw new Error('Engine not initialized');\n const scene = new Scene(this.engine);\n scene.clearColor = new Color4(0.1, 0.1, 0.1, 1);\n \n // Camera\n const camera = new FreeCamera('camera1', new Vector3(0, 0, -5), scene);\n camera.setTarget(Vector3.Zero());\n \n // Attach control needs to happen on the canvas. \n // Since we created engine with canvas, we can attach to it.\n // Note: In WebGPU engine.getRenderingCanvas() might differ slightly but usually works.\n const canvas = this.engine.getRenderingCanvas();\n if (canvas) {\n camera.attachControl(canvas, true);\n }\n\n // Light\n const light = new HemisphericLight('light1', new Vector3(0, 1, 0), scene);\n light.intensity = 0.7;\n\n // Rotating Plane\n this.plane = MeshBuilder.CreatePlane('plane', { size: 2 }, scene);\n this.plane.material = new (window as any).BABYLON.StandardMaterial('mat', scene);\n (this.plane.material as any).backFaceCulling = false;\n (this.plane.material as any).diffuseColor = new Color4(0.4, 0.8, 1, 1);\n (this.plane.material as any).wireframe = true;\n\n return scene;\n }\n\n public dispose(): void {\n if (this.engine) {\n this.engine.dispose();\n }\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n}\n";
|
|
21
|
-
export declare const eslintConfigTemplate = "\nimport eslint from '@eslint/js';\nimport tseslint from 'typescript-eslint';\nimport globals from 'globals';\n\nexport default tseslint.config(\n {\n ignores: ['dist/**', 'electron/**', 'forge.config.js', 'karma.conf.js'],\n },\n eslint.configs.recommended,\n ...tseslint.configs.recommended,\n {\n languageOptions: {\n globals: {\n ...globals.browser,\n ...globals.node,\n },\n },\n rules: {\n '@typescript-eslint/no-unused-vars': 'error',\n '@typescript-eslint/no-explicit-any': 'error',\n },\n }\n);\n";
|
|
22
|
-
export declare const topnavTemplateTs = "\nimport { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-topnav',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './topnav.component.html',\n styleUrls: ['./topnav.component.scss']\n})\nexport class TopnavComponent {\n @Input() title: string = 'Valence Project';\n}\n";
|
|
23
|
-
export declare const topnavTemplateHtml = "\n<div class=\"topnav\">\n <div class=\"app-icon\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 200 200\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"100\" cy=\"100\" r=\"90\" fill=\"none\" stroke=\"#47848F\" stroke-width=\"20\"/>\n <path d=\"M50,50 L100,150 L150,50\" fill=\"none\" stroke=\"#DD0031\" stroke-width=\"20\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n <div class=\"app-title\">{{ title }}</div>\n</div>\n";
|
|
24
|
-
export declare const topnavTemplateScss = "\n.topnav {\n height: 32px; /* Matches Electron WCO height */\n background-color: #1a1a1a;\n display: flex;\n align-items: center;\n padding: 0 10px;\n -webkit-app-region: drag; /* Allows dragging */\n user-select: none;\n border-bottom: 1px solid #333;\n z-index: 10000;\n \n .app-icon {\n margin-right: 10px;\n display: flex;\n align-items: center;\n }\n \n .app-title {\n font-family: 'Segoe UI', sans-serif;\n font-size: 12px;\n color: #ddd;\n font-weight: 500;\n margin-top: -2px;\n }\n}\n";
|
|
1
|
+
export * from './templates/index.js';
|
|
25
2
|
//# sourceMappingURL=templates.d.ts.map
|
package/dist/templates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
|