@wordrhyme/db 0.1.0-alpha.14

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 (98) hide show
  1. package/README.md +66 -0
  2. package/dist/acl-policy.d.ts +86 -0
  3. package/dist/acl-policy.d.ts.map +1 -0
  4. package/dist/chunk-3TTVLSF5.js +3390 -0
  5. package/dist/chunk-3TTVLSF5.js.map +1 -0
  6. package/dist/chunk-DCJM6GN5.js +264 -0
  7. package/dist/chunk-DCJM6GN5.js.map +1 -0
  8. package/dist/chunk-KWWJRUIK.js +54 -0
  9. package/dist/chunk-KWWJRUIK.js.map +1 -0
  10. package/dist/chunk-XAIEVBMU.js +212 -0
  11. package/dist/chunk-XAIEVBMU.js.map +1 -0
  12. package/dist/delete-policy.d.ts +11 -0
  13. package/dist/delete-policy.d.ts.map +1 -0
  14. package/dist/index.d.ts +31 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +545 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/plugin.d.ts +110 -0
  19. package/dist/plugin.d.ts.map +1 -0
  20. package/dist/plugin.js +21 -0
  21. package/dist/plugin.js.map +1 -0
  22. package/dist/relations/index.d.ts +105 -0
  23. package/dist/relations/index.d.ts.map +1 -0
  24. package/dist/relations/index.js +9 -0
  25. package/dist/relations/index.js.map +1 -0
  26. package/dist/schema/action-journal.d.ts +386 -0
  27. package/dist/schema/action-journal.d.ts.map +1 -0
  28. package/dist/schema/audit-archive.d.ts +934 -0
  29. package/dist/schema/audit-archive.d.ts.map +1 -0
  30. package/dist/schema/audit-events.d.ts +502 -0
  31. package/dist/schema/audit-events.d.ts.map +1 -0
  32. package/dist/schema/audit-logs.d.ts +418 -0
  33. package/dist/schema/audit-logs.d.ts.map +1 -0
  34. package/dist/schema/auth.d.ts +2727 -0
  35. package/dist/schema/auth.d.ts.map +1 -0
  36. package/dist/schema/billing.d.ts +3969 -0
  37. package/dist/schema/billing.d.ts.map +1 -0
  38. package/dist/schema/common.d.ts +87 -0
  39. package/dist/schema/common.d.ts.map +1 -0
  40. package/dist/schema/currency.d.ts +791 -0
  41. package/dist/schema/currency.d.ts.map +1 -0
  42. package/dist/schema/entity-extensions.d.ts +314 -0
  43. package/dist/schema/entity-extensions.d.ts.map +1 -0
  44. package/dist/schema/entity-ownerships.d.ts +862 -0
  45. package/dist/schema/entity-ownerships.d.ts.map +1 -0
  46. package/dist/schema/feature-flags.d.ts +770 -0
  47. package/dist/schema/feature-flags.d.ts.map +1 -0
  48. package/dist/schema/geo.d.ts +824 -0
  49. package/dist/schema/geo.d.ts.map +1 -0
  50. package/dist/schema/i18n.d.ts +1109 -0
  51. package/dist/schema/i18n.d.ts.map +1 -0
  52. package/dist/schema/index.d.ts +43 -0
  53. package/dist/schema/index.d.ts.map +1 -0
  54. package/dist/schema/index.js +507 -0
  55. package/dist/schema/index.js.map +1 -0
  56. package/dist/schema/media.d.ts +1147 -0
  57. package/dist/schema/media.d.ts.map +1 -0
  58. package/dist/schema/menus.d.ts +636 -0
  59. package/dist/schema/menus.d.ts.map +1 -0
  60. package/dist/schema/notification-channels.d.ts +288 -0
  61. package/dist/schema/notification-channels.d.ts.map +1 -0
  62. package/dist/schema/notification-preferences.d.ts +300 -0
  63. package/dist/schema/notification-preferences.d.ts.map +1 -0
  64. package/dist/schema/notification-templates.d.ts +476 -0
  65. package/dist/schema/notification-templates.d.ts.map +1 -0
  66. package/dist/schema/notifications.d.ts +1139 -0
  67. package/dist/schema/notifications.d.ts.map +1 -0
  68. package/dist/schema/permission-fields.d.ts +96 -0
  69. package/dist/schema/permission-fields.d.ts.map +1 -0
  70. package/dist/schema/permissions.d.ts +173 -0
  71. package/dist/schema/permissions.d.ts.map +1 -0
  72. package/dist/schema/plugin-migrations.d.ts +204 -0
  73. package/dist/schema/plugin-migrations.d.ts.map +1 -0
  74. package/dist/schema/plugins.d.ts +1977 -0
  75. package/dist/schema/plugins.d.ts.map +1 -0
  76. package/dist/schema/relationships.d.ts +221 -0
  77. package/dist/schema/relationships.d.ts.map +1 -0
  78. package/dist/schema/role-permissions.d.ts +305 -0
  79. package/dist/schema/role-permissions.d.ts.map +1 -0
  80. package/dist/schema/roles.d.ts +260 -0
  81. package/dist/schema/roles.d.ts.map +1 -0
  82. package/dist/schema/scheduled-tasks.d.ts +1334 -0
  83. package/dist/schema/scheduled-tasks.d.ts.map +1 -0
  84. package/dist/schema/settings.d.ts +819 -0
  85. package/dist/schema/settings.d.ts.map +1 -0
  86. package/dist/schema/site-presentation.d.ts +1587 -0
  87. package/dist/schema/site-presentation.d.ts.map +1 -0
  88. package/dist/schema/teams.d.ts +381 -0
  89. package/dist/schema/teams.d.ts.map +1 -0
  90. package/dist/schema/web-design.d.ts +1542 -0
  91. package/dist/schema/web-design.d.ts.map +1 -0
  92. package/dist/schema/webhooks.d.ts +1016 -0
  93. package/dist/schema/webhooks.d.ts.map +1 -0
  94. package/dist/zod/index.d.ts +2 -0
  95. package/dist/zod/index.d.ts.map +1 -0
  96. package/dist/zod/index.js +6 -0
  97. package/dist/zod/index.js.map +1 -0
  98. package/package.json +63 -0
