@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.
Files changed (86) hide show
  1. package/README.md +18 -14
  2. package/dist/cli/commands/auth/login.d.ts.map +1 -1
  3. package/dist/cli/commands/auth/login.js +3 -3
  4. package/dist/cli/commands/auth/login.js.map +1 -1
  5. package/dist/cli/commands/project/show-project.d.ts +3 -0
  6. package/dist/cli/commands/project/show-project.d.ts.map +1 -0
  7. package/dist/cli/commands/project/show-project.js +20 -0
  8. package/dist/cli/commands/project/show-project.js.map +1 -0
  9. package/dist/cli/index.js +10 -7
  10. package/dist/cli/index.js.map +1 -1
  11. package/dist/cli/utils/packageVersion.js +3 -3
  12. package/dist/cli/utils/packageVersion.js.map +1 -1
  13. package/dist/cli/utils/runCommand.d.ts.map +1 -1
  14. package/dist/cli/utils/runCommand.js +1 -4
  15. package/dist/cli/utils/runCommand.js.map +1 -1
  16. package/dist/core/api/auth/client.d.ts +1 -1
  17. package/dist/core/api/auth/client.d.ts.map +1 -1
  18. package/dist/core/api/auth/client.js +4 -4
  19. package/dist/core/api/auth/client.js.map +1 -1
  20. package/dist/core/api/auth/index.d.ts +3 -3
  21. package/dist/core/api/auth/index.js +3 -3
  22. package/dist/core/api/auth/schema.d.ts +1 -1
  23. package/dist/core/api/auth/schema.js +8 -8
  24. package/dist/core/api/index.d.ts +1 -1
  25. package/dist/core/api/index.js +1 -1
  26. package/dist/core/config/auth.d.ts +1 -1
  27. package/dist/core/config/auth.d.ts.map +1 -1
  28. package/dist/core/config/auth.js +5 -5
  29. package/dist/core/config/auth.js.map +1 -1
  30. package/dist/core/config/entities.d.ts +3 -0
  31. package/dist/core/config/entities.d.ts.map +1 -0
  32. package/dist/core/config/entities.js +25 -0
  33. package/dist/core/config/entities.js.map +1 -0
  34. package/dist/core/config/functions.d.ts +4 -0
  35. package/dist/core/config/functions.d.ts.map +1 -0
  36. package/dist/core/config/functions.js +26 -0
  37. package/dist/core/config/functions.js.map +1 -0
  38. package/dist/core/config/index.d.ts +5 -2
  39. package/dist/core/config/index.d.ts.map +1 -1
  40. package/dist/core/config/index.js +5 -2
  41. package/dist/core/config/index.js.map +1 -1
  42. package/dist/core/config/project.d.ts +15 -0
  43. package/dist/core/config/project.d.ts.map +1 -0
  44. package/dist/core/config/project.js +61 -0
  45. package/dist/core/config/project.js.map +1 -0
  46. package/dist/core/consts.d.ts +6 -0
  47. package/dist/core/consts.d.ts.map +1 -0
  48. package/dist/core/consts.js +19 -0
  49. package/dist/core/consts.js.map +1 -0
  50. package/dist/core/errors/index.d.ts +1 -1
  51. package/dist/core/errors/index.js +1 -1
  52. package/dist/core/index.d.ts +5 -5
  53. package/dist/core/index.js +5 -5
  54. package/dist/core/schemas/auth.d.ts +1 -1
  55. package/dist/core/schemas/auth.js +3 -3
  56. package/dist/core/schemas/config.d.ts +22 -0
  57. package/dist/core/schemas/config.d.ts.map +1 -0
  58. package/dist/core/schemas/config.js +14 -0
  59. package/dist/core/schemas/config.js.map +1 -0
  60. package/dist/core/schemas/entity.d.ts +47 -0
  61. package/dist/core/schemas/entity.d.ts.map +1 -0
  62. package/dist/core/schemas/entity.js +29 -0
  63. package/dist/core/schemas/entity.js.map +1 -0
  64. package/dist/core/schemas/function.d.ts +91 -0
  65. package/dist/core/schemas/function.d.ts.map +1 -0
  66. package/dist/core/schemas/function.js +36 -0
  67. package/dist/core/schemas/function.js.map +1 -0
  68. package/dist/core/schemas/index.d.ts +5 -1
  69. package/dist/core/schemas/index.d.ts.map +1 -1
  70. package/dist/core/schemas/index.js +5 -1
  71. package/dist/core/schemas/index.js.map +1 -1
  72. package/dist/core/schemas/project.d.ts +14 -0
  73. package/dist/core/schemas/project.d.ts.map +1 -0
  74. package/dist/core/schemas/project.js +9 -0
  75. package/dist/core/schemas/project.js.map +1 -0
  76. package/dist/core/utils/fs.d.ts +1 -1
  77. package/dist/core/utils/fs.d.ts.map +1 -1
  78. package/dist/core/utils/fs.js +21 -11
  79. package/dist/core/utils/fs.js.map +1 -1
  80. package/dist/core/utils/index.d.ts +1 -1
  81. package/dist/core/utils/index.js +1 -1
  82. package/package.json +11 -4
  83. package/dist/core/config/constants.d.ts +0 -4
  84. package/dist/core/config/constants.d.ts.map +0 -1
  85. package/dist/core/config/constants.js +0 -6
  86. package/dist/core/config/constants.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ export declare const PROJECT_SUBDIR = "base44";
