tezign-ai-appstore-sdk 0.1.1 → 0.1.2

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 CHANGED
@@ -1,8 +1,16 @@
1
1
  # tezign-ai-appstore-sdk
2
2
 
3
- 浏览器端上传 SDK:调用平台的 uploads API 创建文件记录,获取最小权限 STS 临时凭证,然后使用 `ali-oss` 在浏览器侧执行 `multipartUpload` 上传,并返回你们的 CDN 永久公网链接。
3
+ AI 应用商店 SDK:提供文件上传和结构化数据存储功能。
4
4
 
5
- ## 使用方式(浏览器)
5
+ ## 安装
6
+
7
+ ```bash
8
+ npm install tezign-ai-appstore-sdk
9
+ ```
10
+
11
+ ## 快速开始
12
+
13
+ ### 文件上传
6
14
 
7
15
  ```ts
8
16
  import { createOssUploadClient } from 'tezign-ai-appstore-sdk'
@@ -10,20 +18,135 @@ import { createOssUploadClient } from 'tezign-ai-appstore-sdk'
10
18
  const client = createOssUploadClient({
11
19
  baseUrl: 'https://platform.example.com',
12
20
  projectId: 'your-project-id',
13
- // 第三方 Supabase:由业务方获取 access_token 后提供给 SDK
14
- getAccessToken: async () => supabase.auth.getSession().then((r) => r.data.session?.access_token ?? null),
21
+ getAccessToken: async () => 'your-token',
15
22
  })
16
23
 
17
24
  const result = await client.upload({
18
25
  file,
19
- onProgress: (p) => console.log(p.loaded, p.total),
26
+ onProgress: (p) => console.log(`${p.loaded}/${p.total}`),
27
+ })
28
+
29
+ console.log(result.publicUrl)
30
+ ```
31
+
32
+ ### 结构化数据存储
33
+
34
+ ```ts
35
+ import { createSchemaClient, createSchema } from 'tezign-ai-appstore-sdk'
36
+
37
+ // 定义数据模型
38
+ const postSchema = createSchema('posts')
39
+ .string('title', { required: true, filterable: true })
40
+ .string('content', { required: true })
41
+ .string('status', { enum: ['draft', 'published'], filterable: true })
42
+ .setVersion(1)
43
+ .build()
44
+
45
+ // 创建客户端(同步返回,自动初始化 + 自动迁移)
46
+ const db = createSchemaClient({ posts: postSchema }, storageClient)
47
+
48
+ // 数据操作(类型完全推导,自动等待初始化完成)
49
+ const post = await db.posts.create('post-1', {
50
+ title: 'Hello',
51
+ content: 'World',
52
+ status: 'published',
20
53
  })
54
+ ```
55
+
56
+ ## 核心概念
57
+
58
+ **统一入口**:所有数据建模和操作通过 `createSchemaClient` 完成。
59
+
60
+ 1. **定义 Schema** - 使用 `createSchema` 定义数据模型
61
+ 2. **创建客户端** - 使用 `createSchemaClient` 自动完成初始化、迁移和客户端创建
62
+ 3. **数据操作** - 通过返回的客户端进行类型安全的数据操作
21
63
 
22
- console.log(result.publicUrl) // https://{OSS_CDN_DOMAIN}/{objectKey}
64
+ ## Schema 定义
65
+
66
+ ```ts
67
+ const postSchema = createSchema('posts')
68
+ .string('title', { required: true, filterable: true })
69
+ .string('content', { required: true })
70
+ .number('viewCount', { default: 0 })
71
+ .setVersion(1)
72
+ .setPolicy({
73
+ createSubjectsByScope: {
74
+ members: ['project:member'],
75
+ },
76
+ })
77
+ .build()
23
78
  ```
24
79
 
