@base44-preview/cli 0.0.1-pr.6.f28d227 → 0.0.1-pr.7.00b57d1
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 +18 -14
- package/dist/cli/commands/auth/login.d.ts.map +1 -1
- package/dist/cli/commands/auth/login.js +3 -3
- package/dist/cli/commands/auth/login.js.map +1 -1
- package/dist/cli/commands/project/show-project.d.ts +3 -0
- package/dist/cli/commands/project/show-project.d.ts.map +1 -0
- package/dist/cli/commands/project/show-project.js +20 -0
- package/dist/cli/commands/project/show-project.js.map +1 -0
- package/dist/cli/index.js +10 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/packageVersion.js +3 -3
- package/dist/cli/utils/packageVersion.js.map +1 -1
- package/dist/cli/utils/runCommand.d.ts.map +1 -1
- package/dist/cli/utils/runCommand.js +1 -4
- package/dist/cli/utils/runCommand.js.map +1 -1
- package/dist/core/api/auth/client.d.ts +1 -1
- package/dist/core/api/auth/client.d.ts.map +1 -1
- package/dist/core/api/auth/client.js +4 -4
- package/dist/core/api/auth/client.js.map +1 -1
- package/dist/core/api/auth/index.d.ts +3 -3
- package/dist/core/api/auth/index.js +3 -3
- package/dist/core/api/auth/schema.d.ts +1 -1
- package/dist/core/api/auth/schema.js +8 -8
- package/dist/core/api/index.d.ts +1 -1
- package/dist/core/api/index.js +1 -1
- package/dist/core/config/auth.d.ts +1 -1
- package/dist/core/config/auth.d.ts.map +1 -1
- package/dist/core/config/auth.js +5 -5
- package/dist/core/config/auth.js.map +1 -1
- package/dist/core/config/entities.d.ts +3 -0
- package/dist/core/config/entities.d.ts.map +1 -0
- package/dist/core/config/entities.js +25 -0
- package/dist/core/config/entities.js.map +1 -0
- package/dist/core/config/functions.d.ts +4 -0
- package/dist/core/config/functions.d.ts.map +1 -0
- package/dist/core/config/functions.js +26 -0
- package/dist/core/config/functions.js.map +1 -0
- package/dist/core/config/index.d.ts +5 -2
- package/dist/core/config/index.d.ts.map +1 -1
- package/dist/core/config/index.js +5 -2
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/project.d.ts +15 -0
- package/dist/core/config/project.d.ts.map +1 -0
- package/dist/core/config/project.js +61 -0
- package/dist/core/config/project.js.map +1 -0
- package/dist/core/consts.d.ts +6 -0
- package/dist/core/consts.d.ts.map +1 -0
- package/dist/core/consts.js +19 -0
- package/dist/core/consts.js.map +1 -0
- package/dist/core/errors/index.d.ts +1 -1
- package/dist/core/errors/index.js +1 -1
- package/dist/core/index.d.ts +5 -5
- package/dist/core/index.js +5 -5
- package/dist/core/schemas/auth.d.ts +1 -1
- package/dist/core/schemas/auth.js +3 -3
- package/dist/core/schemas/config.d.ts +22 -0
- package/dist/core/schemas/config.d.ts.map +1 -0
- package/dist/core/schemas/config.js +14 -0
- package/dist/core/schemas/config.js.map +1 -0
- package/dist/core/schemas/entity.d.ts +47 -0
- package/dist/core/schemas/entity.d.ts.map +1 -0
- package/dist/core/schemas/entity.js +29 -0
- package/dist/core/schemas/entity.js.map +1 -0
- package/dist/core/schemas/function.d.ts +91 -0
- package/dist/core/schemas/function.d.ts.map +1 -0
- package/dist/core/schemas/function.js +36 -0
- package/dist/core/schemas/function.js.map +1 -0
- package/dist/core/schemas/index.d.ts +5 -1
- package/dist/core/schemas/index.d.ts.map +1 -1
- package/dist/core/schemas/index.js +5 -1
- package/dist/core/schemas/index.js.map +1 -1
- package/dist/core/schemas/project.d.ts +14 -0
- package/dist/core/schemas/project.d.ts.map +1 -0
- package/dist/core/schemas/project.js +9 -0
- package/dist/core/schemas/project.js.map +1 -0
- package/dist/core/utils/fs.d.ts +1 -1
- package/dist/core/utils/fs.d.ts.map +1 -1
- package/dist/core/utils/fs.js +21 -11
- package/dist/core/utils/fs.js.map +1 -1
- package/dist/core/utils/index.d.ts +1 -1
- package/dist/core/utils/index.js +1 -1
- package/package.json +11 -4
- package/dist/core/config/constants.d.ts +0 -4
- package/dist/core/config/constants.d.ts.map +0 -1
- package/dist/core/config/constants.js +0 -6
- package/dist/core/config/constants.js.map +0 -1
package/README.md
CHANGED
|
@@ -11,32 +11,42 @@ npm install
|
|
|
11
11
|
# Build the project
|
|
12
12
|
npm run build
|
|
13
13
|
|
|
14
|
-
# Run the CLI
|
|
14
|
+
# Run the CLI
|
|
15
15
|
npm start # Using node directly
|
|
16
|
-
npm run base44 # Using npm (runs node_modules/.bin/base44)
|
|
17
16
|
./dist/cli/index.js # Run executable directly
|
|
18
17
|
```
|
|
19
18
|
|
|
20
19
|
## Development
|
|
21
20
|
|
|
22
21
|
```bash
|
|
23
|
-
# Run in development mode
|
|
22
|
+
# Run in development mode
|
|
24
23
|
npm run dev
|
|
25
24
|
|
|
26
25
|
# Build the project
|
|
27
26
|
npm run build
|
|
28
27
|
|
|
28
|
+
# Run the built CLI
|
|
29
|
+
npm run start
|
|
30
|
+
|
|
29
31
|
# Clean build artifacts
|
|
30
32
|
npm run clean
|
|
33
|
+
|
|
34
|
+
# Lint the code
|
|
35
|
+
npm run lint
|
|
31
36
|
```
|
|
32
37
|
|
|
33
38
|
## Commands
|
|
34
39
|
|
|
35
40
|
### Authentication
|
|
36
|
-
|
|
41
|
+
|
|
42
|
+
- `base44 login` - Authenticate with Base44 using device code flow
|
|
37
43
|
- `base44 whoami` - Display current authenticated user
|
|
38
44
|
- `base44 logout` - Logout from current device
|
|
39
45
|
|
|
46
|
+
### Project
|
|
47
|
+
|
|
48
|
+
- `base44 show-project` - Display project configuration, entities, and functions
|
|
49
|
+
|
|
40
50
|
## Project Structure
|
|
41
51
|
|
|
42
52
|
```
|
|
@@ -45,28 +55,22 @@ cli/
|
|
|
45
55
|
│ ├── core/ # Core module (shared code)
|
|
46
56
|
│ │ ├── api/ # API client code
|
|
47
57
|
│ │ ├── config/ # Configuration management
|
|
58
|
+
│ │ ├── errors/ # Custom error classes
|
|
48
59
|
│ │ ├── schemas/ # Zod schemas
|
|
49
60
|
│ │ ├── utils/ # Utility functions
|
|
50
61
|
│ │ └── index.ts # Core module exports
|
|
51
62
|
│ └── cli/ # CLI module (main CLI)
|
|
52
63
|
│ ├── commands/ # Command implementations
|
|
53
|
-
│ │
|
|
64
|
+
│ │ ├── auth/ # Authentication commands
|
|
65
|
+
│ │ └── project/ # Project commands
|
|
54
66
|
│ ├── utils/ # CLI-specific utilities
|
|
55
|
-
│ └── index.ts # Main CLI entry point
|
|
67
|
+
│ └── index.ts # Main CLI entry point
|
|
56
68
|
├── dist/ # Build output (compiled JavaScript)
|
|
57
69
|
├── package.json # Package configuration
|
|
58
70
|
├── tsconfig.json # TypeScript configuration
|
|
59
71
|
└── README.md
|
|
60
72
|
```
|
|
61
73
|
|
|
62
|
-
## Technologies
|
|
63
|
-
|
|
64
|
-
- **TypeScript** - Primary language
|
|
65
|
-
- **Commander.js** - CLI framework
|
|
66
|
-
- **@clack/prompts** - Interactive user prompts
|
|
67
|
-
- **Zod** - Schema validation
|
|
68
|
-
|
|
69
74
|
## License
|
|
70
75
|
|
|
71
76
|
ISC
|
|
72
|
-
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6FpC,eAAO,MAAM,YAAY,SAIrB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { Command } from "commander";
|
|
|
2
2
|
import { log } from "@clack/prompts";
|
|
3
3
|
import pWaitFor from "p-wait-for";
|
|
4
4
|
import { writeAuth } from "../../../core/config/auth.js";
|
|
5
|
-
import { generateDeviceCode, getTokenFromDeviceCode
|
|
5
|
+
import { generateDeviceCode, getTokenFromDeviceCode } from "../../../core/api/auth/index.js";
|
|
6
6
|
import { runCommand, runTask } from "../../utils/index.js";
|
|
7
7
|
async function generateAndDisplayDeviceCode() {
|
|
8
8
|
const deviceCodeResponse = await runTask("Generating device code...", async () => {
|
|
@@ -16,7 +16,7 @@ async function generateAndDisplayDeviceCode() {
|
|
|
16
16
|
return deviceCodeResponse;
|
|
17
17
|
}
|
|
18
18
|
async function waitForAuthentication(deviceCode, expiresIn) {
|
|
19
|
-
let tokenResponse
|
|
19
|
+
let tokenResponse;
|
|
20
20
|
try {
|
|
21
21
|
await runTask("Waiting for you to complete authentication...", async () => {
|
|
22
22
|
await pWaitFor(async () => {
|
|
@@ -41,7 +41,7 @@ async function waitForAuthentication(deviceCode, expiresIn) {
|
|
|
41
41
|
}
|
|
42
42
|
throw error;
|
|
43
43
|
}
|
|
44
|
-
if (
|
|
44
|
+
if (tokenResponse === undefined) {
|
|
45
45
|
throw new Error("Failed to retrieve authentication token.");
|
|
46
46
|
}
|
|
47
47
|
return tokenResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../src/cli/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../src/cli/commands/auth/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show-project.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/project/show-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,eAAO,MAAM,kBAAkB,SAI3B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { log } from "@clack/prompts";
|
|
3
|
+
import { readProjectConfig } from "../../../core/config/project.js";
|
|
4
|
+
import { runCommand, runTask } from "../../utils/index.js";
|
|
5
|
+
async function showProject() {
|
|
6
|
+
const projectData = await runTask("Reading project configuration", async () => {
|
|
7
|
+
return await readProjectConfig();
|
|
8
|
+
}, {
|
|
9
|
+
successMessage: "Project configuration loaded",
|
|
10
|
+
errorMessage: "Failed to load project configuration",
|
|
11
|
+
});
|
|
12
|
+
const jsonOutput = JSON.stringify(projectData, null, 2);
|
|
13
|
+
log.info(jsonOutput);
|
|
14
|
+
}
|
|
15
|
+
export const showProjectCommand = new Command("show-project")
|
|
16
|
+
.description("Display project configuration, entities, and functions")
|
|
17
|
+
.action(async () => {
|
|
18
|
+
await runCommand(showProject);
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=show-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show-project.js","sourceRoot":"","sources":["../../../../src/cli/commands/project/show-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE3D,KAAK,UAAU,WAAW;IACxB,MAAM,WAAW,GAAG,MAAM,OAAO,CAC/B,+BAA+B,EAC/B,KAAK,IAAI,EAAE;QACT,OAAO,MAAM,iBAAiB,EAAE,CAAC;IACnC,CAAC,EACD;QACE,cAAc,EAAE,8BAA8B;QAC9C,YAAY,EAAE,sCAAsC;KACrD,CACF,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxD,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC;KAC1D,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { Command } from
|
|
3
|
-
import { getPackageVersion } from
|
|
4
|
-
import { loginCommand } from
|
|
5
|
-
import { whoamiCommand } from
|
|
6
|
-
import { logoutCommand } from
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { getPackageVersion } from "./utils/index.js";
|
|
4
|
+
import { loginCommand } from "./commands/auth/login.js";
|
|
5
|
+
import { whoamiCommand } from "./commands/auth/whoami.js";
|
|
6
|
+
import { logoutCommand } from "./commands/auth/logout.js";
|
|
7
|
+
import { showProjectCommand } from "./commands/project/show-project.js";
|
|
7
8
|
const program = new Command();
|
|
8
9
|
program
|
|
9
|
-
.name(
|
|
10
|
-
.description(
|
|
10
|
+
.name("base44")
|
|
11
|
+
.description("Base44 CLI - Unified interface for managing Base44 applications")
|
|
11
12
|
.version(getPackageVersion());
|
|
12
13
|
// Register authentication commands
|
|
13
14
|
program.addCommand(loginCommand);
|
|
14
15
|
program.addCommand(whoamiCommand);
|
|
15
16
|
program.addCommand(logoutCommand);
|
|
17
|
+
// Register project commands
|
|
18
|
+
program.addCommand(showProjectCommand);
|
|
16
19
|
// Parse command line arguments
|
|
17
20
|
program.parse();
|
|
18
21
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CACV,iEAAiE,CAClE;KACA,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAEhC,mCAAmC;AACnC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,4BAA4B;AAC5B,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAEvC,+BAA+B;AAC/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { readFileSync } from "fs";
|
|
2
|
-
import { fileURLToPath } from "url";
|
|
3
|
-
import { dirname, join } from "path";
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
4
|
export function getPackageVersion() {
|
|
5
5
|
const __filename = fileURLToPath(import.meta.url);
|
|
6
6
|
const __dirname = dirname(__filename);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../../../src/cli/utils/packageVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../../../src/cli/utils/packageVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,UAAU,iBAAiB;IAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAEtC,+CAA+C;IAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/runCommand.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"runCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/runCommand.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
|
@@ -18,10 +18,7 @@ export async function runCommand(commandFn) {
|
|
|
18
18
|
const issues = e.issues.map((i) => i.message).join(", ");
|
|
19
19
|
log.error(`Invalid response from server: ${issues}`);
|
|
20
20
|
}
|
|
21
|
-
else if (e instanceof AuthApiError) {
|
|
22
|
-
log.error(e.message);
|
|
23
|
-
}
|
|
24
|
-
else if (e instanceof Error) {
|
|
21
|
+
else if (e instanceof AuthApiError || e instanceof Error) {
|
|
25
22
|
log.error(e.message);
|
|
26
23
|
}
|
|
27
24
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runCommand.js","sourceRoot":"","sources":["../../../src/cli/utils/runCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE1E,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAA8B;IAE9B,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,SAAS,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,mBAAmB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,CAAC,YAAY,YAAY,
|
|
1
|
+
{"version":3,"file":"runCommand.js","sourceRoot":"","sources":["../../../src/cli/utils/runCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE1E,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAA8B;IAE9B,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,SAAS,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,mBAAmB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;YAC3D,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { DeviceCodeResponse, TokenResponse } from "./schema.js";
|
|
2
2
|
export declare function generateDeviceCode(): Promise<DeviceCodeResponse>;
|
|
3
3
|
export declare function getTokenFromDeviceCode(deviceCode: string): Promise<TokenResponse | null>;
|
|
4
4
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/core/api/auth/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/core/api/auth/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAWrE,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAuCtE;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA4C/B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DeviceCodeResponseSchema, TokenResponseSchema, } from "./schema.js";
|
|
2
1
|
import { AuthApiError, AuthValidationError } from "../../errors/index.js";
|
|
2
|
+
import { DeviceCodeResponseSchema, TokenResponseSchema } from "./schema.js";
|
|
3
3
|
async function delay(ms) {
|
|
4
4
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
5
5
|
}
|
|
@@ -46,9 +46,9 @@ export async function getTokenFromDeviceCode(deviceCode) {
|
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
48
|
const mockResponse = {
|
|
49
|
-
token:
|
|
50
|
-
email: "
|
|
51
|
-
name: "
|
|
49
|
+
token: `mock-token-${Date.now()}`,
|
|
50
|
+
email: "shahart@base44.com",
|
|
51
|
+
name: "Shahar Talmi",
|
|
52
52
|
};
|
|
53
53
|
const result = TokenResponseSchema.safeParse(mockResponse);
|
|
54
54
|
if (!result.success) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/core/api/auth/client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/core/api/auth/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export { AuthApiError, AuthValidationError } from
|
|
1
|
+
export * from "./client.js";
|
|
2
|
+
export * from "./schema.js";
|
|
3
|
+
export { AuthApiError, AuthValidationError } from "../../errors/index.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export { AuthApiError, AuthValidationError } from
|
|
1
|
+
export * from "./client.js";
|
|
2
|
+
export * from "./schema.js";
|
|
3
|
+
export { AuthApiError, AuthValidationError } from "../../errors/index.js";
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { z } from
|
|
1
|
+
import { z } from "zod";
|
|
2
2
|
export const DeviceCodeResponseSchema = z.object({
|
|
3
|
-
deviceCode: z.string().min(1,
|
|
4
|
-
userCode: z.string().min(1,
|
|
5
|
-
verificationUrl: z.url(
|
|
6
|
-
expiresIn: z.number().int().positive(
|
|
3
|
+
deviceCode: z.string().min(1, "Device code cannot be empty"),
|
|
4
|
+
userCode: z.string().min(1, "User code cannot be empty"),
|
|
5
|
+
verificationUrl: z.url("Invalid verification URL"),
|
|
6
|
+
expiresIn: z.number().int().positive("Expires in must be a positive integer"),
|
|
7
7
|
});
|
|
8
8
|
export const TokenResponseSchema = z.object({
|
|
9
|
-
token: z.string().min(1,
|
|
10
|
-
email: z.email(
|
|
11
|
-
name: z.string().min(1,
|
|
9
|
+
token: z.string().min(1, "Token cannot be empty"),
|
|
10
|
+
email: z.email("Invalid email address"),
|
|
11
|
+
name: z.string().min(1, "Name cannot be empty"),
|
|
12
12
|
});
|
|
13
13
|
//# sourceMappingURL=schema.js.map
|
package/dist/core/api/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./auth/index.js";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/api/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from "./auth/index.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { AuthData } from "../schemas/auth.js";
|
|
2
2
|
export declare function readAuth(): Promise<AuthData>;
|
|
3
3
|
export declare function writeAuth(authData: AuthData): Promise<void>;
|
|
4
4
|
export declare function deleteAuth(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/core/config/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/core/config/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAInD,wBAAsB,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,CA2BlD;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBjE;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAUhD"}
|
package/dist/core/config/auth.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { AuthDataSchema } from "../schemas/auth.js";
|
|
2
|
-
import {
|
|
3
|
-
import { readJsonFile, writeJsonFile, deleteFile
|
|
2
|
+
import { getAuthFilePath } from "../consts.js";
|
|
3
|
+
import { readJsonFile, writeJsonFile, deleteFile } from "../utils/fs.js";
|
|
4
4
|
export async function readAuth() {
|
|
5
5
|
try {
|
|
6
|
-
const parsed = await readJsonFile(
|
|
6
|
+
const parsed = await readJsonFile(getAuthFilePath());
|
|
7
7
|
const result = AuthDataSchema.safeParse(parsed);
|
|
8
8
|
if (!result.success) {
|
|
9
9
|
throw new Error(`Invalid authentication data: ${result.error.issues
|
|
@@ -30,7 +30,7 @@ export async function writeAuth(authData) {
|
|
|
30
30
|
.join(", ")}`);
|
|
31
31
|
}
|
|
32
32
|
try {
|
|
33
|
-
await writeJsonFile(
|
|
33
|
+
await writeJsonFile(getAuthFilePath(), result.data);
|
|
34
34
|
}
|
|
35
35
|
catch (error) {
|
|
36
36
|
throw new Error(`Failed to write authentication file: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
@@ -38,7 +38,7 @@ export async function writeAuth(authData) {
|
|
|
38
38
|
}
|
|
39
39
|
export async function deleteAuth() {
|
|
40
40
|
try {
|
|
41
|
-
await deleteFile(
|
|
41
|
+
await deleteFile(getAuthFilePath());
|
|
42
42
|
}
|
|
43
43
|
catch (error) {
|
|
44
44
|
throw new Error(`Failed to delete authentication file: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/core/config/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/core/config/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,CAAC,KAAK,CAAC,MAAM;iBAChD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;iBACrB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACvE,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,IAAI,KAAK,CACb,uCACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAkB;IAChD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAElD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,CAAC,KAAK,CAAC,MAAM;aAChD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACrB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wCACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,yCACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/core/config/entities.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAkBnD,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAe5E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { globby } from "globby";
|
|
2
|
+
import { EntitySchema } from "../schemas/entity.js";
|
|
3
|
+
import { readJsonFile, pathExists } from "../utils/fs.js";
|
|
4
|
+
async function readEntityFile(entityPath) {
|
|
5
|
+
const parsed = await readJsonFile(entityPath);
|
|
6
|
+
const result = EntitySchema.safeParse(parsed);
|
|
7
|
+
if (!result.success) {
|
|
8
|
+
throw new Error(`Invalid entity configuration in ${entityPath}: ${result.error.issues
|
|
9
|
+
.map((e) => e.message)
|
|
10
|
+
.join(", ")}`);
|
|
11
|
+
}
|
|
12
|
+
return result.data;
|
|
13
|
+
}
|
|
14
|
+
export async function readAllEntities(entitiesDir) {
|
|
15
|
+
if (!(await pathExists(entitiesDir))) {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
const files = await globby("*.{json,jsonc}", {
|
|
19
|
+
cwd: entitiesDir,
|
|
20
|
+
absolute: true,
|
|
21
|
+
});
|
|
22
|
+
const entities = await Promise.all(files.map((filePath) => readEntityFile(filePath)));
|
|
23
|
+
return entities;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=entities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/core/config/entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1D,KAAK,UAAU,cAAc,CAAC,UAAkB;IAC9C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,mCAAmC,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM;aAClE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACrB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE;QAC3C,GAAG,EAAE,WAAW;QAChB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAClD,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { FunctionConfig } from "../schemas/function.js";
|
|
2
|
+
export declare function readFunctionConfig(configPath: string): Promise<FunctionConfig>;
|
|
3
|
+
export declare function readAllFunctions(functionsDir: string): Promise<FunctionConfig[]>;
|
|
4
|
+
//# sourceMappingURL=functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../src/core/config/functions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC,CAazB;AAED,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,EAAE,CAAC,CAe3B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { globby } from "globby";
|
|
2
|
+
import { FunctionConfigSchema } from "../schemas/function.js";
|
|
3
|
+
import { FUNCTION_CONFIG_FILE } from "../consts.js";
|
|
4
|
+
import { readJsonFile, pathExists } from "../utils/fs.js";
|
|
5
|
+
export async function readFunctionConfig(configPath) {
|
|
6
|
+
const parsed = await readJsonFile(configPath);
|
|
7
|
+
const result = FunctionConfigSchema.safeParse(parsed);
|
|
8
|
+
if (!result.success) {
|
|
9
|
+
throw new Error(`Invalid function configuration in ${configPath}: ${result.error.issues
|
|
10
|
+
.map((e) => e.message)
|
|
11
|
+
.join(", ")}`);
|
|
12
|
+
}
|
|
13
|
+
return result.data;
|
|
14
|
+
}
|
|
15
|
+
export async function readAllFunctions(functionsDir) {
|
|
16
|
+
if (!(await pathExists(functionsDir))) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
const configFiles = await globby(`*/${FUNCTION_CONFIG_FILE}`, {
|
|
20
|
+
cwd: functionsDir,
|
|
21
|
+
absolute: true,
|
|
22
|
+
});
|
|
23
|
+
const functionConfigs = await Promise.all(configFiles.map((configPath) => readFunctionConfig(configPath)));
|
|
24
|
+
return functionConfigs;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/core/config/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAkB;IAElB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,qCAAqC,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM;aACpE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACrB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,YAAoB;IAEpB,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,KAAK,oBAAoB,EAAE,EAAE;QAC5D,GAAG,EAAE,YAAY;QACjB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAChE,CAAC;IAEF,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ProjectWithPaths } from "../schemas/project.js";
|
|
2
|
+
import type { Entity } from "../schemas/entity.js";
|
|
3
|
+
import type { FunctionConfig } from "../schemas/function.js";
|
|
4
|
+
export interface ProjectRoot {
|
|
5
|
+
root: string;
|
|
6
|
+
configPath: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ProjectData {
|
|
9
|
+
project: ProjectWithPaths;
|
|
10
|
+
entities: Entity[];
|
|
11
|
+
functions: FunctionConfig[];
|
|
12
|
+
}
|
|
13
|
+
export declare function findProjectRoot(startPath?: string): Promise<ProjectRoot | null>;
|
|
14
|
+
export declare function readProjectConfig(projectRoot?: string): Promise<ProjectData>;
|
|
15
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/core/config/project.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAM7D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,cAAc,EAAE,CAAC;CAC7B;AAYD,wBAAsB,eAAe,CACnC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAY7B;AAED,wBAAsB,iBAAiB,CACrC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,WAAW,CAAC,CAyCtB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { join, dirname } from "node:path";
|
|
2
|
+
import { globby } from "globby";
|
|
3
|
+
import { ProjectConfigSchema } from "../schemas/project.js";
|
|
4
|
+
import { getProjectConfigPatterns, PROJECT_SUBDIR } from "../consts.js";
|
|
5
|
+
import { readJsonFile } from "../utils/fs.js";
|
|
6
|
+
import { readAllEntities } from "./entities.js";
|
|
7
|
+
import { readAllFunctions } from "./functions.js";
|
|
8
|
+
// Finds config file in a directory using globby, respecting priority order.
|
|
9
|
+
async function findConfigInDir(dir) {
|
|
10
|
+
const files = await globby(getProjectConfigPatterns(), {
|
|
11
|
+
cwd: dir,
|
|
12
|
+
absolute: true,
|
|
13
|
+
});
|
|
14
|
+
return files[0] ?? null;
|
|
15
|
+
}
|
|
16
|
+
// Walks up the directory tree to locate a Base44 project config file.
|
|
17
|
+
export async function findProjectRoot(startPath) {
|
|
18
|
+
let current = startPath || process.cwd();
|
|
19
|
+
while (current !== dirname(current)) {
|
|
20
|
+
const configPath = await findConfigInDir(current);
|
|
21
|
+
if (configPath) {
|
|
22
|
+
return { root: current, configPath };
|
|
23
|
+
}
|
|
24
|
+
current = dirname(current);
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
export async function readProjectConfig(projectRoot) {
|
|
29
|
+
let found;
|
|
30
|
+
if (projectRoot) {
|
|
31
|
+
const configPath = await findConfigInDir(projectRoot);
|
|
32
|
+
found = configPath ? { root: projectRoot, configPath } : null;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
found = await findProjectRoot();
|
|
36
|
+
}
|
|
37
|
+
if (!found) {
|
|
38
|
+
throw new Error(`Project root not found. Please ensure config.jsonc or config.json exists in the project directory or ${PROJECT_SUBDIR}/ subdirectory.`);
|
|
39
|
+
}
|
|
40
|
+
const { root, configPath } = found;
|
|
41
|
+
const parsed = await readJsonFile(configPath);
|
|
42
|
+
const result = ProjectConfigSchema.safeParse(parsed);
|
|
43
|
+
if (!result.success) {
|
|
44
|
+
const errors = result.error.issues.map((e) => e.message).join(", ");
|
|
45
|
+
throw new Error(`Invalid project configuration: ${errors}`);
|
|
46
|
+
}
|
|
47
|
+
const project = result.data;
|
|
48
|
+
const configDir = dirname(configPath);
|
|
49
|
+
const entitiesPath = join(configDir, project.entitySrc);
|
|
50
|
+
const functionsPath = join(configDir, project.functionSrc);
|
|
51
|
+
const [entities, functions] = await Promise.all([
|
|
52
|
+
readAllEntities(entitiesPath),
|
|
53
|
+
readAllFunctions(functionsPath),
|
|
54
|
+
]);
|
|
55
|
+
return {
|
|
56
|
+
project: { ...project, root, configPath },
|
|
57
|
+
entities,
|
|
58
|
+
functions,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/core/config/project.ts"],"names":[],"mappings":"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"}
|