@gnsx/genesys.sdk 4.2.9
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 +60 -0
- package/dist/src/asset-pack/eslint.config.js +58 -0
- package/dist/src/asset-pack/scripts/post-install.js +64 -0
- package/dist/src/asset-pack/src/index.js +1 -0
- package/dist/src/core/cli.js +303 -0
- package/dist/src/core/common.js +325 -0
- package/dist/src/core/index.js +6 -0
- package/dist/src/core/tools/build-project.js +456 -0
- package/dist/src/core/tools/index.js +2 -0
- package/dist/src/core/tools/new-asset-pack.js +153 -0
- package/dist/src/core/tools/new-project.js +293 -0
- package/dist/src/core/types.js +1 -0
- package/dist/src/dependencies.js +84 -0
- package/dist/src/electron/IpcSerializableError.js +38 -0
- package/dist/src/electron/api.js +7 -0
- package/dist/src/electron/backend/actions.js +56 -0
- package/dist/src/electron/backend/handler.js +452 -0
- package/dist/src/electron/backend/logging.js +41 -0
- package/dist/src/electron/backend/main.js +369 -0
- package/dist/src/electron/backend/menu.js +196 -0
- package/dist/src/electron/backend/state.js +201 -0
- package/dist/src/electron/backend/telemetry.js +9 -0
- package/dist/src/electron/backend/tools/const.js +9 -0
- package/dist/src/electron/backend/tools/file-server.js +383 -0
- package/dist/src/electron/backend/tools/open-project.js +249 -0
- package/dist/src/electron/backend/window.js +161 -0
- package/dist/src/templates/eslint.config.js +58 -0
- package/dist/src/templates/scripts/genesys/build-project.js +42 -0
- package/dist/src/templates/scripts/genesys/calc-bounding-box.js +205 -0
- package/dist/src/templates/scripts/genesys/common.js +36 -0
- package/dist/src/templates/scripts/genesys/const.js +9 -0
- package/dist/src/templates/scripts/genesys/dev/dump-default-scene.js +8 -0
- package/dist/src/templates/scripts/genesys/dev/generate-manifest.js +116 -0
- package/dist/src/templates/scripts/genesys/dev/launcher.js +39 -0
- package/dist/src/templates/scripts/genesys/dev/storage-provider.js +188 -0
- package/dist/src/templates/scripts/genesys/dev/update-template-scenes.js +67 -0
- package/dist/src/templates/scripts/genesys/doc-server.js +12 -0
- package/dist/src/templates/scripts/genesys/genesys-mcp.js +413 -0
- package/dist/src/templates/scripts/genesys/mcp/doc-tools.js +70 -0
- package/dist/src/templates/scripts/genesys/mcp/editor-functions.js +123 -0
- package/dist/src/templates/scripts/genesys/mcp/editor-tools.js +51 -0
- package/dist/src/templates/scripts/genesys/mcp/get-scene-state.js +26 -0
- package/dist/src/templates/scripts/genesys/mcp/run-subprocess.js +23 -0
- package/dist/src/templates/scripts/genesys/mcp/search-actors.js +703 -0
- package/dist/src/templates/scripts/genesys/mcp/search-assets.js +296 -0
- package/dist/src/templates/scripts/genesys/mcp/utils.js +234 -0
- package/dist/src/templates/scripts/genesys/migrate-scenes-and-prefabs.js +252 -0
- package/dist/src/templates/scripts/genesys/misc.js +32 -0
- package/dist/src/templates/scripts/genesys/mock.js +5 -0
- package/dist/src/templates/scripts/genesys/place-actors.js +112 -0
- package/dist/src/templates/scripts/genesys/post-install.js +33 -0
- package/dist/src/templates/scripts/genesys/remove-engine-comments.js +113 -0
- package/dist/src/templates/scripts/genesys/storageProvider.js +146 -0
- package/dist/src/templates/scripts/genesys/validate-prefabs.js +115 -0
- package/dist/src/templates/src/index.js +20 -0
- package/dist/src/templates/src/templates/firstPerson/src/auto-imports.js +1 -0
- package/dist/src/templates/src/templates/firstPerson/src/game.js +30 -0
- package/dist/src/templates/src/templates/firstPerson/src/player.js +55 -0
- package/dist/src/templates/src/templates/fps/src/auto-imports.js +1 -0
- package/dist/src/templates/src/templates/fps/src/game.js +30 -0
- package/dist/src/templates/src/templates/fps/src/player.js +60 -0
- package/dist/src/templates/src/templates/fps/src/weapon.js +54 -0
- package/dist/src/templates/src/templates/freeCamera/src/auto-imports.js +1 -0
- package/dist/src/templates/src/templates/freeCamera/src/game.js +30 -0
- package/dist/src/templates/src/templates/freeCamera/src/player.js +38 -0
- package/dist/src/templates/src/templates/sideScroller/src/auto-imports.js +1 -0
- package/dist/src/templates/src/templates/sideScroller/src/const.js +43 -0
- package/dist/src/templates/src/templates/sideScroller/src/game.js +102 -0
- package/dist/src/templates/src/templates/sideScroller/src/level-generator.js +249 -0
- package/dist/src/templates/src/templates/sideScroller/src/player.js +100 -0
- package/dist/src/templates/src/templates/thirdPerson/src/auto-imports.js +1 -0
- package/dist/src/templates/src/templates/thirdPerson/src/game.js +30 -0
- package/dist/src/templates/src/templates/thirdPerson/src/player.js +58 -0
- package/dist/src/templates/src/templates/vehicle/src/auto-imports.js +1 -0
- package/dist/src/templates/src/templates/vehicle/src/base-vehicle.js +122 -0
- package/dist/src/templates/src/templates/vehicle/src/game.js +33 -0
- package/dist/src/templates/src/templates/vehicle/src/mesh-vehicle.js +188 -0
- package/dist/src/templates/src/templates/vehicle/src/player.js +97 -0
- package/dist/src/templates/src/templates/vehicle/src/primitive-vehicle.js +258 -0
- package/dist/src/templates/src/templates/vehicle/src/ui-hints.js +100 -0
- package/dist/src/templates/src/templates/vr-game/src/auto-imports.js +1 -0
- package/dist/src/templates/src/templates/vr-game/src/game.js +55 -0
- package/dist/src/templates/src/templates/vr-game/src/sample-vr-actor.js +29 -0
- package/dist/src/templates/vite.config.js +46 -0
- package/package.json +181 -0
- package/scripts/post-install.ts +143 -0
- package/src/asset-pack/.gitattributes +89 -0
- package/src/asset-pack/.github/workflows/publish.yml +90 -0
- package/src/asset-pack/eslint.config.js +59 -0
- package/src/asset-pack/gitignore +11 -0
- package/src/asset-pack/scripts/post-install.ts +81 -0
- package/src/asset-pack/src/index.ts +0 -0
- package/src/asset-pack/tsconfig.json +34 -0
- package/src/templates/.cursor/mcp.json +20 -0
- package/src/templates/.cursorignore +2 -0
- package/src/templates/.gitattributes +89 -0
- package/src/templates/.vscode/settings.json +6 -0
- package/src/templates/AGENTS.md +104 -0
- package/src/templates/CLAUDE.md +1 -0
- package/src/templates/README.md +24 -0
- package/src/templates/eslint.config.js +60 -0
- package/src/templates/gitignore +11 -0
- package/src/templates/index.html +34 -0
- package/src/templates/pnpm-lock.yaml +3676 -0
- package/src/templates/scripts/genesys/build-project.ts +51 -0
- package/src/templates/scripts/genesys/calc-bounding-box.ts +272 -0
- package/src/templates/scripts/genesys/common.ts +46 -0
- package/src/templates/scripts/genesys/const.ts +9 -0
- package/src/templates/scripts/genesys/dev/dump-default-scene.ts +11 -0
- package/src/templates/scripts/genesys/dev/generate-manifest.ts +146 -0
- package/src/templates/scripts/genesys/dev/launcher.ts +46 -0
- package/src/templates/scripts/genesys/dev/storage-provider.ts +229 -0
- package/src/templates/scripts/genesys/dev/update-template-scenes.ts +84 -0
- package/src/templates/scripts/genesys/doc-server.ts +16 -0
- package/src/templates/scripts/genesys/genesys-mcp.ts +526 -0
- package/src/templates/scripts/genesys/mcp/doc-tools.ts +86 -0
- package/src/templates/scripts/genesys/mcp/editor-functions.ts +151 -0
- package/src/templates/scripts/genesys/mcp/editor-tools.ts +73 -0
- package/src/templates/scripts/genesys/mcp/get-scene-state.ts +35 -0
- package/src/templates/scripts/genesys/mcp/run-subprocess.ts +30 -0
- package/src/templates/scripts/genesys/mcp/search-actors.ts +858 -0
- package/src/templates/scripts/genesys/mcp/search-assets.ts +380 -0
- package/src/templates/scripts/genesys/mcp/utils.ts +281 -0
- package/src/templates/scripts/genesys/migrate-scenes-and-prefabs.ts +301 -0
- package/src/templates/scripts/genesys/misc.ts +42 -0
- package/src/templates/scripts/genesys/mock.ts +6 -0
- package/src/templates/scripts/genesys/place-actors.ts +179 -0
- package/src/templates/scripts/genesys/post-install.ts +39 -0
- package/src/templates/scripts/genesys/prefab.schema.json +85 -0
- package/src/templates/scripts/genesys/remove-engine-comments.ts +135 -0
- package/src/templates/scripts/genesys/run-mcp-inspector.bat +5 -0
- package/src/templates/scripts/genesys/storageProvider.ts +182 -0
- package/src/templates/scripts/genesys/validate-prefabs.ts +138 -0
- package/src/templates/src/index.ts +22 -0
- package/src/templates/src/templates/firstPerson/assets/default.genesys-scene +166 -0
- package/src/templates/src/templates/firstPerson/src/auto-imports.ts +0 -0
- package/src/templates/src/templates/firstPerson/src/game.ts +39 -0
- package/src/templates/src/templates/firstPerson/src/player.ts +59 -0
- package/src/templates/src/templates/fps/assets/default.genesys-scene +9460 -0
- package/src/templates/src/templates/fps/assets/models/SM_Beam_400.glb +0 -0
- package/src/templates/src/templates/fps/assets/models/SM_ChamferCube.glb +0 -0
- package/src/templates/src/templates/fps/assets/models/SM_Floor_Thick_400x400.glb +0 -0
- package/src/templates/src/templates/fps/assets/models/SM_Floor_Thick_400x400_Orange.glb +0 -0
- package/src/templates/src/templates/fps/assets/models/SM_Floor_Thin_400x400.glb +0 -0
- package/src/templates/src/templates/fps/assets/models/SM_Floor_Thin_400x400_Orange.glb +0 -0
- package/src/templates/src/templates/fps/assets/models/SM_Ramp_400x400.glb +0 -0
- package/src/templates/src/templates/fps/assets/models/SM_Rifle.glb +0 -0
- package/src/templates/src/templates/fps/assets/models/SM_Wall_Thin_400x200.glb +0 -0
- package/src/templates/src/templates/fps/assets/models/SM_Wall_Thin_400x200_Orange.glb +0 -0
- package/src/templates/src/templates/fps/assets/models/SM_Wall_Thin_400x400.glb +0 -0
- package/src/templates/src/templates/fps/assets/models/SM_Wall_Thin_400x400_Orange.glb +0 -0
- package/src/templates/src/templates/fps/src/auto-imports.ts +0 -0
- package/src/templates/src/templates/fps/src/game.ts +39 -0
- package/src/templates/src/templates/fps/src/player.ts +66 -0
- package/src/templates/src/templates/fps/src/weapon.ts +47 -0
- package/src/templates/src/templates/freeCamera/assets/default.genesys-scene +166 -0
- package/src/templates/src/templates/freeCamera/src/auto-imports.ts +0 -0
- package/src/templates/src/templates/freeCamera/src/game.ts +39 -0
- package/src/templates/src/templates/freeCamera/src/player.ts +40 -0
- package/src/templates/src/templates/sideScroller/assets/default.genesys-scene +122 -0
- package/src/templates/src/templates/sideScroller/src/auto-imports.ts +0 -0
- package/src/templates/src/templates/sideScroller/src/const.ts +46 -0
- package/src/templates/src/templates/sideScroller/src/game.ts +121 -0
- package/src/templates/src/templates/sideScroller/src/level-generator.ts +361 -0
- package/src/templates/src/templates/sideScroller/src/player.ts +123 -0
- package/src/templates/src/templates/thirdPerson/assets/default.genesys-scene +166 -0
- package/src/templates/src/templates/thirdPerson/src/auto-imports.ts +0 -0
- package/src/templates/src/templates/thirdPerson/src/game.ts +39 -0
- package/src/templates/src/templates/thirdPerson/src/player.ts +58 -0
- package/src/templates/src/templates/vehicle/assets/default.genesys-scene +226 -0
- package/src/templates/src/templates/vehicle/assets/models/cyberTruck/chassis.glb +0 -0
- package/src/templates/src/templates/vehicle/assets/models/cyberTruck/wheel.glb +0 -0
- package/src/templates/src/templates/vehicle/src/auto-imports.ts +0 -0
- package/src/templates/src/templates/vehicle/src/base-vehicle.ts +145 -0
- package/src/templates/src/templates/vehicle/src/game.ts +43 -0
- package/src/templates/src/templates/vehicle/src/mesh-vehicle.ts +189 -0
- package/src/templates/src/templates/vehicle/src/player.ts +106 -0
- package/src/templates/src/templates/vehicle/src/primitive-vehicle.ts +264 -0
- package/src/templates/src/templates/vehicle/src/ui-hints.ts +101 -0
- package/src/templates/src/templates/vr-game/assets/default.genesys-scene +247 -0
- package/src/templates/src/templates/vr-game/src/auto-imports.ts +1 -0
- package/src/templates/src/templates/vr-game/src/game.ts +66 -0
- package/src/templates/src/templates/vr-game/src/sample-vr-actor.ts +26 -0
- package/src/templates/tsconfig.json +35 -0
- package/src/templates/vite.config.ts +52 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as ENGINE from '@gnsx/genesys.js';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
import './auto-imports.js';
|
|
4
|
+
class MyGame extends ENGINE.BaseGameLoop {
|
|
5
|
+
pawn = null;
|
|
6
|
+
controller = null;
|
|
7
|
+
createLoadingScreen() {
|
|
8
|
+
// enable the default loading screen
|
|
9
|
+
return new ENGINE.DefaultLoadingScreen();
|
|
10
|
+
}
|
|
11
|
+
static get DEFAULT_OPTIONS() {
|
|
12
|
+
return {
|
|
13
|
+
...ENGINE.BaseGameLoop.DEFAULT_OPTIONS,
|
|
14
|
+
xrEnabled: true,
|
|
15
|
+
vrSessionOptions: {
|
|
16
|
+
optionalFeatures: ['hand-tracking', 'local-floor'],
|
|
17
|
+
requiredFeatures: []
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
async preStart() {
|
|
22
|
+
// Disable tone mapping for VR because it breaks VR
|
|
23
|
+
this.world.postProcessManager.disablePasses(ENGINE.PostProcessPass.ToneMapping);
|
|
24
|
+
// create the vr pawn
|
|
25
|
+
this.pawn = ENGINE.VRPawn.create({
|
|
26
|
+
position: new THREE.Vector3(0, 0, 0),
|
|
27
|
+
movementComponent: null,
|
|
28
|
+
camera: new THREE.PerspectiveCamera(ENGINE.CAMERA_FOV, 1, ENGINE.CAMERA_NEAR, ENGINE.CAMERA_FAR),
|
|
29
|
+
controllerOptions: {
|
|
30
|
+
rayVisualizationEnabled: true,
|
|
31
|
+
maxRayDistance: 10
|
|
32
|
+
},
|
|
33
|
+
enableTeleportation: true,
|
|
34
|
+
enableSnapTurn: true,
|
|
35
|
+
snapTurnAngle: 30,
|
|
36
|
+
maxTeleportDistance: 15
|
|
37
|
+
});
|
|
38
|
+
// create the controller and possess the pawn
|
|
39
|
+
this.controller = ENGINE.PlayerController.create();
|
|
40
|
+
this.controller.possess(this.pawn);
|
|
41
|
+
this.pawn.addComponent(ENGINE.VRGrabComponent.create());
|
|
42
|
+
this.pawn.addComponent(ENGINE.VRSnapTurnComponent.create({ angleDeg: this.pawn.getSnapTurnAngleDegrees() }));
|
|
43
|
+
this.pawn.addComponent(ENGINE.VRInteractComponent.create({ button: ENGINE.XRButton.Trigger }));
|
|
44
|
+
this.pawn.addComponent(ENGINE.VRTeleportComponent.create({ maxDistance: 15 }));
|
|
45
|
+
// add both to the world
|
|
46
|
+
this.world.addActors(this.pawn, this.controller);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function main(container, gameId) {
|
|
50
|
+
const game = new MyGame(container, {
|
|
51
|
+
...MyGame.DEFAULT_OPTIONS,
|
|
52
|
+
gameId
|
|
53
|
+
});
|
|
54
|
+
return game;
|
|
55
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import * as ENGINE from '@gnsx/genesys.js';
|
|
8
|
+
/**
|
|
9
|
+
* Sample VR Actor - A simple actor that can be picked up and manipulated in VR
|
|
10
|
+
*/
|
|
11
|
+
let SampleVRActor = class SampleVRActor extends ENGINE.Actor {
|
|
12
|
+
meshComponent = null;
|
|
13
|
+
grabbable = null;
|
|
14
|
+
doBeginPlay() {
|
|
15
|
+
super.doBeginPlay();
|
|
16
|
+
this.meshComponent = this.getComponent(ENGINE.MeshComponent);
|
|
17
|
+
this.grabbable = this.getComponent(ENGINE.VRGrabbableComponent);
|
|
18
|
+
this.grabbable?.onGrabStart.add((_hand) => {
|
|
19
|
+
this.meshComponent?.setPhysicsEnabled(false);
|
|
20
|
+
});
|
|
21
|
+
this.grabbable?.onGrabEnd.add((_hand, _dropVelocity) => {
|
|
22
|
+
this.meshComponent?.setPhysicsEnabled(true);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
SampleVRActor = __decorate([
|
|
27
|
+
ENGINE.GameClass()
|
|
28
|
+
], SampleVRActor);
|
|
29
|
+
export { SampleVRActor };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { defineConfig } from 'vite';
|
|
2
|
+
import mkcert from 'vite-plugin-mkcert';
|
|
3
|
+
import { nodePolyfills } from 'vite-plugin-node-polyfills';
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
// Enable TypeScript support
|
|
6
|
+
esbuild: {
|
|
7
|
+
target: 'es2021',
|
|
8
|
+
},
|
|
9
|
+
plugins: [
|
|
10
|
+
nodePolyfills({
|
|
11
|
+
include: ['path'],
|
|
12
|
+
}),
|
|
13
|
+
mkcert(),
|
|
14
|
+
],
|
|
15
|
+
// Configure module resolution
|
|
16
|
+
resolve: {
|
|
17
|
+
extensions: ['.ts', '.tsx', '.js', '.jsx', '.json'],
|
|
18
|
+
},
|
|
19
|
+
// Configure the dev server
|
|
20
|
+
server: {
|
|
21
|
+
port: 3000,
|
|
22
|
+
host: '0.0.0.0',
|
|
23
|
+
open: true,
|
|
24
|
+
// Enable CORS for asset loading
|
|
25
|
+
cors: true,
|
|
26
|
+
// Serve source maps for debugging
|
|
27
|
+
fs: {
|
|
28
|
+
allow: ['..', '.']
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
// Configure build options
|
|
32
|
+
build: {
|
|
33
|
+
target: 'es2021',
|
|
34
|
+
outDir: 'dist',
|
|
35
|
+
sourcemap: true,
|
|
36
|
+
rollupOptions: {
|
|
37
|
+
input: {
|
|
38
|
+
main: 'index.html',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
// Enable source maps for debugging in development
|
|
43
|
+
css: {
|
|
44
|
+
devSourcemap: true,
|
|
45
|
+
},
|
|
46
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gnsx/genesys.sdk",
|
|
3
|
+
"version": "4.2.9",
|
|
4
|
+
"description": "Genesys SDK - A development toolkit for game development",
|
|
5
|
+
"author": "Directive Games",
|
|
6
|
+
"main": "index.js",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"pnpm": {
|
|
9
|
+
"onlyBuiltDependencies": [
|
|
10
|
+
"electron"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"access": "public"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist/src",
|
|
18
|
+
"src/templates",
|
|
19
|
+
"src/asset-pack",
|
|
20
|
+
"scripts"
|
|
21
|
+
],
|
|
22
|
+
"bin": {
|
|
23
|
+
"genesys-sdk": "./dist/src/core/cli.js"
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"postinstall": "pnpm exec tsx scripts/post-install.ts",
|
|
27
|
+
"dev:main": "tsc --watch -p tsconfig.json",
|
|
28
|
+
"dev:preload": "tsc --watch -p tsconfig.preload.json",
|
|
29
|
+
"dev:electron": "electron dist/src/electron/backend/main.js",
|
|
30
|
+
"dev:watch": "pnpm compile && concurrently -k -n MAIN,PRELOAD \"pnpm dev:main\" \"pnpm dev:preload\" nodemon",
|
|
31
|
+
"dev": "pnpm compile && concurrently -k -n MAIN,PRELOAD \"pnpm dev:main\" \"pnpm dev:preload\" \"pnpm dev:electron\"",
|
|
32
|
+
"dev:hosted": "pnpm compile && concurrently -k -n MAIN,PRELOAD \"pnpm dev:main\" \"pnpm dev:preload\" \"dotenv -v DEV_HOSTED=true pnpm dev:electron\"",
|
|
33
|
+
"dev:vite-old": "vite",
|
|
34
|
+
"dev-old": "pnpm compile && concurrently -k -n MAIN,PRELOAD,VITE \"pnpm dev:main\" \"pnpm dev:preload\" \"pnpm dev:vite-old\" \"pnpm dev:electron-old\"",
|
|
35
|
+
"compile": "tsc -p tsconfig.json && tsc -p tsconfig.preload.json",
|
|
36
|
+
"build": "vite build && pnpm compile && pnpm lint",
|
|
37
|
+
"dist": "pnpm build && electron-builder",
|
|
38
|
+
"lint": "eslint . --fix --ext .ts,.tsx",
|
|
39
|
+
"pack": "pnpm build && pnpm pack",
|
|
40
|
+
"cli": "pnpm exec tsx src/core/cli.ts",
|
|
41
|
+
"cli:new": "pnpm exec tsx src/core/cli.ts new",
|
|
42
|
+
"cli:build": "pnpm exec tsx src/core/cli.ts build",
|
|
43
|
+
"cli:new-asset-pack": "pnpm exec tsx src/core/cli.ts new-asset-pack"
|
|
44
|
+
},
|
|
45
|
+
"build": {
|
|
46
|
+
"artifactName": "Genesys-Setup-${version}.${ext}",
|
|
47
|
+
"publish": [
|
|
48
|
+
{
|
|
49
|
+
"provider": "github",
|
|
50
|
+
"releaseType": "release",
|
|
51
|
+
"owner": "directivegames",
|
|
52
|
+
"repo": "genesys.sdk-release",
|
|
53
|
+
"private": true
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"asar": true,
|
|
57
|
+
"asarUnpack": [
|
|
58
|
+
"node_modules/@esbuild/**/*",
|
|
59
|
+
"node_modules/esbuild/**/*"
|
|
60
|
+
],
|
|
61
|
+
"appId": "com.directivegames.genesys.sdk",
|
|
62
|
+
"productName": "Genesys",
|
|
63
|
+
"files": [
|
|
64
|
+
"dist/**/*",
|
|
65
|
+
{
|
|
66
|
+
"from": "node_modules/.pnpm/three@0.182.0/node_modules/three/examples",
|
|
67
|
+
"to": "node_modules/three/examples"
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"extraResources": [
|
|
71
|
+
{
|
|
72
|
+
"from": "src/templates",
|
|
73
|
+
"to": "vendor/src/templates"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"from": "src/asset-pack",
|
|
77
|
+
"to": "vendor/src/asset-pack"
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"directories": {
|
|
81
|
+
"buildResources": "build"
|
|
82
|
+
},
|
|
83
|
+
"extraMetadata": {
|
|
84
|
+
"main": "dist/src/electron/backend/main.js"
|
|
85
|
+
},
|
|
86
|
+
"protocols": [
|
|
87
|
+
{
|
|
88
|
+
"name": "genesys",
|
|
89
|
+
"schemes": [
|
|
90
|
+
"genesys"
|
|
91
|
+
]
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"name": "genesys-dev",
|
|
95
|
+
"schemes": [
|
|
96
|
+
"genesys-dev"
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"win": {
|
|
101
|
+
"target": "nsis"
|
|
102
|
+
},
|
|
103
|
+
"mac": {
|
|
104
|
+
"target": "dmg",
|
|
105
|
+
"hardenedRuntime": true,
|
|
106
|
+
"gatekeeperAssess": false,
|
|
107
|
+
"entitlements": "build/entitlements.mac.plist",
|
|
108
|
+
"entitlementsInherit": "build/entitlements.mac.plist"
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"dependencies": {
|
|
112
|
+
"@gnsx/genesys.js": "^4.2.11",
|
|
113
|
+
"@electron/rebuild": "^4.0.2",
|
|
114
|
+
"@emotion/react": "^11.14.0",
|
|
115
|
+
"@emotion/styled": "^11.14.0",
|
|
116
|
+
"@mui/icons-material": "^7.1.0",
|
|
117
|
+
"@mui/lab": "^7.0.0-beta.12",
|
|
118
|
+
"@mui/material": "^7.1.0",
|
|
119
|
+
"@sentry/electron": "^7.5.0",
|
|
120
|
+
"chokidar": "^4.0.3",
|
|
121
|
+
"commander": "^14.0.2",
|
|
122
|
+
"core-util-is": "^1.0.3",
|
|
123
|
+
"cors": "^2.8.5",
|
|
124
|
+
"electron-devtools-installer": "^4.0.0",
|
|
125
|
+
"electron-is-dev": "^3.0.1",
|
|
126
|
+
"electron-log": "^5.4.3",
|
|
127
|
+
"electron-store": "^11.0.2",
|
|
128
|
+
"electron-updater": "^6.7.3",
|
|
129
|
+
"esbuild": "^0.25.11",
|
|
130
|
+
"express": "^5.1.0",
|
|
131
|
+
"fix-path": "^4.0.0",
|
|
132
|
+
"jsdom": "^27.0.0",
|
|
133
|
+
"minimatch": "^10.0.1",
|
|
134
|
+
"multer": "^2.0.2",
|
|
135
|
+
"node-abi": "^4.14.0",
|
|
136
|
+
"react": "^19.2.0",
|
|
137
|
+
"react-dom": "^19.2.0",
|
|
138
|
+
"three": "^0.182.0",
|
|
139
|
+
"upath": "^2.0.1",
|
|
140
|
+
"ws": "^8.18.2",
|
|
141
|
+
"zod": "^3.24.4"
|
|
142
|
+
},
|
|
143
|
+
"devDependencies": {
|
|
144
|
+
"@electron/notarize": "^3.1.0",
|
|
145
|
+
"@modelcontextprotocol/sdk": "^1.22.0",
|
|
146
|
+
"@types/cors": "^2.8.18",
|
|
147
|
+
"@types/electron-store": "^3.2.2",
|
|
148
|
+
"@types/express": "^5.0.2",
|
|
149
|
+
"@types/jsdom": "^27.0.0",
|
|
150
|
+
"@types/minimatch": "^5.1.2",
|
|
151
|
+
"@types/multer": "^1.4.12",
|
|
152
|
+
"@types/node": "^22.15.21",
|
|
153
|
+
"@types/react": "^19.2.0",
|
|
154
|
+
"@types/react-dom": "^19.2.0",
|
|
155
|
+
"@types/three": "^0.182.0",
|
|
156
|
+
"@types/ws": "^8.18.1",
|
|
157
|
+
"@typescript-eslint/eslint-plugin": "^8.29.1",
|
|
158
|
+
"@typescript-eslint/parser": "^8.29.1",
|
|
159
|
+
"@vitejs/plugin-react": "^4.4.1",
|
|
160
|
+
"ajv": "^8.17.1",
|
|
161
|
+
"concurrently": "^9.1.2",
|
|
162
|
+
"dotenv-cli": "^8.0.0",
|
|
163
|
+
"electron": "^39.2.7",
|
|
164
|
+
"electron-builder": "^26.4.0",
|
|
165
|
+
"eslint": "^9.24.0",
|
|
166
|
+
"eslint-plugin-import": "^2.31.0",
|
|
167
|
+
"get-port": "^7.1.0",
|
|
168
|
+
"nanoid": "^5.1.6",
|
|
169
|
+
"nodemon": "^3.1.10",
|
|
170
|
+
"ts-morph": "^27.0.2",
|
|
171
|
+
"tsc-watch": "^7.1.0",
|
|
172
|
+
"tsx": "^4.20.6",
|
|
173
|
+
"typescript": "^5.8.3",
|
|
174
|
+
"vite": "^6.3.5",
|
|
175
|
+
"vite-plugin-mkcert": "^1.17.9",
|
|
176
|
+
"vite-plugin-node-polyfills": "^0.24.0",
|
|
177
|
+
"wait-on": "^8.0.4",
|
|
178
|
+
"yaml": "^2.6.1",
|
|
179
|
+
"zod-to-json-schema": "^3.25.0"
|
|
180
|
+
}
|
|
181
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
|
|
4
|
+
import YAML from 'yaml';
|
|
5
|
+
|
|
6
|
+
interface PackageJson {
|
|
7
|
+
dependencies?: Record<string, string>;
|
|
8
|
+
devDependencies?: Record<string, string>;
|
|
9
|
+
name?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface PnpmLockFile {
|
|
13
|
+
importers?: Record<string, {
|
|
14
|
+
dependencies?: Record<string, {
|
|
15
|
+
specifier: string;
|
|
16
|
+
version: string;
|
|
17
|
+
}>;
|
|
18
|
+
devDependencies?: Record<string, {
|
|
19
|
+
specifier: string;
|
|
20
|
+
version: string;
|
|
21
|
+
}>;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function generateDependenciesFile(): void {
|
|
26
|
+
try {
|
|
27
|
+
// Read main package.json to get dependency lists
|
|
28
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
29
|
+
const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf-8');
|
|
30
|
+
const packageJson: PackageJson = JSON.parse(packageJsonContent);
|
|
31
|
+
|
|
32
|
+
// Read pnpm-lock.yaml to get exact versions
|
|
33
|
+
const pnpmLockPath = path.join(process.cwd(), 'pnpm-lock.yaml');
|
|
34
|
+
if (!fs.existsSync(pnpmLockPath)) {
|
|
35
|
+
// this is a valid case when this package is installed as a dependency of another package
|
|
36
|
+
console.log('⚠️ Could not read pnpm-lock.yaml, skipping dependency versions');
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const pnpmLockContent = fs.readFileSync(pnpmLockPath, 'utf-8');
|
|
40
|
+
const pnpmLock: PnpmLockFile = YAML.parse(pnpmLockContent);
|
|
41
|
+
|
|
42
|
+
// Extract dependency lists from both package.json files
|
|
43
|
+
const mainDependencyNames = Object.keys(packageJson.dependencies ?? {});
|
|
44
|
+
const mainDevDependencyNames = Object.keys(packageJson.devDependencies ?? {});
|
|
45
|
+
|
|
46
|
+
// Merge all dependency names, removing duplicates
|
|
47
|
+
const allDependencyNames = [...new Set([...mainDependencyNames])];
|
|
48
|
+
const allDevDependencyNames = [...new Set([...mainDevDependencyNames])];
|
|
49
|
+
|
|
50
|
+
// Helper function to extract version from pnpm lock entry
|
|
51
|
+
const extractVersion = (versionString: string): string => {
|
|
52
|
+
// pnpm versions can include peer dependency info in parentheses, e.g., "11.14.0(@types/react@19.2.7)(react@19.2.0)"
|
|
53
|
+
// We only want the base version number
|
|
54
|
+
return versionString.split('(')[0];
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// Get exact versions from pnpm-lock.yaml
|
|
58
|
+
const dependencies: Record<string, string> = {};
|
|
59
|
+
const devDependencies: Record<string, string> = {};
|
|
60
|
+
|
|
61
|
+
// Get importers (root workspace)
|
|
62
|
+
const rootImporter = pnpmLock.importers?.['.'];
|
|
63
|
+
|
|
64
|
+
// Process production dependencies
|
|
65
|
+
for (const depName of allDependencyNames) {
|
|
66
|
+
// Check root workspace first
|
|
67
|
+
let version = rootImporter?.dependencies?.[depName]?.version;
|
|
68
|
+
if (version) {
|
|
69
|
+
dependencies[depName] = extractVersion(version);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Process dev dependencies
|
|
74
|
+
for (const depName of allDevDependencyNames) {
|
|
75
|
+
// Check root workspace first
|
|
76
|
+
let version = rootImporter?.devDependencies?.[depName]?.version;
|
|
77
|
+
if (version) {
|
|
78
|
+
devDependencies[depName] = extractVersion(version);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Generate TypeScript content
|
|
83
|
+
const tsContent = `/**
|
|
84
|
+
* Auto-generated file containing all package dependencies and their exact installed versions.
|
|
85
|
+
* This file is generated by the post-install script.
|
|
86
|
+
* Do not edit manually - it will be overwritten on next install.
|
|
87
|
+
*
|
|
88
|
+
* Versions are extracted from pnpm-lock.yaml to show exact installed versions,
|
|
89
|
+
* not the version ranges from package.json.
|
|
90
|
+
*
|
|
91
|
+
* Includes dependencies from the main package.
|
|
92
|
+
*/
|
|
93
|
+
|
|
94
|
+
export const DEPENDENCIES = {
|
|
95
|
+
${Object.entries(dependencies)
|
|
96
|
+
.map(([name, version]) => ` '${name}': '${version}',`)
|
|
97
|
+
.join('\n')}
|
|
98
|
+
} as const;
|
|
99
|
+
|
|
100
|
+
export const DEV_DEPENDENCIES = {
|
|
101
|
+
${Object.entries(devDependencies)
|
|
102
|
+
.map(([name, version]) => ` '${name}': '${version}',`)
|
|
103
|
+
.join('\n')}
|
|
104
|
+
} as const;
|
|
105
|
+
|
|
106
|
+
export const ALL_DEPENDENCIES = {
|
|
107
|
+
...DEPENDENCIES,
|
|
108
|
+
...DEV_DEPENDENCIES,
|
|
109
|
+
} as const;
|
|
110
|
+
|
|
111
|
+
export type DependencyName = keyof typeof ALL_DEPENDENCIES;
|
|
112
|
+
`;
|
|
113
|
+
|
|
114
|
+
// Write the TypeScript file
|
|
115
|
+
if (!fs.existsSync(path.join(process.cwd(), 'src'))) {
|
|
116
|
+
console.log('⚠️ src directory not found, skipping dependencies.ts file generation');
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const outputPath = path.join(process.cwd(), 'src', 'dependencies.ts');
|
|
120
|
+
fs.writeFileSync(outputPath, tsContent, 'utf-8');
|
|
121
|
+
|
|
122
|
+
console.log('✅ Dependencies file generated successfully at src/dependencies.ts');
|
|
123
|
+
console.log(`📦 Found ${Object.keys(dependencies).length} production dependencies with exact versions`);
|
|
124
|
+
console.log(`🔧 Found ${Object.keys(devDependencies).length} development dependencies with exact versions`);
|
|
125
|
+
} catch (error) {
|
|
126
|
+
console.error('❌ Error generating dependencies file:', error);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function deleteEngineAssets(): void {
|
|
132
|
+
const engineAssetsPath = path.join(process.cwd(), 'node_modules', 'genesys.js', 'assets');
|
|
133
|
+
if (fs.existsSync(engineAssetsPath)) {
|
|
134
|
+
fs.rmSync(engineAssetsPath, { recursive: true });
|
|
135
|
+
console.log('✅ Engine assets deleted successfully');
|
|
136
|
+
} else {
|
|
137
|
+
console.log('⚠️ Engine assets not found, skipping deletion');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Run the script
|
|
142
|
+
generateDependenciesFile();
|
|
143
|
+
deleteEngineAssets();
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Git LFS tracking for common large file types
|
|
2
|
+
|
|
3
|
+
# 3D Models
|
|
4
|
+
*.fbx filter=lfs diff=lfs merge=lfs -text
|
|
5
|
+
*.obj filter=lfs diff=lfs merge=lfs -text
|
|
6
|
+
*.dae filter=lfs diff=lfs merge=lfs -text
|
|
7
|
+
*.3ds filter=lfs diff=lfs merge=lfs -text
|
|
8
|
+
*.blend filter=lfs diff=lfs merge=lfs -text
|
|
9
|
+
*.max filter=lfs diff=lfs merge=lfs -text
|
|
10
|
+
*.maya filter=lfs diff=lfs merge=lfs -text
|
|
11
|
+
*.mb filter=lfs diff=lfs merge=lfs -text
|
|
12
|
+
*.ma filter=lfs diff=lfs merge=lfs -text
|
|
13
|
+
*.glb filter=lfs diff=lfs merge=lfs -text
|
|
14
|
+
*.gltf filter=lfs diff=lfs merge=lfs -text
|
|
15
|
+
|
|
16
|
+
# Textures and Images
|
|
17
|
+
*.png filter=lfs diff=lfs merge=lfs -text
|
|
18
|
+
*.jpg filter=lfs diff=lfs merge=lfs -text
|
|
19
|
+
*.jpeg filter=lfs diff=lfs merge=lfs -text
|
|
20
|
+
*.tga filter=lfs diff=lfs merge=lfs -text
|
|
21
|
+
*.tiff filter=lfs diff=lfs merge=lfs -text
|
|
22
|
+
*.tif filter=lfs diff=lfs merge=lfs -text
|
|
23
|
+
*.bmp filter=lfs diff=lfs merge=lfs -text
|
|
24
|
+
*.psd filter=lfs diff=lfs merge=lfs -text
|
|
25
|
+
*.exr filter=lfs diff=lfs merge=lfs -text
|
|
26
|
+
*.hdr filter=lfs diff=lfs merge=lfs -text
|
|
27
|
+
*.dds filter=lfs diff=lfs merge=lfs -text
|
|
28
|
+
*.ktx filter=lfs diff=lfs merge=lfs -text
|
|
29
|
+
*.ktx2 filter=lfs diff=lfs merge=lfs -text
|
|
30
|
+
|
|
31
|
+
# Audio Files
|
|
32
|
+
*.wav filter=lfs diff=lfs merge=lfs -text
|
|
33
|
+
*.mp3 filter=lfs diff=lfs merge=lfs -text
|
|
34
|
+
*.ogg filter=lfs diff=lfs merge=lfs -text
|
|
35
|
+
*.flac filter=lfs diff=lfs merge=lfs -text
|
|
36
|
+
*.aac filter=lfs diff=lfs merge=lfs -text
|
|
37
|
+
*.m4a filter=lfs diff=lfs merge=lfs -text
|
|
38
|
+
*.wma filter=lfs diff=lfs merge=lfs -text
|
|
39
|
+
*.aiff filter=lfs diff=lfs merge=lfs -text
|
|
40
|
+
|
|
41
|
+
# Video Files
|
|
42
|
+
*.mp4 filter=lfs diff=lfs merge=lfs -text
|
|
43
|
+
*.mov filter=lfs diff=lfs merge=lfs -text
|
|
44
|
+
*.avi filter=lfs diff=lfs merge=lfs -text
|
|
45
|
+
*.mkv filter=lfs diff=lfs merge=lfs -text
|
|
46
|
+
*.webm filter=lfs diff=lfs merge=lfs -text
|
|
47
|
+
*.wmv filter=lfs diff=lfs merge=lfs -text
|
|
48
|
+
*.flv filter=lfs diff=lfs merge=lfs -text
|
|
49
|
+
|
|
50
|
+
# Fonts
|
|
51
|
+
*.ttf filter=lfs diff=lfs merge=lfs -text
|
|
52
|
+
*.otf filter=lfs diff=lfs merge=lfs -text
|
|
53
|
+
*.woff filter=lfs diff=lfs merge=lfs -text
|
|
54
|
+
*.woff2 filter=lfs diff=lfs merge=lfs -text
|
|
55
|
+
|
|
56
|
+
# Archives and Packages
|
|
57
|
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
|
58
|
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
|
59
|
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
|
60
|
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
|
61
|
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
|
62
|
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
|
63
|
+
|
|
64
|
+
# Game Engine Specific Files
|
|
65
|
+
*.unity filter=lfs diff=lfs merge=lfs -text
|
|
66
|
+
*.unitypackage filter=lfs diff=lfs merge=lfs -text
|
|
67
|
+
*.asset filter=lfs diff=lfs merge=lfs -text
|
|
68
|
+
*.prefab filter=lfs diff=lfs merge=lfs -text
|
|
69
|
+
|
|
70
|
+
# Document Files (large ones)
|
|
71
|
+
*.pdf filter=lfs diff=lfs merge=lfs -text
|
|
72
|
+
*.doc filter=lfs diff=lfs merge=lfs -text
|
|
73
|
+
*.docx filter=lfs diff=lfs merge=lfs -text
|
|
74
|
+
*.ppt filter=lfs diff=lfs merge=lfs -text
|
|
75
|
+
*.pptx filter=lfs diff=lfs merge=lfs -text
|
|
76
|
+
|
|
77
|
+
# Binary executables and libraries
|
|
78
|
+
*.exe filter=lfs diff=lfs merge=lfs -text
|
|
79
|
+
*.dll filter=lfs diff=lfs merge=lfs -text
|
|
80
|
+
*.so filter=lfs diff=lfs merge=lfs -text
|
|
81
|
+
*.dylib filter=lfs diff=lfs merge=lfs -text
|
|
82
|
+
*.a filter=lfs diff=lfs merge=lfs -text
|
|
83
|
+
*.lib filter=lfs diff=lfs merge=lfs -text
|
|
84
|
+
|
|
85
|
+
# Data files
|
|
86
|
+
*.dat filter=lfs diff=lfs merge=lfs -text
|
|
87
|
+
*.data filter=lfs diff=lfs merge=lfs -text
|
|
88
|
+
*.cache filter=lfs diff=lfs merge=lfs -text
|
|
89
|
+
*.tmp filter=lfs diff=lfs merge=lfs -text
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
name: Publish to npm
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
version_type:
|
|
7
|
+
description: 'Version bump type'
|
|
8
|
+
required: true
|
|
9
|
+
type: choice
|
|
10
|
+
options:
|
|
11
|
+
- patch
|
|
12
|
+
- minor
|
|
13
|
+
- major
|
|
14
|
+
default: 'patch'
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
id-token: write # Required for OIDC
|
|
18
|
+
contents: write
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
publish:
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
steps:
|
|
24
|
+
- name: Checkout repository
|
|
25
|
+
uses: actions/checkout@v4
|
|
26
|
+
with:
|
|
27
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
28
|
+
lfs: true
|
|
29
|
+
|
|
30
|
+
- name: Setup pnpm
|
|
31
|
+
uses: pnpm/action-setup@v4
|
|
32
|
+
with:
|
|
33
|
+
version: 9
|
|
34
|
+
|
|
35
|
+
- name: Setup Node.js
|
|
36
|
+
uses: actions/setup-node@v4
|
|
37
|
+
with:
|
|
38
|
+
node-version: '20'
|
|
39
|
+
registry-url: 'https://registry.npmjs.org'
|
|
40
|
+
cache: 'pnpm'
|
|
41
|
+
|
|
42
|
+
- name: Update npm to latest
|
|
43
|
+
run: npm install -g npm@latest
|
|
44
|
+
|
|
45
|
+
- name: Install dependencies
|
|
46
|
+
run: pnpm install
|
|
47
|
+
|
|
48
|
+
- name: Configure git
|
|
49
|
+
run: |
|
|
50
|
+
git config user.name "github-actions[bot]"
|
|
51
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
52
|
+
|
|
53
|
+
- name: Bump version
|
|
54
|
+
id: version
|
|
55
|
+
run: |
|
|
56
|
+
# Get current version
|
|
57
|
+
CURRENT_VERSION=$(node -p "require('./package.json').version")
|
|
58
|
+
echo "Current version: $CURRENT_VERSION"
|
|
59
|
+
|
|
60
|
+
# Bump version using npm (doesn't require npm auth)
|
|
61
|
+
npm version ${{ github.event.inputs.version_type }} --no-git-tag-version
|
|
62
|
+
|
|
63
|
+
# Get new version
|
|
64
|
+
NEW_VERSION=$(node -p "require('./package.json').version")
|
|
65
|
+
echo "New version: $NEW_VERSION"
|
|
66
|
+
echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT
|
|
67
|
+
|
|
68
|
+
- name: Build
|
|
69
|
+
run: pnpm build
|
|
70
|
+
|
|
71
|
+
- name: Publish to npm
|
|
72
|
+
run: pnpm publish --no-git-checks
|
|
73
|
+
|
|
74
|
+
- name: Commit and push version bump
|
|
75
|
+
run: |
|
|
76
|
+
git add package.json
|
|
77
|
+
git commit -m "chore: bump version to ${{ steps.version.outputs.new_version }}"
|
|
78
|
+
git tag "v${{ steps.version.outputs.new_version }}"
|
|
79
|
+
git push
|
|
80
|
+
git push --tags
|
|
81
|
+
|
|
82
|
+
- name: Create GitHub Release
|
|
83
|
+
uses: softprops/action-gh-release@v2
|
|
84
|
+
with:
|
|
85
|
+
tag_name: v${{ steps.version.outputs.new_version }}
|
|
86
|
+
name: v${{ steps.version.outputs.new_version }}
|
|
87
|
+
generate_release_notes: true
|
|
88
|
+
env:
|
|
89
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
90
|
+
|