@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.
- package/README.md +66 -0
- package/dist/acl-policy.d.ts +86 -0
- package/dist/acl-policy.d.ts.map +1 -0
- package/dist/chunk-3TTVLSF5.js +3390 -0
- package/dist/chunk-3TTVLSF5.js.map +1 -0
- package/dist/chunk-DCJM6GN5.js +264 -0
- package/dist/chunk-DCJM6GN5.js.map +1 -0
- package/dist/chunk-KWWJRUIK.js +54 -0
- package/dist/chunk-KWWJRUIK.js.map +1 -0
- package/dist/chunk-XAIEVBMU.js +212 -0
- package/dist/chunk-XAIEVBMU.js.map +1 -0
- package/dist/delete-policy.d.ts +11 -0
- package/dist/delete-policy.d.ts.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +545 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin.d.ts +110 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +21 -0
- package/dist/plugin.js.map +1 -0
- package/dist/relations/index.d.ts +105 -0
- package/dist/relations/index.d.ts.map +1 -0
- package/dist/relations/index.js +9 -0
- package/dist/relations/index.js.map +1 -0
- package/dist/schema/action-journal.d.ts +386 -0
- package/dist/schema/action-journal.d.ts.map +1 -0
- package/dist/schema/audit-archive.d.ts +934 -0
- package/dist/schema/audit-archive.d.ts.map +1 -0
- package/dist/schema/audit-events.d.ts +502 -0
- package/dist/schema/audit-events.d.ts.map +1 -0
- package/dist/schema/audit-logs.d.ts +418 -0
- package/dist/schema/audit-logs.d.ts.map +1 -0
- package/dist/schema/auth.d.ts +2727 -0
- package/dist/schema/auth.d.ts.map +1 -0
- package/dist/schema/billing.d.ts +3969 -0
- package/dist/schema/billing.d.ts.map +1 -0
- package/dist/schema/common.d.ts +87 -0
- package/dist/schema/common.d.ts.map +1 -0
- package/dist/schema/currency.d.ts +791 -0
- package/dist/schema/currency.d.ts.map +1 -0
- package/dist/schema/entity-extensions.d.ts +314 -0
- package/dist/schema/entity-extensions.d.ts.map +1 -0
- package/dist/schema/entity-ownerships.d.ts +862 -0
- package/dist/schema/entity-ownerships.d.ts.map +1 -0
- package/dist/schema/feature-flags.d.ts +770 -0
- package/dist/schema/feature-flags.d.ts.map +1 -0
- package/dist/schema/geo.d.ts +824 -0
- package/dist/schema/geo.d.ts.map +1 -0
- package/dist/schema/i18n.d.ts +1109 -0
- package/dist/schema/i18n.d.ts.map +1 -0
- package/dist/schema/index.d.ts +43 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +507 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/media.d.ts +1147 -0
- package/dist/schema/media.d.ts.map +1 -0
- package/dist/schema/menus.d.ts +636 -0
- package/dist/schema/menus.d.ts.map +1 -0
- package/dist/schema/notification-channels.d.ts +288 -0
- package/dist/schema/notification-channels.d.ts.map +1 -0
- package/dist/schema/notification-preferences.d.ts +300 -0
- package/dist/schema/notification-preferences.d.ts.map +1 -0
- package/dist/schema/notification-templates.d.ts +476 -0
- package/dist/schema/notification-templates.d.ts.map +1 -0
- package/dist/schema/notifications.d.ts +1139 -0
- package/dist/schema/notifications.d.ts.map +1 -0
- package/dist/schema/permission-fields.d.ts +96 -0
- package/dist/schema/permission-fields.d.ts.map +1 -0
- package/dist/schema/permissions.d.ts +173 -0
- package/dist/schema/permissions.d.ts.map +1 -0
- package/dist/schema/plugin-migrations.d.ts +204 -0
- package/dist/schema/plugin-migrations.d.ts.map +1 -0
- package/dist/schema/plugins.d.ts +1977 -0
- package/dist/schema/plugins.d.ts.map +1 -0
- package/dist/schema/relationships.d.ts +221 -0
- package/dist/schema/relationships.d.ts.map +1 -0
- package/dist/schema/role-permissions.d.ts +305 -0
- package/dist/schema/role-permissions.d.ts.map +1 -0
- package/dist/schema/roles.d.ts +260 -0
- package/dist/schema/roles.d.ts.map +1 -0
- package/dist/schema/scheduled-tasks.d.ts +1334 -0
- package/dist/schema/scheduled-tasks.d.ts.map +1 -0
- package/dist/schema/settings.d.ts +819 -0
- package/dist/schema/settings.d.ts.map +1 -0
- package/dist/schema/site-presentation.d.ts +1587 -0
- package/dist/schema/site-presentation.d.ts.map +1 -0
- package/dist/schema/teams.d.ts +381 -0
- package/dist/schema/teams.d.ts.map +1 -0
- package/dist/schema/web-design.d.ts +1542 -0
- package/dist/schema/web-design.d.ts.map +1 -0
- package/dist/schema/webhooks.d.ts +1016 -0
- package/dist/schema/webhooks.d.ts.map +1 -0
- package/dist/zod/index.d.ts +2 -0
- package/dist/zod/index.d.ts.map +1 -0
- package/dist/zod/index.js +6 -0
- package/dist/zod/index.js.map +1 -0
- 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"}
|