MCPcopy Create free account
hub / github.com/dipscope/TypeManager.TS / declareTypeMetadata

Method declareTypeMetadata

src/type-manager.ts:477–507  ·  view source on GitHub ↗

* Declares type metadata for provided type function based on general configuration. * * @param {TypeFn } typeFn Type function. * @param {TypeOptions } typeOptions Type options. * * @returns {TypeMetadata } Type metadata.

(typeFn: TypeFn<TObject>, typeOptions?: TypeOptions<TObject>)

Source from the content-addressed store, hash-verified

475 * @returns {TypeMetadata<TObject>} Type metadata.
476 */
477 private declareTypeMetadata<TObject>(typeFn: TypeFn<TObject>, typeOptions?: TypeOptions<TObject>): TypeMetadata<TObject>
478 {
479 let typeOptionsMap = this.typeManagerOptions.typeOptionsMap;
480
481 if (typeOptionsMap === undefined)
482 {
483 typeOptionsMap = new Map<TypeFn<any>, TypeOptions<any>>();
484
485 this.typeManagerOptions.typeOptionsMap = this.constructTypeOptionsMap(typeOptionsMap);
486 }
487
488 let mapTypeOptions = typeOptionsMap.get(typeFn);
489
490 if (mapTypeOptions === undefined)
491 {
492 mapTypeOptions = typeOptions ?? {};
493
494 typeOptionsMap.set(typeFn, mapTypeOptions);
495 }
496
497 const typeFnMap = this.typeFnMap;
498 const typeMetadataSet = this.typeMetadataSet;
499 const symbol = this.symbol;
500 const parentPrototype = Object.getPrototypeOf(typeFn.prototype) ?? {};
501 const parentTypeMetadata = parentPrototype[symbol];
502 const typeMetadata = new TypeMetadata(this, typeFnMap, typeMetadataSet, typeFn, mapTypeOptions, parentTypeMetadata);
503
504 typeMetadataSet.add(typeMetadata);
505
506 return typeMetadata;
507 }
508
509 /**
510 * Extracts type metadata from provided type function in static context.

Callers 1

configureTypeMetadataMethod · 0.95

Calls 3

setMethod · 0.80
getMethod · 0.65

Tested by

no test coverage detected