25
- 未提供 `getAccessToken` 时,SDK 默认使用 cookie(`credentials: 'include'`)。
80
+ **字段类型**:`.string()` `.number()` `.boolean()` `.datetime()` `.json()`
81
+
82
+ **字段选项**:
83
+ - `required` - 是否必填
84
+ - `default` - 默认值
85
+ - `filterable` - 是否可过滤
86
+ - `sortable` - 是否可排序
87
+ - `previousName` - 声明之前的字段名(用于字段更名)
88
+
89
+ ## 自动迁移
90
+
91
+ `createSchemaClient` 自动检测并应用 Schema 变更:
92
+
93
+ ```ts
94
+ // 字段更名
95
+ const postSchemaV2 = createSchema('posts')
96
+ .string('title', { required: true })
97
+ .string('authorId', {
98
+ filterable: true,
99
+ previousName: 'author' // 声明更名
100
+ })
101
+ .setVersion(2)
102
+ .build()
103
+
104
+ const db = createSchemaClient({ posts: postSchemaV2 }, storageClient)
105
+ ```
106
+
107
+ **预览变更**:
108
+
109
+ ```ts
110
+ const db = createSchemaClient({ posts: postSchema }, storageClient, {
111
+ migrateOptions: {
112
+ dryRun: true,
113
+ onChangesDetected: (namespace, changes) => {
114
+ console.log(changes)
115
+ }
116
+ }
117
+ })
118
+ ```
119
+
120
+ ## 数据操作
121
+
122
+ ```ts
123
+ // 创建
124
+ const post = await db.posts.create('post-1', { title: 'Hello' })
125
+
126
+ // 获取
127
+ const post = await db.posts.get('post-1')
128
+
129
+ // 更新
130
+ await db.posts.update('post-1', { title: 'Updated' }, post.version)
131
+
132
+ // 删除
133
+ await db.posts.delete('post-1')
134
+
135
+ // 查询
136
+ const result = await db.posts.findMany({
137
+ filter: { field: 'status', op: 'eq', value: 'published' },
138
+ sort: { field: '__sys.createdAt', direction: 'desc' },
139
+ limit: 20,
140
+ })
141
+
142
+ // 计数
143
+ const count = await db.posts.count()
144
+ ```
145
+
146
+ ## 完整文档
147
+
148
+ 见 [API.md](./API.md)。
26
149
 
27
- ## API 文档
150
+ ## License
28
151
 
29
- 见 `API.md`。
152
+ MIT
package/dist/index.d.ts CHANGED
@@ -1,15 +1,13 @@
1
1
  export { createStorageClient, StorageClient, StorageError } from './storage/storage.js';
