@edgebasejs/cli 0.1.0
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/dist/cli/src/cli.d.ts +3 -0
- package/dist/cli/src/cli.d.ts.map +1 -0
- package/dist/cli/src/cli.js +58 -0
- package/dist/cli/src/cli.js.map +1 -0
- package/dist/cli/src/commands/generate.d.ts +5 -0
- package/dist/cli/src/commands/generate.d.ts.map +1 -0
- package/dist/cli/src/commands/generate.js +89 -0
- package/dist/cli/src/commands/generate.js.map +1 -0
- package/dist/cli/src/commands/index.d.ts +4 -0
- package/dist/cli/src/commands/index.d.ts.map +1 -0
- package/dist/cli/src/commands/index.js +4 -0
- package/dist/cli/src/commands/index.js.map +1 -0
- package/dist/cli/src/commands/init.d.ts +5 -0
- package/dist/cli/src/commands/init.d.ts.map +1 -0
- package/dist/cli/src/commands/init.js +96 -0
- package/dist/cli/src/commands/init.js.map +1 -0
- package/dist/cli/src/commands/migrate.d.ts +5 -0
- package/dist/cli/src/commands/migrate.d.ts.map +1 -0
- package/dist/cli/src/commands/migrate.js +114 -0
- package/dist/cli/src/commands/migrate.js.map +1 -0
- package/dist/cli/src/generators/index.d.ts +4 -0
- package/dist/cli/src/generators/index.d.ts.map +1 -0
- package/dist/cli/src/generators/index.js +4 -0
- package/dist/cli/src/generators/index.js.map +1 -0
- package/dist/cli/src/generators/migration-generator.d.ts +16 -0
- package/dist/cli/src/generators/migration-generator.d.ts.map +1 -0
- package/dist/cli/src/generators/migration-generator.js +118 -0
- package/dist/cli/src/generators/migration-generator.js.map +1 -0
- package/dist/cli/src/generators/migration-sql-generator.d.ts +26 -0
- package/dist/cli/src/generators/migration-sql-generator.d.ts.map +1 -0
- package/dist/cli/src/generators/migration-sql-generator.js +253 -0
- package/dist/cli/src/generators/migration-sql-generator.js.map +1 -0
- package/dist/cli/src/generators/schema-loader.d.ts +22 -0
- package/dist/cli/src/generators/schema-loader.d.ts.map +1 -0
- package/dist/cli/src/generators/schema-loader.js +72 -0
- package/dist/cli/src/generators/schema-loader.js.map +1 -0
- package/dist/cli/src/generators/sdk-generator.d.ts +10 -0
- package/dist/cli/src/generators/sdk-generator.d.ts.map +1 -0
- package/dist/cli/src/generators/sdk-generator.js +185 -0
- package/dist/cli/src/generators/sdk-generator.js.map +1 -0
- package/dist/cli/src/generators/sdk-ts-generator.d.ts +6 -0
- package/dist/cli/src/generators/sdk-ts-generator.d.ts.map +1 -0
- package/dist/cli/src/generators/sdk-ts-generator.js +105 -0
- package/dist/cli/src/generators/sdk-ts-generator.js.map +1 -0
- package/dist/cli/src/index.d.ts +3 -0
- package/dist/cli/src/index.d.ts.map +1 -0
- package/dist/cli/src/index.js +3 -0
- package/dist/cli/src/index.js.map +1 -0
- package/dist/schema/src/builder/index.d.ts +3 -0
- package/dist/schema/src/builder/index.d.ts.map +1 -0
- package/dist/schema/src/builder/index.js +3 -0
- package/dist/schema/src/builder/index.js.map +1 -0
- package/dist/schema/src/builder/schema-builder.d.ts +54 -0
- package/dist/schema/src/builder/schema-builder.d.ts.map +1 -0
- package/dist/schema/src/builder/schema-builder.js +144 -0
- package/dist/schema/src/builder/schema-builder.js.map +1 -0
- package/dist/schema/src/index.d.ts +3 -0
- package/dist/schema/src/index.d.ts.map +1 -0
- package/dist/schema/src/index.js +3 -0
- package/dist/schema/src/index.js.map +1 -0
- package/dist/shared-types/src/admin.d.ts +101 -0
- package/dist/shared-types/src/admin.d.ts.map +1 -0
- package/dist/shared-types/src/admin.js +3 -0
- package/dist/shared-types/src/admin.js.map +1 -0
- package/dist/shared-types/src/auth.d.ts +27 -0
- package/dist/shared-types/src/auth.d.ts.map +1 -0
- package/dist/shared-types/src/auth.js +2 -0
- package/dist/shared-types/src/auth.js.map +1 -0
- package/dist/shared-types/src/index.d.ts +5 -0
- package/dist/shared-types/src/index.d.ts.map +1 -0
- package/dist/shared-types/src/index.js +5 -0
- package/dist/shared-types/src/index.js.map +1 -0
- package/dist/shared-types/src/schema.d.ts +34 -0
- package/dist/shared-types/src/schema.d.ts.map +1 -0
- package/dist/shared-types/src/schema.js +2 -0
- package/dist/shared-types/src/schema.js.map +1 -0
- package/dist/shared-types/src/sync.d.ts +37 -0
- package/dist/shared-types/src/sync.d.ts.map +1 -0
- package/dist/shared-types/src/sync.js +2 -0
- package/dist/shared-types/src/sync.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// Generate TypeScript SDK from schema
|
|
2
|
+
/**
|
|
3
|
+
* Convert FieldType to TypeScript type
|
|
4
|
+
*/
|
|
5
|
+
function fieldTypeToTS(field) {
|
|
6
|
+
switch (field.type) {
|
|
7
|
+
case 'string':
|
|
8
|
+
return 'string';
|
|
9
|
+
case 'integer':
|
|
10
|
+
return 'number';
|
|
11
|
+
case 'number':
|
|
12
|
+
return 'number';
|
|
13
|
+
case 'boolean':
|
|
14
|
+
return 'boolean';
|
|
15
|
+
case 'timestamp':
|
|
16
|
+
return 'number';
|
|
17
|
+
case 'text':
|
|
18
|
+
return 'string';
|
|
19
|
+
case 'json':
|
|
20
|
+
return 'any';
|
|
21
|
+
case 'reference':
|
|
22
|
+
return 'string';
|
|
23
|
+
default:
|
|
24
|
+
return 'unknown';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Generate TypeScript entity type
|
|
29
|
+
*/
|
|
30
|
+
function generateEntityType(entityName, entity) {
|
|
31
|
+
const lines = [];
|
|
32
|
+
lines.push(`export interface ${capitalize(entityName)} {`);
|
|
33
|
+
for (const [fieldName, field] of Object.entries(entity.fields)) {
|
|
34
|
+
const tsType = fieldTypeToTS(field);
|
|
35
|
+
const optional = !field.required && !field.primary ? '?' : '';
|
|
36
|
+
lines.push(` ${fieldName}${optional}: ${tsType};`);
|
|
37
|
+
}
|
|
38
|
+
lines.push('}');
|
|
39
|
+
lines.push('');
|
|
40
|
+
// Create input type (for mutations)
|
|
41
|
+
lines.push(`export interface Create${capitalize(entityName)}Input {`);
|
|
42
|
+
for (const [fieldName, field] of Object.entries(entity.fields)) {
|
|
43
|
+
// Skip generated fields
|
|
44
|
+
if (fieldName === 'id' || fieldName === 'createdAt' || fieldName === 'updatedAt') {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const tsType = fieldTypeToTS(field);
|
|
48
|
+
const optional = !field.required ? '?' : '';
|
|
49
|
+
lines.push(` ${fieldName}${optional}: ${tsType};`);
|
|
50
|
+
}
|
|
51
|
+
lines.push('}');
|
|
52
|
+
lines.push('');
|
|
53
|
+
// Create update type
|
|
54
|
+
lines.push(`export interface Update${capitalize(entityName)}Input {`);
|
|
55
|
+
for (const [fieldName, field] of Object.entries(entity.fields)) {
|
|
56
|
+
// Skip generated and primary fields
|
|
57
|
+
if (fieldName === 'id' || fieldName === 'createdAt' || fieldName === 'updatedAt') {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
const tsType = fieldTypeToTS(field);
|
|
61
|
+
lines.push(` ${fieldName}?: ${tsType};`);
|
|
62
|
+
}
|
|
63
|
+
lines.push('}');
|
|
64
|
+
lines.push('');
|
|
65
|
+
return lines.join('\n');
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Generate TypeScript SDK file
|
|
69
|
+
*/
|
|
70
|
+
export function generateSDK(schema) {
|
|
71
|
+
const lines = [];
|
|
72
|
+
lines.push('// Auto-generated SDK types from schema');
|
|
73
|
+
lines.push('// DO NOT EDIT - regenerate with: npx edgebase generate');
|
|
74
|
+
lines.push('');
|
|
75
|
+
// Generate types for each entity
|
|
76
|
+
for (const [entityName, entity] of Object.entries(schema.entities)) {
|
|
77
|
+
lines.push(generateEntityType(entityName, entity));
|
|
78
|
+
}
|
|
79
|
+
// Generate hook types
|
|
80
|
+
lines.push('// Hook signatures (for reference, implement in platform-specific SDK)');
|
|
81
|
+
lines.push('');
|
|
82
|
+
for (const entityName of Object.keys(schema.entities)) {
|
|
83
|
+
const capitalized = capitalize(entityName);
|
|
84
|
+
lines.push(`// export function use${capitalized}(query?: any): {`);
|
|
85
|
+
lines.push(`// data: ${capitalized}[] | null;`);
|
|
86
|
+
lines.push(`// loading: boolean;`);
|
|
87
|
+
lines.push(`// error: Error | null;`);
|
|
88
|
+
lines.push(`// }`);
|
|
89
|
+
lines.push('');
|
|
90
|
+
lines.push(`// export function use${capitalized}Mutation(): {`);
|
|
91
|
+
lines.push(`// create: (data: Create${capitalized}Input) => Promise<${capitalized}>;`);
|
|
92
|
+
lines.push(`// update: (id: string, data: Update${capitalized}Input) => Promise<${capitalized}>;`);
|
|
93
|
+
lines.push(`// delete: (id: string) => Promise<void>;`);
|
|
94
|
+
lines.push(`// }`);
|
|
95
|
+
lines.push('');
|
|
96
|
+
}
|
|
97
|
+
return lines.join('\n');
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Capitalize first letter
|
|
101
|
+
*/
|
|
102
|
+
function capitalize(str) {
|
|
103
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=sdk-ts-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-ts-generator.js","sourceRoot":"","sources":["../../../../src/generators/sdk-ts-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../schema/src/builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,YAAY,EACZ,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,SAAS,GACV,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../schema/src/builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,YAAY,EACZ,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,SAAS,GACV,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { EntitySchema, FieldType, AccessRules, DatabaseSchema, FieldTypeValue } from '@edgebasejs/types';
|
|
2
|
+
/**
|
|
3
|
+
* Field type builder
|
|
4
|
+
*/
|
|
5
|
+
export declare class FieldBuilder {
|
|
6
|
+
private config;
|
|
7
|
+
constructor(type: FieldTypeValue);
|
|
8
|
+
required(): this;
|
|
9
|
+
optional(): this;
|
|
10
|
+
primary(): this;
|
|
11
|
+
default(value: any): this;
|
|
12
|
+
reference(tableName: string): this;
|
|
13
|
+
build(): FieldType;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Field type creators
|
|
17
|
+
*/
|
|
18
|
+
export declare function string(): FieldBuilder;
|
|
19
|
+
export declare function integer(): FieldBuilder;
|
|
20
|
+
export declare function boolean(): FieldBuilder;
|
|
21
|
+
export declare function number(): FieldBuilder;
|
|
22
|
+
export declare function text(): FieldBuilder;
|
|
23
|
+
export declare function timestamp(): FieldBuilder;
|
|
24
|
+
export declare function json(): FieldBuilder;
|
|
25
|
+
export declare function reference(tableName: string): FieldBuilder;
|
|
26
|
+
/**
|
|
27
|
+
* Entity builder
|
|
28
|
+
*/
|
|
29
|
+
export declare class EntityBuilder {
|
|
30
|
+
private schema;
|
|
31
|
+
constructor();
|
|
32
|
+
field(name: string, builder: FieldBuilder): this;
|
|
33
|
+
accessRules(rules: AccessRules): this;
|
|
34
|
+
index(fields: string[], unique?: boolean): this;
|
|
35
|
+
build(): EntitySchema;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Schema definition builder
|
|
39
|
+
*/
|
|
40
|
+
export declare class SchemaBuilder {
|
|
41
|
+
private schema;
|
|
42
|
+
constructor();
|
|
43
|
+
entity(name: string, builder: (builder: EntityBuilder) => void): this;
|
|
44
|
+
build(): DatabaseSchema;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Main API: defineSchema
|
|
48
|
+
*/
|
|
49
|
+
export declare function defineSchema(fn: (builder: SchemaBuilder) => void): DatabaseSchema;
|
|
50
|
+
/**
|
|
51
|
+
* Validate schema
|
|
52
|
+
*/
|
|
53
|
+
export declare function validateSchema(schema: DatabaseSchema): void;
|
|
54
|
+
//# sourceMappingURL=schema-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-builder.d.ts","sourceRoot":"","sources":["../../../../../schema/src/builder/schema-builder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,WAAW,EACX,cAAc,EACd,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAY;gBAEd,IAAI,EAAE,cAAc;IAOhC,QAAQ,IAAI,IAAI;IAKhB,QAAQ,IAAI,IAAI;IAKhB,OAAO,IAAI,IAAI;IAMf,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAKzB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKlC,KAAK,IAAI,SAAS;CAGnB;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,YAAY,CAErC;AAED,wBAAgB,OAAO,IAAI,YAAY,CAEtC;AAED,wBAAgB,OAAO,IAAI,YAAY,CAEtC;AAED,wBAAgB,MAAM,IAAI,YAAY,CAErC;AAED,wBAAgB,IAAI,IAAI,YAAY,CAEnC;AAED,wBAAgB,SAAS,IAAI,YAAY,CAExC;AAED,wBAAgB,IAAI,IAAI,YAAY,CAEnC;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAIzD;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;;IAQ7B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAKhD,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAKrC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,UAAQ,GAAG,IAAI;IAQ7C,KAAK,IAAI,YAAY;CAGtB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAiB;;IAQ/B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,IAAI;IAOrE,KAAK,IAAI,cAAc;CAGxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,GAAG,cAAc,CAIjF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAuB3D"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
// Schema DSL builder for defining database entities
|
|
2
|
+
/**
|
|
3
|
+
* Field type builder
|
|
4
|
+
*/
|
|
5
|
+
export class FieldBuilder {
|
|
6
|
+
constructor(type) {
|
|
7
|
+
this.config = {
|
|
8
|
+
type,
|
|
9
|
+
required: false,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
required() {
|
|
13
|
+
this.config.required = true;
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
optional() {
|
|
17
|
+
this.config.required = false;
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
primary() {
|
|
21
|
+
this.config.primary = true;
|
|
22
|
+
this.config.required = true;
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
default(value) {
|
|
26
|
+
this.config.default = value;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
reference(tableName) {
|
|
30
|
+
this.config.reference = tableName;
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
build() {
|
|
34
|
+
return this.config;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Field type creators
|
|
39
|
+
*/
|
|
40
|
+
export function string() {
|
|
41
|
+
return new FieldBuilder('string');
|
|
42
|
+
}
|
|
43
|
+
export function integer() {
|
|
44
|
+
return new FieldBuilder('integer');
|
|
45
|
+
}
|
|
46
|
+
export function boolean() {
|
|
47
|
+
return new FieldBuilder('boolean');
|
|
48
|
+
}
|
|
49
|
+
export function number() {
|
|
50
|
+
return new FieldBuilder('number');
|
|
51
|
+
}
|
|
52
|
+
export function text() {
|
|
53
|
+
return new FieldBuilder('text');
|
|
54
|
+
}
|
|
55
|
+
export function timestamp() {
|
|
56
|
+
return new FieldBuilder('timestamp');
|
|
57
|
+
}
|
|
58
|
+
export function json() {
|
|
59
|
+
return new FieldBuilder('json');
|
|
60
|
+
}
|
|
61
|
+
export function reference(tableName) {
|
|
62
|
+
const builder = new FieldBuilder('reference');
|
|
63
|
+
builder.reference(tableName);
|
|
64
|
+
return builder;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Entity builder
|
|
68
|
+
*/
|
|
69
|
+
export class EntityBuilder {
|
|
70
|
+
constructor() {
|
|
71
|
+
this.schema = {
|
|
72
|
+
fields: {},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
field(name, builder) {
|
|
76
|
+
this.schema.fields[name] = builder.build();
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
accessRules(rules) {
|
|
80
|
+
this.schema.accessRules = rules;
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
index(fields, unique = false) {
|
|
84
|
+
if (!this.schema.indexes) {
|
|
85
|
+
this.schema.indexes = [];
|
|
86
|
+
}
|
|
87
|
+
this.schema.indexes.push({ fields, unique });
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
90
|
+
build() {
|
|
91
|
+
return this.schema;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Schema definition builder
|
|
96
|
+
*/
|
|
97
|
+
export class SchemaBuilder {
|
|
98
|
+
constructor() {
|
|
99
|
+
this.schema = {
|
|
100
|
+
entities: {},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
entity(name, builder) {
|
|
104
|
+
const entityBuilder = new EntityBuilder();
|
|
105
|
+
builder(entityBuilder);
|
|
106
|
+
this.schema.entities[name] = entityBuilder.build();
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
build() {
|
|
110
|
+
return this.schema;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Main API: defineSchema
|
|
115
|
+
*/
|
|
116
|
+
export function defineSchema(fn) {
|
|
117
|
+
const builder = new SchemaBuilder();
|
|
118
|
+
fn(builder);
|
|
119
|
+
return builder.build();
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Validate schema
|
|
123
|
+
*/
|
|
124
|
+
export function validateSchema(schema) {
|
|
125
|
+
if (!schema.entities || Object.keys(schema.entities).length === 0) {
|
|
126
|
+
throw new Error('Schema must define at least one entity');
|
|
127
|
+
}
|
|
128
|
+
for (const [entityName, entity] of Object.entries(schema.entities)) {
|
|
129
|
+
// Check for primary key
|
|
130
|
+
const hasPrimaryKey = Object.values(entity.fields).some((f) => f.primary);
|
|
131
|
+
if (!hasPrimaryKey && entityName !== 'users' && entityName !== 'refresh_tokens') {
|
|
132
|
+
throw new Error(`Entity '${entityName}' must have a primary key field`);
|
|
133
|
+
}
|
|
134
|
+
// Validate field references
|
|
135
|
+
for (const [fieldName, field] of Object.entries(entity.fields)) {
|
|
136
|
+
if (field.reference) {
|
|
137
|
+
if (!schema.entities[field.reference] && field.reference !== 'users') {
|
|
138
|
+
throw new Error(`Field '${entityName}.${fieldName}' references unknown entity '${field.reference}'`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=schema-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-builder.js","sourceRoot":"","sources":["../../../../../schema/src/builder/schema-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../schema/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,SAAS,GACV,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../schema/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,MAAM,EACN,OAAO,EACP,OAAO,EACP,MAAM,EACN,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,SAAS,GACV,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
export type AdminRole = 'super_admin' | 'admin' | 'viewer';
|
|
2
|
+
export interface Admin {
|
|
3
|
+
id: string;
|
|
4
|
+
email: string;
|
|
5
|
+
role: AdminRole;
|
|
6
|
+
isActive: boolean;
|
|
7
|
+
createdAt: number;
|
|
8
|
+
updatedAt: number;
|
|
9
|
+
}
|
|
10
|
+
export interface AdminLoginRequest {
|
|
11
|
+
email: string;
|
|
12
|
+
password: string;
|
|
13
|
+
}
|
|
14
|
+
export interface AdminAuthResponse {
|
|
15
|
+
admin: Admin;
|
|
16
|
+
accessToken: string;
|
|
17
|
+
refreshToken: string;
|
|
18
|
+
expiresIn: number;
|
|
19
|
+
}
|
|
20
|
+
export interface PaginatedResponse<T> {
|
|
21
|
+
data: T[];
|
|
22
|
+
pagination: {
|
|
23
|
+
page: number;
|
|
24
|
+
pageSize: number;
|
|
25
|
+
total: number;
|
|
26
|
+
totalPages: number;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export type ActivityAction = 'create' | 'read' | 'update' | 'delete' | 'login' | 'logout';
|
|
30
|
+
export type ActivityEntityType = 'user' | 'admin' | 'system' | 'database';
|
|
31
|
+
export interface ActivityLogEntry {
|
|
32
|
+
id: string;
|
|
33
|
+
adminId: string;
|
|
34
|
+
adminEmail?: string;
|
|
35
|
+
action: ActivityAction;
|
|
36
|
+
entityType: ActivityEntityType;
|
|
37
|
+
entityId?: string;
|
|
38
|
+
details: Record<string, any>;
|
|
39
|
+
ipAddress: string;
|
|
40
|
+
createdAt: number;
|
|
41
|
+
}
|
|
42
|
+
export interface ActivityLogFilter {
|
|
43
|
+
adminId?: string;
|
|
44
|
+
entityType?: ActivityEntityType;
|
|
45
|
+
action?: ActivityAction;
|
|
46
|
+
dateFrom?: number;
|
|
47
|
+
dateTo?: number;
|
|
48
|
+
page?: number;
|
|
49
|
+
pageSize?: number;
|
|
50
|
+
}
|
|
51
|
+
export interface TableInfo {
|
|
52
|
+
name: string;
|
|
53
|
+
rowCount: number;
|
|
54
|
+
createdAt?: number;
|
|
55
|
+
}
|
|
56
|
+
export interface ColumnDefinition {
|
|
57
|
+
name: string;
|
|
58
|
+
type: string;
|
|
59
|
+
nullable: boolean;
|
|
60
|
+
primaryKey: boolean;
|
|
61
|
+
defaultValue?: any;
|
|
62
|
+
}
|
|
63
|
+
export interface TableSchema {
|
|
64
|
+
name: string;
|
|
65
|
+
columns: ColumnDefinition[];
|
|
66
|
+
primaryKey: string[];
|
|
67
|
+
createdAt?: number;
|
|
68
|
+
}
|
|
69
|
+
export interface TableDataResponse {
|
|
70
|
+
tableName: string;
|
|
71
|
+
data: Record<string, any>[];
|
|
72
|
+
columns: ColumnDefinition[];
|
|
73
|
+
pagination: {
|
|
74
|
+
page: number;
|
|
75
|
+
pageSize: number;
|
|
76
|
+
total: number;
|
|
77
|
+
totalPages: number;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export interface UserDetail extends Record<string, any> {
|
|
81
|
+
id: string;
|
|
82
|
+
email: string;
|
|
83
|
+
createdAt: number;
|
|
84
|
+
updatedAt: number;
|
|
85
|
+
}
|
|
86
|
+
export interface AdminCreateRequest {
|
|
87
|
+
email: string;
|
|
88
|
+
password: string;
|
|
89
|
+
role: AdminRole;
|
|
90
|
+
}
|
|
91
|
+
export interface AdminUpdateRequest {
|
|
92
|
+
email?: string;
|
|
93
|
+
role?: AdminRole;
|
|
94
|
+
isActive?: boolean;
|
|
95
|
+
}
|
|
96
|
+
export interface ErrorResponse {
|
|
97
|
+
code: string;
|
|
98
|
+
message: string;
|
|
99
|
+
details?: Record<string, any>;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=admin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../../../shared-types/src/admin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin.js","sourceRoot":"","sources":["../../../../shared-types/src/admin.ts"],"names":[],"mappings":"AAAA,sBAAsB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface User {
|
|
2
|
+
id: string;
|
|
3
|
+
email: string;
|
|
4
|
+
createdAt: number;
|
|
5
|
+
updatedAt: number;
|
|
6
|
+
}
|
|
7
|
+
export interface AuthTokens {
|
|
8
|
+
accessToken: string;
|
|
9
|
+
refreshToken: string;
|
|
10
|
+
expiresIn: number;
|
|
11
|
+
}
|
|
12
|
+
export interface LoginRequest {
|
|
13
|
+
email: string;
|
|
14
|
+
password: string;
|
|
15
|
+
}
|
|
16
|
+
export interface RegisterRequest {
|
|
17
|
+
email: string;
|
|
18
|
+
password: string;
|
|
19
|
+
}
|
|
20
|
+
export interface RefreshTokenRequest {
|
|
21
|
+
refreshToken: string;
|
|
22
|
+
}
|
|
23
|
+
export interface AuthResponse {
|
|
24
|
+
user: User;
|
|
25
|
+
tokens: AuthTokens;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../shared-types/src/auth.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../shared-types/src/auth.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../shared-types/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../shared-types/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type FieldTypeValue = 'string' | 'integer' | 'number' | 'boolean' | 'timestamp' | 'text' | 'json' | 'reference';
|
|
2
|
+
export interface FieldType {
|
|
3
|
+
type: FieldTypeValue;
|
|
4
|
+
required: boolean;
|
|
5
|
+
primary?: boolean;
|
|
6
|
+
reference?: string;
|
|
7
|
+
default?: string | number | boolean;
|
|
8
|
+
description?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface AccessRules {
|
|
11
|
+
create?: (user: any, data: any) => boolean;
|
|
12
|
+
read?: (user: any, data: any) => boolean;
|
|
13
|
+
update?: (user: any, existing: any, updates?: any) => boolean;
|
|
14
|
+
delete?: (user: any, data: any) => boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface EntitySchema {
|
|
17
|
+
fields: Record<string, FieldType>;
|
|
18
|
+
accessRules?: AccessRules;
|
|
19
|
+
indexes?: Array<{
|
|
20
|
+
fields: string[];
|
|
21
|
+
unique?: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
export interface DatabaseSchema {
|
|
25
|
+
entities: Record<string, EntitySchema>;
|
|
26
|
+
}
|
|
27
|
+
export interface Migration {
|
|
28
|
+
version: number;
|
|
29
|
+
name: string;
|
|
30
|
+
up: string;
|
|
31
|
+
down?: string;
|
|
32
|
+
appliedAt?: number;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../shared-types/src/schema.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,GACT,WAAW,GACX,MAAM,GACN,MAAM,GACN,WAAW,CAAC;AAEhB,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IAC3C,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;IACzC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC;IAC9D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../shared-types/src/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface SyncRequest {
|
|
2
|
+
lastSyncTimestamp: number | null;
|
|
3
|
+
changes: Array<{
|
|
4
|
+
entity: string;
|
|
5
|
+
operation: 'create' | 'update' | 'delete';
|
|
6
|
+
id: string;
|
|
7
|
+
data: Record<string, any>;
|
|
8
|
+
clientTimestamp: number;
|
|
9
|
+
version: number;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
export interface SyncResponse {
|
|
13
|
+
serverTimestamp: number;
|
|
14
|
+
changes: Array<{
|
|
15
|
+
entity: string;
|
|
16
|
+
operation: 'create' | 'update' | 'delete';
|
|
17
|
+
id: string;
|
|
18
|
+
data: Record<string, any>;
|
|
19
|
+
serverTimestamp: number;
|
|
20
|
+
version: number;
|
|
21
|
+
}>;
|
|
22
|
+
conflicts: Array<{
|
|
23
|
+
entity: string;
|
|
24
|
+
id: string;
|
|
25
|
+
clientVersion: number;
|
|
26
|
+
serverVersion: number;
|
|
27
|
+
serverData: Record<string, any>;
|
|
28
|
+
}>;
|
|
29
|
+
errors: Array<{
|
|
30
|
+
entity: string;
|
|
31
|
+
id: string;
|
|
32
|
+
operation: string;
|
|
33
|
+
error: string;
|
|
34
|
+
code: 'ACCESS_DENIED' | 'VALIDATION_ERROR' | 'NOT_FOUND';
|
|
35
|
+
}>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../shared-types/src/sync.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC1C,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QAC1C,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,SAAS,EAAE,KAAK,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACjC,CAAC,CAAC;IACH,MAAM,EAAE,KAAK,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,eAAe,GAAG,kBAAkB,GAAG,WAAW,CAAC;KAC1D,CAAC,CAAC;CACJ"}
|