rads-db 3.0.10 → 3.0.12
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/dist/index.cjs +2 -2
- package/dist/index.d.ts +11 -2
- package/dist/index.mjs +2 -2
- package/integrations/lib.cjs +14 -7
- package/integrations/lib.mjs +11 -6
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -45,7 +45,7 @@ function getZodSchema(zodSchemas, schema, key) {
|
|
|
45
45
|
return zodSchemas[key];
|
|
46
46
|
const type = schema[key];
|
|
47
47
|
if (type.enumValues) {
|
|
48
|
-
const enums = ___default.
|
|
48
|
+
const enums = ___default.mapValues(type.enumValues, (v) => v.name);
|
|
49
49
|
return zod.z.nativeEnum(enums);
|
|
50
50
|
}
|
|
51
51
|
const objectSchema = {};
|
|
@@ -603,7 +603,7 @@ function validateEventSourcingSetup(schema, entityName, eventEntityName, aggrega
|
|
|
603
603
|
if (!field)
|
|
604
604
|
throw new Error(`"${eventEntityName}" must have field "${f}"`);
|
|
605
605
|
if (expectedFields[f] === "enum") {
|
|
606
|
-
if (!schema[field.type]?.enumValues?.
|
|
606
|
+
if (!schema[field.type]?.enumValues?.creation)
|
|
607
607
|
throw new Error(`Field "${eventEntityName}.${f}" must be enum that accepts value 'creation'`);
|
|
608
608
|
} else {
|
|
609
609
|
if (field.type !== expectedFields[f])
|
package/dist/index.d.ts
CHANGED
|
@@ -112,6 +112,8 @@ interface UiFieldDecoratorArgs {
|
|
|
112
112
|
icon?: string;
|
|
113
113
|
/** Free text - hint to display under editor field in UI */
|
|
114
114
|
hint?: string;
|
|
115
|
+
/** If true, field is hidden from the rads-ui */
|
|
116
|
+
isHidden?: boolean;
|
|
115
117
|
/** TODO: Preferred component to display or edit this value */
|
|
116
118
|
component?: string;
|
|
117
119
|
}
|
|
@@ -142,6 +144,8 @@ interface UiDecoratorArgs<T = any> {
|
|
|
142
144
|
searchOperator?: 'startsWith' | 'istartsWith' | 'contains' | 'icontains';
|
|
143
145
|
/** Defines section name in rads-ui where this entity will be grouped under */
|
|
144
146
|
group?: string;
|
|
147
|
+
/** If true, field is hidden from the rads-ui */
|
|
148
|
+
isHidden?: boolean;
|
|
145
149
|
}
|
|
146
150
|
interface EntityDecoratorArgs {
|
|
147
151
|
driver?: string;
|
|
@@ -199,7 +203,7 @@ interface TypeDefinition {
|
|
|
199
203
|
computedFields?: string[];
|
|
200
204
|
nestedTypeFields?: string[];
|
|
201
205
|
fields?: Record<string, FieldDefinition>;
|
|
202
|
-
enumValues?: string
|
|
206
|
+
enumValues?: Record<string, EnumDefinition>;
|
|
203
207
|
handle?: string;
|
|
204
208
|
handlePlural?: string;
|
|
205
209
|
}
|
|
@@ -260,6 +264,11 @@ interface FieldDefinition {
|
|
|
260
264
|
comment?: string;
|
|
261
265
|
decorators?: Record<string, Record<string, any>>;
|
|
262
266
|
}
|
|
267
|
+
interface EnumDefinition {
|
|
268
|
+
name: string;
|
|
269
|
+
comment?: string;
|
|
270
|
+
decorators?: Record<string, Record<string, any>>;
|
|
271
|
+
}
|
|
263
272
|
interface ComputedContextGlobal {
|
|
264
273
|
db: RadsDb;
|
|
265
274
|
schema: Schema;
|
|
@@ -380,4 +389,4 @@ declare function createRadsDb(args?: CreateRadsDbArgs): RadsDb;
|
|
|
380
389
|
*/
|
|
381
390
|
declare function createRadsDbClient(args?: CreateRadsDbClientArgs): RadsDb;
|
|
382
391
|
|
|
383
|
-
export { Change, ComputedContext, ComputedContextGlobal, ComputedDecoratorArgs, CreateRadsArgsDrivers, CreateRadsDbArgs, CreateRadsDbArgsNormalized, CreateRadsDbClientArgs, DeepPartial, Driver, DriverConstructor, EntityDecoratorArgs, EntityMethods, FieldDecoratorArgs, FieldDefinition, FileSystemNode, FileUploadArgs, FileUploadDriver, GenerateClientNormalizedOptions, GenerateClientOptions, GetAggArgs, GetAggArgsAgg, GetAggArgsAny, GetAggResponse, GetArgs, GetArgsAny, GetArgsInclude, GetManyArgs, GetManyArgsAny, GetManyResponse, GetResponse, GetResponseInclude, GetResponseIncludeSelect, GetResponseNoInclude, GetRestRoutesArgs, GetRestRoutesOptions, GetRestRoutesResponse, MinimalDriver, PutArgs, PutEffect, RadsFeature, RadsRequestContext, RadsUiSlotDefinition, RadsUiSlotName, RadsVitePluginOptions, Relation, RequiredFields, RestDriverOptions, RestFileUploadDriverOptions, Schema, SchemaValidators, TypeDefinition, UiDecoratorArgs, UiFieldDecoratorArgs, ValidateEntityDecoratorArgs, ValidateFieldDecoratorArgs, ValidateStringDecoratorArgs, VerifyManyArgs, VerifyManyArgsAny, VerifyManyResponse, computed, createRadsDb, createRadsDbClient, entity, field, getDriverInstance, precomputed, ui, validate };
|
|
392
|
+
export { Change, ComputedContext, ComputedContextGlobal, ComputedDecoratorArgs, CreateRadsArgsDrivers, CreateRadsDbArgs, CreateRadsDbArgsNormalized, CreateRadsDbClientArgs, DeepPartial, Driver, DriverConstructor, EntityDecoratorArgs, EntityMethods, EnumDefinition, FieldDecoratorArgs, FieldDefinition, FileSystemNode, FileUploadArgs, FileUploadDriver, GenerateClientNormalizedOptions, GenerateClientOptions, GetAggArgs, GetAggArgsAgg, GetAggArgsAny, GetAggResponse, GetArgs, GetArgsAny, GetArgsInclude, GetManyArgs, GetManyArgsAny, GetManyResponse, GetResponse, GetResponseInclude, GetResponseIncludeSelect, GetResponseNoInclude, GetRestRoutesArgs, GetRestRoutesOptions, GetRestRoutesResponse, MinimalDriver, PutArgs, PutEffect, RadsFeature, RadsRequestContext, RadsUiSlotDefinition, RadsUiSlotName, RadsVitePluginOptions, Relation, RequiredFields, RestDriverOptions, RestFileUploadDriverOptions, Schema, SchemaValidators, TypeDefinition, UiDecoratorArgs, UiFieldDecoratorArgs, ValidateEntityDecoratorArgs, ValidateFieldDecoratorArgs, ValidateStringDecoratorArgs, VerifyManyArgs, VerifyManyArgsAny, VerifyManyResponse, computed, createRadsDb, createRadsDbClient, entity, field, getDriverInstance, precomputed, ui, validate };
|
package/dist/index.mjs
CHANGED
|
@@ -37,7 +37,7 @@ function getZodSchema(zodSchemas, schema, key) {
|
|
|
37
37
|
return zodSchemas[key];
|
|
38
38
|
const type = schema[key];
|
|
39
39
|
if (type.enumValues) {
|
|
40
|
-
const enums = _.
|
|
40
|
+
const enums = _.mapValues(type.enumValues, (v) => v.name);
|
|
41
41
|
return z.nativeEnum(enums);
|
|
42
42
|
}
|
|
43
43
|
const objectSchema = {};
|
|
@@ -595,7 +595,7 @@ function validateEventSourcingSetup(schema, entityName, eventEntityName, aggrega
|
|
|
595
595
|
if (!field)
|
|
596
596
|
throw new Error(`"${eventEntityName}" must have field "${f}"`);
|
|
597
597
|
if (expectedFields[f] === "enum") {
|
|
598
|
-
if (!schema[field.type]?.enumValues?.
|
|
598
|
+
if (!schema[field.type]?.enumValues?.creation)
|
|
599
599
|
throw new Error(`Field "${eventEntityName}.${f}" must be enum that accepts value 'creation'`);
|
|
600
600
|
} else {
|
|
601
601
|
if (field.type !== expectedFields[f])
|
package/integrations/lib.cjs
CHANGED
|
@@ -191,7 +191,7 @@ function parseDecorators(modifiers, ctx) {
|
|
|
191
191
|
return decorators;
|
|
192
192
|
}
|
|
193
193
|
function getEnumValues(node, parentNode, ctx) {
|
|
194
|
-
|
|
194
|
+
const enumValuesArray = node.types.map(node2 => {
|
|
195
195
|
if (node2.kind !== _typescript.SyntaxKind.LiteralType) {
|
|
196
196
|
throw new Error(`Unexpected type definition - ${parentNode.getText(ctx.sourceFile)}`);
|
|
197
197
|
}
|
|
@@ -199,8 +199,11 @@ function getEnumValues(node, parentNode, ctx) {
|
|
|
199
199
|
literal
|
|
200
200
|
} = node2;
|
|
201
201
|
if (literal.kind !== _typescript.SyntaxKind.StringLiteral) throw new Error(`Unexpected type definition - ${parentNode.getText(ctx.sourceFile)}`);
|
|
202
|
-
return
|
|
202
|
+
return {
|
|
203
|
+
name: literal.text
|
|
204
|
+
};
|
|
203
205
|
});
|
|
206
|
+
return _lodash.default.keyBy(enumValuesArray, "name");
|
|
204
207
|
}
|
|
205
208
|
function parseClassMember(node, parentName, ctx) {
|
|
206
209
|
const name = node.name.getText(ctx.sourceFile);
|
|
@@ -289,8 +292,8 @@ function parseFieldTypeRecordEnum(parsedType, parentName, fieldName, ctx) {
|
|
|
289
292
|
const enumValues = ctx.result[keyTypeName].enumValues;
|
|
290
293
|
if (!enumValues) throw new Error(`Unexpected type - ${keyTypeName}`);
|
|
291
294
|
const newTypeName = `${parentName}_${_lodash.default.upperFirst(fieldName)}`;
|
|
292
|
-
const fieldsArray = enumValues.map(v => ({
|
|
293
|
-
name: v,
|
|
295
|
+
const fieldsArray = _lodash.default.values(enumValues).map(v => ({
|
|
296
|
+
name: v.name,
|
|
294
297
|
type: valueTypeName,
|
|
295
298
|
isRequired: true
|
|
296
299
|
}));
|
|
@@ -365,7 +368,11 @@ function getEnumValuesFromKeyOf(nodeType, ctx) {
|
|
|
365
368
|
}
|
|
366
369
|
if (!ctx.result[typeName]) ctx.result[typeName] = parseType(type.node, typeName, ctx);
|
|
367
370
|
if (!ctx.result[typeName].fields) throw new Error(`Unexpected type - ${typeName}`);
|
|
368
|
-
return
|
|
371
|
+
return _lodash.default.mapValues(ctx.result[typeName].fields || {}, v => ({
|
|
372
|
+
name: v.name,
|
|
373
|
+
comment: v.comment,
|
|
374
|
+
decorators: v.decorators
|
|
375
|
+
}));
|
|
369
376
|
}
|
|
370
377
|
function getRelationDenormFields(ctx, node) {
|
|
371
378
|
if (node.kind === _typescript.SyntaxKind.LiteralType) {
|
|
@@ -392,8 +399,8 @@ function verifyDefaultValueType(isArray, defaultValueDescription, type, supporte
|
|
|
392
399
|
}
|
|
393
400
|
if (!ctx.result[type] && ctx.typesMap[type]) ctx.result[type] = parseType(ctx.typesMap[type].node, type, ctx);
|
|
394
401
|
const enumValues = ctx.result[type]?.enumValues;
|
|
395
|
-
if (enumValues && !enumValues
|
|
396
|
-
const enumValuesStr = enumValues.map(x => `'x'`).join(", ");
|
|
402
|
+
if (enumValues && !enumValues[defaultValueDescription.value]) {
|
|
403
|
+
const enumValuesStr = _lodash.default.keys(enumValues).map(x => `'x'`).join(", ");
|
|
397
404
|
throw new Error(`Default value must be one of: ${enumValuesStr}`);
|
|
398
405
|
}
|
|
399
406
|
}
|
package/integrations/lib.mjs
CHANGED
|
@@ -164,15 +164,16 @@ function parseDecorators(modifiers, ctx) {
|
|
|
164
164
|
return decorators;
|
|
165
165
|
}
|
|
166
166
|
function getEnumValues(node, parentNode, ctx) {
|
|
167
|
-
|
|
167
|
+
const enumValuesArray = node.types.map((node2) => {
|
|
168
168
|
if (node2.kind !== SyntaxKind.LiteralType) {
|
|
169
169
|
throw new Error(`Unexpected type definition - ${parentNode.getText(ctx.sourceFile)}`);
|
|
170
170
|
}
|
|
171
171
|
const { literal } = node2;
|
|
172
172
|
if (literal.kind !== SyntaxKind.StringLiteral)
|
|
173
173
|
throw new Error(`Unexpected type definition - ${parentNode.getText(ctx.sourceFile)}`);
|
|
174
|
-
return literal.text;
|
|
174
|
+
return { name: literal.text };
|
|
175
175
|
});
|
|
176
|
+
return _.keyBy(enumValuesArray, "name");
|
|
176
177
|
}
|
|
177
178
|
function parseClassMember(node, parentName, ctx) {
|
|
178
179
|
const name = node.name.getText(ctx.sourceFile);
|
|
@@ -270,7 +271,7 @@ function parseFieldTypeRecordEnum(parsedType, parentName, fieldName, ctx) {
|
|
|
270
271
|
if (!enumValues)
|
|
271
272
|
throw new Error(`Unexpected type - ${keyTypeName}`);
|
|
272
273
|
const newTypeName = `${parentName}_${_.upperFirst(fieldName)}`;
|
|
273
|
-
const fieldsArray = enumValues.map((v) => ({ name: v, type: valueTypeName, isRequired: true }));
|
|
274
|
+
const fieldsArray = _.values(enumValues).map((v) => ({ name: v.name, type: valueTypeName, isRequired: true }));
|
|
274
275
|
ctx.result[newTypeName] = {
|
|
275
276
|
name: newTypeName,
|
|
276
277
|
decorators: {},
|
|
@@ -342,7 +343,11 @@ function getEnumValuesFromKeyOf(nodeType, ctx) {
|
|
|
342
343
|
ctx.result[typeName] = parseType(type.node, typeName, ctx);
|
|
343
344
|
if (!ctx.result[typeName].fields)
|
|
344
345
|
throw new Error(`Unexpected type - ${typeName}`);
|
|
345
|
-
return
|
|
346
|
+
return _.mapValues(ctx.result[typeName].fields || {}, (v) => ({
|
|
347
|
+
name: v.name,
|
|
348
|
+
comment: v.comment,
|
|
349
|
+
decorators: v.decorators
|
|
350
|
+
}));
|
|
346
351
|
}
|
|
347
352
|
function getRelationDenormFields(ctx, node) {
|
|
348
353
|
if (node.kind === SyntaxKind.LiteralType) {
|
|
@@ -370,8 +375,8 @@ function verifyDefaultValueType(isArray, defaultValueDescription, type, supporte
|
|
|
370
375
|
if (!ctx.result[type] && ctx.typesMap[type])
|
|
371
376
|
ctx.result[type] = parseType(ctx.typesMap[type].node, type, ctx);
|
|
372
377
|
const enumValues = ctx.result[type]?.enumValues;
|
|
373
|
-
if (enumValues && !enumValues
|
|
374
|
-
const enumValuesStr = enumValues.map((x) => `'x'`).join(", ");
|
|
378
|
+
if (enumValues && !enumValues[defaultValueDescription.value]) {
|
|
379
|
+
const enumValuesStr = _.keys(enumValues).map((x) => `'x'`).join(", ");
|
|
375
380
|
throw new Error(`Default value must be one of: ${enumValuesStr}`);
|
|
376
381
|
}
|
|
377
382
|
}
|