2
- export type { StorageScope, StorageItem, QueryResult, FilterOp, FilterCondition, Filter, SortDirection, Sort, IndexFieldDef, StorageIndexDefinition, NamespacePolicy, BatchOperation, AclConfig, ReindexJob, ReindexStatus, ShareTokenInfo, ErrorCode, StorageResponse, StorageSuccess, CreateStorageClientOptions, GetOptions, QueryOptions, AdminJob, AdminJobStatus, ExportResult, ImportPreview, } from './storage/storage-types.js';
3
- export { createSchema, SchemaBuilder, SchemaValidator, SchemaRegistry, } from './storage/schema.js';
4
- export type { FieldType, FieldDef, FieldPermission, StringFieldDef, NumberFieldDef, BooleanFieldDef, DateTimeFieldDef, JsonFieldDef, FieldsDefinition, SchemaDefinition, IndexConfig, ScopeConfig, InferSchemaType, CreateSchemaType, UpdateSchemaType, ValidationError, ValidationResult, } from './storage/schema.js';
5
- export { FieldPermissionChecker, createFieldPermissionChecker, } from './storage/field-permission.js';
6
- export type { FieldPermissionContext, FieldPermissionCheck, } from './storage/field-permission.js';
7
- export { createTypedStorage, TypedStorageClient, } from './storage/typed-storage.js';
8
- export type { FieldFilter, TypedFilter, ListOptions, TypedStorageOptions, } from './storage/typed-storage.js';
9
- export { createSchemaClient, defineSchemas, defineAndCreate, } from './storage/schema-client.js';
10
- export type { SchemaDefinitions, InferSchemaTypes, } from './storage/schema-client.js';
11
- export { createMigrator, SchemaMigrator, } from './storage/migration.js';
12
- export type { MigrationRecord, MigrationAction, } from './storage/migration.js';
2
+ export type { StorageItem, Filter, Sort, StorageIndexDefinition, NamespacePolicy, PermissionResource, PermissionAction, CheckPermissionRequest, CheckPermissionResponse, } from './storage/storage-types.js';
3
+ export { createSchema, SchemaBuilder, OWNER_ID, subject, buildAclConfig, } from './storage/schema.js';
4
+ export type { FieldDef, FieldPermission, StringFieldDef, NumberFieldDef, BooleanFieldDef, DateTimeFieldDef, JsonFieldDef, FieldsDefinition, SchemaDefinition, IndexConfig, AccessConfig, InferSchemaType, CreateSchemaType, UpdateSchemaType, SchemaAclConfig, AclConfig, } from './storage/schema.js';
5
+ export type { TypedStorageClient } from './storage/typed-storage.js';
6
+ export { createTypedStorage } from './storage/typed-storage.js';
7
+ export { createFieldPermissionChecker } from './storage/field-permission.js';
8
+ export type { FieldPermissionContext, FieldPermissionCheck } from './storage/field-permission.js';
9
+ export { createSchemaClient, defineSchemas, PermissionError, UserCancelledError, SchemaClient, } from './storage/schema-client.js';
10
+ export type { SchemaDefinitions, InferSchemaTypes, CreateSchemaClientOptions, MigrateOptions, MigrationChange, MigrationResult, ConfirmDialogOptions, ConfirmDialogResult, ConfirmDialogFunction, } from './storage/schema-client.js';
13
11
  export { createOssUploadClient } from './uploader/index.js';
14
- export type { CreateOssUploadClientOptions, PrepareUploadInput, PrepareUploadResult, CompleteUploadResult, UploadTokenRef, UploadListItem, UploadListResult, } from './uploader/index.js';
12
+ export type { CreateOssUploadClientOptions, CompleteUploadResult, UploadListItem, UploadListResult, } from './uploader/index.js';
15
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACvF,YAAY,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,QAAQ,EACR,eAAe,EACf,MAAM,EACN,aAAa,EACb,IAAI,EACJ,aAAa,EACb,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,SAAS,EACT,UAAU,EACV,aAAa,EACb,cAAc,EACd,SAAS,EACT,eAAe,EACf,cAAc,EACd,0BAA0B,EAC1B,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,aAAa,GACd,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,SAAS,EACT,QAAQ,EACR,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,+BAA+B,CAAA;AACtC,YAAY,EACV,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,+BAA+B,CAAA;AAGtC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,mBAAmB,GACpB,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,eAAe,GAChB,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACV,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EACL,cAAc,EACd,cAAc,GACf,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACV,eAAe,EACf,eAAe,GAChB,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,YAAY,EACV,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,gBAAgB,GACjB,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACvF,YAAY,EACV,WAAW,EACX,MAAM,EACN,IAAI,EACJ,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,OAAO,EACP,cAAc,GACf,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,QAAQ,EACR,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,SAAS,GACV,MAAM,qBAAqB,CAAA;AAE5B,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAA;AAC5E,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAEjG,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,YAAY,GACb,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,YAAY,EACV,4BAA4B,EAC5B,oBAAoB,EACpB,cAAc,EACd,gBAAgB,GACjB,MAAM,qBAAqB,CAAA"}
package/dist/index.js CHANGED
@@ -1,16 +1,7 @@
1
- // Storage v2 SDK - 统一入口
2
- // 基础客户端
3
1
  export { createStorageClient, StorageClient, StorageError } from './storage/storage.js';
