@oaysus/cli 0.1.2 → 0.1.3
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 +95 -87
- package/dist/lib/shared/auth.d.ts.map +1 -1
- package/dist/lib/shared/auth.js +10 -57
- package/dist/lib/shared/auth.js.map +1 -1
- package/dist/lib/shared/config.d.ts +8 -6
- package/dist/lib/shared/config.d.ts.map +1 -1
- package/dist/lib/shared/config.js +10 -74
- package/dist/lib/shared/config.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,56 +1,45 @@
|
|
|
1
1
|
# @oaysus/cli
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[](https://opensource.org/licenses/MIT)
|
|
3
|
+
Official CLI for building and uploading frontend components to Oaysus.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
## Installation
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
### npm (recommended)
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g @oaysus/cli
|
|
11
|
+
```
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
### Homebrew (macOS/Linux)
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
```bash
|
|
16
|
+
brew tap oaysus/tap
|
|
17
|
+
brew install oaysus
|
|
17
18
|
```
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
## Installation
|
|
20
|
+
### Verify installation
|
|
22
21
|
|
|
23
22
|
```bash
|
|
24
|
-
|
|
23
|
+
oaysus --version
|
|
25
24
|
```
|
|
26
25
|
|
|
27
|
-
Requires Node.js 20 or higher.
|
|
28
|
-
|
|
29
26
|
## Quick Start
|
|
30
27
|
|
|
31
28
|
```bash
|
|
32
|
-
#
|
|
29
|
+
# Authenticate with Oaysus
|
|
33
30
|
oaysus login
|
|
34
31
|
|
|
35
|
-
#
|
|
36
|
-
oaysus init my-
|
|
37
|
-
|
|
38
|
-
# 3. Navigate to the project
|
|
39
|
-
cd my-components
|
|
40
|
-
|
|
41
|
-
# 4. Push your components to Oaysus
|
|
42
|
-
oaysus push
|
|
43
|
-
```
|
|
32
|
+
# Create a new theme pack project
|
|
33
|
+
oaysus init my-theme
|
|
44
34
|
|
|
45
|
-
|
|
35
|
+
# Navigate to project
|
|
36
|
+
cd my-theme
|
|
46
37
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
✓ Built and bundled (2.1 KB)
|
|
50
|
-
✓ Uploaded to Oaysus
|
|
51
|
-
✓ Published!
|
|
38
|
+
# Add a component
|
|
39
|
+
oaysus create
|
|
52
40
|
|
|
53
|
-
|
|
41
|
+
# Build and upload
|
|
42
|
+
oaysus push
|
|
54
43
|
```
|
|
55
44
|
|
|
56
45
|
## Commands
|
|
@@ -68,90 +57,109 @@ Install in dashboard: Content → Theme Packs
|
|
|
68
57
|
|
|
69
58
|
## Framework Support
|
|
70
59
|
|
|
71
|
-
|
|
60
|
+
The CLI supports multiple frontend frameworks:
|
|
72
61
|
|
|
73
|
-
- **React**
|
|
74
|
-
- **Vue**
|
|
75
|
-
- **Svelte**
|
|
62
|
+
- **React** - Full support with JSX/TSX components
|
|
63
|
+
- **Vue** - Single File Components (.vue)
|
|
64
|
+
- **Svelte** - Svelte components (.svelte)
|
|
76
65
|
|
|
77
66
|
Framework is automatically detected from your `package.json` dependencies.
|
|
78
67
|
|
|
79
|
-
##
|
|
68
|
+
## Project Structure
|
|
80
69
|
|
|
81
|
-
|
|
70
|
+
### Single Component
|
|
82
71
|
|
|
83
|
-
**Component (React example):**
|
|
84
|
-
```tsx
|
|
85
|
-
export default function AnnouncementBar({ message, backgroundColor }) {
|
|
86
|
-
return (
|
|
87
|
-
<div style={{ backgroundColor }} className="py-3 px-4 text-center text-white">
|
|
88
|
-
{message}
|
|
89
|
-
</div>
|
|
90
|
-
);
|
|
91
|
-
}
|
|
92
72
|
```
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
"displayName": "Announcement Bar",
|
|
98
|
-
"props": {
|
|
99
|
-
"message": {
|
|
100
|
-
"type": "string",
|
|
101
|
-
"default": "Free shipping on orders over $50"
|
|
102
|
-
},
|
|
103
|
-
"backgroundColor": {
|
|
104
|
-
"type": "color",
|
|
105
|
-
"default": "#2563eb"
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
73
|
+
my-component/
|
|
74
|
+
├── package.json
|
|
75
|
+
├── index.tsx # Main component file
|
|
76
|
+
└── schema.json # Component props schema
|
|
109
77
|
```
|
|
110
78
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
## Project Structure
|
|
79
|
+
### Theme Pack (Multiple Components)
|
|
114
80
|
|
|
115
81
|
```
|
|
116
|
-
my-
|
|
82
|
+
my-theme/
|
|
117
83
|
├── package.json
|
|
118
84
|
└── components/
|
|
119
|
-
├──
|
|
85
|
+
├── Button/
|
|
120
86
|
│ ├── index.tsx
|
|
121
87
|
│ └── schema.json
|
|
122
|
-
├──
|
|
88
|
+
├── Card/
|
|
123
89
|
│ ├── index.tsx
|
|
124
90
|
│ └── schema.json
|
|
125
|
-
└──
|
|
91
|
+
└── Header/
|
|
126
92
|
├── index.tsx
|
|
127
93
|
└── schema.json
|
|
128
94
|
```
|
|
129
95
|
|
|
130
|
-
##
|
|
96
|
+
## Configuration
|
|
131
97
|
|
|
132
|
-
|
|
133
|
-
- **[CLI Reference](https://oaysus.com/docs/cli)** — Complete command documentation
|
|
134
|
-
- **[Component Guide](https://oaysus.com/docs/components)** — Props, schemas, and best practices
|
|
135
|
-
- **[Theme Packs](https://oaysus.com/docs/theme-packs)** — Organize and distribute component collections
|
|
98
|
+
### package.json
|
|
136
99
|
|
|
137
|
-
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"name": "my-theme",
|
|
103
|
+
"version": "1.0.0",
|
|
104
|
+
"dependencies": {
|
|
105
|
+
"react": "^18.0.0"
|
|
106
|
+
},
|
|
107
|
+
"oaysus": {
|
|
108
|
+
"theme": {
|
|
109
|
+
"name": "my-theme",
|
|
110
|
+
"displayName": "My Theme",
|
|
111
|
+
"category": "ui",
|
|
112
|
+
"tags": ["react", "components"]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
138
117
|
|
|
139
|
-
|
|
140
|
-
|---------------------|-------------|
|
|
141
|
-
| Marketing files a ticket for every page change | Marketing creates pages themselves |
|
|
142
|
-
| Developers build one-off landing pages | Developers build reusable components |
|
|
143
|
-
| Every text change requires a deploy | Changes publish instantly |
|
|
144
|
-
| Locked into proprietary CMS themes | Standard React/Vue/Svelte you own |
|
|
118
|
+
### schema.json
|
|
145
119
|
|
|
146
|
-
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"type": "component",
|
|
123
|
+
"displayName": "My Component",
|
|
124
|
+
"description": "A reusable UI component",
|
|
125
|
+
"props": {
|
|
126
|
+
"title": {
|
|
127
|
+
"type": "string",
|
|
128
|
+
"default": "Hello",
|
|
129
|
+
"description": "The title text"
|
|
130
|
+
},
|
|
131
|
+
"variant": {
|
|
132
|
+
"type": "string",
|
|
133
|
+
"default": "primary",
|
|
134
|
+
"description": "Button variant"
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Requirements
|
|
141
|
+
|
|
142
|
+
- Node.js 20 or higher
|
|
143
|
+
- Oaysus account
|
|
144
|
+
|
|
145
|
+
## Authentication
|
|
146
|
+
|
|
147
|
+
The CLI uses device authorization flow for secure authentication:
|
|
148
|
+
|
|
149
|
+
1. Run `oaysus login`
|
|
150
|
+
2. A browser window opens for authentication
|
|
151
|
+
3. Log in with your Oaysus account
|
|
152
|
+
4. The CLI automatically receives your credentials
|
|
153
|
+
|
|
154
|
+
Credentials are stored securely in `~/.oaysus/credentials.json` with restricted file permissions.
|
|
155
|
+
|
|
156
|
+
## Documentation
|
|
147
157
|
|
|
148
|
-
|
|
149
|
-
2. **Install the CLI** — `npm install -g @oaysus/cli`
|
|
150
|
-
3. **Follow the quick start** — [oaysus.com/docs/quickstart](https://oaysus.com/docs/quickstart)
|
|
158
|
+
For full documentation, visit [docs.oaysus.com](https://docs.oaysus.com)
|
|
151
159
|
|
|
152
160
|
## Contributing
|
|
153
161
|
|
|
154
|
-
|
|
162
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
|
|
155
163
|
|
|
156
164
|
## License
|
|
157
165
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/auth.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/auth.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGlG;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCvF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAKzC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAoCpE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BxF;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,WAAW,GAAG,oBAAoB,CAAC,CAmE7C;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAY7E;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMtD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAYxD;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAgBxD"}
|
package/dist/lib/shared/auth.js
CHANGED
|
@@ -3,46 +3,7 @@ import fs from 'fs/promises';
|
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import os from 'os';
|
|
5
5
|
import crypto from 'crypto';
|
|
6
|
-
import { SSO_BASE_URL, ADMIN_URL, CREDENTIALS_PATH,
|
|
7
|
-
/**
|
|
8
|
-
* Format a friendly error message for API errors
|
|
9
|
-
*/
|
|
10
|
-
function formatApiError(error, context) {
|
|
11
|
-
if (axios.isAxiosError(error)) {
|
|
12
|
-
const status = error.response?.status;
|
|
13
|
-
const data = error.response?.data;
|
|
14
|
-
// Connection refused - server not running
|
|
15
|
-
if (error.code === 'ECONNREFUSED') {
|
|
16
|
-
const serverUrl = IS_LOCAL_DEV ? 'localhost:3003' : 'auth.oaysus.com';
|
|
17
|
-
return new Error(`Cannot connect to ${serverUrl}. ${IS_LOCAL_DEV ? 'Is your local FastAPI server running?' : 'Please check your internet connection.'}`);
|
|
18
|
-
}
|
|
19
|
-
// 500 errors - server-side issue
|
|
20
|
-
if (status === 500) {
|
|
21
|
-
const detail = data?.detail?.error || data?.error || data?.message;
|
|
22
|
-
return new Error(`Server error during ${context}. ${detail ? `Details: ${detail}` : 'Please try again or contact support.'}`);
|
|
23
|
-
}
|
|
24
|
-
// 401/403 - auth issues
|
|
25
|
-
if (status === 401 || status === 403) {
|
|
26
|
-
return new Error(data?.message || data?.error || 'Authentication failed. Please try again.');
|
|
27
|
-
}
|
|
28
|
-
// 404 - endpoint not found
|
|
29
|
-
if (status === 404) {
|
|
30
|
-
return new Error(IS_LOCAL_DEV
|
|
31
|
-
? `API endpoint not found. Make sure your local server is running the latest code.`
|
|
32
|
-
: `Service temporarily unavailable. Please try again later.`);
|
|
33
|
-
}
|
|
34
|
-
// Other errors with messages
|
|
35
|
-
const message = data?.message || data?.error || data?.detail?.error;
|
|
36
|
-
if (message) {
|
|
37
|
-
return new Error(message);
|
|
38
|
-
}
|
|
39
|
-
return new Error(`Request failed with status ${status || 'unknown'}`);
|
|
40
|
-
}
|
|
41
|
-
if (error instanceof Error) {
|
|
42
|
-
return error;
|
|
43
|
-
}
|
|
44
|
-
return new Error('An unexpected error occurred');
|
|
45
|
-
}
|
|
6
|
+
import { SSO_BASE_URL, ADMIN_URL, CREDENTIALS_PATH, debug as log, debugError as logError } from './config.js';
|
|
46
7
|
/**
|
|
47
8
|
* Request magic link for email authentication with device code
|
|
48
9
|
*/
|
|
@@ -66,12 +27,13 @@ export async function requestMagicLink(email, deviceCode) {
|
|
|
66
27
|
throw new Error(response.data.message || 'Failed to send magic link');
|
|
67
28
|
}
|
|
68
29
|
catch (error) {
|
|
69
|
-
logError('[ERROR] Magic link request failed');
|
|
70
30
|
if (axios.isAxiosError(error)) {
|
|
31
|
+
logError('[ERROR] Magic link request failed');
|
|
71
32
|
logError('[ERROR] Status:', error.response?.status);
|
|
72
33
|
logError('[ERROR] Response:', error.response?.data);
|
|
34
|
+
throw new Error(error.response?.data?.message || 'Failed to send magic link');
|
|
73
35
|
}
|
|
74
|
-
throw
|
|
36
|
+
throw error;
|
|
75
37
|
}
|
|
76
38
|
}
|
|
77
39
|
/**
|
|
@@ -115,13 +77,14 @@ export async function initializeDevice() {
|
|
|
115
77
|
return response.data;
|
|
116
78
|
}
|
|
117
79
|
catch (error) {
|
|
118
|
-
logError('[ERROR] Device init failed');
|
|
119
|
-
logError('[ERROR] URL:', url);
|
|
120
80
|
if (axios.isAxiosError(error)) {
|
|
81
|
+
logError('[ERROR] Request failed');
|
|
82
|
+
logError('[ERROR] URL:', url);
|
|
121
83
|
logError('[ERROR] Status:', error.response?.status);
|
|
122
84
|
logError('[ERROR] Response:', error.response?.data);
|
|
85
|
+
logError('[ERROR] Message:', error.message);
|
|
123
86
|
}
|
|
124
|
-
throw
|
|
87
|
+
throw error;
|
|
125
88
|
}
|
|
126
89
|
}
|
|
127
90
|
/**
|
|
@@ -168,8 +131,6 @@ export async function pollForAuth(deviceCode, options) {
|
|
|
168
131
|
try {
|
|
169
132
|
const response = await axios.get(`${SSO_BASE_URL}/sso/cli/device/status`, { params: { deviceCode } });
|
|
170
133
|
const data = response.data;
|
|
171
|
-
log('[DEBUG] Poll response status:', data.status);
|
|
172
|
-
log('[DEBUG] Poll response data:', JSON.stringify(data, null, 2));
|
|
173
134
|
// Device approved but needs website selection
|
|
174
135
|
if (data.status === 'approved' && data.needsWebsiteSelection && data.websites) {
|
|
175
136
|
log('[DEBUG] Device approved - needs website selection');
|
|
@@ -202,16 +163,8 @@ export async function pollForAuth(deviceCode, options) {
|
|
|
202
163
|
await new Promise(resolve => setTimeout(resolve, options.interval));
|
|
203
164
|
}
|
|
204
165
|
catch (error) {
|
|
205
|
-
if (axios.isAxiosError(error)) {
|
|
206
|
-
|
|
207
|
-
logError('[ERROR] Status:', error.response?.status);
|
|
208
|
-
logError('[ERROR] Response:', error.response?.data);
|
|
209
|
-
if (error.response?.status === 404) {
|
|
210
|
-
throw new Error('Authorization request not found or expired');
|
|
211
|
-
}
|
|
212
|
-
if (error.response?.status === 500) {
|
|
213
|
-
logError('[ERROR] Server error - check FastAPI logs');
|
|
214
|
-
}
|
|
166
|
+
if (axios.isAxiosError(error) && error.response?.status === 404) {
|
|
167
|
+
throw new Error('Authorization request not found or expired');
|
|
215
168
|
}
|
|
216
169
|
if (error instanceof Error && error.message.includes('denied')) {
|
|
217
170
|
throw error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/lib/shared/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/lib/shared/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Centralized Configuration Module
|
|
3
3
|
*
|
|
4
|
-
* Production defaults are baked in for end users.
|
|
5
|
-
*
|
|
4
|
+
* Production defaults are baked in for end users (NPM and Homebrew).
|
|
5
|
+
* Contributors can override via environment variables or .env file.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* Compatible with:
|
|
8
|
+
* - NPM global install: npm install -g @oaysus/cli
|
|
9
|
+
* - Homebrew: brew install oaysus
|
|
10
|
+
* - Local development: bun run dev
|
|
8
11
|
*/
|
|
9
12
|
/**
|
|
10
13
|
* Environment configuration
|
|
11
|
-
*
|
|
14
|
+
* Environment variables override production defaults for development
|
|
12
15
|
*/
|
|
13
16
|
export declare const config: {
|
|
14
17
|
readonly SSO_BASE_URL: string;
|
|
@@ -19,9 +22,8 @@ export declare const config: {
|
|
|
19
22
|
readonly DEBUG: boolean;
|
|
20
23
|
readonly CREDENTIALS_PATH: string;
|
|
21
24
|
readonly CONFIG_DIR: string;
|
|
22
|
-
readonly IS_LOCAL_DEV: boolean;
|
|
23
25
|
};
|
|
24
|
-
export declare const SSO_BASE_URL: string, ADMIN_URL: string, R2_PUBLIC_URL: string, API_STAGE: string, DEVELOPER: string | undefined, DEBUG: boolean, CREDENTIALS_PATH: string, CONFIG_DIR: string
|
|
26
|
+
export declare const SSO_BASE_URL: string, ADMIN_URL: string, R2_PUBLIC_URL: string, API_STAGE: string, DEVELOPER: string | undefined, DEBUG: boolean, CREDENTIALS_PATH: string, CONFIG_DIR: string;
|
|
25
27
|
/**
|
|
26
28
|
* Get current deployment environment
|
|
27
29
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/lib/shared/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH;;;GAGG;AACH,eAAO,MAAM,MAAM;;;;;;;;;CAwBT,CAAC;AAGX,eAAO,MACL,YAAY,UACZ,SAAS,UACT,aAAa,UACb,SAAS,UACT,SAAS,sBACT,KAAK,WACL,gBAAgB,UAChB,UAAU,QACF,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAEnD,wBAAgB,cAAc,IAAI,WAAW,CAS5C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAInD"}
|
|
@@ -1,85 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Centralized Configuration Module
|
|
3
3
|
*
|
|
4
|
-
* Production defaults are baked in for end users.
|
|
5
|
-
*
|
|
4
|
+
* Production defaults are baked in for end users (NPM and Homebrew).
|
|
5
|
+
* Contributors can override via environment variables or .env file.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
7
|
+
* Compatible with:
|
|
8
|
+
* - NPM global install: npm install -g @oaysus/cli
|
|
9
|
+
* - Homebrew: brew install oaysus
|
|
10
|
+
* - Local development: bun run dev
|
|
8
11
|
*/
|
|
9
12
|
import os from 'os';
|
|
10
13
|
import path from 'path';
|
|
11
|
-
import fs from 'fs';
|
|
12
|
-
import dotenv from 'dotenv';
|
|
13
|
-
import { fileURLToPath } from 'url';
|
|
14
14
|
// Production URLs (baked in for security)
|
|
15
15
|
const PROD_SSO_URL = 'https://auth.oaysus.com';
|
|
16
16
|
const PROD_ADMIN_URL = 'https://admin.oaysus.com';
|
|
17
17
|
const PROD_R2_URL = 'https://pub-71eb20e9b97849f18a95eaa92feb648a.r2.dev';
|
|
18
|
-
/**
|
|
19
|
-
* Get current file's directory (works in both ESM and CJS)
|
|
20
|
-
*/
|
|
21
|
-
function getCurrentDir() {
|
|
22
|
-
// ESM: use import.meta.url
|
|
23
|
-
// @ts-ignore - import.meta exists in ESM
|
|
24
|
-
if (typeof import.meta !== 'undefined' && import.meta.url) {
|
|
25
|
-
// @ts-ignore
|
|
26
|
-
return path.dirname(fileURLToPath(import.meta.url));
|
|
27
|
-
}
|
|
28
|
-
// CJS fallback
|
|
29
|
-
if (typeof __dirname !== 'undefined') {
|
|
30
|
-
return __dirname;
|
|
31
|
-
}
|
|
32
|
-
return process.cwd();
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Find the CLI root directory (where package.json is)
|
|
36
|
-
*/
|
|
37
|
-
function findCliRoot() {
|
|
38
|
-
let dir = getCurrentDir();
|
|
39
|
-
// Walk up until we find package.json or hit root
|
|
40
|
-
for (let i = 0; i < 10; i++) {
|
|
41
|
-
const pkgPath = path.join(dir, 'package.json');
|
|
42
|
-
if (fs.existsSync(pkgPath)) {
|
|
43
|
-
try {
|
|
44
|
-
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
45
|
-
if (pkg.name === '@oaysus/cli' || pkg.name === 'oaysus-cli') {
|
|
46
|
-
return dir;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
// Continue searching
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
const parent = path.dirname(dir);
|
|
54
|
-
if (parent === dir)
|
|
55
|
-
break;
|
|
56
|
-
dir = parent;
|
|
57
|
-
}
|
|
58
|
-
return process.cwd();
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Load .env.local if it exists
|
|
62
|
-
* Returns true if .env.local was found and loaded
|
|
63
|
-
* Skipped during test runs to ensure predictable test behavior
|
|
64
|
-
*/
|
|
65
|
-
function loadEnvLocal() {
|
|
66
|
-
// Skip loading .env.local during tests
|
|
67
|
-
if (process.env.NODE_ENV === 'test' || process.env.JEST_WORKER_ID !== undefined) {
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
const cliRoot = findCliRoot();
|
|
71
|
-
const envLocalPath = path.join(cliRoot, '.env.local');
|
|
72
|
-
if (fs.existsSync(envLocalPath)) {
|
|
73
|
-
dotenv.config({ path: envLocalPath });
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
// Load .env.local if present (this sets process.env values)
|
|
79
|
-
const _hasEnvLocal = loadEnvLocal();
|
|
80
18
|
/**
|
|
81
19
|
* Environment configuration
|
|
82
|
-
*
|
|
20
|
+
* Environment variables override production defaults for development
|
|
83
21
|
*/
|
|
84
22
|
export const config = {
|
|
85
23
|
// Authentication server URL
|
|
@@ -89,20 +27,18 @@ export const config = {
|
|
|
89
27
|
// R2 CDN URL for component hosting
|
|
90
28
|
R2_PUBLIC_URL: process.env.NEXT_PUBLIC_R2_PUBLIC_URL || PROD_R2_URL,
|
|
91
29
|
// Deployment environment: 'prod' | 'dev' | 'local'
|
|
92
|
-
API_STAGE: process.env.NEXT_PUBLIC_API_STAGE || 'prod',
|
|
30
|
+
API_STAGE: process.env.NEXT_PUBLIC_API_STAGE || (process.env.NODE_ENV === 'production' ? 'prod' : 'prod'),
|
|
93
31
|
// Developer namespace for local testing (contributors only)
|
|
94
32
|
DEVELOPER: process.env.DEVELOPER,
|
|
95
33
|
// Debug mode (console logging, off by default)
|
|
96
34
|
DEBUG: process.env.DEBUG === 'true',
|
|
97
|
-
// Credentials storage path
|
|
35
|
+
// Credentials storage path (works for both NPM and Homebrew)
|
|
98
36
|
CREDENTIALS_PATH: path.join(os.homedir(), '.oaysus', 'credentials.json'),
|
|
99
37
|
// Config directory
|
|
100
38
|
CONFIG_DIR: path.join(os.homedir(), '.oaysus'),
|
|
101
|
-
// Flag indicating if .env.local was loaded
|
|
102
|
-
IS_LOCAL_DEV: _hasEnvLocal,
|
|
103
39
|
};
|
|
104
40
|
// Export individual values for convenience
|
|
105
|
-
export const { SSO_BASE_URL, ADMIN_URL, R2_PUBLIC_URL, API_STAGE, DEVELOPER, DEBUG, CREDENTIALS_PATH, CONFIG_DIR,
|
|
41
|
+
export const { SSO_BASE_URL, ADMIN_URL, R2_PUBLIC_URL, API_STAGE, DEVELOPER, DEBUG, CREDENTIALS_PATH, CONFIG_DIR, } = config;
|
|
106
42
|
export function getEnvironment() {
|
|
107
43
|
const stage = config.API_STAGE;
|
|
108
44
|
if (stage === 'local')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/shared/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/lib/shared/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,0CAA0C;AAC1C,MAAM,YAAY,GAAG,yBAAyB,CAAC;AAC/C,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAClD,MAAM,WAAW,GAAG,qDAAqD,CAAC;AAE1E;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,4BAA4B;IAC5B,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,YAAY;IAEpE,iDAAiD;IACjD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,cAAc;IAErE,mCAAmC;IACnC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,WAAW;IAEnE,mDAAmD;IACnD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAEzG,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;IAEhC,+CAA+C;IAC/C,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM;IAEnC,6DAA6D;IAC7D,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC;IAExE,mBAAmB;IACnB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;CACtC,CAAC;AAEX,2CAA2C;AAC3C,MAAM,CAAC,MAAM,EACX,YAAY,EACZ,SAAS,EACT,aAAa,EACb,SAAS,EACT,SAAS,EACT,KAAK,EACL,gBAAgB,EAChB,UAAU,GACX,GAAG,MAAM,CAAC;AAOX,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;IAE/B,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACtC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC;IAE9D,oCAAoC;IACpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,GAAG,IAAe;IACtC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAG,IAAe;IAC3C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC"}
|