feat: configure workspace environment runtimes
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/ai",
|
"name": "@wrnexus/ai",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "Zero-dependency Claude (Anthropic) client for WrNexus apps.",
|
"description": "Zero-dependency Claude (Anthropic) client for WrNexus apps.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/authz",
|
"name": "@wrnexus/authz",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/authz — part of the WrNexus framework.",
|
"description": "@wrnexus/authz — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
+11
-11
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/cli",
|
"name": "@wrnexus/cli",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/cli — part of the WrNexus framework.",
|
"description": "@wrnexus/cli — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -28,16 +28,16 @@
|
|||||||
"wrnexus": "./dist/index.js"
|
"wrnexus": "./dist/index.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@wrnexus/core": "^0.2.66",
|
"@wrnexus/core": "^0.2.67",
|
||||||
"@wrnexus/router": "^0.2.66",
|
"@wrnexus/router": "^0.2.67",
|
||||||
"@wrnexus/csr": "^0.2.66",
|
"@wrnexus/csr": "^0.2.67",
|
||||||
"@wrnexus/compiler": "^0.2.66",
|
"@wrnexus/compiler": "^0.2.67",
|
||||||
"@wrnexus/styles": "^0.2.66",
|
"@wrnexus/styles": "^0.2.67",
|
||||||
"@wrnexus/dev-server": "^0.2.66",
|
"@wrnexus/dev-server": "^0.2.67",
|
||||||
"@wrnexus/ui": "^0.2.66",
|
"@wrnexus/ui": "^0.2.67",
|
||||||
"@wrnexus/validation": "^0.2.66",
|
"@wrnexus/validation": "^0.2.67",
|
||||||
"@wrnexus/i18n": "^0.2.66",
|
"@wrnexus/i18n": "^0.2.67",
|
||||||
"@wrnexus/db": "^0.2.66"
|
"@wrnexus/db": "^0.2.67"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/compiler",
|
"name": "@wrnexus/compiler",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/compiler — part of the WrNexus framework.",
|
"description": "@wrnexus/compiler — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/core",
|
"name": "@wrnexus/core",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/core — part of the WrNexus framework.",
|
"description": "@wrnexus/core — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/csr",
|
"name": "@wrnexus/csr",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/csr — part of the WrNexus framework.",
|
"description": "@wrnexus/csr — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@wrnexus/core": "^0.2.66"
|
"@wrnexus/core": "^0.2.67"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/db",
|
"name": "@wrnexus/db",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/db — part of the WrNexus framework.",
|
"description": "@wrnexus/db — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/dev-server",
|
"name": "@wrnexus/dev-server",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/dev-server — part of the WrNexus framework.",
|
"description": "@wrnexus/dev-server — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -25,18 +25,18 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@wrnexus/core": "^0.2.66",
|
"@wrnexus/core": "^0.2.67",
|
||||||
"@wrnexus/router": "^0.2.66",
|
"@wrnexus/router": "^0.2.67",
|
||||||
"@wrnexus/ssr": "^0.2.66",
|
"@wrnexus/ssr": "^0.2.67",
|
||||||
"@wrnexus/csr": "^0.2.66",
|
"@wrnexus/csr": "^0.2.67",
|
||||||
"@wrnexus/compiler": "^0.2.66",
|
"@wrnexus/compiler": "^0.2.67",
|
||||||
"@wrnexus/styles": "^0.2.66",
|
"@wrnexus/styles": "^0.2.67",
|
||||||
"@wrnexus/ui": "^0.2.66",
|
"@wrnexus/ui": "^0.2.67",
|
||||||
"@wrnexus/validation": "^0.2.66",
|
"@wrnexus/validation": "^0.2.67",
|
||||||
"@wrnexus/i18n": "^0.2.66",
|
"@wrnexus/i18n": "^0.2.67",
|
||||||
"@wrnexus/db": "^0.2.66",
|
"@wrnexus/db": "^0.2.67",
|
||||||
"@wrnexus/pubsub": "^0.2.66",
|
"@wrnexus/pubsub": "^0.2.67",
|
||||||
"@wrnexus/uploader": "^0.2.66"
|
"@wrnexus/uploader": "^0.2.67"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/encryption",
|
"name": "@wrnexus/encryption",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/encryption — part of the WrNexus framework.",
|
"description": "@wrnexus/encryption — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/helpers",
|
"name": "@wrnexus/helpers",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "Safe convenience helpers for WrNexus request contexts and common application flows.",
|
"description": "Safe convenience helpers for WrNexus request contexts and common application flows.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@wrnexus/core": "^0.2.66"
|
"@wrnexus/core": "^0.2.67"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/i18n",
|
"name": "@wrnexus/i18n",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/i18n — part of the WrNexus framework.",
|
"description": "@wrnexus/i18n — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@wrnexus/core": "^0.2.66"
|
"@wrnexus/core": "^0.2.67"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/jwt",
|
"name": "@wrnexus/jwt",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/jwt — part of the WrNexus framework.",
|
"description": "@wrnexus/jwt — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/mobile",
|
"name": "@wrnexus/mobile",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/mobile — part of the WrNexus framework.",
|
"description": "@wrnexus/mobile — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@wrnexus/native": "^0.2.66"
|
"@wrnexus/native": "^0.2.67"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/native",
|
"name": "@wrnexus/native",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/native — part of the WrNexus framework.",
|
"description": "@wrnexus/native — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/oauth",
|
"name": "@wrnexus/oauth",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/oauth — part of the WrNexus framework.",
|
"description": "@wrnexus/oauth — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/pubsub",
|
"name": "@wrnexus/pubsub",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/pubsub — part of the WrNexus framework.",
|
"description": "@wrnexus/pubsub — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/queue",
|
"name": "@wrnexus/queue",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/queue — part of the WrNexus framework.",
|
"description": "@wrnexus/queue — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/reactive",
|
"name": "@wrnexus/reactive",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/reactive — part of the WrNexus framework.",
|
"description": "@wrnexus/reactive — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/router",
|
"name": "@wrnexus/router",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/router — part of the WrNexus framework.",
|
"description": "@wrnexus/router — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -21,8 +21,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@wrnexus/compiler": "^0.2.66",
|
"@wrnexus/compiler": "^0.2.67",
|
||||||
"@wrnexus/core": "^0.2.66"
|
"@wrnexus/core": "^0.2.67"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/ssr",
|
"name": "@wrnexus/ssr",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/ssr — part of the WrNexus framework.",
|
"description": "@wrnexus/ssr — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@wrnexus/core": "^0.2.66"
|
"@wrnexus/core": "^0.2.67"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/styles",
|
"name": "@wrnexus/styles",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/styles — part of the WrNexus framework.",
|
"description": "@wrnexus/styles — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@wrnexus/uploader": "^0.2.66"
|
"@wrnexus/uploader": "^0.2.67"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/test",
|
"name": "@wrnexus/test",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/test — part of the WrNexus framework.",
|
"description": "@wrnexus/test — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/tracking",
|
"name": "@wrnexus/tracking",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/tracking — part of the WrNexus framework.",
|
"description": "@wrnexus/tracking — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/ui",
|
"name": "@wrnexus/ui",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/ui — part of the WrNexus framework.",
|
"description": "@wrnexus/ui — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
"./ui.css": "./ui.css"
|
"./ui.css": "./ui.css"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@wrnexus/core": "^0.2.66"
|
"@wrnexus/core": "^0.2.67"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist",
|
"dist",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/uploader",
|
"name": "@wrnexus/uploader",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/uploader — part of the WrNexus framework.",
|
"description": "@wrnexus/uploader — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@wrnexus/core": "^0.2.66"
|
"@wrnexus/core": "^0.2.67"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/validation",
|
"name": "@wrnexus/validation",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "@wrnexus/validation — part of the WrNexus framework.",
|
"description": "@wrnexus/validation — part of the WrNexus framework.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/ai",
|
"name": "@wrnexus/ai",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "Zero-dependency Claude (Anthropic) client for WrNexus apps.",
|
"description": "Zero-dependency Claude (Anthropic) client for WrNexus apps.",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/authz",
|
"name": "@wrnexus/authz",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/cli",
|
"name": "@wrnexus/cli",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -65,6 +65,11 @@ Usage:
|
|||||||
Profiles: pass --profile=<name> to dev/build/db (or set WRNEXUS_PROFILE) to load
|
Profiles: pass --profile=<name> to dev/build/db (or set WRNEXUS_PROFILE) to load
|
||||||
that profile's .env cascade and config overrides. e.g. wrnexus dev --profile=uat
|
that profile's .env cascade and config overrides. e.g. wrnexus dev --profile=uat
|
||||||
|
|
||||||
|
Workspace environments: configure protocol, rootDomain, port, hostname, runtime
|
||||||
|
(development|production), hmr, build, migrate, and profile in wrnexus.workspace.ts.
|
||||||
|
CLI overrides: --port, --host, --build/--no-build, --migrate/--no-migrate,
|
||||||
|
--profile, and --prepare-only.
|
||||||
|
|
||||||
Update options: --dry-run previews changes; --no-verify skips post-update check/build.
|
Update options: --dry-run previews changes; --no-verify skips post-update check/build.
|
||||||
`);
|
`);
|
||||||
}
|
}
|
||||||
@@ -210,7 +215,16 @@ async function main(): Promise<void> {
|
|||||||
if (!knownEnvironments.has(command)) throw new Error("unknown-environment-command");
|
if (!knownEnvironments.has(command)) throw new Error("unknown-environment-command");
|
||||||
const environmentArgs = rest.filter((arg) => arg !== workspaceRoot);
|
const environmentArgs = rest.filter((arg) => arg !== workspaceRoot);
|
||||||
environmentArgs.push(`--environment=${command}`);
|
environmentArgs.push(`--environment=${command}`);
|
||||||
if (command === "development") {
|
const environmentConfig = workspace.environments?.[command];
|
||||||
|
const runtime =
|
||||||
|
environmentConfig?.runtime ?? (command === "development" ? "development" : "production");
|
||||||
|
if (runtime === "development") {
|
||||||
|
if (environmentArgs.includes("--prepare-only")) {
|
||||||
|
console.log(
|
||||||
|
`\n ✓ Workspace environment "${command}" uses the development runtime (HMR ${environmentConfig?.hmr === false ? "disabled" : "enabled"}).\n`,
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
await runGateway(workspaceRoot, environmentArgs);
|
await runGateway(workspaceRoot, environmentArgs);
|
||||||
} else {
|
} else {
|
||||||
await runProduction(workspaceRoot, environmentArgs);
|
await runProduction(workspaceRoot, environmentArgs);
|
||||||
|
|||||||
@@ -664,6 +664,15 @@ const MIGRATIONS: Migration[] = [
|
|||||||
// Existing workspaces gain the CLI command aliases and optional UI props automatically.
|
// Existing workspaces gain the CLI command aliases and optional UI props automatically.
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
version: "0.2.67",
|
||||||
|
id: "configurable-workspace-environment-runtime",
|
||||||
|
description:
|
||||||
|
"Adds per-environment runtime, HMR, build, migration, profile, hostname, and port controls to workspace commands.",
|
||||||
|
apply() {
|
||||||
|
// Existing workspace configurations remain compatible; new controls are opt-in.
|
||||||
|
},
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
/** Release tooling uses this to require an explicit migration entry per version. */
|
/** Release tooling uses this to require an explicit migration entry per version. */
|
||||||
|
|||||||
@@ -25,6 +25,12 @@ export interface WorkspaceEnvironmentConfig {
|
|||||||
protocol?: "http" | "https";
|
protocol?: "http" | "https";
|
||||||
rootDomain?: string;
|
rootDomain?: string;
|
||||||
port?: number;
|
port?: number;
|
||||||
|
hostname?: string;
|
||||||
|
runtime?: "development" | "production";
|
||||||
|
hmr?: boolean;
|
||||||
|
build?: boolean;
|
||||||
|
migrate?: boolean;
|
||||||
|
profile?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface WorkspaceApp {
|
export interface WorkspaceApp {
|
||||||
@@ -54,7 +60,7 @@ export interface WorkspaceApp {
|
|||||||
export interface WorkspaceConfig {
|
export interface WorkspaceConfig {
|
||||||
defaultEnvironment?: WorkspaceEnvironment;
|
defaultEnvironment?: WorkspaceEnvironment;
|
||||||
|
|
||||||
environments?: Record<WorkspaceEnvironment, WorkspaceEnvironmentConfig>;
|
environments?: Partial<Record<WorkspaceEnvironment, WorkspaceEnvironmentConfig>>;
|
||||||
|
|
||||||
apps: WorkspaceApp[];
|
apps: WorkspaceApp[];
|
||||||
security?: GatewaySecurity;
|
security?: GatewaySecurity;
|
||||||
@@ -81,6 +87,12 @@ export const workspaceFiles = (name: string): Record<string, string> => ({
|
|||||||
// Map each app to the domains it serves. \`wrnexus gateway\` runs them all behind
|
// Map each app to the domains it serves. \`wrnexus gateway\` runs them all behind
|
||||||
// one port and routes by Host header (add these hosts to your /etc/hosts).
|
// one port and routes by Host header (add these hosts to your /etc/hosts).
|
||||||
const config: WorkspaceConfig = {
|
const config: WorkspaceConfig = {
|
||||||
|
defaultEnvironment: "development",
|
||||||
|
environments: {
|
||||||
|
development: { protocol: "http", rootDomain: "localhost", port: 3000, runtime: "development", hmr: true, build: false, migrate: false },
|
||||||
|
staging: { protocol: "https", rootDomain: "staging.example.com", port: 443, runtime: "production", hmr: false, build: true, migrate: true },
|
||||||
|
production: { protocol: "https", rootDomain: "example.com", port: 443, runtime: "production", hmr: false, build: true, migrate: true },
|
||||||
|
},
|
||||||
// Gateway-wide security (all optional):
|
// Gateway-wide security (all optional):
|
||||||
security: {
|
security: {
|
||||||
trustedHostsOnly: true, // reject requests for unknown domains
|
trustedHostsOnly: true, // reject requests for unknown domains
|
||||||
@@ -398,26 +410,23 @@ export async function runGateway(root: string, args: string[]): Promise<void> {
|
|||||||
(args.includes("--prod") ? "production" : config.defaultEnvironment || "development");
|
(args.includes("--prod") ? "production" : config.defaultEnvironment || "development");
|
||||||
|
|
||||||
const resolved = resolveWorkspaceConfig(config, environment);
|
const resolved = resolveWorkspaceConfig(config, environment);
|
||||||
|
const environmentConfig = resolved.config;
|
||||||
|
const runtime =
|
||||||
|
environmentConfig.runtime ?? (environment === "development" ? "development" : "production");
|
||||||
|
|
||||||
const port = portArg
|
const port = portArg
|
||||||
? Number(portArg.split("=")[1])
|
? Number(portArg.split("=")[1])
|
||||||
: resolved.environment === "development"
|
: (environmentConfig.port ?? (runtime === "development" ? 3000 : 80));
|
||||||
? 3000
|
|
||||||
: 80;
|
|
||||||
|
|
||||||
const hostname = hostArg?.split("=")[1];
|
const hostname = hostArg?.split("=")[1] ?? environmentConfig.hostname;
|
||||||
|
|
||||||
const { startGateway } = await import("@wrnexus/dev-server");
|
const { startGateway } = await import("@wrnexus/dev-server");
|
||||||
|
|
||||||
await startGateway({
|
await startGateway({
|
||||||
port,
|
port,
|
||||||
hostname,
|
hostname,
|
||||||
mode:
|
mode: args.includes("--prod") || process.env.NODE_ENV === "production" ? "production" : runtime,
|
||||||
environment === "production" ||
|
hmr: runtime === "development" ? (environmentConfig.hmr ?? true) : false,
|
||||||
args.includes("--prod") ||
|
|
||||||
process.env.NODE_ENV === "production"
|
|
||||||
? "production"
|
|
||||||
: "development",
|
|
||||||
environment,
|
environment,
|
||||||
security: resolved.security,
|
security: resolved.security,
|
||||||
apps: resolved.apps.map((app) => ({
|
apps: resolved.apps.map((app) => ({
|
||||||
@@ -458,16 +467,21 @@ export function workspaceMigrationTargets(appRoot: string): Array<string | null>
|
|||||||
export async function runProduction(root: string, args: string[]): Promise<void> {
|
export async function runProduction(root: string, args: string[]): Promise<void> {
|
||||||
const workspaceRoot = resolve(root);
|
const workspaceRoot = resolve(root);
|
||||||
const config = await loadWorkspaceConfig(workspaceRoot);
|
const config = await loadWorkspaceConfig(workspaceRoot);
|
||||||
const shouldBuild = !args.includes("--no-build");
|
|
||||||
const shouldMigrate = !args.includes("--no-migrate");
|
|
||||||
const prepareOnly = args.includes("--prepare-only");
|
const prepareOnly = args.includes("--prepare-only");
|
||||||
const environmentArg = args.find((arg) => arg.startsWith("--environment="));
|
const environmentArg = args.find((arg) => arg.startsWith("--environment="));
|
||||||
const profileArg = args.find((arg) => arg.startsWith("--profile="));
|
const profileArg = args.find((arg) => arg.startsWith("--profile="));
|
||||||
const environment = environmentArg?.split("=")[1] || profileArg?.split("=")[1] || "production";
|
const environment = environmentArg?.split("=")[1] || profileArg?.split("=")[1] || "production";
|
||||||
|
const environmentConfig = config.environments?.[environment] ?? {};
|
||||||
|
const profile = environmentConfig.profile ?? environment;
|
||||||
|
const shouldBuild =
|
||||||
|
!args.includes("--no-build") && (args.includes("--build") || environmentConfig.build !== false);
|
||||||
|
const shouldMigrate =
|
||||||
|
!args.includes("--no-migrate") &&
|
||||||
|
(args.includes("--migrate") || environmentConfig.migrate !== false);
|
||||||
|
|
||||||
process.env.NODE_ENV = "production";
|
process.env.NODE_ENV = "production";
|
||||||
process.env.WRNEXUS_ENV = environment;
|
process.env.WRNEXUS_ENV = environment;
|
||||||
process.env.WRNEXUS_PROFILE = environment;
|
process.env.WRNEXUS_PROFILE = profile;
|
||||||
console.log(`\n ⚡ Preparing WRNexus workspace (${environment})\n`);
|
console.log(`\n ⚡ Preparing WRNexus workspace (${environment})\n`);
|
||||||
|
|
||||||
if (shouldBuild) {
|
if (shouldBuild) {
|
||||||
@@ -512,8 +526,12 @@ export async function runProduction(root: string, args: string[]): Promise<void>
|
|||||||
gatewayArgs.push(`--environment=${environment}`);
|
gatewayArgs.push(`--environment=${environment}`);
|
||||||
}
|
}
|
||||||
if (!gatewayArgs.includes("--prod")) gatewayArgs.push("--prod");
|
if (!gatewayArgs.includes("--prod")) gatewayArgs.push("--prod");
|
||||||
if (!gatewayArgs.some((arg) => arg.startsWith("--host="))) gatewayArgs.push("--host=0.0.0.0");
|
if (
|
||||||
if (!gatewayArgs.some((arg) => arg.startsWith("--port="))) gatewayArgs.push("--port=3000");
|
!gatewayArgs.some((arg) => arg.startsWith("--host=")) &&
|
||||||
|
environmentConfig.hostname === undefined
|
||||||
|
) {
|
||||||
|
gatewayArgs.push("--host=0.0.0.0");
|
||||||
|
}
|
||||||
await runGateway(workspaceRoot, gatewayArgs);
|
await runGateway(workspaceRoot, gatewayArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -555,6 +573,7 @@ export interface ResolvedWorkspaceApp extends WorkspaceApp {
|
|||||||
|
|
||||||
export interface ResolvedWorkspaceConfig {
|
export interface ResolvedWorkspaceConfig {
|
||||||
environment: WorkspaceEnvironment;
|
environment: WorkspaceEnvironment;
|
||||||
|
config: WorkspaceEnvironmentConfig;
|
||||||
apps: ResolvedWorkspaceApp[];
|
apps: ResolvedWorkspaceApp[];
|
||||||
security?: GatewaySecurity;
|
security?: GatewaySecurity;
|
||||||
}
|
}
|
||||||
@@ -635,6 +654,7 @@ export function resolveWorkspaceConfig(
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
environment,
|
environment,
|
||||||
|
config: environmentConfig,
|
||||||
apps,
|
apps,
|
||||||
security: config.security,
|
security: config.security,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,10 +6,36 @@ import { currentCliVersion } from "../src/update-notifier.ts";
|
|||||||
import {
|
import {
|
||||||
addWorkspaceApp,
|
addWorkspaceApp,
|
||||||
insertWorkspaceApp,
|
insertWorkspaceApp,
|
||||||
|
resolveWorkspaceConfig,
|
||||||
workspaceFiles,
|
workspaceFiles,
|
||||||
workspaceMigrationTargets,
|
workspaceMigrationTargets,
|
||||||
} from "../src/workspace.ts";
|
} from "../src/workspace.ts";
|
||||||
|
|
||||||
|
test("workspace environments preserve runtime and HMR policy", () => {
|
||||||
|
const resolved = resolveWorkspaceConfig(
|
||||||
|
{
|
||||||
|
environments: {
|
||||||
|
staging: {
|
||||||
|
protocol: "https",
|
||||||
|
rootDomain: "staging.example.com",
|
||||||
|
port: 443,
|
||||||
|
runtime: "development",
|
||||||
|
hmr: false,
|
||||||
|
build: false,
|
||||||
|
migrate: false,
|
||||||
|
profile: "uat",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
apps: [{ name: "web", dir: "apps/web", subdomain: "www" }],
|
||||||
|
},
|
||||||
|
"staging",
|
||||||
|
);
|
||||||
|
expect(resolved.config.runtime).toBe("development");
|
||||||
|
expect(resolved.config.hmr).toBe(false);
|
||||||
|
expect(resolved.config.profile).toBe("uat");
|
||||||
|
expect(resolved.apps[0]?.publicOrigin).toBe("https://www.staging.example.com");
|
||||||
|
});
|
||||||
|
|
||||||
test("workspace templates pin the running framework release", () => {
|
test("workspace templates pin the running framework release", () => {
|
||||||
const files = workspaceFiles("acme");
|
const files = workspaceFiles("acme");
|
||||||
const rootPackage = JSON.parse(files["package.json"]!);
|
const rootPackage = JSON.parse(files["package.json"]!);
|
||||||
@@ -21,6 +47,8 @@ test("workspace templates pin the running framework release", () => {
|
|||||||
expect(files["README.md"]).toContain("http://127.0.0.1:3000");
|
expect(files["README.md"]).toContain("http://127.0.0.1:3000");
|
||||||
expect(files["README.md"]).toContain("internal gateway targets");
|
expect(files["README.md"]).toContain("internal gateway targets");
|
||||||
expect(JSON.parse(files["package.json"]!).scripts.production).toBe("wrnexus production");
|
expect(JSON.parse(files["package.json"]!).scripts.production).toBe("wrnexus production");
|
||||||
|
expect(files["wrnexus.workspace.ts"]).toContain('runtime: "development"');
|
||||||
|
expect(files["wrnexus.workspace.ts"]).toContain("hmr: false");
|
||||||
});
|
});
|
||||||
|
|
||||||
test("production workspace detects default and named SQL migrations", () => {
|
test("production workspace detects default and named SQL migrations", () => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/compiler",
|
"name": "@wrnexus/compiler",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/core",
|
"name": "@wrnexus/core",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/csr",
|
"name": "@wrnexus/csr",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/db",
|
"name": "@wrnexus/db",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/dev-server",
|
"name": "@wrnexus/dev-server",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ export interface GatewayOptions {
|
|||||||
hostname?: string;
|
hostname?: string;
|
||||||
mode?: "development" | "production";
|
mode?: "development" | "production";
|
||||||
environment?: string;
|
environment?: string;
|
||||||
|
hmr?: boolean;
|
||||||
apps: GatewayApp[];
|
apps: GatewayApp[];
|
||||||
security?: GatewaySecurity;
|
security?: GatewaySecurity;
|
||||||
}
|
}
|
||||||
@@ -348,7 +349,14 @@ export async function startGateway(opts: GatewayOptions): Promise<RunningGateway
|
|||||||
})
|
})
|
||||||
: spawn(
|
: spawn(
|
||||||
process.execPath,
|
process.execPath,
|
||||||
[serveEntry, join(dir, "app"), String(appPort), mode, "127.0.0.1"],
|
[
|
||||||
|
serveEntry,
|
||||||
|
join(dir, "app"),
|
||||||
|
String(appPort),
|
||||||
|
mode,
|
||||||
|
"127.0.0.1",
|
||||||
|
String(opts.hmr ?? true),
|
||||||
|
],
|
||||||
{
|
{
|
||||||
stdio: "inherit",
|
stdio: "inherit",
|
||||||
env: {
|
env: {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import { startServer } from "./index.ts";
|
|||||||
import { loadAppConfig, headToString, findStyleEntry, renderFontHead } from "@wrnexus/styles";
|
import { loadAppConfig, headToString, findStyleEntry, renderFontHead } from "@wrnexus/styles";
|
||||||
import type { Mode } from "@wrnexus/core";
|
import type { Mode } from "@wrnexus/core";
|
||||||
|
|
||||||
const [appDir, portStr, modeStr, hostname] = process.argv.slice(2);
|
const [appDir, portStr, modeStr, hostname, hmrStr] = process.argv.slice(2);
|
||||||
|
|
||||||
const mode = (modeStr as Mode) || "development";
|
const mode = (modeStr as Mode) || "development";
|
||||||
const port = Number(portStr) || 3000;
|
const port = Number(portStr) || 3000;
|
||||||
@@ -28,6 +28,7 @@ const server = await startServer({
|
|||||||
port,
|
port,
|
||||||
hostname,
|
hostname,
|
||||||
mode,
|
mode,
|
||||||
|
hmr: hmrStr === undefined ? undefined : hmrStr === "true",
|
||||||
styleEntry,
|
styleEntry,
|
||||||
stylesConfig: config.styles,
|
stylesConfig: config.styles,
|
||||||
head: [renderFontHead(config.fonts), headToString(config.head)].filter(Boolean).join("\n "),
|
head: [renderFontHead(config.fonts), headToString(config.head)].filter(Boolean).join("\n "),
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/encryption",
|
"name": "@wrnexus/encryption",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/helpers",
|
"name": "@wrnexus/helpers",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "Safe convenience helpers for WrNexus request contexts and common application flows.",
|
"description": "Safe convenience helpers for WrNexus request contexts and common application flows.",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/i18n",
|
"name": "@wrnexus/i18n",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/jwt",
|
"name": "@wrnexus/jwt",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/mobile",
|
"name": "@wrnexus/mobile",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/native",
|
"name": "@wrnexus/native",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/oauth",
|
"name": "@wrnexus/oauth",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/pubsub",
|
"name": "@wrnexus/pubsub",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/queue",
|
"name": "@wrnexus/queue",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/reactive",
|
"name": "@wrnexus/reactive",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/router",
|
"name": "@wrnexus/router",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/ssr",
|
"name": "@wrnexus/ssr",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/styles",
|
"name": "@wrnexus/styles",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/test",
|
"name": "@wrnexus/test",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/tracking",
|
"name": "@wrnexus/tracking",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/ui",
|
"name": "@wrnexus/ui",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/uploader",
|
"name": "@wrnexus/uploader",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@wrnexus/validation",
|
"name": "@wrnexus/validation",
|
||||||
"version": "0.2.66",
|
"version": "0.2.67",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/index.ts",
|
"main": "src/index.ts",
|
||||||
|
|||||||
Reference in New Issue
Block a user