4
- // Schema 定义系统
5
- export { createSchema, SchemaBuilder, SchemaValidator, SchemaRegistry, } from './storage/schema.js';
6
- // 字段权限控制
7
- export { FieldPermissionChecker, createFieldPermissionChecker, } from './storage/field-permission.js';
8
- // 类型安全的 Storage 客户端
9
- export { createTypedStorage, TypedStorageClient, } from './storage/typed-storage.js';
10
- // 集中式 Schema 客户端(类似 Prisma)
11
- export { createSchemaClient, defineSchemas, defineAndCreate, } from './storage/schema-client.js';
12
- // 迁移和初始化
13
- export { createMigrator, SchemaMigrator, } from './storage/migration.js';
14
- // 文件上传 SDK(独立模块)
2
+ export { createSchema, SchemaBuilder, OWNER_ID, subject, buildAclConfig, } from './storage/schema.js';
3
+ export { createTypedStorage } from './storage/typed-storage.js';
4
+ export { createFieldPermissionChecker } from './storage/field-permission.js';
5
+ export { createSchemaClient, defineSchemas, PermissionError, UserCancelledError, SchemaClient, } from './storage/schema-client.js';
15
6
  export { createOssUploadClient } from './uploader/index.js';
16
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AAExB,QAAQ;AACR,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AA8BvF,cAAc;AACd,OAAO,EACL,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,GACf,MAAM,qBAAqB,CAAA;AAqB5B,SAAS;AACT,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,+BAA+B,CAAA;AAMtC,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,4BAA4B,CAAA;AAQnC,4BAA4B;AAC5B,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,eAAe,GAChB,MAAM,4BAA4B,CAAA;AAMnC,SAAS;AACT,OAAO,EACL,cAAc,EACd,cAAc,GACf,MAAM,wBAAwB,CAAA;AAM/B,iBAAiB;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAavF,OAAO,EACL,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,OAAO,EACP,cAAc,GACf,MAAM,qBAAqB,CAAA;AAqB5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAA;AAG5E,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,YAAY,GACb,MAAM,4BAA4B,CAAA;AAanC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -1,114 +1,128 @@
1
1
  import type { StorageClient } from './storage.js';
2
- import type { SchemaDefinition, FieldsDefinition, InferSchemaType, CreateSchemaType, UpdateSchemaType } from './schema.js';
3
- import { TypedStorageClient, type TypedStorageOptions, type ListOptions } from './typed-storage.js';
2
+ import type { SchemaDefinition, FieldsDefinition } from './schema.js';
3
+ import { TypedStorageClient, type TypedStorageOptions } from './typed-storage.js';
4
+ export type SchemaDefinitions = Record<string, SchemaDefinition<FieldsDefinition>>;
5
+ export type InferSchemaTypes<TDefinitions extends SchemaDefinitions> = {
6
+ [K in keyof TDefinitions]: TDefinitions[K] extends SchemaDefinition<infer TFields> ? import('./schema.js').InferSchemaType<TFields> : never;
7
+ };
4
8
  /**
5
- * Schema 定义配置对象
6
- * 用于集中定义多个 Schema
9
+ * 确认对话框选项
7
10
  */
8
- export type SchemaDefinitions = Record<string, SchemaDefinition<FieldsDefinition>>;
11
+ export interface ConfirmDialogOptions {
12
+ title?: string;
13
+ message: string;
14
+ confirmText?: string;
15
+ cancelText?: string;
16
+ type?: 'info' | 'warning' | 'danger';
17
+ }
9
18
  /**
10
- * 从 Schema 定义对象推导出类型映射
19
+ * 确认对话框结果
11
20
  */
