@rebasepro/sdk-generator 0.0.1-canary.4d4fb3e
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/LICENSE +6 -0
- package/dist/common/src/collections/CollectionRegistry.d.ts +48 -0
- package/dist/common/src/collections/index.d.ts +1 -0
- package/dist/common/src/data/buildRebaseData.d.ts +14 -0
- package/dist/common/src/index.d.ts +3 -0
- package/dist/common/src/util/builders.d.ts +57 -0
- package/dist/common/src/util/callbacks.d.ts +6 -0
- package/dist/common/src/util/collections.d.ts +11 -0
- package/dist/common/src/util/common.d.ts +2 -0
- package/dist/common/src/util/conditions.d.ts +26 -0
- package/dist/common/src/util/entities.d.ts +36 -0
- package/dist/common/src/util/enums.d.ts +3 -0
- package/dist/common/src/util/index.d.ts +16 -0
- package/dist/common/src/util/navigation_from_path.d.ts +34 -0
- package/dist/common/src/util/navigation_utils.d.ts +20 -0
- package/dist/common/src/util/parent_references_from_path.d.ts +6 -0
- package/dist/common/src/util/paths.d.ts +14 -0
- package/dist/common/src/util/permissions.d.ts +5 -0
- package/dist/common/src/util/references.d.ts +2 -0
- package/dist/common/src/util/relations.d.ts +12 -0
- package/dist/common/src/util/resolutions.d.ts +72 -0
- package/dist/common/src/util/storage.d.ts +24 -0
- package/dist/index.cjs +211 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.es.js +208 -0
- package/dist/index.es.js.map +1 -0
- package/dist/sdk-generator/src/generate-types.d.ts +2 -0
- package/dist/sdk-generator/src/index.d.ts +19 -0
- package/dist/sdk-generator/src/utils.d.ts +22 -0
- package/dist/types/src/controllers/analytics_controller.d.ts +7 -0
- package/dist/types/src/controllers/auth.d.ts +117 -0
- package/dist/types/src/controllers/client.d.ts +58 -0
- package/dist/types/src/controllers/collection_registry.d.ts +44 -0
- package/dist/types/src/controllers/customization_controller.d.ts +54 -0
- package/dist/types/src/controllers/data.d.ts +141 -0
- package/dist/types/src/controllers/data_driver.d.ts +168 -0
- package/dist/types/src/controllers/database_admin.d.ts +11 -0
- package/dist/types/src/controllers/dialogs_controller.d.ts +36 -0
- package/dist/types/src/controllers/effective_role.d.ts +4 -0
- package/dist/types/src/controllers/index.d.ts +17 -0
- package/dist/types/src/controllers/local_config_persistence.d.ts +20 -0
- package/dist/types/src/controllers/navigation.d.ts +213 -0
- package/dist/types/src/controllers/registry.d.ts +51 -0
- package/dist/types/src/controllers/side_dialogs_controller.d.ts +67 -0
- package/dist/types/src/controllers/side_entity_controller.d.ts +89 -0
- package/dist/types/src/controllers/snackbar.d.ts +24 -0
- package/dist/types/src/controllers/storage.d.ts +173 -0
- package/dist/types/src/index.d.ts +4 -0
- package/dist/types/src/rebase_context.d.ts +101 -0
- package/dist/types/src/types/backend.d.ts +533 -0
- package/dist/types/src/types/builders.d.ts +14 -0
- package/dist/types/src/types/chips.d.ts +5 -0
- package/dist/types/src/types/collections.d.ts +812 -0
- package/dist/types/src/types/data_source.d.ts +64 -0
- package/dist/types/src/types/entities.d.ts +145 -0
- package/dist/types/src/types/entity_actions.d.ts +98 -0
- package/dist/types/src/types/entity_callbacks.d.ts +173 -0
- package/dist/types/src/types/entity_link_builder.d.ts +7 -0
- package/dist/types/src/types/entity_overrides.d.ts +9 -0
- package/dist/types/src/types/entity_views.d.ts +61 -0
- package/dist/types/src/types/export_import.d.ts +21 -0
- package/dist/types/src/types/index.d.ts +22 -0
- package/dist/types/src/types/locales.d.ts +4 -0
- package/dist/types/src/types/modify_collections.d.ts +5 -0
- package/dist/types/src/types/plugins.d.ts +225 -0
- package/dist/types/src/types/properties.d.ts +1091 -0
- package/dist/types/src/types/property_config.d.ts +70 -0
- package/dist/types/src/types/relations.d.ts +336 -0
- package/dist/types/src/types/slots.d.ts +228 -0
- package/dist/types/src/types/translations.d.ts +826 -0
- package/dist/types/src/types/user_management_delegate.d.ts +120 -0
- package/dist/types/src/types/websockets.d.ts +78 -0
- package/dist/types/src/users/index.d.ts +2 -0
- package/dist/types/src/users/roles.d.ts +22 -0
- package/dist/types/src/users/user.d.ts +46 -0
- package/jest.config.cjs +13 -0
- package/package.json +51 -0
- package/src/generate-types.ts +176 -0
- package/src/index.ts +71 -0
- package/src/json-logic-js.d.ts +8 -0
- package/src/utils.ts +42 -0
- package/test/sdk-generator.test.ts +78 -0
- package/tsconfig.json +26 -0
- package/vite.config.ts +49 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { describe, it, expect } from "@jest/globals";
|
|
2
|
+
import { toPascalCase, toCamelCase, toSafeIdentifier, indent } from "../src/utils";
|
|
3
|
+
import { generateTypedefs } from "../src/generate-types";
|
|
4
|
+
import { generateSDK } from "../src/index";
|
|
5
|
+
import { EntityCollection } from "@rebasepro/types";
|
|
6
|
+
|
|
7
|
+
// ─── Test Fixtures ─────────────────────────────────────────────────
|
|
8
|
+
|
|
9
|
+
const authorsCollection = {
|
|
10
|
+
name: "Authors",
|
|
11
|
+
singularName: "Author",
|
|
12
|
+
slug: "authors",
|
|
13
|
+
table: "authors",
|
|
14
|
+
properties: {
|
|
15
|
+
id: { name: "ID", type: "number", isId: "increment", validation: { required: true } },
|
|
16
|
+
name: { name: "Name", type: "string", validation: { required: true } },
|
|
17
|
+
email: { name: "Email", type: "string" },
|
|
18
|
+
},
|
|
19
|
+
} as unknown as EntityCollection;
|
|
20
|
+
|
|
21
|
+
describe("Utils", () => {
|
|
22
|
+
describe("toPascalCase", () => {
|
|
23
|
+
it("converts snake_case to PascalCase", () => {
|
|
24
|
+
expect(toPascalCase("private_notes")).toBe("PrivateNotes");
|
|
25
|
+
});
|
|
26
|
+
it("handles already PascalCase input", () => {
|
|
27
|
+
expect(toPascalCase("TestEntities")).toBe("Testentities");
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
describe("toCamelCase", () => {
|
|
32
|
+
it("converts snake_case to camelCase", () => {
|
|
33
|
+
expect(toCamelCase("private_notes")).toBe("privateNotes");
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
describe("toSafeIdentifier", () => {
|
|
38
|
+
it("converts slugs to camelCase", () => {
|
|
39
|
+
expect(toSafeIdentifier("private-notes")).toBe("privateNotes");
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
describe("generateTypedefs", () => {
|
|
45
|
+
it("generates a typescript interface for a collection", () => {
|
|
46
|
+
const ts = generateTypedefs([authorsCollection]);
|
|
47
|
+
|
|
48
|
+
expect(ts).toContain("export interface Database {");
|
|
49
|
+
expect(ts).toContain("authors: {");
|
|
50
|
+
|
|
51
|
+
// Row Type
|
|
52
|
+
expect(ts).toContain("Row: {");
|
|
53
|
+
expect(ts).toContain("id: number;");
|
|
54
|
+
expect(ts).toContain("name: string;");
|
|
55
|
+
expect(ts).toContain("email?: string;");
|
|
56
|
+
|
|
57
|
+
// Insert Type
|
|
58
|
+
expect(ts).toContain("Insert: {");
|
|
59
|
+
expect(ts).toContain("id?: number;");
|
|
60
|
+
expect(ts).toContain("name: string;");
|
|
61
|
+
expect(ts).toContain("email?: string;");
|
|
62
|
+
|
|
63
|
+
// Update Type
|
|
64
|
+
expect(ts).toContain("Update: {");
|
|
65
|
+
expect(ts).toContain("id?: number;");
|
|
66
|
+
expect(ts).toContain("name?: string;");
|
|
67
|
+
expect(ts).toContain("email?: string;");
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
describe("generateSDK", () => {
|
|
72
|
+
it("returns an array of generated files including database.types.ts and README.md", () => {
|
|
73
|
+
const files = generateSDK([authorsCollection]);
|
|
74
|
+
expect(files.length).toBe(2);
|
|
75
|
+
expect(files[0].path).toBe("database.types.ts");
|
|
76
|
+
expect(files[1].path).toBe("README.md");
|
|
77
|
+
});
|
|
78
|
+
});
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ESNext",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"lib": ["ESNext"],
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"emitDeclarationOnly": true,
|
|
8
|
+
"declarationDir": "./dist",
|
|
9
|
+
"outDir": "./dist",
|
|
10
|
+
"strict": true,
|
|
11
|
+
"esModuleInterop": true,
|
|
12
|
+
"skipLibCheck": true,
|
|
13
|
+
"forceConsistentCasingInFileNames": true,
|
|
14
|
+
"moduleResolution": "bundler",
|
|
15
|
+
"resolveJsonModule": true,
|
|
16
|
+
"jsx": "react-jsx",
|
|
17
|
+
"baseUrl": ".",
|
|
18
|
+
"paths": {
|
|
19
|
+
"@rebasepro/types": ["../types/src"],
|
|
20
|
+
"@rebasepro/common": ["../common/src"],
|
|
21
|
+
"@rebasepro/client": ["../client/src"]
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"include": ["src/**/*"],
|
|
25
|
+
"exclude": ["node_modules", "dist"]
|
|
26
|
+
}
|
package/vite.config.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// @ts-ignore
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { defineConfig } from "vite";
|
|
4
|
+
|
|
5
|
+
const isExternal = (id: string) => {
|
|
6
|
+
if (id.startsWith(".") || path.isAbsolute(id)) return false;
|
|
7
|
+
|
|
8
|
+
return true;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export default defineConfig(() => ({
|
|
12
|
+
esbuild: {
|
|
13
|
+
logOverride: { "this-is-undefined-in-esm": "silent" }
|
|
14
|
+
},
|
|
15
|
+
build: {
|
|
16
|
+
lib: {
|
|
17
|
+
entry: path.resolve(__dirname, "src/index.ts"),
|
|
18
|
+
name: "RebaseSDKGenerator",
|
|
19
|
+
fileName: (format) => {
|
|
20
|
+
if (format === "es")
|
|
21
|
+
return `index.${format}.js`;
|
|
22
|
+
else if (format === "umd")
|
|
23
|
+
return `index.cjs`;
|
|
24
|
+
throw new Error("Unexpected format");
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
minify: false,
|
|
28
|
+
target: "ESNEXT",
|
|
29
|
+
sourcemap: true,
|
|
30
|
+
rollupOptions: {
|
|
31
|
+
external: isExternal,
|
|
32
|
+
output: {
|
|
33
|
+
globals: {
|
|
34
|
+
"json-logic-js": "jsonLogic",
|
|
35
|
+
"fast-equals": "fastEquals",
|
|
36
|
+
"lodash/cloneDeep.js": "cloneDeep"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
resolve: {
|
|
42
|
+
alias: {
|
|
43
|
+
"@rebasepro/client": path.resolve(__dirname, "../client/src"),
|
|
44
|
+
"@rebasepro/common": path.resolve(__dirname, "../common/src"),
|
|
45
|
+
"@rebasepro/types": path.resolve(__dirname, "../types/src"),
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
plugins: []
|
|
49
|
+
}));
|