@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.
Files changed (84) hide show
  1. package/LICENSE +6 -0
  2. package/dist/common/src/collections/CollectionRegistry.d.ts +48 -0
  3. package/dist/common/src/collections/index.d.ts +1 -0
  4. package/dist/common/src/data/buildRebaseData.d.ts +14 -0
  5. package/dist/common/src/index.d.ts +3 -0
  6. package/dist/common/src/util/builders.d.ts +57 -0
  7. package/dist/common/src/util/callbacks.d.ts +6 -0
  8. package/dist/common/src/util/collections.d.ts +11 -0
  9. package/dist/common/src/util/common.d.ts +2 -0
  10. package/dist/common/src/util/conditions.d.ts +26 -0
  11. package/dist/common/src/util/entities.d.ts +36 -0
  12. package/dist/common/src/util/enums.d.ts +3 -0
  13. package/dist/common/src/util/index.d.ts +16 -0
  14. package/dist/common/src/util/navigation_from_path.d.ts +34 -0
  15. package/dist/common/src/util/navigation_utils.d.ts +20 -0
  16. package/dist/common/src/util/parent_references_from_path.d.ts +6 -0
  17. package/dist/common/src/util/paths.d.ts +14 -0
  18. package/dist/common/src/util/permissions.d.ts +5 -0
  19. package/dist/common/src/util/references.d.ts +2 -0
  20. package/dist/common/src/util/relations.d.ts +12 -0
  21. package/dist/common/src/util/resolutions.d.ts +72 -0
  22. package/dist/common/src/util/storage.d.ts +24 -0
  23. package/dist/index.cjs +211 -0
  24. package/dist/index.cjs.map +1 -0
  25. package/dist/index.es.js +208 -0
  26. package/dist/index.es.js.map +1 -0
  27. package/dist/sdk-generator/src/generate-types.d.ts +2 -0
  28. package/dist/sdk-generator/src/index.d.ts +19 -0
  29. package/dist/sdk-generator/src/utils.d.ts +22 -0
  30. package/dist/types/src/controllers/analytics_controller.d.ts +7 -0
  31. package/dist/types/src/controllers/auth.d.ts +117 -0
  32. package/dist/types/src/controllers/client.d.ts +58 -0
  33. package/dist/types/src/controllers/collection_registry.d.ts +44 -0
  34. package/dist/types/src/controllers/customization_controller.d.ts +54 -0
  35. package/dist/types/src/controllers/data.d.ts +141 -0
  36. package/dist/types/src/controllers/data_driver.d.ts +168 -0
  37. package/dist/types/src/controllers/database_admin.d.ts +11 -0
  38. package/dist/types/src/controllers/dialogs_controller.d.ts +36 -0
  39. package/dist/types/src/controllers/effective_role.d.ts +4 -0
  40. package/dist/types/src/controllers/index.d.ts +17 -0
  41. package/dist/types/src/controllers/local_config_persistence.d.ts +20 -0
  42. package/dist/types/src/controllers/navigation.d.ts +213 -0
  43. package/dist/types/src/controllers/registry.d.ts +51 -0
  44. package/dist/types/src/controllers/side_dialogs_controller.d.ts +67 -0
  45. package/dist/types/src/controllers/side_entity_controller.d.ts +89 -0
  46. package/dist/types/src/controllers/snackbar.d.ts +24 -0
  47. package/dist/types/src/controllers/storage.d.ts +173 -0
  48. package/dist/types/src/index.d.ts +4 -0
  49. package/dist/types/src/rebase_context.d.ts +101 -0
  50. package/dist/types/src/types/backend.d.ts +533 -0
  51. package/dist/types/src/types/builders.d.ts +14 -0
  52. package/dist/types/src/types/chips.d.ts +5 -0
  53. package/dist/types/src/types/collections.d.ts +812 -0
  54. package/dist/types/src/types/data_source.d.ts +64 -0
  55. package/dist/types/src/types/entities.d.ts +145 -0
  56. package/dist/types/src/types/entity_actions.d.ts +98 -0
  57. package/dist/types/src/types/entity_callbacks.d.ts +173 -0
  58. package/dist/types/src/types/entity_link_builder.d.ts +7 -0
  59. package/dist/types/src/types/entity_overrides.d.ts +9 -0
  60. package/dist/types/src/types/entity_views.d.ts +61 -0
  61. package/dist/types/src/types/export_import.d.ts +21 -0
  62. package/dist/types/src/types/index.d.ts +22 -0
  63. package/dist/types/src/types/locales.d.ts +4 -0
  64. package/dist/types/src/types/modify_collections.d.ts +5 -0
  65. package/dist/types/src/types/plugins.d.ts +225 -0
  66. package/dist/types/src/types/properties.d.ts +1091 -0
  67. package/dist/types/src/types/property_config.d.ts +70 -0
  68. package/dist/types/src/types/relations.d.ts +336 -0
  69. package/dist/types/src/types/slots.d.ts +228 -0
  70. package/dist/types/src/types/translations.d.ts +826 -0
  71. package/dist/types/src/types/user_management_delegate.d.ts +120 -0
  72. package/dist/types/src/types/websockets.d.ts +78 -0
  73. package/dist/types/src/users/index.d.ts +2 -0
  74. package/dist/types/src/users/roles.d.ts +22 -0
  75. package/dist/types/src/users/user.d.ts +46 -0
  76. package/jest.config.cjs +13 -0
  77. package/package.json +51 -0
  78. package/src/generate-types.ts +176 -0
  79. package/src/index.ts +71 -0
  80. package/src/json-logic-js.d.ts +8 -0
  81. package/src/utils.ts +42 -0
  82. package/test/sdk-generator.test.ts +78 -0
  83. package/tsconfig.json +26 -0
  84. 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
+ }));