12
- export type InferSchemaTypes<TDefinitions extends SchemaDefinitions> = {
13
- [K in keyof TDefinitions]: TDefinitions[K] extends SchemaDefinition<infer TFields> ? InferSchemaType<TFields> : never;
14
- };
21
+ export interface ConfirmDialogResult {
22
+ confirmed: boolean;
23
+ cancelled?: boolean;
24
+ }
15
25
  /**
16
- * 创建类型化的 Schema 客户端集合
17
- *
18
- * @param schemas - Schema 定义对象
19
- * @param client - StorageClient 实例
20
- * @param options - 可选配置
21
- * @returns 类型化的客户端集合
22
- *
23
- * @example
24
- * ```typescript
25
- * // 1. 定义所有 Schema(类似 Prisma schema)
26
- * const schemas = defineSchemas({
27
- * posts: createSchema('posts')
28
- * .string('title', { required: true })
29
- * .string('content', { required: true })
30
- * .build(),
31
- *
32
- * categories: createSchema('categories')
33
- * .string('name', { required: true })
34
- * .string('slug', { required: true })
35
- * .build(),
36
- *
37
- * tags: createSchema('tags')
38
- * .string('name', { required: true })
39
- * .number('count', { default: 0 })
40
- * .build(),
41
- * })
42
- *
43
- * // 2. 创建客户端集合
44
- * const db = createSchemaClient(schemas, storageClient)
45
- *
46
- * // 3. 通过对象访问使用(类似 Prisma Client)
47
- * const post = await db.posts.create('post-1', {
48
- * title: 'Hello',
49
- * content: 'World'
50
- * })
51
- *
52
- * const category = await db.categories.create('cat-1', {
53
- * name: 'Technology',
54
- * slug: 'tech'
55
- * })
56
- *
57
- * // 4. 类型完全推导
58
- * post.value.title // string 类型
59
- * category.value.name // string 类型
60
- * ```
26
+ * 确认对话框函数类型
61
27
  */
62
- export declare function createSchemaClient<TDefinitions extends SchemaDefinitions>(schemas: TDefinitions, client: StorageClient, options?: TypedStorageOptions): {
63
- [K in keyof TDefinitions]: TypedStorageClient<TDefinitions[K] extends SchemaDefinition<infer TFields> ? TFields : never>;
64
- };
28
+ export type ConfirmDialogFunction = (options: ConfirmDialogOptions) => Promise<ConfirmDialogResult>;
29
+ export interface CreateSchemaClientOptions {
30
+ typedStorage?: TypedStorageOptions;
31
+ /**
32
+ * 自定义确认对话框函数
33
+ * 如果未提供,使用内置的浏览器 confirm
34
+ */
35
+ confirmDialog?: ConfirmDialogFunction;
36
+ /**
37
+ * 迁移选项
38
+ */
39
+ migrateOptions?: MigrateOptions;
40
+ }
41
+ export interface MigrateOptions {
42
+ dryRun?: boolean;
43
+ onChangesDetected?: (namespace: string, changes: MigrationChange[]) => void | Promise<void>;
44
+ onMigrationApplied?: (namespace: string, result: MigrationResult) => void | Promise<void>;
45
+ }
46
+ export interface MigrationChange {
47
+ type: 'addField' | 'removeField' | 'renameField' | 'addIndex' | 'removeIndex' | 'updateIndex' | 'updatePolicy' | 'updateAcl' | 'resetItemAcls';
48
+ field?: string;
49
+ oldFieldName?: string;
50
+ newFieldName?: string;
51
+ description: string;
52
+ acl?: {
53
+ readSubjects?: string[];
54
+ writeSubjects?: string[];
55
+ deleteSubjects?: string[];
56
+ allowItemOverride?: boolean;
57
+ };
58
+ resetOptions?: {
59
+ scope: 'all' | 'customOnly' | 'defaultOnly';
60
+ preserveOwner?: boolean;
61
+ };
62
+ }
63
+ export interface MigrationResult {
64
+ namespace: string;
65
+ hasChanges: boolean;
66
+ changes: MigrationChange[];
67
+ applied: boolean;
68
+ error?: string;
69
+ }
65
70
  /**
66
- * 创建 Schema 定义集合(类型推断辅助函数)
67
- *
68
- * 这个函数本身不做任何运行时操作,只是帮助 TypeScript 推断类型
69
- *
70
- * @example
71
- * ```typescript
72
- * // 定义所有 Schema
73
- * const schemas = defineSchemas({
74
- * posts: createSchema('posts')
75
- * .string('title', { required: true })
76
- * .build(),
77
- * categories: createSchema('categories')
78
- * .string('name', { required: true })
79
- * .build(),
80
- * })
81
- *
82
- * // schemas 的类型:
83
- * // {
84
- * // posts: SchemaDefinition<{ title: StringFieldDef, ... }>
85
- * // categories: SchemaDefinition<{ name: StringFieldDef, ... }>
86
- * // }
87
- * ```
71
+ * 权限错误
88
72
  */
