@sentio/sdk 2.39.4-rc.6 → 2.39.4-rc.8
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/lib/store/codegen.d.ts +0 -2
- package/lib/store/codegen.d.ts.map +1 -1
- package/lib/store/codegen.js +137 -170
- package/lib/store/codegen.js.map +1 -1
- package/lib/store/convert.d.ts +9 -9
- package/lib/store/convert.d.ts.map +1 -1
- package/lib/store/convert.js +64 -27
- package/lib/store/convert.js.map +1 -1
- package/lib/store/decorators.d.ts +25 -7
- package/lib/store/decorators.d.ts.map +1 -1
- package/lib/store/decorators.js +157 -16
- package/lib/store/decorators.js.map +1 -1
- package/lib/store/index.d.ts +0 -1
- package/lib/store/index.d.ts.map +1 -1
- package/lib/store/index.js +0 -1
- package/lib/store/index.js.map +1 -1
- package/lib/store/store.d.ts +10 -4
- package/lib/store/store.d.ts.map +1 -1
- package/lib/store/store.js +38 -16
- package/lib/store/store.js.map +1 -1
- package/lib/store/types.d.ts +21 -2
- package/lib/store/types.d.ts.map +1 -1
- package/lib/store/types.js +14 -1
- package/lib/store/types.js.map +1 -1
- package/package.json +4 -3
- package/src/store/codegen.ts +171 -196
- package/src/store/convert.ts +73 -28
- package/src/store/decorators.ts +178 -16
- package/src/store/index.ts +0 -1
- package/src/store/store.ts +51 -20
- package/src/store/types.ts +24 -2
- package/lib/store/entity.d.ts +0 -23
- package/lib/store/entity.d.ts.map +0 -1
- package/lib/store/entity.js +0 -70
- package/lib/store/entity.js.map +0 -1
- package/src/store/entity.ts +0 -84
package/lib/store/codegen.d.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/store/codegen.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../src/store/codegen.ts"],"names":[],"mappings":"AAgDA,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,iBAW9D"}
|
package/lib/store/codegen.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { GraphQLEnumType, GraphQLInterfaceType, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLScalarType,
|
1
|
+
import { GraphQLEnumType, GraphQLInterfaceType, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLScalarType, isEnumType, isListType, isNonNullType } from 'graphql';
|
2
2
|
import * as fs from 'node:fs';
|
3
3
|
import path from 'path';
|
4
4
|
import mkdirp from 'mkdirp';
|
@@ -16,26 +16,80 @@ export async function codegen(srcDir, outputDir) {
|
|
16
16
|
}
|
17
17
|
}
|
18
18
|
}
|
19
|
+
function addTypeAnnotations(ty, annotations) {
|
20
|
+
if (isNonNullType(ty)) {
|
21
|
+
annotations.push('@Required');
|
22
|
+
addTypeAnnotations(ty.ofType, annotations);
|
23
|
+
return;
|
24
|
+
}
|
25
|
+
if (isRelationType(ty)) {
|
26
|
+
if (isListType(ty)) {
|
27
|
+
annotations.push(`@Many("${ty.ofType}")`);
|
28
|
+
}
|
29
|
+
else {
|
30
|
+
annotations.push(`@One("${ty}")`);
|
31
|
+
}
|
32
|
+
}
|
33
|
+
else if (isEnumType(ty)) {
|
34
|
+
annotations.push(`@Column("String${isNonNullType(ty) ? '!' : ''}")`);
|
35
|
+
}
|
36
|
+
else {
|
37
|
+
if (isListType(ty)) {
|
38
|
+
if (isListType(ty.ofType)) {
|
39
|
+
annotations.push(`@ListColumn()`);
|
40
|
+
addTypeAnnotations(ty.ofType, annotations);
|
41
|
+
}
|
42
|
+
else {
|
43
|
+
annotations.push(`@ListColumn("${ty.ofType}")`);
|
44
|
+
}
|
45
|
+
}
|
46
|
+
else {
|
47
|
+
annotations.push(`@Column("${ty}")`);
|
48
|
+
}
|
49
|
+
}
|
50
|
+
}
|
19
51
|
async function codegenInternal(schema, source, target) {
|
20
|
-
const
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
52
|
+
const imports = [
|
53
|
+
{
|
54
|
+
module: '@sentio/sdk/store',
|
55
|
+
types: ['String', 'Int', 'BigInt', 'Float', 'ID', 'Bytes', 'Timestamp', 'Boolean'],
|
56
|
+
importType: true
|
57
|
+
},
|
58
|
+
{
|
59
|
+
module: '@sentio/sdk/store',
|
60
|
+
types: ['Entity', 'Required', 'One', 'Many', 'Column', 'ListColumn']
|
61
|
+
},
|
62
|
+
{
|
63
|
+
module: '@sentio/bigdecimal',
|
64
|
+
types: ['BigDecimal']
|
65
|
+
},
|
66
|
+
{
|
67
|
+
module: '@sentio/sdk',
|
68
|
+
types: ['DatabaseSchema']
|
69
|
+
}
|
28
70
|
];
|
29
|
-
const
|
71
|
+
const enumns = [];
|
72
|
+
const interfaces = [];
|
73
|
+
const classes = [];
|
30
74
|
for (const t of Object.values(schema.getTypeMap())) {
|
31
75
|
if (t.name.startsWith('__')) {
|
32
76
|
continue;
|
33
77
|
}
|
34
78
|
if (t instanceof GraphQLEnumType) {
|
35
|
-
|
79
|
+
enumns.push({
|
80
|
+
name: t.name,
|
81
|
+
values: t.getValues().map((v) => v.value)
|
82
|
+
});
|
36
83
|
}
|
37
84
|
if (t instanceof GraphQLInterfaceType) {
|
38
|
-
|
85
|
+
interfaces.push({
|
86
|
+
name: t.name,
|
87
|
+
fields: Object.values(t.getFields()).map((f) => ({
|
88
|
+
name: f.name,
|
89
|
+
type: genType(f.type),
|
90
|
+
annotations: []
|
91
|
+
}))
|
92
|
+
});
|
39
93
|
}
|
40
94
|
}
|
41
95
|
for (const t of Object.values(schema.getTypeMap())) {
|
@@ -43,40 +97,82 @@ async function codegenInternal(schema, source, target) {
|
|
43
97
|
continue;
|
44
98
|
}
|
45
99
|
if (t instanceof GraphQLObjectType) {
|
46
|
-
const
|
47
|
-
|
48
|
-
|
100
|
+
const fields = [];
|
101
|
+
for (const f of Object.values(t.getFields())) {
|
102
|
+
const type = genType(f.type);
|
103
|
+
const annotations = [];
|
104
|
+
addTypeAnnotations(f.type, annotations);
|
105
|
+
if (isRelationType(f.type)) {
|
106
|
+
fields.push({
|
107
|
+
name: f.name,
|
108
|
+
type: `Promise<${type}>`,
|
109
|
+
annotations
|
110
|
+
});
|
111
|
+
const isMany = type.startsWith('Array');
|
112
|
+
fields.push({
|
113
|
+
name: f.name + 'ID' + (isMany ? 's' : ''),
|
114
|
+
type: isMany ? `Array<ID | undefined>` : `ID`,
|
115
|
+
annotations: []
|
116
|
+
});
|
117
|
+
}
|
118
|
+
else {
|
119
|
+
fields.push({
|
120
|
+
name: f.name,
|
121
|
+
type: type,
|
122
|
+
annotations
|
123
|
+
});
|
124
|
+
}
|
125
|
+
}
|
126
|
+
classes.push({
|
127
|
+
name: t.name,
|
128
|
+
fields,
|
129
|
+
annotations: [`@Entity("${t.name}")`],
|
130
|
+
interfaces: t.getInterfaces().map((i) => i.name)
|
131
|
+
});
|
49
132
|
}
|
50
133
|
}
|
51
|
-
const
|
134
|
+
const template = `
|
135
|
+
/* Autogenerated file. Do not edit manually. */
|
136
|
+
/* tslint:disable */
|
137
|
+
/* eslint-disable */
|
138
|
+
${imports.map((i) => `import ${i.importType ? 'type ' : ''}{ ${i.types.join(', ')} } from '${i.module}'`).join('\n')}
|
139
|
+
|
140
|
+
${enumns
|
141
|
+
.map((e) => `export enum ${e.name} {
|
142
|
+
${e.values.map((v) => `${v} = "${v}"`).join(', ')}
|
143
|
+
}`)
|
144
|
+
.join('\n')}
|
145
|
+
|
146
|
+
${interfaces
|
147
|
+
.map((i) => `export interface ${i.name} {
|
148
|
+
${i.fields.map((f) => `\t${f.name}: ${f.type}`).join('\n')}
|
149
|
+
}`)
|
150
|
+
.join('\n')}
|
151
|
+
|
152
|
+
${classes
|
153
|
+
.map((c) => `
|
154
|
+
${c.annotations.join('\n')}
|
155
|
+
export class ${c.name} ${c.interfaces.length > 0 ? `implements ${c.interfaces.join(', ')}` : ''} {
|
156
|
+
${c.fields.map((f) => `${f.annotations.map((a) => `\n\t${a}`).join('')}\n\t${f.name}: ${f.type}`).join('\n')}
|
157
|
+
|
158
|
+
constructor(data: Partial<${c.name}>) {}
|
159
|
+
|
160
|
+
}`)
|
161
|
+
.join('\n')}
|
162
|
+
`;
|
163
|
+
const contents = template +
|
52
164
|
`\n
|
53
165
|
const source = \`${source.replaceAll('`', '`')}\`
|
54
166
|
DatabaseSchema.register({
|
55
167
|
source,
|
56
168
|
entities: {
|
57
|
-
${
|
169
|
+
${classes.map((e) => `"${e.name}": ${e.name}`).join(',\n\t\t')}
|
58
170
|
}
|
59
171
|
})
|
60
172
|
`;
|
61
173
|
await mkdirp(path.dirname(target));
|
62
174
|
fs.writeFileSync(target, contents);
|
63
175
|
}
|
64
|
-
const JsTypes = {
|
65
|
-
ID: 'string',
|
66
|
-
String: 'string',
|
67
|
-
Int: 'number',
|
68
|
-
Float: 'number',
|
69
|
-
Boolean: 'boolean',
|
70
|
-
BigInt: 'bigint',
|
71
|
-
BigDecimal: 'BigDecimal',
|
72
|
-
DateTime: 'Date',
|
73
|
-
Json: 'any',
|
74
|
-
Bytes: 'Uint8Array'
|
75
|
-
};
|
76
|
-
const graphqlTypes = Object.entries(JsTypes).reduce((acc, [k, v]) => {
|
77
|
-
acc[v] = k;
|
78
|
-
return acc;
|
79
|
-
}, {});
|
80
176
|
function genType(type, required) {
|
81
177
|
if (type instanceof GraphQLNonNull) {
|
82
178
|
return genType(type.ofType, true);
|
@@ -85,159 +181,30 @@ function genType(type, required) {
|
|
85
181
|
return required ? type.name : `${type.name} | undefined`;
|
86
182
|
}
|
87
183
|
else if (type instanceof GraphQLObjectType || type instanceof GraphQLInterfaceType) {
|
88
|
-
return type.name
|
184
|
+
return required ? type.name : `${type.name} | undefined`;
|
89
185
|
}
|
90
186
|
else if (type instanceof GraphQLList) {
|
91
187
|
return `Array<${genType(type.ofType)}>`;
|
92
188
|
}
|
93
189
|
else if (type instanceof GraphQLEnumType) {
|
94
|
-
return type.name
|
190
|
+
return required ? type.name : `${type.name} | undefined`;
|
95
191
|
}
|
96
192
|
else {
|
97
193
|
throw new Error('Unsupported type: ' + type);
|
98
194
|
}
|
99
195
|
}
|
100
|
-
function
|
101
|
-
if (type instanceof GraphQLNonNull) {
|
102
|
-
return isObject(type.ofType);
|
103
|
-
}
|
104
|
-
else if (type instanceof GraphQLList) {
|
105
|
-
return isObject(type.ofType);
|
106
|
-
}
|
107
|
-
return isObjectType(type) || isInterfaceType(type);
|
108
|
-
}
|
109
|
-
function isList(type) {
|
196
|
+
function isRelationType(type) {
|
110
197
|
if (type instanceof GraphQLNonNull) {
|
111
|
-
return
|
198
|
+
return isRelationType(type.ofType);
|
112
199
|
}
|
113
|
-
else {
|
114
|
-
return
|
115
|
-
}
|
116
|
-
}
|
117
|
-
function getElementType(type) {
|
118
|
-
if (type instanceof GraphQLNonNull) {
|
119
|
-
return getElementType(type.ofType);
|
200
|
+
else if (type instanceof GraphQLObjectType || type instanceof GraphQLInterfaceType) {
|
201
|
+
return true;
|
120
202
|
}
|
121
203
|
else if (type instanceof GraphQLList) {
|
122
|
-
return type.ofType;
|
123
|
-
}
|
124
|
-
return type;
|
125
|
-
}
|
126
|
-
const getConverter = (t) => {
|
127
|
-
if (t instanceof GraphQLNonNull) {
|
128
|
-
return `required_(${getConverter(t.ofType)})`;
|
129
|
-
}
|
130
|
-
if (t instanceof GraphQLList) {
|
131
|
-
return `array_(${getConverter(t.ofType)})`;
|
132
|
-
}
|
133
|
-
if (t instanceof GraphQLEnumType) {
|
134
|
-
return `enumerate_<${t.name}>(${t.name})`;
|
135
|
-
}
|
136
|
-
if (isObject(t)) {
|
137
|
-
return `objectId_<${genType(getElementType(t))}>()`;
|
138
|
-
}
|
139
|
-
return `${t.name}Converter`;
|
140
|
-
};
|
141
|
-
function genField(field) {
|
142
|
-
const isNonNull = field.type instanceof GraphQLNonNull;
|
143
|
-
const directives = field.astNode?.directives?.map((d) => '\t' + directive2decorator(d) + '\n') || [];
|
144
|
-
const type = genType(field.type);
|
145
|
-
if (isObject(field.type)) {
|
146
|
-
const t = getElementType(field.type);
|
147
|
-
const typeAsArg = isInterfaceType(t) ? `"${t}"` : genType(t);
|
148
|
-
if (isList(field.type)) {
|
149
|
-
const required = field.type.ofType instanceof GraphQLNonNull;
|
150
|
-
const converter = required ? `array_(required_(IDConverter))` : `array_(IDConverter)`;
|
151
|
-
const returnType = required ? `ID[]` : `Array<ID | undefined>`;
|
152
|
-
return `${directives.join()}\tget ${field.name}(): Promise<${genType(t)}[]> { return this.getFieldObjectArray(${typeAsArg}, "${field.name}") as Promise<${genType(t)}[]> }
|
153
|
-
set ${field.name}(value: ${type} | ID[]) { this.setObject("${field.name}", value) }
|
154
|
-
get ${field.name}Ids(): ${returnType} { return this.get("${field.name}", ${converter}) }`;
|
155
|
-
}
|
156
|
-
return `${directives.join()}\tget ${field.name}(): Promise<${genType(t)} | undefined> { return this.getObject(${typeAsArg},"${field.name}") as Promise<${genType(t)} | undefined> }
|
157
|
-
set ${field.name}(value: ${type} | ID) { this.set("${field.name}", value, objectId_<${type}>()) }
|
158
|
-
get ${field.name}Id(): ID | undefined { return this.get("${field.name}", IDConverter) }`;
|
159
|
-
}
|
160
|
-
return `${directives.join()}\tget ${field.name}(): ${type} { return this.get("${field.name}", ${getConverter(field.type)}) }
|
161
|
-
set ${field.name}(value: ${type}) { this.set("${field.name}", value, ${getConverter(field.type)}) }`;
|
162
|
-
}
|
163
|
-
function genDataType(t) {
|
164
|
-
let output = `type ${t.name}Data = `;
|
165
|
-
const relationsFields = Object.values(t.getFields()).filter((f) => isObject(f.type));
|
166
|
-
if (relationsFields.length > 0) {
|
167
|
-
output += `Omit<${t.name}, ${relationsFields.map((f) => `"${f.name}"`).join(' | ')}>`;
|
168
|
-
output +=
|
169
|
-
' & {' +
|
170
|
-
relationsFields
|
171
|
-
.map((f) => {
|
172
|
-
const type = genType(getElementType(f.type));
|
173
|
-
return `${f.name}?: ${isList(f.type) ? `Array<ID|${type}>` : `ID | ${type}`}`;
|
174
|
-
})
|
175
|
-
.join(', ') +
|
176
|
-
'}';
|
204
|
+
return isRelationType(type.ofType);
|
177
205
|
}
|
178
206
|
else {
|
179
|
-
|
207
|
+
return false;
|
180
208
|
}
|
181
|
-
return output;
|
182
|
-
}
|
183
|
-
function genEntity(t) {
|
184
|
-
const decorators = t.astNode?.directives?.filter((d) => d.name.value != 'entity').map(directive2decorator) || [];
|
185
|
-
let impls = '';
|
186
|
-
if (t.getInterfaces().length > 0) {
|
187
|
-
impls +=
|
188
|
-
' implements ' +
|
189
|
-
t
|
190
|
-
.getInterfaces()
|
191
|
-
.map((i) => i.name)
|
192
|
-
.join(', ');
|
193
|
-
}
|
194
|
-
return `
|
195
|
-
${genDataType(t)}
|
196
|
-
${decorators.join('\n')}
|
197
|
-
@entity("${t.name}")
|
198
|
-
export class ${t.name} extends Entity${impls} {
|
199
|
-
${genConverters(t)}
|
200
|
-
constructor(data: Partial<${t.name}Data>) {
|
201
|
-
super(${t.name}.entityConverter.from(data))
|
202
|
-
}
|
203
|
-
${Object.values(t.getFields()).map(genField).join('\n')}
|
204
|
-
}`;
|
205
|
-
}
|
206
|
-
function genConverters(t) {
|
207
|
-
const fields = Object.values(t.getFields());
|
208
|
-
const converters = fields.map((f) => {
|
209
|
-
const type = genType(f.type);
|
210
|
-
const converter = getConverter(f.type);
|
211
|
-
return `\t\t${f.name}: ${converter},`;
|
212
|
-
});
|
213
|
-
return `static entityConverter = new StructConverter({\n ${converters.join('\n')} \n})`;
|
214
|
-
}
|
215
|
-
function genInterface(t) {
|
216
|
-
return `
|
217
|
-
export interface ${t.name} {
|
218
|
-
${Object.values(t.getFields())
|
219
|
-
.map((f) => `\t${f.name}: ${genType(f.type)}`)
|
220
|
-
.join('\n')}
|
221
|
-
}`;
|
222
|
-
}
|
223
|
-
export function directive2decorator(directive) {
|
224
|
-
let s = `@${directive.name.value}`;
|
225
|
-
if (directive.arguments?.length) {
|
226
|
-
s += `(${directive.arguments
|
227
|
-
?.map((arg) => {
|
228
|
-
return arg.value.kind === Kind.STRING ? `"${arg.value.value}"` : `${arg.value}`;
|
229
|
-
})
|
230
|
-
.join(', ')})`;
|
231
|
-
}
|
232
|
-
return s;
|
233
|
-
}
|
234
|
-
function genEnum(t) {
|
235
|
-
return `
|
236
|
-
export enum ${t.name} {
|
237
|
-
${t
|
238
|
-
.getValues()
|
239
|
-
.map((v) => `\t${v.name} = "${v.value}"`)
|
240
|
-
.join(', ')}
|
241
|
-
}`;
|
242
209
|
}
|
243
210
|
//# sourceMappingURL=codegen.js.map
|
package/lib/store/codegen.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/store/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../src/store/codegen.ts"],"names":[],"mappings":"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"}
|
package/lib/store/convert.d.ts
CHANGED
@@ -1,15 +1,19 @@
|
|
1
|
-
import {
|
2
|
-
import { String, Int, Float, ID, Bytes, Timestamp, Boolean } from './types.js';
|
3
|
-
import { Entity } from './entity.js';
|
1
|
+
import { RichValue } from '@sentio/protos';
|
2
|
+
import type { String, Int, Float, ID, Bytes, Timestamp, Boolean } from './types.js';
|
4
3
|
import { BigDecimal } from '@sentio/bigdecimal';
|
5
4
|
export interface ValueConverter<T> {
|
6
5
|
from: (value: T) => RichValue;
|
7
6
|
to: (value: RichValue) => T;
|
7
|
+
required?: boolean;
|
8
|
+
isArray?: boolean;
|
9
|
+
isRelation?: boolean;
|
10
|
+
relationName?: string;
|
8
11
|
}
|
12
|
+
export declare const ValueRequiredError: Error;
|
9
13
|
export declare function required_<T>(converter: ValueConverter<T | undefined>): ValueConverter<T>;
|
10
14
|
export declare function array_<T>(converter: ValueConverter<T>): ValueConverter<T[]>;
|
11
15
|
export declare function enumerate_<T extends string | number>(values: Record<T, string>): ValueConverter<T>;
|
12
|
-
export declare function objectId_<T>(): ValueConverter<T | ID>;
|
16
|
+
export declare function objectId_<T>(entityName: string): ValueConverter<T | ID>;
|
13
17
|
export declare const StringConverter: ValueConverter<String | undefined>;
|
14
18
|
export declare const IntConverter: ValueConverter<Int | undefined>;
|
15
19
|
export declare const FloatConverter: ValueConverter<Float | undefined>;
|
@@ -19,14 +23,10 @@ export declare const BytesConverter: ValueConverter<Bytes | undefined>;
|
|
19
23
|
export declare const IDConverter: ValueConverter<ID | undefined>;
|
20
24
|
export declare const BigDecimalConverter: ValueConverter<BigDecimal | undefined>;
|
21
25
|
export declare const BigIntConverter: ValueConverter<bigint | undefined>;
|
22
|
-
export declare class StructConverter<T extends Entity> {
|
23
|
-
private converters;
|
24
|
-
constructor(converters: Record<string, ValueConverter<any>>);
|
25
|
-
from(data: any): RichStruct;
|
26
|
-
}
|
27
26
|
export declare function bytesToBigInt(bytes: Uint8Array): bigint;
|
28
27
|
export declare function toBigInteger(a: bigint): {
|
29
28
|
negative: boolean;
|
30
29
|
data: Uint8Array;
|
31
30
|
};
|
31
|
+
export declare const TypeConverters: Record<string, ValueConverter<any>>;
|
32
32
|
//# sourceMappingURL=convert.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/store/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/store/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,CAAA;IAC7B,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC,CAAA;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,eAAO,MAAM,kBAAkB,OAAgE,CAAA;AAE/F,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAkBxF;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAgB3E;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAgBlG;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,GAAG,EAAE,CAAC,CA8BvE;AAGD,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAc9D,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,GAAG,GAAG,SAAS,CAcxD,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,KAAK,GAAG,SAAS,CAc5D,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,OAAO,GAAG,SAAS,CAchE,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,SAAS,GAAG,SAAS,CAcpE,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,KAAK,GAAG,SAAS,CAc5D,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,cAAc,CAAC,EAAE,GAAG,SAAS,CA0BtD,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,cAAc,CAAC,UAAU,GAAG,SAAS,CA+BtE,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAqB9D,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,UAM9C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM;;;EAerC;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAW9D,CAAA"}
|
package/lib/store/convert.js
CHANGED
@@ -1,20 +1,23 @@
|
|
1
1
|
import { RichValue_NullValue } from '@sentio/protos';
|
2
|
-
import { Entity } from './entity.js';
|
3
2
|
import { BigDecimal } from '@sentio/bigdecimal';
|
3
|
+
export const ValueRequiredError = new Error('Value is required but received null or undefined');
|
4
4
|
export function required_(converter) {
|
5
|
+
const { from, to, ...rest } = converter;
|
5
6
|
return {
|
6
7
|
from: (value) => {
|
7
8
|
if (value == null) {
|
8
|
-
throw
|
9
|
+
throw ValueRequiredError;
|
9
10
|
}
|
10
|
-
return
|
11
|
+
return from(value);
|
11
12
|
},
|
12
13
|
to: (value) => {
|
13
14
|
if (value == null || value.nullValue) {
|
14
|
-
throw
|
15
|
+
throw ValueRequiredError;
|
15
16
|
}
|
16
|
-
return
|
17
|
-
}
|
17
|
+
return to(value);
|
18
|
+
},
|
19
|
+
...rest,
|
20
|
+
required: true
|
18
21
|
};
|
19
22
|
}
|
20
23
|
export function array_(converter) {
|
@@ -28,7 +31,10 @@ export function array_(converter) {
|
|
28
31
|
},
|
29
32
|
to: (value) => {
|
30
33
|
return value.listValue?.values.map(converter.to) || [];
|
31
|
-
}
|
34
|
+
},
|
35
|
+
isArray: true,
|
36
|
+
isRelation: converter.isRelation,
|
37
|
+
relationName: converter.relationName
|
32
38
|
};
|
33
39
|
}
|
34
40
|
export function enumerate_(values) {
|
@@ -48,7 +54,7 @@ export function enumerate_(values) {
|
|
48
54
|
}
|
49
55
|
};
|
50
56
|
}
|
51
|
-
export function objectId_() {
|
57
|
+
export function objectId_(entityName) {
|
52
58
|
return {
|
53
59
|
from: (value) => {
|
54
60
|
if (typeof value == 'string') {
|
@@ -56,9 +62,15 @@ export function objectId_() {
|
|
56
62
|
stringValue: value
|
57
63
|
};
|
58
64
|
}
|
59
|
-
if (value instanceof
|
65
|
+
if (value instanceof Uint8Array) {
|
60
66
|
return {
|
61
|
-
stringValue: value.
|
67
|
+
stringValue: `0x${Buffer.from(value).toString('hex')}`
|
68
|
+
};
|
69
|
+
}
|
70
|
+
if (typeof value == 'object') {
|
71
|
+
const entity = value;
|
72
|
+
return {
|
73
|
+
stringValue: entity.id.toString()
|
62
74
|
};
|
63
75
|
}
|
64
76
|
return {
|
@@ -67,7 +79,9 @@ export function objectId_() {
|
|
67
79
|
},
|
68
80
|
to(v) {
|
69
81
|
return v.stringValue;
|
70
|
-
}
|
82
|
+
},
|
83
|
+
isRelation: true,
|
84
|
+
relationName: entityName
|
71
85
|
};
|
72
86
|
}
|
73
87
|
/* eslint-disable */
|
@@ -161,7 +175,33 @@ export const BytesConverter = {
|
|
161
175
|
return v.bytesValue;
|
162
176
|
}
|
163
177
|
};
|
164
|
-
export const IDConverter =
|
178
|
+
export const IDConverter = {
|
179
|
+
from(value) {
|
180
|
+
if (typeof value == 'string') {
|
181
|
+
return {
|
182
|
+
stringValue: value
|
183
|
+
};
|
184
|
+
}
|
185
|
+
if (value instanceof Uint8Array) {
|
186
|
+
return {
|
187
|
+
stringValue: `0x${Buffer.from(value).toString('hex')}`
|
188
|
+
};
|
189
|
+
}
|
190
|
+
return {
|
191
|
+
nullValue: RichValue_NullValue.NULL_VALUE
|
192
|
+
};
|
193
|
+
},
|
194
|
+
to(value) {
|
195
|
+
if (value.stringValue) {
|
196
|
+
return value.stringValue;
|
197
|
+
}
|
198
|
+
if (value.bytesValue) {
|
199
|
+
const v = `0x${Buffer.from(value.bytesValue).toString('hex')}`;
|
200
|
+
return v;
|
201
|
+
}
|
202
|
+
return undefined;
|
203
|
+
}
|
204
|
+
};
|
165
205
|
export const BigDecimalConverter = {
|
166
206
|
from: (value) => {
|
167
207
|
if (value == null) {
|
@@ -216,21 +256,6 @@ export const BigIntConverter = {
|
|
216
256
|
return undefined;
|
217
257
|
}
|
218
258
|
};
|
219
|
-
export class StructConverter {
|
220
|
-
converters;
|
221
|
-
constructor(converters) {
|
222
|
-
this.converters = converters;
|
223
|
-
}
|
224
|
-
from(data) {
|
225
|
-
const fields = {};
|
226
|
-
for (const [field, value] of Object.entries(data)) {
|
227
|
-
if (this.converters[field] !== undefined) {
|
228
|
-
fields[field] = this.converters[field].from(value);
|
229
|
-
}
|
230
|
-
}
|
231
|
-
return { fields };
|
232
|
-
}
|
233
|
-
}
|
234
259
|
export function bytesToBigInt(bytes) {
|
235
260
|
let intValue = BigInt(0);
|
236
261
|
for (let i = 0; i < bytes.length; i++) {
|
@@ -253,4 +278,16 @@ export function toBigInteger(a) {
|
|
253
278
|
data: new Uint8Array(buffer)
|
254
279
|
};
|
255
280
|
}
|
281
|
+
export const TypeConverters = {
|
282
|
+
BigDecimal: BigDecimalConverter,
|
283
|
+
BigInt: BigIntConverter,
|
284
|
+
String: StringConverter,
|
285
|
+
Boolean: BooleanConverter,
|
286
|
+
Uint8Array: BytesConverter,
|
287
|
+
ID: IDConverter,
|
288
|
+
Bytes: BytesConverter,
|
289
|
+
Int: IntConverter,
|
290
|
+
Float: FloatConverter,
|
291
|
+
Timestamp: TimestampConverter
|
292
|
+
};
|
256
293
|
//# sourceMappingURL=convert.js.map
|