@confect/server 1.0.0-next.0 → 1.0.0-next.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/CHANGELOG.md +16 -0
- package/dist/ActionCtx.d.ts.map +1 -1
- package/dist/ActionCtx.js +2 -2
- package/dist/ActionRunner.d.ts.map +1 -1
- package/dist/ActionRunner.js +2 -2
- package/dist/Api.d.ts.map +1 -1
- package/dist/Api.js +2 -2
- package/dist/Api.js.map +1 -1
- package/dist/Auth.d.ts +8 -8
- package/dist/Auth.d.ts.map +1 -1
- package/dist/Auth.js +2 -2
- package/dist/DataModel.d.ts +3 -3
- package/dist/DataModel.d.ts.map +1 -1
- package/dist/DataModel.js +3 -1
- package/dist/DatabaseReader.d.ts +4 -4
- package/dist/DatabaseReader.d.ts.map +1 -1
- package/dist/DatabaseReader.js +2 -2
- package/dist/DatabaseReader.js.map +1 -1
- package/dist/DatabaseSchema.d.ts +32 -32
- package/dist/DatabaseSchema.d.ts.map +1 -1
- package/dist/DatabaseSchema.js +2 -2
- package/dist/DatabaseWriter.d.ts +24 -16
- package/dist/DatabaseWriter.d.ts.map +1 -1
- package/dist/DatabaseWriter.js +27 -25
- package/dist/DatabaseWriter.js.map +1 -1
- package/dist/Document.d.ts.map +1 -1
- package/dist/Document.js +2 -2
- package/dist/FunctionImpl.d.ts.map +1 -1
- package/dist/FunctionImpl.js +2 -2
- package/dist/GroupImpl.d.ts +1 -1
- package/dist/GroupImpl.d.ts.map +1 -1
- package/dist/GroupImpl.js +2 -2
- package/dist/Handler.d.ts.map +1 -1
- package/dist/Handler.js +3 -1
- package/dist/HttpApi.d.ts.map +1 -1
- package/dist/HttpApi.js +2 -2
- package/dist/HttpApi.js.map +1 -1
- package/dist/Impl.d.ts.map +1 -1
- package/dist/Impl.js +2 -2
- package/dist/Impl.js.map +1 -1
- package/dist/MutationCtx.d.ts.map +1 -1
- package/dist/MutationCtx.js +2 -2
- package/dist/MutationRunner.d.ts +3 -3
- package/dist/MutationRunner.d.ts.map +1 -1
- package/dist/MutationRunner.js +2 -2
- package/dist/OrderedQuery.d.ts.map +1 -1
- package/dist/OrderedQuery.js +2 -2
- package/dist/OrderedQuery.js.map +1 -1
- package/dist/QueryCtx.d.ts.map +1 -1
- package/dist/QueryCtx.js +2 -2
- package/dist/QueryInitializer.d.ts +1 -1
- package/dist/QueryInitializer.d.ts.map +1 -1
- package/dist/QueryInitializer.js +2 -2
- package/dist/QueryInitializer.js.map +1 -1
- package/dist/QueryRunner.d.ts.map +1 -1
- package/dist/QueryRunner.js +2 -2
- package/dist/RegisteredFunctions.d.ts +22 -20
- package/dist/RegisteredFunctions.d.ts.map +1 -1
- package/dist/RegisteredFunctions.js +2 -2
- package/dist/RegisteredFunctions.js.map +1 -1
- package/dist/Registry.d.ts.map +1 -1
- package/dist/Registry.js +2 -2
- package/dist/RegistryItem.d.ts.map +1 -1
- package/dist/RegistryItem.js +2 -2
- package/dist/Scheduler.d.ts +7 -7
- package/dist/Scheduler.d.ts.map +1 -1
- package/dist/Scheduler.js +2 -2
- package/dist/SchemaToValidator.d.ts +7 -7
- package/dist/SchemaToValidator.d.ts.map +1 -1
- package/dist/SchemaToValidator.js +2 -2
- package/dist/SchemaToValidator.js.map +1 -1
- package/dist/Storage.d.ts.map +1 -1
- package/dist/Storage.js +2 -2
- package/dist/Table.d.ts +53 -53
- package/dist/Table.d.ts.map +1 -1
- package/dist/Table.js +2 -2
- package/dist/Table.js.map +1 -1
- package/dist/TableInfo.d.ts +1 -1
- package/dist/TableInfo.d.ts.map +1 -1
- package/dist/TableInfo.js +3 -1
- package/dist/TableInfo.js.map +1 -1
- package/dist/VectorSearch.d.ts +7 -7
- package/dist/VectorSearch.d.ts.map +1 -1
- package/dist/VectorSearch.js +2 -2
- package/dist/_virtual/_rolldown/runtime.js +18 -0
- package/dist/internal/utils.d.ts.map +1 -1
- package/dist/internal/utils.js +2 -2
- package/dist/internal/utils.js.map +1 -1
- package/package.json +29 -27
- package/src/Api.ts +4 -2
- package/src/DatabaseWriter.ts +102 -113
- package/src/Impl.ts +4 -2
- package/src/RegisteredFunctions.ts +1 -9
- package/src/SchemaToValidator.ts +1 -3
- package/src/Table.ts +4 -4
- package/src/TableInfo.ts +0 -1
- package/dist/_virtual/rolldown_runtime.js +0 -13
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@confect/server",
|
|
3
|
-
"version": "1.0.0-next.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.0-next.2",
|
|
4
|
+
"description": "Backend bindings to the Convex platform",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/rjdellecese/confect.git"
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"bugs": {
|
|
10
10
|
"url": "https://github.com/rjdellecese/confect/issues"
|
|
11
11
|
},
|
|
12
|
-
"homepage": "https://confect.
|
|
12
|
+
"homepage": "https://confect.dev",
|
|
13
13
|
"sideEffects": false,
|
|
14
14
|
"type": "module",
|
|
15
15
|
"files": [
|
|
@@ -39,37 +39,38 @@
|
|
|
39
39
|
"author": "RJ Dellecese",
|
|
40
40
|
"license": "ISC",
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@effect/cluster": "0.
|
|
43
|
-
"@effect/experimental": "0.
|
|
44
|
-
"@effect/language-service": "0.
|
|
45
|
-
"@effect/platform
|
|
46
|
-
"@effect/
|
|
47
|
-
"@effect/
|
|
42
|
+
"@effect/cluster": "0.56.3",
|
|
43
|
+
"@effect/experimental": "0.58.0",
|
|
44
|
+
"@effect/language-service": "0.73.1",
|
|
45
|
+
"@effect/platform": "0.94.4",
|
|
46
|
+
"@effect/platform-node": "0.104.1",
|
|
47
|
+
"@effect/rpc": "0.73.0",
|
|
48
|
+
"@effect/sql": "0.49.0",
|
|
48
49
|
"@effect/vitest": "0.27.0",
|
|
49
|
-
"@effect/workflow": "
|
|
50
|
-
"@eslint/js": "9.39.
|
|
50
|
+
"@effect/workflow": "0.16.0",
|
|
51
|
+
"@eslint/js": "9.39.2",
|
|
51
52
|
"@swc/jest": "0.2.39",
|
|
52
|
-
"@
|
|
53
|
-
"@types/node": "24.10.1",
|
|
53
|
+
"@types/node": "25.2.3",
|
|
54
54
|
"@vitest/coverage-v8": "3.2.4",
|
|
55
|
-
"convex-test": "0.0.
|
|
56
|
-
"dotenv": "17.
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
55
|
+
"convex-test": "0.0.41",
|
|
56
|
+
"dotenv": "17.3.1",
|
|
57
|
+
"effect": "3.19.16",
|
|
58
|
+
"eslint": "9.39.2",
|
|
59
|
+
"prettier": "3.8.1",
|
|
60
|
+
"tsdown": "0.20.3",
|
|
60
61
|
"typescript": "5.9.3",
|
|
61
|
-
"typescript-eslint": "8.
|
|
62
|
-
"vite": "7.
|
|
63
|
-
"vite-tsconfig-paths": "
|
|
62
|
+
"typescript-eslint": "8.55.0",
|
|
63
|
+
"vite": "7.3.1",
|
|
64
|
+
"vite-tsconfig-paths": "6.1.1",
|
|
64
65
|
"vitest": "3.2.4",
|
|
65
|
-
"@confect/cli": "1.0.0-next.
|
|
66
|
-
"@confect/test": "1.0.0-next.
|
|
66
|
+
"@confect/cli": "1.0.0-next.2",
|
|
67
|
+
"@confect/test": "1.0.0-next.2"
|
|
67
68
|
},
|
|
68
69
|
"peerDependencies": {
|
|
69
|
-
"@effect/platform": "^0.
|
|
70
|
+
"@effect/platform": "^0.94.4",
|
|
70
71
|
"convex": "^1.30.0",
|
|
71
|
-
"effect": "^3.19.
|
|
72
|
-
"@confect/core": "1.0.0-next.
|
|
72
|
+
"effect": "^3.19.16",
|
|
73
|
+
"@confect/core": "1.0.0-next.2"
|
|
73
74
|
},
|
|
74
75
|
"engines": {
|
|
75
76
|
"node": ">=22",
|
|
@@ -84,7 +85,8 @@
|
|
|
84
85
|
"test": "vitest run",
|
|
85
86
|
"typecheck": "tsc --noEmit --project tsconfig.json",
|
|
86
87
|
"fix": "prettier --write . && eslint --fix . --max-warnings=0",
|
|
87
|
-
"
|
|
88
|
+
"format": "prettier --check .",
|
|
89
|
+
"lint": "eslint . --max-warnings=0",
|
|
88
90
|
"clean": "rm -rf dist coverage node_modules"
|
|
89
91
|
}
|
|
90
92
|
}
|
package/src/Api.ts
CHANGED
|
@@ -23,8 +23,10 @@ export interface Any {
|
|
|
23
23
|
readonly [TypeId]: TypeId;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
export interface AnyWithProps
|
|
27
|
-
|
|
26
|
+
export interface AnyWithProps extends Api<
|
|
27
|
+
DatabaseSchema.AnyWithProps,
|
|
28
|
+
Spec.AnyWithProps
|
|
29
|
+
> {}
|
|
28
30
|
|
|
29
31
|
export type Schema<Api_ extends AnyWithProps> = Api_["databaseSchema"];
|
|
30
32
|
|
package/src/DatabaseWriter.ts
CHANGED
|
@@ -22,124 +22,113 @@ export const make = <DatabaseSchema_ extends DatabaseSchema.AnyWithProps>(
|
|
|
22
22
|
>,
|
|
23
23
|
) => {
|
|
24
24
|
type DataModel_ = DataModel.FromSchema<DatabaseSchema_>;
|
|
25
|
+
const tables = databaseSchema.tables as Record<string, Table.AnyWithProps>;
|
|
25
26
|
|
|
26
|
-
const
|
|
27
|
+
const table = <const TableName extends DataModel.TableNames<DataModel_>>(
|
|
27
28
|
tableName: TableName,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const id = yield* Effect.promise(() =>
|
|
44
|
-
convexDatabaseWriter.insert(
|
|
29
|
+
) => {
|
|
30
|
+
const tableDef = tables[tableName]!;
|
|
31
|
+
const tableSchema = tableDef.Fields as TableInfo.TableSchema<
|
|
32
|
+
DataModel.TableInfoWithName_<DataModel_, TableName>
|
|
33
|
+
>;
|
|
34
|
+
|
|
35
|
+
const insert = (
|
|
36
|
+
document: Document.WithoutSystemFields<
|
|
37
|
+
DocumentByName_<DataModel_, TableName>
|
|
38
|
+
>,
|
|
39
|
+
) =>
|
|
40
|
+
Effect.gen(function* () {
|
|
41
|
+
const encodedDocument = yield* Document.encode(
|
|
42
|
+
document,
|
|
45
43
|
tableName,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
const delete_ = <TableName extends DataModel.TableNames<DataModel_>>(
|
|
134
|
-
_tableName: TableName,
|
|
135
|
-
id: GenericId<TableName>,
|
|
136
|
-
) => Effect.promise(() => convexDatabaseWriter.delete(id));
|
|
44
|
+
tableDef.Fields,
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
const id = yield* Effect.promise(() =>
|
|
48
|
+
convexDatabaseWriter.insert(
|
|
49
|
+
tableName,
|
|
50
|
+
encodedDocument as WithoutSystemFields<
|
|
51
|
+
DocumentByName<DataModel.ToConvex<DataModel_>, TableName>
|
|
52
|
+
>,
|
|
53
|
+
),
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
return id;
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const patch = (
|
|
60
|
+
id: GenericId<TableName>,
|
|
61
|
+
patchedValues: Partial<
|
|
62
|
+
WithoutSystemFields<DocumentByName_<DataModel_, TableName>>
|
|
63
|
+
>,
|
|
64
|
+
) =>
|
|
65
|
+
Effect.gen(function* () {
|
|
66
|
+
const originalDecodedDoc = yield* QueryInitializer.getById(
|
|
67
|
+
tableName,
|
|
68
|
+
convexDatabaseWriter as any,
|
|
69
|
+
tableDef,
|
|
70
|
+
)(id);
|
|
71
|
+
|
|
72
|
+
const updatedEncodedDoc = yield* pipe(
|
|
73
|
+
patchedValues,
|
|
74
|
+
Record.reduce(originalDecodedDoc, (acc, value, key) =>
|
|
75
|
+
value === undefined
|
|
76
|
+
? Record.remove(acc, key)
|
|
77
|
+
: Record.set(acc, key, value),
|
|
78
|
+
),
|
|
79
|
+
Document.encode(tableName, tableSchema),
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
yield* Effect.promise(() =>
|
|
83
|
+
convexDatabaseWriter.replace(
|
|
84
|
+
id,
|
|
85
|
+
updatedEncodedDoc as Expand<
|
|
86
|
+
BetterOmit<
|
|
87
|
+
DocumentByName<DataModel.ToConvex<DataModel_>, TableName>,
|
|
88
|
+
"_creationTime" | "_id"
|
|
89
|
+
>
|
|
90
|
+
>,
|
|
91
|
+
),
|
|
92
|
+
);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
const replace = (
|
|
96
|
+
id: GenericId<TableName>,
|
|
97
|
+
value: WithoutSystemFields<DocumentByName_<DataModel_, TableName>>,
|
|
98
|
+
) =>
|
|
99
|
+
Effect.gen(function* () {
|
|
100
|
+
const updatedEncodedDoc = yield* Document.encode(
|
|
101
|
+
value,
|
|
102
|
+
tableName,
|
|
103
|
+
tableSchema,
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
yield* Effect.promise(() =>
|
|
107
|
+
convexDatabaseWriter.replace(
|
|
108
|
+
id,
|
|
109
|
+
updatedEncodedDoc as Expand<
|
|
110
|
+
BetterOmit<
|
|
111
|
+
DocumentByName<DataModel.ToConvex<DataModel_>, TableName>,
|
|
112
|
+
"_creationTime" | "_id"
|
|
113
|
+
>
|
|
114
|
+
>,
|
|
115
|
+
),
|
|
116
|
+
);
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
const delete_ = (id: GenericId<TableName>) =>
|
|
120
|
+
Effect.promise(() => convexDatabaseWriter.delete(id));
|
|
121
|
+
|
|
122
|
+
return {
|
|
123
|
+
insert,
|
|
124
|
+
patch,
|
|
125
|
+
replace,
|
|
126
|
+
delete: delete_,
|
|
127
|
+
};
|
|
128
|
+
};
|
|
137
129
|
|
|
138
130
|
return {
|
|
139
|
-
|
|
140
|
-
patch,
|
|
141
|
-
replace,
|
|
142
|
-
delete: delete_,
|
|
131
|
+
table,
|
|
143
132
|
};
|
|
144
133
|
};
|
|
145
134
|
|
package/src/Impl.ts
CHANGED
|
@@ -20,8 +20,10 @@ export interface Impl<
|
|
|
20
20
|
|
|
21
21
|
export type FinalizationStatus = "Unfinalized" | "Finalized";
|
|
22
22
|
|
|
23
|
-
export interface AnyWithProps
|
|
24
|
-
|
|
23
|
+
export interface AnyWithProps extends Impl<
|
|
24
|
+
Api.AnyWithProps,
|
|
25
|
+
FinalizationStatus
|
|
26
|
+
> {}
|
|
25
27
|
|
|
26
28
|
export const Impl = <
|
|
27
29
|
Api_ extends Api.AnyWithProps,
|
|
@@ -17,15 +17,7 @@ import {
|
|
|
17
17
|
type RegisteredMutation,
|
|
18
18
|
type RegisteredQuery,
|
|
19
19
|
} from "convex/server";
|
|
20
|
-
import {
|
|
21
|
-
Effect,
|
|
22
|
-
Layer,
|
|
23
|
-
Match,
|
|
24
|
-
pipe,
|
|
25
|
-
Ref,
|
|
26
|
-
Schema,
|
|
27
|
-
type Types,
|
|
28
|
-
} from "effect";
|
|
20
|
+
import { Effect, Layer, Match, pipe, Ref, Schema, type Types } from "effect";
|
|
29
21
|
import * as ActionCtx from "./ActionCtx";
|
|
30
22
|
import * as ActionRunner from "./ActionRunner";
|
|
31
23
|
import type * as Api from "./Api";
|
package/src/SchemaToValidator.ts
CHANGED
|
@@ -86,8 +86,7 @@ export type TableSchemaToTableValidator<
|
|
|
86
86
|
| VObject<any, any, any, any>
|
|
87
87
|
| VUnion<any, any, any, any>
|
|
88
88
|
? Vd
|
|
89
|
-
:
|
|
90
|
-
never;
|
|
89
|
+
: never;
|
|
91
90
|
|
|
92
91
|
export const compileTableSchema = <
|
|
93
92
|
TableSchema extends Schema.Schema.AnyNoContext,
|
|
@@ -244,7 +243,6 @@ type ValueTupleToValidatorTuple<VlTuple extends ReadonlyArray<ReadonlyValue>> =
|
|
|
244
243
|
|
|
245
244
|
export const compileSchema = <T, E>(
|
|
246
245
|
schema: Schema.Schema<T, E>,
|
|
247
|
-
// TODO: Can `ValueToValidator` here just accept `E` directly?
|
|
248
246
|
): ValueToValidator<(typeof schema)["Encoded"]> =>
|
|
249
247
|
runSyncThrow(compileAst(schema.ast)) as any;
|
|
250
248
|
|
package/src/Table.ts
CHANGED
|
@@ -27,8 +27,8 @@ export const isTable = (u: unknown): u is Any =>
|
|
|
27
27
|
export interface Table<
|
|
28
28
|
Name_ extends string,
|
|
29
29
|
TableSchema_ extends Schema.Schema.AnyNoContext,
|
|
30
|
-
TableValidator_ extends
|
|
31
|
-
|
|
30
|
+
TableValidator_ extends GenericValidator =
|
|
31
|
+
TableSchemaToTableValidator<TableSchema_>,
|
|
32
32
|
Indexes_ extends GenericTableIndexes = {},
|
|
33
33
|
SearchIndexes_ extends GenericTableSearchIndexes = {},
|
|
34
34
|
VectorIndexes_ extends GenericTableVectorIndexes = {},
|
|
@@ -349,8 +349,8 @@ const makeProto = <
|
|
|
349
349
|
export const make = <
|
|
350
350
|
const Name_ extends string,
|
|
351
351
|
TableSchema_ extends Schema.Schema.AnyNoContext,
|
|
352
|
-
TableValidator_ extends
|
|
353
|
-
|
|
352
|
+
TableValidator_ extends GenericValidator =
|
|
353
|
+
TableSchemaToTableValidator<TableSchema_>,
|
|
354
354
|
Indexes_ extends GenericTableIndexes = {},
|
|
355
355
|
SearchIndexes_ extends GenericTableSearchIndexes = {},
|
|
356
356
|
VectorIndexes_ extends GenericTableVectorIndexes = {},
|
package/src/TableInfo.ts
CHANGED
|
@@ -30,7 +30,6 @@ export type TableInfo<Table_ extends Table.AnyWithProps> =
|
|
|
30
30
|
readonly [TypeId]: TypeId;
|
|
31
31
|
readonly document: Table_["Doc"]["Type"];
|
|
32
32
|
readonly encodedDocument: Table_["Doc"]["Encoded"];
|
|
33
|
-
// TODO: Can we exclude this and derive the convex document type from the encoded document?
|
|
34
33
|
readonly convexDocument: ExtractConvexDocument<
|
|
35
34
|
TableName,
|
|
36
35
|
TableValidator
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
//#region rolldown:runtime
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __export = (all) => {
|
|
4
|
-
let target = {};
|
|
5
|
-
for (var name in all) __defProp(target, name, {
|
|
6
|
-
get: all[name],
|
|
7
|
-
enumerable: true
|
|
8
|
-
});
|
|
9
|
-
return target;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
//#endregion
|
|
13
|
-
export { __export };
|