89
- export declare function defineSchemas<T extends SchemaDefinitions>(schemas: T): T;
73
+ export declare class PermissionError extends Error {
74
+ constructor(message?: string);
75
+ }
90
76
  /**
91
- * 便捷函数:一次性定义 Schema 并创建客户端
92
- *
93
- * @example
94
- * ```typescript
95
- * // 定义并创建客户端(一行代码)
96
- * const db = defineAndCreate({
97
- * posts: createSchema('posts')
98
- * .string('title', { required: true })
99
- * .build(),
100
- * categories: createSchema('categories')
101
- * .string('name', { required: true })
102
- * .build(),
103
- * }, storageClient)
104
- *
105
- * // 使用
106
- * await db.posts.create('post-1', { title: 'Hello' })
107
- * ```
77
+ * 用户取消错误
108
78
  */
109
- export declare function defineAndCreate<T extends SchemaDefinitions>(schemas: T, client: StorageClient, options?: TypedStorageOptions): {
110
- [K in keyof T]: TypedStorageClient<T[K] extends SchemaDefinition<infer TFields> ? TFields : never>;
79
+ export declare class UserCancelledError extends Error {
80
+ constructor(message?: string);
81
+ }
82
+ export interface MigrationChange {
83
+ type: 'addField' | 'removeField' | 'renameField' | 'addIndex' | 'removeIndex' | 'updateIndex' | 'updatePolicy' | 'updateAcl' | 'resetItemAcls';
84
+ field?: string;
85
+ oldFieldName?: string;
86
+ newFieldName?: string;
87
+ description: string;
88
+ acl?: {
89
+ readSubjects?: string[];
90
+ writeSubjects?: string[];
91
+ deleteSubjects?: string[];
92
+ allowItemOverride?: boolean;
93
+ };
94
+ resetOptions?: {
95
+ scope: 'all' | 'customOnly' | 'defaultOnly';
96
+ preserveOwner?: boolean;
97
+ };
98
+ }
99
+ export interface MigrationResult {
100
+ namespace: string;
101
+ hasChanges: boolean;
102
+ changes: MigrationChange[];
103
+ applied: boolean;
104
+ error?: string;
105
+ }
106
+ type SchemaClientClients<TDefinitions extends SchemaDefinitions> = {
107
+ [K in keyof TDefinitions]: TypedStorageClient<TDefinitions[K] extends SchemaDefinition<infer TFields> ? TFields : never>;
111
108
  };
112
- export type { SchemaDefinition, FieldsDefinition, InferSchemaType, CreateSchemaType, UpdateSchemaType, TypedStorageOptions, ListOptions, };
109
+ type SchemaClientWithClients<TDefinitions extends SchemaDefinitions> = SchemaClient<TDefinitions> & SchemaClientClients<TDefinitions>;
110
+ declare class SchemaClient<TDefinitions extends SchemaDefinitions> {
111
+ private schemas;
112
+ private client;
113
+ private options;
114
+ private clientsMap;
115
+ private initPromise;
116
+ constructor(schemas: TDefinitions, client: StorageClient, options?: CreateSchemaClientOptions);
117
+ private initialize;
118
+ ready(): Promise<void>;
119
+ get<K extends keyof TDefinitions>(name: K): Promise<SchemaClientClients<TDefinitions>[K]>;
120
+ getClients(): SchemaClientClients<TDefinitions>;
121
+ private wrapClient;
122
+ }
123
+ export declare function createSchemaClient<TDefinitions extends SchemaDefinitions>(schemas: TDefinitions, client: StorageClient, options?: CreateSchemaClientOptions): SchemaClientWithClients<TDefinitions>;
124
+ export declare function defineSchemas<T extends SchemaDefinitions>(schemas: T): T;
125
+ export type { TypedStorageOptions };
113
126
  export { TypedStorageClient };
127
+ export { SchemaClient };
114
128
  //# sourceMappingURL=schema-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-client.d.ts","sourceRoot":"","sources":["../../src/storage/schema-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC1H,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEnG;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAA;AAElF;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAAC,YAAY,SAAS,iBAAiB,IAAI;KACpE,CAAC,IAAI,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,gBAAgB,CAAC,MAAM,OAAO,CAAC,GAC9E,eAAe,CAAC,OAAO,CAAC,GACxB,KAAK;CACV,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,SAAS,iBAAiB,EACvE,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAC5B;KACA,CAAC,IAAI,MAAM,YAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,gBAAgB,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;CACzH,CAcA;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,iBAAiB,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAExE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,iBAAiB,EACzD,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAC5B;KACA,CAAC,IAAI,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,gBAAgB,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;CACnG,CAEA;AAMD,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,GACZ,CAAA;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
1
+ {"version":3,"file":"schema-client.d.ts","sourceRoot":"","sources":["../../src/storage/schema-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAGjB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAGjF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAA;AAElF,MAAM,MAAM,gBAAgB,CAAC,YAAY,SAAS,iBAAiB,IAAI;KACpE,CAAC,IAAI,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,gBAAgB,CAAC,MAAM,OAAO,CAAC,GAC9E,OAAO,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,GAC9C,KAAK;CACV,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAA;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAEnG,MAAM,WAAW,yBAAyB;IACxC,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAClC;;;OAGG;IACH,aAAa,CAAC,EAAE,qBAAqB,CAAA;IACrC;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3F,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1F;AAID,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,GAAG,eAAe,CAAA;IAC9I,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE;QACJ,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;QACvB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;QACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;QACzB,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAC5B,CAAA;IACD,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,KAAK,GAAG,YAAY,GAAG,aAAa,CAAA;QAC3C,aAAa,CAAC,EAAE,OAAO,CAAA;KACxB,CAAA;CACF;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,GAAE,MAAuB;CAI7C;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,GAAE,MAAkB;CAIxC;AA8FD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,cAAc,GAAG,WAAW,GAAG,eAAe,CAAA;IAC9I,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE;QACJ,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;QACvB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;QACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;QACzB,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAC5B,CAAA;IACD,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,KAAK,GAAG,YAAY,GAAG,aAAa,CAAA;QAC3C,aAAa,CAAC,EAAE,OAAO,CAAA;KACxB,CAAA;CACF;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAqLD,KAAK,mBAAmB,CAAC,YAAY,SAAS,iBAAiB,IAAI;KAChE,CAAC,IAAI,MAAM,YAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,gBAAgB,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC;CACzH,CAAA;AAED,KAAK,uBAAuB,CAAC,YAAY,SAAS,iBAAiB,IAAI,YAAY,CAAC,YAAY,CAAC,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAA;AAErI,cAAM,YAAY,CAAC,YAAY,SAAS,iBAAiB;IAKrD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IANjB,OAAO,CAAC,UAAU,CAAmD;IACrE,OAAO,CAAC,WAAW,CAAe;gBAGxB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,yBAA8B;YAyBnC,UAAU;IA6LlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAK/F,UAAU,IAAI,mBAAmB,CAAC,YAAY,CAAC;IAQ/C,OAAO,CAAC,UAAU;CAgBnB;AAED,wBAAgB,kBAAkB,CAAC,YAAY,SAAS,iBAAiB,EACvE,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,yBAA8B,GACtC,uBAAuB,CAAC,YAAY,CAAC,CAEvC;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,iBAAiB,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAExE;AAED,YAAY,EAAE,mBAAmB,EAAE,CAAA;AACnC,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAC7B,OAAO,EAAE,YAAY,EAAE,CAAA"}