2
+ export declare const FUNCTION_CONFIG_FILE = "function.jsonc";
3
+ export declare function getBase44Dir(): string;
4
+ export declare function getAuthFilePath(): string;
5
+ export declare function getProjectConfigPatterns(): string[];
6
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/core/consts.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,WAAW,CAAC;AACvC,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD,wBAAgB,YAAY,WAE3B;AAED,wBAAgB,eAAe,WAE9B;AAED,wBAAgB,wBAAwB,aAOvC"}
@@ -0,0 +1,19 @@
1
+ import { join } from "node:path";
2
+ import { homedir } from "node:os";
3
+ export const PROJECT_SUBDIR = "base44";
4
+ export const FUNCTION_CONFIG_FILE = "function.jsonc";
5
+ export function getBase44Dir() {
6
+ return join(homedir(), ".base44");
7
+ }
8
+ export function getAuthFilePath() {
9
+ return join(getBase44Dir(), "auth", "auth.json");
10
+ }
11
+ export function getProjectConfigPatterns() {
12
+ return [
13
+ `${PROJECT_SUBDIR}/config.jsonc`,
14
+ `${PROJECT_SUBDIR}/config.json`,
15
+ "config.jsonc",
16
+ "config.json",
17
+ ];
18
+ }
19
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/core/consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AACvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAErD,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,GAAG,cAAc,eAAe;QAChC,GAAG,cAAc,cAAc;QAC/B,cAAc;QACd,aAAa;KACd,CAAC;AACJ,CAAC"}
@@ -1,2 +1,2 @@
1
- export * from './errors.js';
1
+ export * from "./errors.js";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './errors.js';
1
+ export * from "./errors.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
- export * from './schemas/index.js';
2
- export * from './config/index.js';
3
- export * from './utils/index.js';
4
- export * from './api/index.js';
5
- export * from './errors/index.js';
1
+ export * from "./schemas/index.js";
2
+ export * from "./config/index.js";
3
+ export * from "./utils/index.js";
4
+ export * from "./api/index.js";
5
+ export * from "./errors/index.js";
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
- export * from './schemas/index.js';
2
- export * from './config/index.js';
3
- export * from './utils/index.js';
4
- export * from './api/index.js';
5
- export * from './errors/index.js';
1
+ export * from "./schemas/index.js";
2
+ export * from "./config/index.js";
3
+ export * from "./utils/index.js";
4
+ export * from "./api/index.js";
5
+ export * from "./errors/index.js";
6
6
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  export declare const AuthDataSchema: z.ZodObject<{
3
3
  token: z.ZodString;
4
4
  email: z.ZodEmail;
@@ -1,7 +1,7 @@
1
- import { z } from 'zod';
1
+ import { z } from "zod";
2
2
  export const AuthDataSchema = z.object({
3
- token: z.string().min(1, 'Token cannot be empty'),
3
+ token: z.string().min(1, "Token cannot be empty"),
4
4
  email: z.email(),
5
- name: z.string().min(1, 'Name cannot be empty'),
5
+ name: z.string().min(1, "Name cannot be empty"),
6
6
  });
7
7
  //# sourceMappingURL=auth.js.map
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ declare const SiteConfigSchema: z.ZodObject<{
3
+ buildCommand: z.ZodOptional<z.ZodString>;
4
+ serveCommand: z.ZodOptional<z.ZodString>;
5
+ outputDirectory: z.ZodOptional<z.ZodString>;
6
+ installCommand: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ export declare const AppConfigSchema: z.ZodObject<{
9
+ name: z.ZodString;
10
+ description: z.ZodOptional<z.ZodString>;
11
+ site: z.ZodOptional<z.ZodObject<{
12
+ buildCommand: z.ZodOptional<z.ZodString>;
13
+ serveCommand: z.ZodOptional<z.ZodString>;
14
+ outputDirectory: z.ZodOptional<z.ZodString>;
15
+ installCommand: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>>;
17
+ domains: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
+ }, z.core.$strip>;
19
+ export type SiteConfig = z.infer<typeof SiteConfigSchema>;
20
+ export type AppConfig = z.infer<typeof AppConfigSchema>;
21
+ export {};
22
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,gBAAgB;;;;;iBAKpB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;iBAK1B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+ const SiteConfigSchema = z.object({
3
+ buildCommand: z.string().optional(),
4
+ serveCommand: z.string().optional(),
5
+ outputDirectory: z.string().optional(),
6
+ installCommand: z.string().optional(),
7
+ });
8
+ export const AppConfigSchema = z.object({
9
+ name: z.string().min(1, "App name cannot be empty"),
10
+ description: z.string().optional(),
11
+ site: SiteConfigSchema.optional(),
12
+ domains: z.array(z.string()).optional(),
13
+ });
14
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/schemas/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,0BAA0B,CAAC;IACnD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ declare const EntityPropertySchema: z.ZodObject<{
3
+ type: z.ZodString;
4
+ description: z.ZodOptional<z.ZodString>;
5
+ enum: z.ZodOptional<z.ZodArray<z.ZodString>>;
6
+ default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
7
+ format: z.ZodOptional<z.ZodString>;
8
+ items: z.ZodOptional<z.ZodAny>;
9
+ relation: z.ZodOptional<z.ZodObject<{
10
+ entity: z.ZodString;
11
+ type: z.ZodString;
12
+ }, z.core.$strip>>;
13
+ }, z.core.$strip>;
14
+ declare const EntityPoliciesSchema: z.ZodObject<{
15
+ read: z.ZodOptional<z.ZodString>;
16
+ create: z.ZodOptional<z.ZodString>;
17
+ update: z.ZodOptional<z.ZodString>;
18
+ delete: z.ZodOptional<z.ZodString>;
19
+ }, z.core.$strip>;
20
+ export declare const EntitySchema: z.ZodObject<{
21
+ name: z.ZodString;
22
+ type: z.ZodLiteral<"object">;
23
+ properties: z.ZodRecord<z.ZodString, z.ZodObject<{
24
+ type: z.ZodString;
25
+ description: z.ZodOptional<z.ZodString>;
26
+ enum: z.ZodOptional<z.ZodArray<z.ZodString>>;
27
+ default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
28
+ format: z.ZodOptional<z.ZodString>;
29
+ items: z.ZodOptional<z.ZodAny>;
30
+ relation: z.ZodOptional<z.ZodObject<{
31
+ entity: z.ZodString;
32
+ type: z.ZodString;
33
+ }, z.core.$strip>>;
34
+ }, z.core.$strip>>;
35
+ required: z.ZodOptional<z.ZodArray<z.ZodString>>;
36
+ policies: z.ZodOptional<z.ZodObject<{
37
+ read: z.ZodOptional<z.ZodString>;
38
+ create: z.ZodOptional<z.ZodString>;
39
+ update: z.ZodOptional<z.ZodString>;
40
+ delete: z.ZodOptional<z.ZodString>;
41
+ }, z.core.$strip>>;
42
+ }, z.core.$strip>;
43
+ export type EntityProperty = z.infer<typeof EntityPropertySchema>;
44
+ export type EntityPolicies = z.infer<typeof EntityPoliciesSchema>;
45
+ export type Entity = z.infer<typeof EntitySchema>;
46
+ export {};
47
+ //# sourceMappingURL=entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,oBAAoB;;;;;;;;;;;iBAaxB,CAAC;AAEH,QAAA,MAAM,oBAAoB;;;;;iBAKxB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;iBAMvB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ const EntityPropertySchema = z.object({
3
+ type: z.string(),
4
+ description: z.string().optional(),
5
+ enum: z.array(z.string()).optional(),
6
+ default: z.union([z.string(), z.number(), z.boolean()]).optional(),
7
+ format: z.string().optional(),
8
+ items: z.any().optional(),
9
+ relation: z
10
+ .object({
11
+ entity: z.string(),
12
+ type: z.string(),
13
+ })
14
+ .optional(),
15
+ });
16
+ const EntityPoliciesSchema = z.object({
17
+ read: z.string().optional(),
18
+ create: z.string().optional(),
19
+ update: z.string().optional(),
20
+ delete: z.string().optional(),
21
+ });
22
+ export const EntitySchema = z.object({
23
+ name: z.string().min(1, "Entity name cannot be empty"),
24
+ type: z.literal("object"),
25
+ properties: z.record(z.string(), EntityPropertySchema),
26
+ required: z.array(z.string()).optional(),
27
+ policies: EntityPoliciesSchema.optional(),
28
+ });
29
+ //# sourceMappingURL=entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../src/core/schemas/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACzB,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;KACjB,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC;IACtD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC"}
@@ -0,0 +1,91 @@
1
+ import { z } from "zod";
2
+ declare const HttpTriggerSchema: z.ZodObject<{
3
+ id: z.ZodOptional<z.ZodString>;
4
+ name: z.ZodOptional<z.ZodString>;
5
+ description: z.ZodOptional<z.ZodString>;
6
+ type: z.ZodLiteral<"http">;
7
+ path: z.ZodString;
8
+ }, z.core.$strip>;
9
+ declare const ScheduleTriggerSchema: z.ZodObject<{
10
+ id: z.ZodOptional<z.ZodString>;
11
+ name: z.ZodOptional<z.ZodString>;
12
+ description: z.ZodOptional<z.ZodString>;
13
+ type: z.ZodLiteral<"schedule">;
14
+ scheduleMode: z.ZodOptional<z.ZodEnum<{
15
+ recurring: "recurring";
16
+ once: "once";
17
+ }>>;
18
+ cron: z.ZodString;
19
+ isActive: z.ZodOptional<z.ZodBoolean>;
20
+ timezone: z.ZodOptional<z.ZodString>;
21
+ }, z.core.$strip>;
22
+ declare const EventTriggerSchema: z.ZodObject<{
23
+ id: z.ZodOptional<z.ZodString>;
24
+ name: z.ZodOptional<z.ZodString>;
25
+ description: z.ZodOptional<z.ZodString>;
26
+ type: z.ZodLiteral<"event">;
27
+ entity: z.ZodString;
28
+ event: z.ZodString;
29
+ }, z.core.$strip>;
30
+ declare const TriggerSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
31
+ id: z.ZodOptional<z.ZodString>;
32
+ name: z.ZodOptional<z.ZodString>;
33
+ description: z.ZodOptional<z.ZodString>;
34
+ type: z.ZodLiteral<"http">;
35
+ path: z.ZodString;
36
+ }, z.core.$strip>, z.ZodObject<{
37
+ id: z.ZodOptional<z.ZodString>;
38
+ name: z.ZodOptional<z.ZodString>;
39
+ description: z.ZodOptional<z.ZodString>;
40
+ type: z.ZodLiteral<"schedule">;
41
+ scheduleMode: z.ZodOptional<z.ZodEnum<{
42
+ recurring: "recurring";
43
+ once: "once";
44
+ }>>;
45
+ cron: z.ZodString;
46
+ isActive: z.ZodOptional<z.ZodBoolean>;
47
+ timezone: z.ZodOptional<z.ZodString>;
48
+ }, z.core.$strip>, z.ZodObject<{
49
+ id: z.ZodOptional<z.ZodString>;
50
+ name: z.ZodOptional<z.ZodString>;
51
+ description: z.ZodOptional<z.ZodString>;
52
+ type: z.ZodLiteral<"event">;
53
+ entity: z.ZodString;
54
+ event: z.ZodString;
55
+ }, z.core.$strip>], "type">;
56
+ export declare const FunctionConfigSchema: z.ZodObject<{
57
+ entry: z.ZodString;
58
+ triggers: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
59
+ id: z.ZodOptional<z.ZodString>;
60
+ name: z.ZodOptional<z.ZodString>;
61
+ description: z.ZodOptional<z.ZodString>;
62
+ type: z.ZodLiteral<"http">;
63
+ path: z.ZodString;
64
+ }, z.core.$strip>, z.ZodObject<{
65
+ id: z.ZodOptional<z.ZodString>;
66
+ name: z.ZodOptional<z.ZodString>;
67
+ description: z.ZodOptional<z.ZodString>;
68
+ type: z.ZodLiteral<"schedule">;
69
+ scheduleMode: z.ZodOptional<z.ZodEnum<{
70
+ recurring: "recurring";
71
+ once: "once";
72
+ }>>;
73
+ cron: z.ZodString;
74
+ isActive: z.ZodOptional<z.ZodBoolean>;
75
+ timezone: z.ZodOptional<z.ZodString>;
76
+ }, z.core.$strip>, z.ZodObject<{
77
+ id: z.ZodOptional<z.ZodString>;
78
+ name: z.ZodOptional<z.ZodString>;
79
+ description: z.ZodOptional<z.ZodString>;
80
+ type: z.ZodLiteral<"event">;
81
+ entity: z.ZodString;
82
+ event: z.ZodString;
83
+ }, z.core.$strip>], "type">>>;
84
+ }, z.core.$strip>;
85
+ export type HttpTrigger = z.infer<typeof HttpTriggerSchema>;
86
+ export type ScheduleTrigger = z.infer<typeof ScheduleTriggerSchema>;
87
+ export type EventTrigger = z.infer<typeof EventTriggerSchema>;
88
+ export type Trigger = z.infer<typeof TriggerSchema>;
89
+ export type FunctionConfig = z.infer<typeof FunctionConfigSchema>;
90
+ export {};
91
+ //# sourceMappingURL=function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,iBAAiB;;;;;;iBAMrB,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;iBASzB,CAAC;AAEH,QAAA,MAAM,kBAAkB;;;;;;;iBAOtB,CAAC;AAEH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;2BAIjB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAG/B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { z } from "zod";
2
+ const HttpTriggerSchema = z.object({
3
+ id: z.string().optional(),
4
+ name: z.string().optional(),
5
+ description: z.string().optional(),
6
+ type: z.literal("http"),
7
+ path: z.string().min(1, "Path cannot be empty"),
8
+ });
9
+ const ScheduleTriggerSchema = z.object({
10
+ id: z.string().optional(),
11
+ name: z.string().optional(),
12
+ description: z.string().optional(),
13
+ type: z.literal("schedule"),
14
+ scheduleMode: z.enum(["recurring", "once"]).optional(),
15
+ cron: z.string().min(1, "Cron expression cannot be empty"),
16
+ isActive: z.boolean().optional(),
17
+ timezone: z.string().optional(),
18
+ });
19
+ const EventTriggerSchema = z.object({
20
+ id: z.string().optional(),
21
+ name: z.string().optional(),
22
+ description: z.string().optional(),
23
+ type: z.literal("event"),
24
+ entity: z.string().min(1, "Entity name cannot be empty"),
25
+ event: z.string().min(1, "Event type cannot be empty"),
26
+ });
27
+ const TriggerSchema = z.discriminatedUnion("type", [
28
+ HttpTriggerSchema,
29
+ ScheduleTriggerSchema,
30
+ EventTriggerSchema,
31
+ ]);
32
+ export const FunctionConfigSchema = z.object({
33
+ entry: z.string().min(1, "Entry point cannot be empty"),
34
+ triggers: z.array(TriggerSchema).optional(),
35
+ });
36
+ //# sourceMappingURL=function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.js","sourceRoot":"","sources":["../../../src/core/schemas/function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;CAChD,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,iCAAiC,CAAC;IAC1D,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC;CACvD,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACjD,iBAAiB;IACjB,qBAAqB;IACrB,kBAAkB;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC;IACvD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC"}
@@ -1,2 +1,6 @@
1
- export * from './auth.js';
1
+ export * from "./auth.js";
2
+ export * from "./project.js";
3
+ export * from "./config.js";
4
+ export * from "./entity.js";
5
+ export * from "./function.js";
2
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
@@ -1,2 +1,6 @@
1
- export * from './auth.js';
1
+ export * from "./auth.js";
2
+ export * from "./project.js";
3
+ export * from "./config.js";
4
+ export * from "./entity.js";
5
+ export * from "./function.js";
2
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+ export declare const ProjectConfigSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ name: z.ZodString;
5
+ createdAt: z.ZodString;
6
+ entitySrc: z.ZodDefault<z.ZodString>;
7
+ functionSrc: z.ZodDefault<z.ZodString>;
8
+ }, z.core.$loose>;
9
+ export type ProjectConfig = z.infer<typeof ProjectConfigSchema>;
10
+ export interface ProjectWithPaths extends ProjectConfig {
11
+ root: string;
12
+ configPath: string;
13
+ }
14
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/core/schemas/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;iBAM9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,9 @@
1
+ import { z } from "zod";
2
+ export const ProjectConfigSchema = z.looseObject({
3
+ id: z.string().min(1, "Project ID cannot be empty"),
4
+ name: z.string().min(1, "Project name cannot be empty"),
5
+ createdAt: z.string(),
6
+ entitySrc: z.string().default("./entities"),
7
+ functionSrc: z.string().default("./functions"),
8
+ });
9
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/core/schemas/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,WAAW,CAAC;IAC/C,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC;IACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;CAC/C,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare function fileExists(filePath: string): boolean;
1
+ export declare function pathExists(path: string): Promise<boolean>;
2
2
  export declare function readJsonFile(filePath: string): Promise<unknown>;
