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 +132 -9
- package/dist/index.d.ts +10 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -13
- package/dist/index.js.map +1 -1
- package/dist/storage/schema-client.d.ts +114 -100
- package/dist/storage/schema-client.d.ts.map +1 -1
- package/dist/storage/schema-client.js +455 -94
- package/dist/storage/schema-client.js.map +1 -1
- package/dist/storage/schema.d.ts +319 -29
- package/dist/storage/schema.d.ts.map +1 -1
- package/dist/storage/schema.js +382 -15
- package/dist/storage/schema.js.map +1 -1
- package/dist/storage/storage-types.d.ts +37 -7
- package/dist/storage/storage-types.d.ts.map +1 -1
- package/dist/storage/storage.d.ts +151 -0
- package/dist/storage/storage.d.ts.map +1 -1
- package/dist/storage/storage.js +109 -2
- package/dist/storage/storage.js.map +1 -1
- package/dist/storage/typed-storage.d.ts +82 -0
- package/dist/storage/typed-storage.d.ts.map +1 -1
- package/dist/storage/typed-storage.js +212 -10
- package/dist/storage/typed-storage.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
# tezign-ai-appstore-sdk
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
150
|
+
## License
|
|
28
151
|
|
|
29
|
-
|
|
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 {
|
|
3
|
-
export { createSchema, SchemaBuilder,
|
|
4
|
-
export type {
|
|
5
|
-
export {
|
|
6
|
-
export
|
|
7
|
-
export {
|
|
8
|
-
export type {
|
|
9
|
-
export { createSchemaClient, defineSchemas,
|
|
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,
|
|
12
|
+
export type { CreateOssUploadClientOptions, CompleteUploadResult, UploadListItem, UploadListResult, } from './uploader/index.js';
|
|
15
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
5
|
-
export {
|
|
6
|
-
|
|
7
|
-
export {
|
|
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,
|
|
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
|
|
3
|
-
import { TypedStorageClient, type TypedStorageOptions
|
|
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
|
-
*
|
|
6
|
-
* 用于集中定义多个 Schema
|
|
9
|
+
* 确认对话框选项
|
|
7
10
|
*/
|
|
8
|
-
export
|
|
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
|
-
*
|
|
19
|
+
* 确认对话框结果
|
|
11
20
|
*/
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
21
|
+
export interface ConfirmDialogResult {
|
|
22
|
+
confirmed: boolean;
|
|
23
|
+
cancelled?: boolean;
|
|
24
|
+
}
|
|
15
25
|
/**
|
|
16
|
-
*
|
|
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
|
|
63
|
-
|
|
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
|
-
*
|
|
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
|
|
73
|
+
export declare class PermissionError extends Error {
|
|
74
|
+
constructor(message?: string);
|
|
75
|
+
}
|
|
90
76
|
/**
|
|
91
|
-
*
|
|
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
|
|
110
|
-
|
|
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
|
-
|
|
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,
|
|
1
|
+
{"version":3,"file":"schema-client.d.ts","sourceRoot":"","sources":["../../src/storage/schema-client.ts"],"names":[],"mappings":"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"}
|