@opensaas/stack-core 0.1.7 → 0.4.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +352 -0
- package/CLAUDE.md +46 -1
- package/dist/access/engine.d.ts +7 -6
- package/dist/access/engine.d.ts.map +1 -1
- package/dist/access/engine.js +55 -0
- package/dist/access/engine.js.map +1 -1
- package/dist/access/engine.test.d.ts +2 -0
- package/dist/access/engine.test.d.ts.map +1 -0
- package/dist/access/engine.test.js +125 -0
- package/dist/access/engine.test.js.map +1 -0
- package/dist/access/types.d.ts +39 -9
- package/dist/access/types.d.ts.map +1 -1
- package/dist/config/index.d.ts +40 -20
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +34 -15
- package/dist/config/index.js.map +1 -1
- package/dist/config/plugin-engine.d.ts.map +1 -1
- package/dist/config/plugin-engine.js +9 -0
- package/dist/config/plugin-engine.js.map +1 -1
- package/dist/config/types.d.ts +277 -84
- package/dist/config/types.d.ts.map +1 -1
- package/dist/context/index.d.ts +5 -3
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +146 -20
- package/dist/context/index.js.map +1 -1
- package/dist/context/nested-operations.d.ts.map +1 -1
- package/dist/context/nested-operations.js +88 -72
- package/dist/context/nested-operations.js.map +1 -1
- package/dist/fields/index.d.ts +65 -9
- package/dist/fields/index.d.ts.map +1 -1
- package/dist/fields/index.js +98 -16
- package/dist/fields/index.js.map +1 -1
- package/dist/hooks/index.d.ts +28 -12
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +16 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/handler.js +1 -0
- package/dist/mcp/handler.js.map +1 -1
- package/dist/validation/schema.d.ts.map +1 -1
- package/dist/validation/schema.js +4 -2
- package/dist/validation/schema.js.map +1 -1
- package/package.json +8 -9
- package/src/access/engine.test.ts +145 -0
- package/src/access/engine.ts +73 -9
- package/src/access/types.ts +38 -8
- package/src/config/index.ts +45 -23
- package/src/config/plugin-engine.ts +13 -3
- package/src/config/types.ts +347 -117
- package/src/context/index.ts +176 -23
- package/src/context/nested-operations.ts +83 -71
- package/src/fields/index.ts +132 -27
- package/src/hooks/index.ts +63 -20
- package/src/index.ts +9 -0
- package/src/mcp/handler.ts +2 -1
- package/src/validation/schema.ts +4 -2
- package/tests/context.test.ts +38 -6
- package/tests/field-types.test.ts +729 -0
- package/tests/password-type-distribution.test.ts +0 -1
- package/tests/password-types.test.ts +0 -1
- package/tests/plugin-engine.test.ts +1102 -0
- package/tests/sudo.test.ts +230 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { filterWritableFields } from './engine.js';
|
|
3
|
+
describe('filterWritableFields', () => {
|
|
4
|
+
it('should filter out foreign key fields when their corresponding relationship field exists', async () => {
|
|
5
|
+
// Setup: Define field configs with a relationship field
|
|
6
|
+
const fieldConfigs = {
|
|
7
|
+
title: {
|
|
8
|
+
type: 'text',
|
|
9
|
+
},
|
|
10
|
+
author: {
|
|
11
|
+
type: 'relationship',
|
|
12
|
+
many: false,
|
|
13
|
+
},
|
|
14
|
+
tags: {
|
|
15
|
+
type: 'relationship',
|
|
16
|
+
many: true, // Many-to-many relationships don't have foreign keys
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
// Data that includes both the foreign key (authorId) and other fields
|
|
20
|
+
const data = {
|
|
21
|
+
title: 'Test Post',
|
|
22
|
+
authorId: 'user-123', // This should be filtered out
|
|
23
|
+
tagsId: 'tag-456', // This should NOT be filtered (tags is many:true)
|
|
24
|
+
author: {
|
|
25
|
+
connect: { id: 'user-123' },
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
const filtered = await filterWritableFields(data, fieldConfigs, 'create', {
|
|
29
|
+
session: null,
|
|
30
|
+
context: {
|
|
31
|
+
session: null,
|
|
32
|
+
_isSudo: true, // Use sudo to bypass access control checks
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
// authorId should be filtered out
|
|
37
|
+
expect(filtered).not.toHaveProperty('authorId');
|
|
38
|
+
// title should remain
|
|
39
|
+
expect(filtered).toHaveProperty('title', 'Test Post');
|
|
40
|
+
// author relationship should remain
|
|
41
|
+
expect(filtered).toHaveProperty('author');
|
|
42
|
+
expect(filtered.author).toEqual({ connect: { id: 'user-123' } });
|
|
43
|
+
// tagsId should remain (tags is many:true, so no foreign key is created)
|
|
44
|
+
expect(filtered).toHaveProperty('tagsId', 'tag-456');
|
|
45
|
+
});
|
|
46
|
+
it('should filter out system fields', async () => {
|
|
47
|
+
const fieldConfigs = {
|
|
48
|
+
title: { type: 'text' },
|
|
49
|
+
};
|
|
50
|
+
const data = {
|
|
51
|
+
id: 'post-123',
|
|
52
|
+
title: 'Test',
|
|
53
|
+
createdAt: new Date(),
|
|
54
|
+
updatedAt: new Date(),
|
|
55
|
+
};
|
|
56
|
+
const filtered = await filterWritableFields(data, fieldConfigs, 'create', {
|
|
57
|
+
session: null,
|
|
58
|
+
context: {
|
|
59
|
+
session: null,
|
|
60
|
+
_isSudo: true,
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
// System fields should be filtered out
|
|
65
|
+
expect(filtered).not.toHaveProperty('id');
|
|
66
|
+
expect(filtered).not.toHaveProperty('createdAt');
|
|
67
|
+
expect(filtered).not.toHaveProperty('updatedAt');
|
|
68
|
+
// Regular fields should remain
|
|
69
|
+
expect(filtered).toHaveProperty('title', 'Test');
|
|
70
|
+
});
|
|
71
|
+
it('should handle update operation', async () => {
|
|
72
|
+
const fieldConfigs = {
|
|
73
|
+
title: { type: 'text' },
|
|
74
|
+
author: {
|
|
75
|
+
type: 'relationship',
|
|
76
|
+
many: false,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
const data = {
|
|
80
|
+
title: 'Updated Title',
|
|
81
|
+
authorId: 'user-456', // Should be filtered out
|
|
82
|
+
author: {
|
|
83
|
+
connect: { id: 'user-456' },
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
const filtered = await filterWritableFields(data, fieldConfigs, 'update', {
|
|
87
|
+
session: null,
|
|
88
|
+
item: { id: 'post-123' },
|
|
89
|
+
context: {
|
|
90
|
+
session: null,
|
|
91
|
+
_isSudo: true,
|
|
92
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
expect(filtered).not.toHaveProperty('authorId');
|
|
96
|
+
expect(filtered).toHaveProperty('title', 'Updated Title');
|
|
97
|
+
expect(filtered).toHaveProperty('author');
|
|
98
|
+
});
|
|
99
|
+
it('should not filter fields that happen to end with "Id" but are not foreign keys', async () => {
|
|
100
|
+
const fieldConfigs = {
|
|
101
|
+
trackingId: { type: 'text' }, // Regular field that happens to end with "Id"
|
|
102
|
+
author: {
|
|
103
|
+
type: 'relationship',
|
|
104
|
+
many: false,
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
const data = {
|
|
108
|
+
trackingId: 'track-123', // Should NOT be filtered (it's a regular field)
|
|
109
|
+
authorId: 'user-456', // SHOULD be filtered (it's a foreign key)
|
|
110
|
+
};
|
|
111
|
+
const filtered = await filterWritableFields(data, fieldConfigs, 'create', {
|
|
112
|
+
session: null,
|
|
113
|
+
context: {
|
|
114
|
+
session: null,
|
|
115
|
+
_isSudo: true,
|
|
116
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
// trackingId is a defined field, so it should remain
|
|
120
|
+
expect(filtered).toHaveProperty('trackingId', 'track-123');
|
|
121
|
+
// authorId is a foreign key for author relationship, so it should be filtered
|
|
122
|
+
expect(filtered).not.toHaveProperty('authorId');
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
//# sourceMappingURL=engine.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.test.js","sourceRoot":"","sources":["../../src/access/engine.test.ts"],"names":[],"mappings":"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"}
|
package/dist/access/types.d.ts
CHANGED
|
@@ -1,10 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Session
|
|
2
|
+
* Session interface - can be augmented by developers to add custom fields
|
|
3
|
+
*
|
|
4
|
+
* By default, Session is a permissive object that can contain any properties.
|
|
5
|
+
* To get type safety and autocomplete, use module augmentation:
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // types/session.d.ts
|
|
10
|
+
* import '@opensaas/stack-core'
|
|
11
|
+
*
|
|
12
|
+
* declare module '@opensaas/stack-core' {
|
|
13
|
+
* interface Session {
|
|
14
|
+
* userId: string
|
|
15
|
+
* email: string
|
|
16
|
+
* role: 'admin' | 'user'
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* After augmentation, session will be fully typed everywhere:
|
|
22
|
+
* - Access control functions
|
|
23
|
+
* - Hooks (resolveInput, validateInput, etc.)
|
|
24
|
+
* - Context object
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // With augmentation, this is fully typed:
|
|
29
|
+
* const isAdmin: AccessControl = ({ session }) => {
|
|
30
|
+
* return session?.role === 'admin' // ✅ Autocomplete works
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
3
33
|
*/
|
|
4
|
-
export
|
|
5
|
-
userId?: string;
|
|
34
|
+
export interface Session {
|
|
6
35
|
[key: string]: unknown;
|
|
7
|
-
}
|
|
36
|
+
}
|
|
8
37
|
/**
|
|
9
38
|
* Generic Prisma model delegate type
|
|
10
39
|
*/
|
|
@@ -81,15 +110,16 @@ export type StorageUtils = {
|
|
|
81
110
|
};
|
|
82
111
|
/**
|
|
83
112
|
* Context type (simplified for access control)
|
|
113
|
+
* Using interface instead of type to allow module augmentation
|
|
84
114
|
*/
|
|
85
|
-
export
|
|
86
|
-
session: Session;
|
|
115
|
+
export interface AccessContext<TPrisma extends PrismaClientLike = PrismaClientLike> {
|
|
116
|
+
session: Session | null;
|
|
87
117
|
prisma: TPrisma;
|
|
88
118
|
db: AccessControlledDB<TPrisma>;
|
|
89
119
|
storage: StorageUtils;
|
|
120
|
+
plugins: Record<string, unknown>;
|
|
90
121
|
_isSudo: boolean;
|
|
91
|
-
|
|
92
|
-
};
|
|
122
|
+
}
|
|
93
123
|
/**
|
|
94
124
|
* Prisma filter type - represents a where clause
|
|
95
125
|
* Uses Partial to allow filtering by any subset of fields
|
|
@@ -102,7 +132,7 @@ export type PrismaFilter<T = Record<string, unknown>> = Partial<Record<keyof T,
|
|
|
102
132
|
* - PrismaFilter: Prisma where clause to filter results
|
|
103
133
|
*/
|
|
104
134
|
export type AccessControl<T = Record<string, unknown>> = (args: {
|
|
105
|
-
session: Session;
|
|
135
|
+
session: Session | null;
|
|
106
136
|
item?: T;
|
|
107
137
|
context: AccessContext;
|
|
108
138
|
}) => boolean | PrismaFilter<T> | Promise<boolean | PrismaFilter<T>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/access/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/access/types.ts"],"names":[],"mappings":"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"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { OpenSaasConfig, ListConfig,
|
|
1
|
+
import type { OpenSaasConfig, ListConfig, OperationAccess, Hooks } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Helper function to define configuration with type safety
|
|
4
4
|
* Executes plugins if present in config.plugins array
|
|
@@ -10,35 +10,55 @@ export declare function config(userConfig: OpenSaasConfig): OpenSaasConfig | Pro
|
|
|
10
10
|
/**
|
|
11
11
|
* Helper function to define a list with type safety
|
|
12
12
|
*
|
|
13
|
-
* Accepts raw field configs and transforms them to inject the item type
|
|
14
|
-
* This enables proper typing in field hooks where item
|
|
13
|
+
* Accepts raw field configs and transforms them to inject the item type
|
|
14
|
+
* This enables proper typing in field hooks where item is typed correctly
|
|
15
15
|
*
|
|
16
16
|
* @example
|
|
17
17
|
* ```typescript
|
|
18
|
-
*
|
|
18
|
+
* // Basic usage (before generation)
|
|
19
|
+
* Post: list({
|
|
20
|
+
* fields: { title: text() },
|
|
21
|
+
* hooks: {
|
|
22
|
+
* resolveInput: async ({ resolvedData }) => {
|
|
23
|
+
* // resolvedData: Record<string, unknown>
|
|
24
|
+
* return resolvedData
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* })
|
|
28
|
+
*
|
|
29
|
+
* // With TypeInfo (after generation)
|
|
30
|
+
* import type { Lists } from './.opensaas/lists'
|
|
19
31
|
*
|
|
20
|
-
*
|
|
21
|
-
* fields: {
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
32
|
+
* Post: list<Lists.Post.TypeInfo>({
|
|
33
|
+
* fields: { title: text() },
|
|
34
|
+
* hooks: {
|
|
35
|
+
* resolveInput: async ({ operation, resolvedData, item }) => {
|
|
36
|
+
* if (operation === 'create') {
|
|
37
|
+
* // resolvedData: Prisma.PostCreateInput
|
|
38
|
+
* // item: undefined
|
|
39
|
+
* } else {
|
|
40
|
+
* // resolvedData: Prisma.PostUpdateInput
|
|
41
|
+
* // item: Post
|
|
29
42
|
* }
|
|
30
|
-
*
|
|
43
|
+
* return resolvedData
|
|
44
|
+
* }
|
|
31
45
|
* }
|
|
32
46
|
* })
|
|
47
|
+
*
|
|
48
|
+
* // Or as a typed constant
|
|
49
|
+
* const Post: Lists.Post = list({
|
|
50
|
+
* fields: { title: text() },
|
|
51
|
+
* hooks: { ... }
|
|
52
|
+
* })
|
|
33
53
|
* ```
|
|
34
54
|
*/
|
|
35
|
-
export declare function list<
|
|
36
|
-
fields:
|
|
55
|
+
export declare function list<TTypeInfo extends import('./types.js').TypeInfo>(config: {
|
|
56
|
+
fields: import('./types.js').FieldsWithTypeInfo<TTypeInfo>;
|
|
37
57
|
access?: {
|
|
38
|
-
operation?: OperationAccess<
|
|
58
|
+
operation?: OperationAccess<TTypeInfo['item']>;
|
|
39
59
|
};
|
|
40
|
-
hooks?: Hooks<
|
|
60
|
+
hooks?: Hooks<TTypeInfo['item'], TTypeInfo['inputs']['create'], TTypeInfo['inputs']['update']>;
|
|
41
61
|
mcp?: import('./types.js').ListMcpConfig;
|
|
42
|
-
}): ListConfig<
|
|
43
|
-
export type { OpenSaasConfig, ListConfig, FieldConfig, BaseFieldConfig, TextField, IntegerField, CheckboxField, TimestampField, PasswordField, SelectField, RelationshipField, OperationAccess, Hooks, FieldHooks,
|
|
62
|
+
}): ListConfig<TTypeInfo>;
|
|
63
|
+
export type { OpenSaasConfig, ListConfig, FieldConfig, BaseFieldConfig, TextField, IntegerField, CheckboxField, TimestampField, PasswordField, SelectField, RelationshipField, JsonField, VirtualField, TypeInfo, OperationAccess, Hooks, FieldHooks, FieldsWithTypeInfo, DatabaseConfig, SessionConfig, UIConfig, ThemeConfig, ThemePreset, ThemeColors, McpConfig, McpToolsConfig, McpAuthConfig, ListMcpConfig, McpCustomTool, FileMetadata, ImageMetadata, ImageTransformationResult, Plugin, PluginContext, GeneratedFiles, } from './types.js';
|
|
44
64
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGpF;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,cAAc,GAAG,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAQ3F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,IAAI,CAAC,SAAS,SAAS,OAAO,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE;IAC5E,MAAM,EAAE,OAAO,YAAY,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAA;IAC1D,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;KAC/C,CAAA;IACD,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC9F,GAAG,CAAC,EAAE,OAAO,YAAY,EAAE,aAAa,CAAA;CACzC,GAAG,UAAU,CAAC,SAAS,CAAC,CAIxB;AAGD,YAAY,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,eAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,KAAK,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,yBAAyB,EAEzB,MAAM,EACN,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAA"}
|
package/dist/config/index.js
CHANGED
|
@@ -17,32 +17,51 @@ export function config(userConfig) {
|
|
|
17
17
|
/**
|
|
18
18
|
* Helper function to define a list with type safety
|
|
19
19
|
*
|
|
20
|
-
* Accepts raw field configs and transforms them to inject the item type
|
|
21
|
-
* This enables proper typing in field hooks where item
|
|
20
|
+
* Accepts raw field configs and transforms them to inject the item type
|
|
21
|
+
* This enables proper typing in field hooks where item is typed correctly
|
|
22
22
|
*
|
|
23
23
|
* @example
|
|
24
24
|
* ```typescript
|
|
25
|
-
*
|
|
25
|
+
* // Basic usage (before generation)
|
|
26
|
+
* Post: list({
|
|
27
|
+
* fields: { title: text() },
|
|
28
|
+
* hooks: {
|
|
29
|
+
* resolveInput: async ({ resolvedData }) => {
|
|
30
|
+
* // resolvedData: Record<string, unknown>
|
|
31
|
+
* return resolvedData
|
|
32
|
+
* }
|
|
33
|
+
* }
|
|
34
|
+
* })
|
|
35
|
+
*
|
|
36
|
+
* // With TypeInfo (after generation)
|
|
37
|
+
* import type { Lists } from './.opensaas/lists'
|
|
26
38
|
*
|
|
27
|
-
*
|
|
28
|
-
* fields: {
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
39
|
+
* Post: list<Lists.Post.TypeInfo>({
|
|
40
|
+
* fields: { title: text() },
|
|
41
|
+
* hooks: {
|
|
42
|
+
* resolveInput: async ({ operation, resolvedData, item }) => {
|
|
43
|
+
* if (operation === 'create') {
|
|
44
|
+
* // resolvedData: Prisma.PostCreateInput
|
|
45
|
+
* // item: undefined
|
|
46
|
+
* } else {
|
|
47
|
+
* // resolvedData: Prisma.PostUpdateInput
|
|
48
|
+
* // item: Post
|
|
36
49
|
* }
|
|
37
|
-
*
|
|
50
|
+
* return resolvedData
|
|
51
|
+
* }
|
|
38
52
|
* }
|
|
39
53
|
* })
|
|
54
|
+
*
|
|
55
|
+
* // Or as a typed constant
|
|
56
|
+
* const Post: Lists.Post = list({
|
|
57
|
+
* fields: { title: text() },
|
|
58
|
+
* hooks: { ... }
|
|
59
|
+
* })
|
|
40
60
|
* ```
|
|
41
61
|
*/
|
|
42
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
62
|
export function list(config) {
|
|
44
63
|
// At runtime, field configs are unchanged
|
|
45
|
-
// At type level, they're transformed to inject
|
|
64
|
+
// At type level, they're transformed to inject TypeInfo types
|
|
46
65
|
return config;
|
|
47
66
|
}
|
|
48
67
|
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,UAA0B;IAC/C,wEAAwE;IACxE,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,qCAAqC;IACrC,OAAO,cAAc,CAAC,UAAU,CAAC,CAAA;AACnC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,UAA0B;IAC/C,wEAAwE;IACxE,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,qCAAqC;IACrC,OAAO,cAAc,CAAC,UAAU,CAAC,CAAA;AACnC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,UAAU,IAAI,CAAkD,MAOrE;IACC,0CAA0C;IAC1C,8DAA8D;IAC9D,OAAO,MAA+B,CAAA;AACxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-engine.d.ts","sourceRoot":"","sources":["../../src/config/plugin-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAQf,MAAM,YAAY,CAAA;AA6InB;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"plugin-engine.d.ts","sourceRoot":"","sources":["../../src/config/plugin-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAQf,MAAM,YAAY,CAAA;AA6InB;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAoHpF;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAchG;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GACrF,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC,CAc1F"}
|
|
@@ -137,6 +137,7 @@ export async function executePlugins(config) {
|
|
|
137
137
|
_pluginData: {},
|
|
138
138
|
};
|
|
139
139
|
// Field type registry (for third-party fields)
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Registry must accept any field config builder
|
|
140
141
|
const fieldTypeRegistry = new Map();
|
|
141
142
|
// MCP tools registry
|
|
142
143
|
const mcpToolsRegistry = [];
|
|
@@ -144,6 +145,7 @@ export async function executePlugins(config) {
|
|
|
144
145
|
for (const plugin of sortedPlugins) {
|
|
145
146
|
const context = {
|
|
146
147
|
config: currentConfig,
|
|
148
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Plugin context must accept any list config
|
|
147
149
|
addList: (name, listConfig) => {
|
|
148
150
|
if (currentConfig.lists[name]) {
|
|
149
151
|
throw new Error(`Plugin "${plugin.name}" tried to add list "${name}" but it already exists. Use extendList() to modify existing lists.`);
|
|
@@ -179,6 +181,7 @@ export async function executePlugins(config) {
|
|
|
179
181
|
mcp: mergedMcp,
|
|
180
182
|
};
|
|
181
183
|
},
|
|
184
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Field type registry must accept any field config
|
|
182
185
|
registerFieldType: (type, builder) => {
|
|
183
186
|
if (fieldTypeRegistry.has(type)) {
|
|
184
187
|
throw new Error(`Plugin "${plugin.name}" tried to register field type "${type}" but it's already registered`);
|
|
@@ -205,6 +208,12 @@ export async function executePlugins(config) {
|
|
|
205
208
|
}
|
|
206
209
|
currentConfig._pluginData.__mcpTools = mcpToolsRegistry;
|
|
207
210
|
}
|
|
211
|
+
// Store plugin instances in config for runtime access
|
|
212
|
+
// This allows context creation to call plugin.runtime() functions
|
|
213
|
+
if (!currentConfig._plugins) {
|
|
214
|
+
currentConfig._plugins = [];
|
|
215
|
+
}
|
|
216
|
+
currentConfig._plugins = sortedPlugins;
|
|
208
217
|
return currentConfig;
|
|
209
218
|
}
|
|
210
219
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-engine.js","sourceRoot":"","sources":["../../src/config/plugin-engine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plugin-engine.js","sourceRoot":"","sources":["../../src/config/plugin-engine.ts"],"names":[],"mappings":"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"}
|