3
3
  export declare function writeJsonFile(filePath: string, data: unknown): Promise<void>;
4
4
  export declare function deleteFile(filePath: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/core/utils/fs.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBrE;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAchE"}
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/core/utils/fs.ts"],"names":[],"mappings":"AAKA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,oBAItC;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA8BrE;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAchE"}
@@ -1,20 +1,30 @@
1
- import { existsSync } from "fs";
2
- import { readFile, writeFile, mkdir, unlink } from "fs/promises";
3
- import { dirname } from "path";
4
- export function fileExists(filePath) {
5
- return existsSync(filePath);
1
+ import { readFile, writeFile, mkdir, unlink, access } from "node:fs/promises";
2
+ import { dirname } from "node:path";
3
+ import { parse, printParseErrorCode } from "jsonc-parser";
4
+ export function pathExists(path) {
5
+ return access(path)
6
+ .then(() => true)
7
+ .catch(() => false);
6
8
  }
7
9
  export async function readJsonFile(filePath) {
8
- if (!fileExists(filePath)) {
10
+ if (!(await pathExists(filePath))) {
9
11
  throw new Error(`File not found: ${filePath}`);
10
12
  }
11
13
  try {
12
14
  const fileContent = await readFile(filePath, "utf-8");
13
- return JSON.parse(fileContent);
15
+ const errors = [];
16
+ const result = parse(fileContent, errors, { allowTrailingComma: true });
17
+ if (errors.length > 0) {
18
+ const errorMessages = errors
19
+ .map((e) => `${printParseErrorCode(e.error)} at offset ${e.offset}`)
20
+ .join(", ");
21
+ throw new Error(`File contains invalid JSONC: ${filePath} (${errorMessages})`);
22
+ }
23
+ return result;
14
24
  }
15
25
  catch (error) {
16
- if (error instanceof SyntaxError) {
17
- throw new Error(`File contains invalid JSON: ${filePath}`);
26
+ if (error instanceof Error && error.message.includes("invalid JSONC")) {
27
+ throw error;
18
28
  }
19
29
  throw new Error(`Failed to read file ${filePath}: ${error instanceof Error ? error.message : "Unknown error"}`);
20
30
  }
@@ -22,7 +32,7 @@ export async function readJsonFile(filePath) {
22
32
  export async function writeJsonFile(filePath, data) {
23
33
  try {
24
34
  const dir = dirname(filePath);
25
- if (!fileExists(dir)) {
35
+ if (!(await pathExists(dir))) {
26
36
  await mkdir(dir, { recursive: true });
27
37
  }
28
38
  const jsonContent = JSON.stringify(data, null, 2);
@@ -33,7 +43,7 @@ export async function writeJsonFile(filePath, data) {
33
43
  }
34
44
  }
35
45
  export async function deleteFile(filePath) {
36
- if (!fileExists(filePath)) {
46
+ if (!(await pathExists(filePath))) {
37
47
  return;
38
48
  }
39
49
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/core/utils/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,KAAK,CACb,uBAAuB,QAAQ,KAC7B,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,aAAa,CACjC,QAAgB,EAChB,IAAa;IAEb,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wBAAwB,QAAQ,KAC9B,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,CAAC,QAAgB;IAC/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,KAC/B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/core/utils/fs.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export * from './fs.js';
1
+ export * from "./fs.js";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export * from './fs.js';
1
+ export * from "./fs.js";
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@base44-preview/cli",
3
- "version": "0.0.1-pr.6.f28d227",
3
+ "version": "0.0.1-pr.7.00b57d1",
4
4
  "description": "Base44 CLI - Unified interface for managing Base44 applications",
5
5
  "type": "module",
6
6
  "main": "./dist/cli/index.js",
@@ -20,7 +20,9 @@
20
20
  "dev": "tsx src/cli/index.ts",
21
21
  "start": "node dist/cli/index.js",
22
22
  "clean": "rm -rf dist",
23
- "lint": "eslint src"
23
+ "lint": "eslint src",
24
+ "test": "vitest run",
25
+ "test:watch": "vitest"
24
26
  },
25
27
  "keywords": [
26
28
  "base44",
@@ -37,6 +39,8 @@
37
39
  "@clack/prompts": "^0.11.0",
38
40
  "chalk": "^5.6.2",
39
41
  "commander": "^12.1.0",
42
+ "globby": "^16.1.0",
43
+ "jsonc-parser": "^3.3.1",
40
44
  "p-wait-for": "^6.0.0",
41
45
  "zod": "^4.3.5"
42
46
  },
@@ -46,11 +50,14 @@
46
50
  "@typescript-eslint/parser": "^8.51.0",
47
51
  "eslint": "^9.39.2",
48
52
  "eslint-plugin-import": "^2.32.0",
53
+ "eslint-plugin-unicorn": "^62.0.0",
49
54
  "tsc-alias": "^1.8.16",
50
55
  "tsx": "^4.19.2",
51
- "typescript": "^5.7.2"
56
+ "typescript": "^5.7.2",
57
+ "typescript-eslint": "^8.52.0",
58
+ "vitest": "^4.0.16"
52
59
  },
53
60
  "engines": {
54
- "node": ">=20.0.0"
61
+ "node": ">=20.19.0"
55
62
  }
56
63
  }
@@ -1,4 +0,0 @@
1
- export declare const BASE44_DIR: string;
2
- export declare const AUTH_DIR: string;
3
- export declare const AUTH_FILE_PATH: string;
4
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/config/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,QAA6B,CAAC;AACrD,eAAO,MAAM,QAAQ,QAA2B,CAAC;AACjD,eAAO,MAAM,cAAc,QAA8B,CAAC"}
@@ -1,6 +0,0 @@
1
- import { join } from 'path';
2
- import { homedir } from 'os';
3
- export const BASE44_DIR = join(homedir(), '.base44');
4
- export const AUTH_DIR = join(BASE44_DIR, 'auth');
5
- export const AUTH_FILE_PATH = join(AUTH_DIR, 'auth.json');
6
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/config/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC"}