@opensaas/stack-core 0.6.2 → 0.9.0
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +150 -0
- package/CLAUDE.md +37 -0
- package/README.md +2 -0
- package/dist/access/engine.js +2 -2
- package/dist/access/engine.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/types.d.ts +58 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/fields/index.d.ts +27 -10
- package/dist/fields/index.d.ts.map +1 -1
- package/dist/fields/index.js +81 -14
- package/dist/fields/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/access/engine.ts +2 -2
- package/src/config/index.ts +1 -0
- package/src/config/types.ts +62 -0
- package/src/fields/index.ts +92 -15
- package/src/index.ts +1 -0
- package/tests/field-types.test.ts +17 -4
- package/tests/virtual-fields.test.ts +421 -0
- package/tsconfig.tsbuildinfo +1 -1
package/dist/fields/index.js
CHANGED
|
@@ -369,10 +369,10 @@ export function relationship(options) {
|
|
|
369
369
|
if (!options.ref) {
|
|
370
370
|
throw new Error('Relationship field must have a ref');
|
|
371
371
|
}
|
|
372
|
-
// Validate ref format: 'ListName.fieldName'
|
|
372
|
+
// Validate ref format: 'ListName.fieldName' or 'ListName'
|
|
373
373
|
const refParts = options.ref.split('.');
|
|
374
|
-
if (refParts.length !== 2) {
|
|
375
|
-
throw new Error(`Invalid relationship ref format: "${options.ref}". Expected format: "ListName.fieldName"`);
|
|
374
|
+
if (refParts.length !== 1 && refParts.length !== 2) {
|
|
375
|
+
throw new Error(`Invalid relationship ref format: "${options.ref}". Expected format: "ListName.fieldName" or "ListName"`);
|
|
376
376
|
}
|
|
377
377
|
return {
|
|
378
378
|
type: 'relationship',
|
|
@@ -460,6 +460,51 @@ export function json(options) {
|
|
|
460
460
|
},
|
|
461
461
|
};
|
|
462
462
|
}
|
|
463
|
+
/**
|
|
464
|
+
* Convert a TypeDescriptor to a TypeScript type string
|
|
465
|
+
* Handles three formats:
|
|
466
|
+
* 1. Primitive string: 'string', 'number', 'boolean' -> returned as-is
|
|
467
|
+
* 2. Import string: "import('decimal.js').Decimal" -> returned as-is
|
|
468
|
+
* 3. Type object: { value: Decimal, from: 'decimal.js' } -> "import('decimal.js').Decimal"
|
|
469
|
+
*/
|
|
470
|
+
function typeDescriptorToString(descriptor) {
|
|
471
|
+
if (typeof descriptor === 'string') {
|
|
472
|
+
return descriptor;
|
|
473
|
+
}
|
|
474
|
+
// Extract type name from constructor or use provided name
|
|
475
|
+
const typeName = descriptor.name || descriptor.value.name;
|
|
476
|
+
// Generate import string
|
|
477
|
+
return `import('${descriptor.from}').${typeName}`;
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Extract TypeScript imports from a TypeDescriptor
|
|
481
|
+
* Returns array of import statements needed for type generation
|
|
482
|
+
*/
|
|
483
|
+
function typeDescriptorToImports(descriptor) {
|
|
484
|
+
// If it's a string, check if it's an import string
|
|
485
|
+
if (typeof descriptor === 'string') {
|
|
486
|
+
const importMatch = descriptor.match(/import\('([^']+)'\)\.(\w+)/);
|
|
487
|
+
if (importMatch) {
|
|
488
|
+
return [
|
|
489
|
+
{
|
|
490
|
+
names: [importMatch[2]],
|
|
491
|
+
from: importMatch[1],
|
|
492
|
+
typeOnly: true,
|
|
493
|
+
},
|
|
494
|
+
];
|
|
495
|
+
}
|
|
496
|
+
return [];
|
|
497
|
+
}
|
|
498
|
+
// Type object descriptor
|
|
499
|
+
const typeName = descriptor.name || descriptor.value.name;
|
|
500
|
+
return [
|
|
501
|
+
{
|
|
502
|
+
names: [typeName],
|
|
503
|
+
from: descriptor.from,
|
|
504
|
+
typeOnly: true,
|
|
505
|
+
},
|
|
506
|
+
];
|
|
507
|
+
}
|
|
463
508
|
/**
|
|
464
509
|
* Virtual field - not stored in database, computed via hooks
|
|
465
510
|
*
|
|
@@ -469,10 +514,11 @@ export function json(options) {
|
|
|
469
514
|
* - Optionally uses resolveInput hook for write side effects (e.g., sync to external API)
|
|
470
515
|
* - Only computed when explicitly selected/included in queries
|
|
471
516
|
* - Supports both read and write operations via hooks
|
|
517
|
+
* - Supports custom scalar types (e.g., Decimal) for financial precision
|
|
472
518
|
*
|
|
473
|
-
* **Usage
|
|
519
|
+
* **Usage Examples:**
|
|
474
520
|
* ```typescript
|
|
475
|
-
* // Read-only computed field
|
|
521
|
+
* // Read-only computed field with primitive type
|
|
476
522
|
* fields: {
|
|
477
523
|
* firstName: text(),
|
|
478
524
|
* lastName: text(),
|
|
@@ -484,6 +530,28 @@ export function json(options) {
|
|
|
484
530
|
* })
|
|
485
531
|
* }
|
|
486
532
|
*
|
|
533
|
+
* // Custom scalar type using import string
|
|
534
|
+
* fields: {
|
|
535
|
+
* totalPrice: virtual({
|
|
536
|
+
* type: "import('decimal.js').Decimal",
|
|
537
|
+
* hooks: {
|
|
538
|
+
* resolveOutput: ({ item }) => new Decimal(item.price).times(item.quantity)
|
|
539
|
+
* }
|
|
540
|
+
* })
|
|
541
|
+
* }
|
|
542
|
+
*
|
|
543
|
+
* // Custom scalar type using type descriptor (recommended)
|
|
544
|
+
* import Decimal from 'decimal.js'
|
|
545
|
+
*
|
|
546
|
+
* fields: {
|
|
547
|
+
* totalPrice: virtual({
|
|
548
|
+
* type: { value: Decimal, from: 'decimal.js' },
|
|
549
|
+
* hooks: {
|
|
550
|
+
* resolveOutput: ({ item }) => new Decimal(item.price).times(item.quantity)
|
|
551
|
+
* }
|
|
552
|
+
* })
|
|
553
|
+
* }
|
|
554
|
+
*
|
|
487
555
|
* // Write side effects (e.g., sync to external API)
|
|
488
556
|
* fields: {
|
|
489
557
|
* externalSync: virtual({
|
|
@@ -497,16 +565,10 @@ export function json(options) {
|
|
|
497
565
|
* }
|
|
498
566
|
* })
|
|
499
567
|
* }
|
|
500
|
-
*
|
|
501
|
-
* // Query with select
|
|
502
|
-
* const user = await context.db.user.findUnique({
|
|
503
|
-
* where: { id },
|
|
504
|
-
* select: { firstName: true, lastName: true, fullName: true } // fullName computed
|
|
505
|
-
* })
|
|
506
568
|
* ```
|
|
507
569
|
*
|
|
508
570
|
* **Requirements:**
|
|
509
|
-
* - Must provide `type` (TypeScript type string)
|
|
571
|
+
* - Must provide `type` (TypeScript type string, import string, or type descriptor)
|
|
510
572
|
* - Must provide `resolveOutput` hook (for reads)
|
|
511
573
|
* - Optional `resolveInput` hook (for write side effects)
|
|
512
574
|
*
|
|
@@ -519,7 +581,10 @@ export function virtual(options) {
|
|
|
519
581
|
throw new Error('Virtual fields must provide a resolveOutput hook to compute their value. ' +
|
|
520
582
|
'Example: hooks: { resolveOutput: ({ item }) => computeValue(item) }');
|
|
521
583
|
}
|
|
522
|
-
|
|
584
|
+
// Convert type descriptor to string
|
|
585
|
+
const outputType = typeDescriptorToString(options.type);
|
|
586
|
+
const imports = typeDescriptorToImports(options.type);
|
|
587
|
+
const { type: _, ...rest } = options;
|
|
523
588
|
return {
|
|
524
589
|
type: 'virtual',
|
|
525
590
|
virtual: true,
|
|
@@ -531,10 +596,12 @@ export function virtual(options) {
|
|
|
531
596
|
// Virtual fields appear in output types with their specified type
|
|
532
597
|
getTypeScriptType: () => {
|
|
533
598
|
return {
|
|
534
|
-
type:
|
|
599
|
+
type: outputType,
|
|
535
600
|
optional: false, // Virtual fields always compute a value
|
|
536
601
|
};
|
|
537
602
|
},
|
|
603
|
+
// Add import statements if needed
|
|
604
|
+
getTypeScriptImports: imports.length > 0 ? () => imports : undefined,
|
|
538
605
|
// Virtual fields never validate input (they don't accept database input)
|
|
539
606
|
getZodSchema: () => {
|
|
540
607
|
return z.never();
|
package/dist/fields/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { config, list } from './config/index.js';
|
|
2
|
-
export type { OpenSaasConfig, ListConfig, FieldConfig, BaseFieldConfig, TextField, IntegerField, CheckboxField, TimestampField, PasswordField, SelectField, RelationshipField, JsonField, VirtualField, TypeInfo, OperationAccess, Hooks, FieldHooks, FieldsWithTypeInfo, DatabaseConfig, SessionConfig, UIConfig, ThemeConfig, ThemePreset, ThemeColors, McpConfig, McpToolsConfig, McpAuthConfig, ListMcpConfig, McpCustomTool, FileMetadata, ImageMetadata, ImageTransformationResult, Plugin, PluginContext, GeneratedFiles, } from './config/index.js';
|
|
2
|
+
export type { OpenSaasConfig, ListConfig, FieldConfig, BaseFieldConfig, TextField, IntegerField, CheckboxField, TimestampField, PasswordField, SelectField, RelationshipField, JsonField, VirtualField, TypeDescriptor, TypeInfo, OperationAccess, Hooks, FieldHooks, FieldsWithTypeInfo, DatabaseConfig, SessionConfig, UIConfig, ThemeConfig, ThemePreset, ThemeColors, McpConfig, McpToolsConfig, McpAuthConfig, ListMcpConfig, McpCustomTool, FileMetadata, ImageMetadata, ImageTransformationResult, Plugin, PluginContext, GeneratedFiles, } from './config/index.js';
|
|
3
3
|
export type { AccessControl, FieldAccess, Session, AccessContext, PrismaFilter, AccessControlledDB, StorageUtils, } from './access/index.js';
|
|
4
4
|
export { getContext } from './context/index.js';
|
|
5
5
|
export type { PrismaClientLike } from './access/types.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,eAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,KAAK,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,yBAAyB,EAEzB,MAAM,EACN,aAAa,EACb,cAAc,GACf,MAAM,mBAAmB,CAAA;AAG1B,YAAY,EACV,aAAa,EACb,WAAW,EACX,OAAO,EACP,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAG3D,OAAO,EACL,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG3E,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,eAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,eAAe,EACf,KAAK,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,yBAAyB,EAEzB,MAAM,EACN,aAAa,EACb,cAAc,GACf,MAAM,mBAAmB,CAAA;AAG1B,YAAY,EACV,aAAa,EACb,WAAW,EACX,OAAO,EACP,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAG3D,OAAO,EACL,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG3E,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,qBAAqB,CAAA"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAoDhD,UAAU;AACV,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAI/C,YAAY;AACZ,OAAO,EACL,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,qBAAqB,CAAA;AAE5B,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE3E,qBAAqB;AACrB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,qBAAqB,CAAA"}
|
package/package.json
CHANGED
package/src/access/engine.ts
CHANGED
|
@@ -42,9 +42,9 @@ export function getRelatedListConfig(
|
|
|
42
42
|
config: OpenSaasConfig,
|
|
43
43
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
44
|
): { listName: string; listConfig: ListConfig<any> } | null {
|
|
45
|
-
// Parse ref format: "ListName.fieldName"
|
|
45
|
+
// Parse ref format: "ListName.fieldName" or "ListName"
|
|
46
46
|
const parts = relationshipRef.split('.')
|
|
47
|
-
if (parts.length !== 2) {
|
|
47
|
+
if (parts.length !== 1 && parts.length !== 2) {
|
|
48
48
|
return null
|
|
49
49
|
}
|
|
50
50
|
|
package/src/config/index.ts
CHANGED
package/src/config/types.ts
CHANGED
|
@@ -324,6 +324,37 @@ export type JsonField<TTypeInfo extends TypeInfo = TypeInfo> = BaseFieldConfig<T
|
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
|
|
327
|
+
/**
|
|
328
|
+
* Type descriptor for virtual fields
|
|
329
|
+
* Supports three formats:
|
|
330
|
+
* 1. Primitive string: 'string', 'number', 'boolean', 'Date', etc.
|
|
331
|
+
* 2. Import string: "import('decimal.js').Decimal"
|
|
332
|
+
* 3. Type object descriptor: { value: Decimal, from: 'decimal.js', name: 'Decimal' }
|
|
333
|
+
*/
|
|
334
|
+
export type TypeDescriptor =
|
|
335
|
+
| string
|
|
336
|
+
| {
|
|
337
|
+
/**
|
|
338
|
+
* The type constructor or class
|
|
339
|
+
* @example Decimal (from decimal.js)
|
|
340
|
+
* @example MyCustomClass
|
|
341
|
+
*/
|
|
342
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Constructor can have any signature
|
|
343
|
+
value: new (...args: any[]) => any
|
|
344
|
+
/**
|
|
345
|
+
* The module to import from
|
|
346
|
+
* @example 'decimal.js'
|
|
347
|
+
* @example '@myorg/custom-types'
|
|
348
|
+
*/
|
|
349
|
+
from: string
|
|
350
|
+
/**
|
|
351
|
+
* Optional custom name (defaults to constructor.name)
|
|
352
|
+
* Useful when constructor name doesn't match export name
|
|
353
|
+
* @example 'Decimal' when constructor.name is different
|
|
354
|
+
*/
|
|
355
|
+
name?: string
|
|
356
|
+
}
|
|
357
|
+
|
|
327
358
|
export type VirtualField<TTypeInfo extends TypeInfo> = BaseFieldConfig<TTypeInfo> & {
|
|
328
359
|
type: 'virtual'
|
|
329
360
|
virtual: true
|
|
@@ -615,6 +646,37 @@ export type DatabaseConfig = {
|
|
|
615
646
|
// Different database adapters have varying type signatures that are hard to unify
|
|
616
647
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
617
648
|
prismaClientConstructor: (PrismaClientClass: any) => any
|
|
649
|
+
/**
|
|
650
|
+
* Optional function to extend or modify the generated Prisma schema
|
|
651
|
+
* Receives the generated schema as a string and should return the modified schema
|
|
652
|
+
* Useful for advanced Prisma features not directly supported by the config API
|
|
653
|
+
*
|
|
654
|
+
* @example Add multi-schema support for PostgreSQL
|
|
655
|
+
* ```typescript
|
|
656
|
+
* extendPrismaSchema: (schema) => {
|
|
657
|
+
* // Add schemas array to datasource
|
|
658
|
+
* let modifiedSchema = schema
|
|
659
|
+
* .replace(
|
|
660
|
+
* /(datasource db \{[^}]+provider\s*=\s*"postgresql")/,
|
|
661
|
+
* '$1\n schemas = ["public", "auth"]'
|
|
662
|
+
* )
|
|
663
|
+
*
|
|
664
|
+
* // Add @@schema("public") to all models
|
|
665
|
+
* modifiedSchema = modifiedSchema.replace(
|
|
666
|
+
* /^(model \w+\s*\{[\s\S]*?)(^}$)/gm,
|
|
667
|
+
* (match, modelContent) => {
|
|
668
|
+
* if (!modelContent.includes('@@schema')) {
|
|
669
|
+
* return `${modelContent}\n @@schema("public")\n}`
|
|
670
|
+
* }
|
|
671
|
+
* return match
|
|
672
|
+
* }
|
|
673
|
+
* )
|
|
674
|
+
*
|
|
675
|
+
* return modifiedSchema
|
|
676
|
+
* }
|
|
677
|
+
* ```
|
|
678
|
+
*/
|
|
679
|
+
extendPrismaSchema?: (schema: string) => string
|
|
618
680
|
}
|
|
619
681
|
|
|
620
682
|
/**
|
package/src/fields/index.ts
CHANGED
|
@@ -439,11 +439,11 @@ export function relationship<
|
|
|
439
439
|
throw new Error('Relationship field must have a ref')
|
|
440
440
|
}
|
|
441
441
|
|
|
442
|
-
// Validate ref format: 'ListName.fieldName'
|
|
442
|
+
// Validate ref format: 'ListName.fieldName' or 'ListName'
|
|
443
443
|
const refParts = options.ref.split('.')
|
|
444
|
-
if (refParts.length !== 2) {
|
|
444
|
+
if (refParts.length !== 1 && refParts.length !== 2) {
|
|
445
445
|
throw new Error(
|
|
446
|
-
`Invalid relationship ref format: "${options.ref}". Expected format: "ListName.fieldName"`,
|
|
446
|
+
`Invalid relationship ref format: "${options.ref}". Expected format: "ListName.fieldName" or "ListName"`,
|
|
447
447
|
)
|
|
448
448
|
}
|
|
449
449
|
|
|
@@ -539,6 +539,58 @@ export function json<
|
|
|
539
539
|
}
|
|
540
540
|
}
|
|
541
541
|
|
|
542
|
+
/**
|
|
543
|
+
* Convert a TypeDescriptor to a TypeScript type string
|
|
544
|
+
* Handles three formats:
|
|
545
|
+
* 1. Primitive string: 'string', 'number', 'boolean' -> returned as-is
|
|
546
|
+
* 2. Import string: "import('decimal.js').Decimal" -> returned as-is
|
|
547
|
+
* 3. Type object: { value: Decimal, from: 'decimal.js' } -> "import('decimal.js').Decimal"
|
|
548
|
+
*/
|
|
549
|
+
function typeDescriptorToString(descriptor: import('../config/types.js').TypeDescriptor): string {
|
|
550
|
+
if (typeof descriptor === 'string') {
|
|
551
|
+
return descriptor
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
// Extract type name from constructor or use provided name
|
|
555
|
+
const typeName = descriptor.name || descriptor.value.name
|
|
556
|
+
|
|
557
|
+
// Generate import string
|
|
558
|
+
return `import('${descriptor.from}').${typeName}`
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
/**
|
|
562
|
+
* Extract TypeScript imports from a TypeDescriptor
|
|
563
|
+
* Returns array of import statements needed for type generation
|
|
564
|
+
*/
|
|
565
|
+
function typeDescriptorToImports(
|
|
566
|
+
descriptor: import('../config/types.js').TypeDescriptor,
|
|
567
|
+
): Array<{ names: string[]; from: string; typeOnly?: boolean }> {
|
|
568
|
+
// If it's a string, check if it's an import string
|
|
569
|
+
if (typeof descriptor === 'string') {
|
|
570
|
+
const importMatch = descriptor.match(/import\('([^']+)'\)\.(\w+)/)
|
|
571
|
+
if (importMatch) {
|
|
572
|
+
return [
|
|
573
|
+
{
|
|
574
|
+
names: [importMatch[2]],
|
|
575
|
+
from: importMatch[1],
|
|
576
|
+
typeOnly: true,
|
|
577
|
+
},
|
|
578
|
+
]
|
|
579
|
+
}
|
|
580
|
+
return []
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
// Type object descriptor
|
|
584
|
+
const typeName = descriptor.name || descriptor.value.name
|
|
585
|
+
return [
|
|
586
|
+
{
|
|
587
|
+
names: [typeName],
|
|
588
|
+
from: descriptor.from,
|
|
589
|
+
typeOnly: true,
|
|
590
|
+
},
|
|
591
|
+
]
|
|
592
|
+
}
|
|
593
|
+
|
|
542
594
|
/**
|
|
543
595
|
* Virtual field - not stored in database, computed via hooks
|
|
544
596
|
*
|
|
@@ -548,10 +600,11 @@ export function json<
|
|
|
548
600
|
* - Optionally uses resolveInput hook for write side effects (e.g., sync to external API)
|
|
549
601
|
* - Only computed when explicitly selected/included in queries
|
|
550
602
|
* - Supports both read and write operations via hooks
|
|
603
|
+
* - Supports custom scalar types (e.g., Decimal) for financial precision
|
|
551
604
|
*
|
|
552
|
-
* **Usage
|
|
605
|
+
* **Usage Examples:**
|
|
553
606
|
* ```typescript
|
|
554
|
-
* // Read-only computed field
|
|
607
|
+
* // Read-only computed field with primitive type
|
|
555
608
|
* fields: {
|
|
556
609
|
* firstName: text(),
|
|
557
610
|
* lastName: text(),
|
|
@@ -563,6 +616,28 @@ export function json<
|
|
|
563
616
|
* })
|
|
564
617
|
* }
|
|
565
618
|
*
|
|
619
|
+
* // Custom scalar type using import string
|
|
620
|
+
* fields: {
|
|
621
|
+
* totalPrice: virtual({
|
|
622
|
+
* type: "import('decimal.js').Decimal",
|
|
623
|
+
* hooks: {
|
|
624
|
+
* resolveOutput: ({ item }) => new Decimal(item.price).times(item.quantity)
|
|
625
|
+
* }
|
|
626
|
+
* })
|
|
627
|
+
* }
|
|
628
|
+
*
|
|
629
|
+
* // Custom scalar type using type descriptor (recommended)
|
|
630
|
+
* import Decimal from 'decimal.js'
|
|
631
|
+
*
|
|
632
|
+
* fields: {
|
|
633
|
+
* totalPrice: virtual({
|
|
634
|
+
* type: { value: Decimal, from: 'decimal.js' },
|
|
635
|
+
* hooks: {
|
|
636
|
+
* resolveOutput: ({ item }) => new Decimal(item.price).times(item.quantity)
|
|
637
|
+
* }
|
|
638
|
+
* })
|
|
639
|
+
* }
|
|
640
|
+
*
|
|
566
641
|
* // Write side effects (e.g., sync to external API)
|
|
567
642
|
* fields: {
|
|
568
643
|
* externalSync: virtual({
|
|
@@ -576,16 +651,10 @@ export function json<
|
|
|
576
651
|
* }
|
|
577
652
|
* })
|
|
578
653
|
* }
|
|
579
|
-
*
|
|
580
|
-
* // Query with select
|
|
581
|
-
* const user = await context.db.user.findUnique({
|
|
582
|
-
* where: { id },
|
|
583
|
-
* select: { firstName: true, lastName: true, fullName: true } // fullName computed
|
|
584
|
-
* })
|
|
585
654
|
* ```
|
|
586
655
|
*
|
|
587
656
|
* **Requirements:**
|
|
588
|
-
* - Must provide `type` (TypeScript type string)
|
|
657
|
+
* - Must provide `type` (TypeScript type string, import string, or type descriptor)
|
|
589
658
|
* - Must provide `resolveOutput` hook (for reads)
|
|
590
659
|
* - Optional `resolveInput` hook (for write side effects)
|
|
591
660
|
*
|
|
@@ -593,7 +662,9 @@ export function json<
|
|
|
593
662
|
* @returns Virtual field configuration
|
|
594
663
|
*/
|
|
595
664
|
export function virtual<TTypeInfo extends import('../config/types.js').TypeInfo>(
|
|
596
|
-
options: Omit<VirtualField<TTypeInfo>, 'virtual' | 'outputType' | 'type'> & {
|
|
665
|
+
options: Omit<VirtualField<TTypeInfo>, 'virtual' | 'outputType' | 'type'> & {
|
|
666
|
+
type: import('../config/types.js').TypeDescriptor
|
|
667
|
+
},
|
|
597
668
|
): VirtualField<TTypeInfo> {
|
|
598
669
|
// Validate that resolveOutput is provided
|
|
599
670
|
if (!options.hooks?.resolveOutput) {
|
|
@@ -603,7 +674,11 @@ export function virtual<TTypeInfo extends import('../config/types.js').TypeInfo>
|
|
|
603
674
|
)
|
|
604
675
|
}
|
|
605
676
|
|
|
606
|
-
|
|
677
|
+
// Convert type descriptor to string
|
|
678
|
+
const outputType = typeDescriptorToString(options.type)
|
|
679
|
+
const imports = typeDescriptorToImports(options.type)
|
|
680
|
+
|
|
681
|
+
const { type: _, ...rest } = options
|
|
607
682
|
|
|
608
683
|
return {
|
|
609
684
|
type: 'virtual',
|
|
@@ -616,10 +691,12 @@ export function virtual<TTypeInfo extends import('../config/types.js').TypeInfo>
|
|
|
616
691
|
// Virtual fields appear in output types with their specified type
|
|
617
692
|
getTypeScriptType: () => {
|
|
618
693
|
return {
|
|
619
|
-
type:
|
|
694
|
+
type: outputType,
|
|
620
695
|
optional: false, // Virtual fields always compute a value
|
|
621
696
|
}
|
|
622
697
|
},
|
|
698
|
+
// Add import statements if needed
|
|
699
|
+
getTypeScriptImports: imports.length > 0 ? () => imports : undefined,
|
|
623
700
|
// Virtual fields never validate input (they don't accept database input)
|
|
624
701
|
getZodSchema: () => {
|
|
625
702
|
return z.never()
|
package/src/index.ts
CHANGED
|
@@ -559,19 +559,32 @@ describe('Field Types', () => {
|
|
|
559
559
|
}).toThrow('ref')
|
|
560
560
|
})
|
|
561
561
|
|
|
562
|
-
test('throws error when ref format
|
|
562
|
+
test('throws error when ref format has too many parts', () => {
|
|
563
563
|
expect(() => {
|
|
564
|
-
relationship({ ref: '
|
|
564
|
+
relationship({ ref: 'Invalid.Format.TooManyParts' })
|
|
565
565
|
}).toThrow('Invalid relationship ref format')
|
|
566
566
|
})
|
|
567
567
|
|
|
568
|
-
test('accepts valid ref format', () => {
|
|
568
|
+
test('accepts valid bidirectional ref format (ListName.fieldName)', () => {
|
|
569
569
|
const field = relationship({ ref: 'User.posts' })
|
|
570
570
|
|
|
571
571
|
expect(field.ref).toBe('User.posts')
|
|
572
572
|
})
|
|
573
573
|
|
|
574
|
-
test('accepts
|
|
574
|
+
test('accepts valid list-only ref format (ListName)', () => {
|
|
575
|
+
const field = relationship({ ref: 'Category' })
|
|
576
|
+
|
|
577
|
+
expect(field.ref).toBe('Category')
|
|
578
|
+
})
|
|
579
|
+
|
|
580
|
+
test('accepts list-only ref with many option', () => {
|
|
581
|
+
const field = relationship({ ref: 'Tag', many: true })
|
|
582
|
+
|
|
583
|
+
expect(field.ref).toBe('Tag')
|
|
584
|
+
expect(field.many).toBe(true)
|
|
585
|
+
})
|
|
586
|
+
|
|
587
|
+
test('accepts bidirectional ref with many option', () => {
|
|
575
588
|
const field = relationship({ ref: 'Post.author', many: true })
|
|
576
589
|
|
|
577
590
|
expect(field.ref).toBe('Post.author')
|