package/README.md ADDED
@@ -0,0 +1,66 @@
1
+ # @wordrhyme/db
2
+
3
+ Shared database types and Zod schemas for WordRhyme.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @wordrhyme/db
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Zod Schemas (for AutoCrudTable)
14
+
15
+ ```typescript
16
+ import { selectI18nLanguageSchema } from '@wordrhyme/db/zod';
17
+ import { AutoCrudTable, useAutoCrudResource } from '@wordrhyme/auto-crud';
18
+ import { trpc } from '@/lib/trpc';
19
+
20
+ function LanguagesPage() {
21
+ const resource = useAutoCrudResource({
22
+ router: trpc.i18n.languages,
23
+ schema: selectI18nLanguageSchema,
24
+ });
25
+
26
+ return (
27
+ <AutoCrudTable
28
+ schema={selectI18nLanguageSchema}
29
+ resource={resource}
30
+ fields={{
31
+ id: { hidden: true },
32
+ organizationId: { hidden: true },
33
+ }}
34
+ />
35
+ );
36
+ }
37
+ ```
38
+
39
+ ### Types
40
+
41
+ ```typescript
42
+ import type { I18nLanguage, I18nMessage } from '@wordrhyme/db';
43
+
44
+ function processLanguage(lang: I18nLanguage) {
45
+ console.log(lang.locale, lang.name);
46
+ }
47
+ ```
48
+
49
+ ## Exports
50
+
51
+ | Path | Description |
52
+ |------|-------------|
53
+ | `@wordrhyme/db` | Types and all Zod schemas |
54
+ | `@wordrhyme/db/zod` | Zod schemas only |
55
+ | `@wordrhyme/db/schema` | Drizzle schemas (reserved) |
56
+
57
+ ## Available Schemas
58
+
59
+ ### i18n
60
+
61
+ - `selectI18nLanguageSchema` - For displaying languages
62
+ - `insertI18nLanguageSchema` - For creating languages (with validation)
63
+ - `updateI18nLanguageSchema` - For updating languages
64
+ - `selectI18nMessageSchema` - For displaying messages
65
+ - `insertI18nMessageSchema` - For creating messages
66
+ - `updateI18nMessageSchema` - For updating messages
@@ -0,0 +1,86 @@
1
+ /**
2
+ * ACL Policy Registry
3
+ *
4
+ * Allows plugin developers to declare default ACL policies per table via `pluginTable(..., { acl })`.
5
+ * ScopedDb reads from this registry when inserting rows without explicit aclTags.
6
+ *
7
+ * Priority chain (highest → lowest):
8
+ * 1. Admin override (via Settings, cached in-memory per org+table)
9
+ * 2. Developer declaration (via `pluginTable(..., { acl: { defaultPolicy } })`)
10
+ * 3. System fallback ("creator")
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { pluginTable } from '@wordrhyme/db/plugin';
15
+ *
16
+ * export const shopProducts = pluginTable('products', { ... }, {
17
+ * acl: { defaultPolicy: ['org'] },
18
+ * }); // org-visible by default
19
+ * ```
20
+ */
21
+ /**
22
+ * Default ACL policy for a table
23
+ *
24
+ * Principals:
25
+ * - 'org': Organization-visible → ['org:{orgId}']
26
+ * - 'creator': Creator-only → ['user:{userId}'] (system default)
27
+ * - 'admin': Org admins → ['role:owner', 'role:admin', 'role:super-admin']
28
+ * - 'public': Public → ['public:all']
29
+ *
30
+ * Policies can be composed as an array, e.g.:
31
+ * - ['org', 'creator']
32
+ * - ['admin', 'creator']
33
+ */
34
+ export type DefaultAclPolicyPrincipal = "org" | "creator" | "admin" | "public";
35
+ export type DefaultAclPolicy = DefaultAclPolicyPrincipal | readonly DefaultAclPolicyPrincipal[];
36
+ export declare function setDeveloperAclPolicy(tableName: string, policy: DefaultAclPolicy): void;
37
+ /**
38
+ * Set an admin override for a table's default ACL policy.
39
+ *
40
+ * Called by the platform's settings service when an admin configures
41
+ * a table-level ACL policy override via the admin UI.
42
+ */
43
+ export declare function setAclPolicyOverride(tableName: string, organizationId: string, policy: DefaultAclPolicy): void;
44
+ /**
45
+ * Remove an admin override.
46
+ */
47
+ export declare function removeAclPolicyOverride(tableName: string, organizationId: string): void;
48
+ /**
49
+ * Batch-load admin overrides (called on startup or cache refresh).
50
+ *
51
+ * @param overrides - Array of { tableName, organizationId, policy }
52
+ */
53
+ export declare function loadAclPolicyOverrides(overrides: Array<{
54
+ tableName: string;
55
+ organizationId: string;
56
+ policy: DefaultAclPolicy;
57
+ }>): void;
58
+ /**
59
+ * Clear all admin overrides (for testing or full refresh).
60
+ */
61
+ export declare function clearAclPolicyOverrides(): void;
62
+ /**
63
+ * Get the effective ACL policy for a table + org combination.
64
+ *
65
+ * Priority: admin override > developer declaration > system default ('creator')
66
+ *
67
+ * This is a **sync** function — safe to call from wrapInsert's values() builder.
68
+ */
69
+ export declare function getEffectiveAclPolicy(tableName: string, organizationId?: string): readonly DefaultAclPolicyPrincipal[];
70
+ /**
71
+ * Resolve a policy to concrete aclTags.
72
+ */
73
+ export declare function resolveAclTags(policy: DefaultAclPolicy, ctx: {
74
+ userId: string | undefined;
75
+ organizationId: string | undefined;
76
+ }): string[];
77
+ /**
78
+ * Get all registered developer policies (for admin UI / debugging).
79
+ */
80
+ export declare function getRegisteredAclPolicies(): Record<string, readonly DefaultAclPolicyPrincipal[]>;
81
+ /**
82
+ * Settings key pattern for admin overrides.
83
+ * Used by the settings router to store/retrieve overrides.
84
+ */
85
+ export declare const ACL_POLICY_SETTINGS_PREFIX = "lbac.defaultAclPolicy.";
86
+ //# sourceMappingURL=acl-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acl-policy.d.ts","sourceRoot":"","sources":["../src/acl-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,yBAAyB,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC/E,MAAM,MAAM,gBAAgB,GAAG,yBAAyB,GAAG,SAAS,yBAAyB,EAAE,CAAC;AAyChG,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAEvF;AAYD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAE9G;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAEvF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,SAAS,EAAE,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC,GAC1F,IAAI,CAIN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAMD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,yBAAyB,EAAE,CAatH;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC1B,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACxE,MAAM,EAAE,CAsBV;AAMD;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,yBAAyB,EAAE,CAAC,CAE/F;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,2BAA2B,CAAC"}