From 6894ec8c5652edb117cbde0f4b0832d3bb92d5d8 Mon Sep 17 00:00:00 2001 From: Kostiantyn Dvornik Date: Sat, 14 Dec 2024 16:37:03 +0200 Subject: [PATCH] chore: update TS types --- dist/js/entity/mixins/props.d.ts | 19 ++++--- dist/js/entity/other.d.ts | 95 +++++++++++++++++++++++++++++--- dist/js/entity/other.js | 8 +-- dist/js/entity/set.d.ts | 41 +------------- dist/js/entity/set/mixins.d.ts | 4 +- dist/js/entity/set/mixins.js | 3 +- dist/js/utils/types.d.ts | 2 + dist/js/utils/types.js | 2 + src/js/entity/in_memory.ts | 2 +- src/js/entity/mixins/props.ts | 7 ++- src/js/entity/other.ts | 9 ++- src/js/entity/set/mixins.ts | 6 +- src/js/utils/types.ts | 4 ++ 13 files changed, 124 insertions(+), 78 deletions(-) create mode 100644 dist/js/utils/types.d.ts create mode 100644 dist/js/utils/types.js create mode 100644 src/js/utils/types.ts diff --git a/dist/js/entity/mixins/props.d.ts b/dist/js/entity/mixins/props.d.ts index 38232e8..5699b79 100644 --- a/dist/js/entity/mixins/props.d.ts +++ b/dist/js/entity/mixins/props.d.ts @@ -1,6 +1,7 @@ import { type ConsistencyCheck } from "@mat3ra/esse/dist/js/types"; -import { InMemoryEntityConstructor } from "../in_memory"; -export declare function DefaultableMixin(superclass: T): { +import type { Constructor } from "../../utils/types"; +import { type InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; +export declare function DefaultableMixin = Constructor>(superclass: T): { new (...args: any[]): { readonly isDefault: boolean; _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; @@ -19,7 +20,7 @@ export declare function DefaultableMixin(su readonly cls: string; getClsName(): string; getAsEntityReference(byIdOnly?: boolean): import("@mat3ra/esse/dist/js/types").EntityReferenceSchema; - getEntityByName(entities: import("../in_memory").InMemoryEntity[], entity: string, name: string): import("../in_memory").InMemoryEntity; + getEntityByName(entities: InMemoryEntity[], entity: string, name: string): InMemoryEntity; id: string; _id: string; schemaVersion: string; @@ -50,7 +51,7 @@ export declare function TaggableMixin(super readonly cls: string; getClsName(): string; getAsEntityReference(byIdOnly?: boolean): import("@mat3ra/esse/dist/js/types").EntityReferenceSchema; - getEntityByName(entities: import("../in_memory").InMemoryEntity[], entity: string, name: string): import("../in_memory").InMemoryEntity; + getEntityByName(entities: InMemoryEntity[], entity: string, name: string): InMemoryEntity; id: string; _id: string; schemaVersion: string; @@ -78,7 +79,7 @@ export declare function HasScopeTrackMixin( readonly cls: string; getClsName(): string; getAsEntityReference(byIdOnly?: boolean): import("@mat3ra/esse/dist/js/types").EntityReferenceSchema; - getEntityByName(entities: import("../in_memory").InMemoryEntity[], entity: string, name: string): import("../in_memory").InMemoryEntity; + getEntityByName(entities: InMemoryEntity[], entity: string, name: string): InMemoryEntity; id: string; _id: string; schemaVersion: string; @@ -107,7 +108,7 @@ export declare function HasMetadataMixin(su readonly cls: string; getClsName(): string; getAsEntityReference(byIdOnly?: boolean): import("@mat3ra/esse/dist/js/types").EntityReferenceSchema; - getEntityByName(entities: import("../in_memory").InMemoryEntity[], entity: string, name: string): import("../in_memory").InMemoryEntity; + getEntityByName(entities: InMemoryEntity[], entity: string, name: string): InMemoryEntity; id: string; _id: string; schemaVersion: string; @@ -136,7 +137,7 @@ export declare function HasDescriptionMixin readonly cls: string; getClsName(): string; getAsEntityReference(byIdOnly?: boolean): import("@mat3ra/esse/dist/js/types").EntityReferenceSchema; - getEntityByName(entities: import("../in_memory").InMemoryEntity[], entity: string, name: string): import("../in_memory").InMemoryEntity; + getEntityByName(entities: InMemoryEntity[], entity: string, name: string): InMemoryEntity; id: string; _id: string; schemaVersion: string; @@ -165,7 +166,7 @@ export declare function NamedEntityMixin(su readonly cls: string; getClsName(): string; getAsEntityReference(byIdOnly?: boolean): import("@mat3ra/esse/dist/js/types").EntityReferenceSchema; - getEntityByName(entities: import("../in_memory").InMemoryEntity[], entity: string, name: string): import("../in_memory").InMemoryEntity; + getEntityByName(entities: InMemoryEntity[], entity: string, name: string): InMemoryEntity; id: string; _id: string; schemaVersion: string; @@ -194,7 +195,7 @@ export declare function HasConsistencyChecksMixin(name: string, defaultValue: T): T; + prop(name: string): T | undefined; + setProp(name: string, value: unknown): void; + unsetProp(name: string): void; + setProps(json?: import("@mat3ra/esse/dist/js/esse/types").AnyObject): /*elided*/ any; + toJSON(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; + toJSONSafe(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; + toJSONQuick(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; + clone(extraContext?: object): /*elided*/ any; + validate(): void; + clean(config: import("@mat3ra/esse/dist/js/esse/types").AnyObject): import("@mat3ra/esse/dist/js/esse/types").AnyObject; + isValid(): boolean; + readonly cls: string; + getClsName(): string; + getAsEntityReference(byIdOnly?: boolean): import("@mat3ra/esse/dist/js/types").EntityReferenceSchema; + getEntityByName(entities: InMemoryEntity[], entity: string, name: string): InMemoryEntity; + id: string; + _id: string; + schemaVersion: string; + systemName: string; + readonly slug: string; + readonly isSystemEntity: boolean; + }; +} & { + new (...args: any[]): { + name: string; + setName(name: string): void; + _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; + prop(name: string, defaultValue: T): T; + prop(name: string): T | undefined; + setProp(name: string, value: unknown): void; + unsetProp(name: string): void; + setProps(json?: import("@mat3ra/esse/dist/js/esse/types").AnyObject): /*elided*/ any; + toJSON(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; + toJSONSafe(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; + toJSONQuick(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; + clone(extraContext?: object): /*elided*/ any; + validate(): void; + clean(config: import("@mat3ra/esse/dist/js/esse/types").AnyObject): import("@mat3ra/esse/dist/js/esse/types").AnyObject; + isValid(): boolean; + readonly cls: string; + getClsName(): string; + getAsEntityReference(byIdOnly?: boolean): import("@mat3ra/esse/dist/js/types").EntityReferenceSchema; + getEntityByName(entities: InMemoryEntity[], entity: string, name: string): InMemoryEntity; + id: string; + _id: string; + schemaVersion: string; + systemName: string; + readonly slug: string; + readonly isSystemEntity: boolean; + }; +} & { + new (...args: any[]): { + readonly isDefault: boolean; + _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; + prop(name: string, defaultValue: T): T; + prop(name: string): T | undefined; + setProp(name: string, value: unknown): void; + unsetProp(name: string): void; + setProps(json?: import("@mat3ra/esse/dist/js/esse/types").AnyObject): /*elided*/ any; + toJSON(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; + toJSONSafe(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; + toJSONQuick(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; + clone(extraContext?: object): /*elided*/ any; + validate(): void; + clean(config: import("@mat3ra/esse/dist/js/esse/types").AnyObject): import("@mat3ra/esse/dist/js/esse/types").AnyObject; + isValid(): boolean; + readonly cls: string; + getClsName(): string; + getAsEntityReference(byIdOnly?: boolean): import("@mat3ra/esse/dist/js/types").EntityReferenceSchema; + getEntityByName(entities: InMemoryEntity[], entity: string, name: string): InMemoryEntity; + id: string; + _id: string; + schemaVersion: string; + systemName: string; + readonly slug: string; + readonly isSystemEntity: boolean; + }; + readonly defaultConfig: object | null; + createDefault(): any; +} & typeof InMemoryEntity; export declare const NamedDefaultableRepetitionImportantSettingsInMemoryEntity: { new (...args: any[]): { readonly important: any; diff --git a/dist/js/entity/other.js b/dist/js/entity/other.js index 533cbb1..a5fb1dd 100644 --- a/dist/js/entity/other.js +++ b/dist/js/entity/other.js @@ -12,12 +12,8 @@ class DefaultableInMemoryEntity extends (0, props_1.DefaultableMixin)(in_memory_ exports.DefaultableInMemoryEntity = DefaultableInMemoryEntity; exports.NamedInMemoryEntity = (0, props_1.NamedEntityMixin)(in_memory_1.InMemoryEntity); exports.NamedDefaultableInMemoryEntity = (0, props_1.NamedEntityMixin)((0, props_1.DefaultableMixin)(in_memory_1.InMemoryEntity)); -class HasMetadataNamedDefaultableInMemoryEntity extends (0, props_1.HasMetadataMixin)((0, props_1.NamedEntityMixin)((0, props_1.DefaultableMixin)(in_memory_1.InMemoryEntity))) { -} -exports.HasMetadataNamedDefaultableInMemoryEntity = HasMetadataNamedDefaultableInMemoryEntity; -class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends (0, props_1.HasConsistencyChecksMixin)(HasMetadataNamedDefaultableInMemoryEntity) { -} -exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity; +exports.HasMetadataNamedDefaultableInMemoryEntity = (0, props_1.HasMetadataMixin)((0, props_1.NamedEntityMixin)((0, props_1.DefaultableMixin)(in_memory_1.InMemoryEntity))); +exports.HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = (0, props_1.HasConsistencyChecksMixin)(exports.HasMetadataNamedDefaultableInMemoryEntity); exports.NamedDefaultableRepetitionImportantSettingsInMemoryEntity = (0, context_1.ImportantSettingsProviderMixin)((0, repetition_1.HasRepetitionMixin)((0, props_1.NamedEntityMixin)((0, props_1.DefaultableMixin)(in_memory_1.InMemoryEntity)))); exports.NamedDefaultableRepetitionContextAndRenderInMemoryEntity = (0, context_1.ContextAndRenderFieldsMixin)((0, repetition_1.HasRepetitionMixin)((0, props_1.NamedEntityMixin)((0, props_1.DefaultableMixin)(in_memory_1.InMemoryEntity)))); exports.NamedDefaultableRepetitionRuntimeItemsImportantSettingsContextAndRenderHashedInMemoryEntity = (0, hash_1.HashedEntityMixin)((0, context_1.ContextAndRenderFieldsMixin)((0, context_1.ImportantSettingsProviderMixin)((0, runtime_items_1.RuntimeItemsUIAllowedMixin)((0, runtime_items_1.RuntimeItemsUILogicMixin)((0, repetition_1.HasRepetitionMixin)((0, props_1.NamedEntityMixin)((0, props_1.DefaultableMixin)(in_memory_1.InMemoryEntity)))))))); diff --git a/dist/js/entity/set.d.ts b/dist/js/entity/set.d.ts index d8dd028..a5d2e6b 100644 --- a/dist/js/entity/set.d.ts +++ b/dist/js/entity/set.d.ts @@ -1,46 +1,7 @@ import { InMemoryEntity } from "./in_memory"; declare const InMemoryEntitySet_base: { new (...args: any[]): { - containsEntity(name: string, defaultValue: T_1): T_1; - prop(name: string): T_1 | undefined; - setProp(name: string, value: unknown): void; - unsetProp(name: string): void; - setProps(json?: import("@mat3ra/esse/dist/js/esse/types").AnyObject): /*elided*/ any; - toJSON(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; - toJSONSafe(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; - toJSONQuick(exclude?: string[]): import("@mat3ra/esse/dist/js/esse/types").AnyObject; - clone(extraContext?: object): /*elided*/ any; - validate(): void; - clean(config: import("@mat3ra/esse/dist/js/esse/types").AnyObject): import("@mat3ra/esse/dist/js/esse/types").AnyObject; - isValid(): boolean; - readonly cls: string; - getClsName(): string; - getAsEntityReference(byIdOnly?: boolean): import("@mat3ra/esse/dist/js/types").EntityReferenceSchema; - getEntityByName(entities: InMemoryEntity[], entity: string, name: string): InMemoryEntity; - id: string; - _id: string; - schemaVersion: string; - systemName: string; - readonly slug: string; - readonly isSystemEntity: boolean; - } & InMemoryEntity>(entity?: T | undefined): boolean | undefined; + containsEntity(entity?: T | undefined): boolean; _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; prop(name: string, defaultValue: T): T; prop(name: string): T | undefined; diff --git a/dist/js/entity/set/mixins.d.ts b/dist/js/entity/set/mixins.d.ts index 9a33a7e..089892a 100644 --- a/dist/js/entity/set/mixins.d.ts +++ b/dist/js/entity/set/mixins.d.ts @@ -44,10 +44,9 @@ export declare function InMemoryEntityInSetMixin>; export declare function InMemoryEntitySetMixin(superclass: T): { new (...args: any[]): { - containsEntity(entity?: T_1 | undefined): boolean | undefined; + containsEntity(entity?: T_1 | undefined): boolean; _json: import("@mat3ra/esse/dist/js/esse/types").AnyObject; prop(name: string, defaultValue: T_1): T_1; prop(name: string): T_1 | undefined; @@ -73,4 +72,3 @@ export declare function InMemoryEntitySetMixin ref._id === this.id); + var _a; + return Boolean((_a = entity === null || entity === void 0 ? void 0 : entity.inSet) === null || _a === void 0 ? void 0 : _a.some((ref) => ref._id === this.id)); } }; } diff --git a/dist/js/utils/types.d.ts b/dist/js/utils/types.d.ts new file mode 100644 index 0000000..63c4320 --- /dev/null +++ b/dist/js/utils/types.d.ts @@ -0,0 +1,2 @@ +export type Constructor = new (...args: any[]) => T; +export type AbstractConstructor = abstract new (...args: any[]) => T; diff --git a/dist/js/utils/types.js b/dist/js/utils/types.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/dist/js/utils/types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/src/js/entity/in_memory.ts b/src/js/entity/in_memory.ts index 9e6da18..c52aecc 100644 --- a/src/js/entity/in_memory.ts +++ b/src/js/entity/in_memory.ts @@ -174,7 +174,7 @@ export class InMemoryEntity implements BaseInMemoryEntitySchema { } } - static get cls() { + static get cls(): string { return this.prototype.constructor.name; } diff --git a/src/js/entity/mixins/props.ts b/src/js/entity/mixins/props.ts index e188c29..2f68182 100644 --- a/src/js/entity/mixins/props.ts +++ b/src/js/entity/mixins/props.ts @@ -8,9 +8,12 @@ import { type NameEntitySchema, } from "@mat3ra/esse/dist/js/types"; -import { InMemoryEntityConstructor } from "../in_memory"; +import type { Constructor } from "../../utils/types"; +import { type InMemoryEntity, InMemoryEntityConstructor } from "../in_memory"; -export function DefaultableMixin(superclass: T) { +export function DefaultableMixin< + T extends Constructor = Constructor, +>(superclass: T) { class DefaultableMixin extends superclass implements DefaultableEntitySchema { get isDefault() { return this.prop("isDefault", false); diff --git a/src/js/entity/other.ts b/src/js/entity/other.ts index 883de9e..9e4e2f9 100644 --- a/src/js/entity/other.ts +++ b/src/js/entity/other.ts @@ -16,13 +16,12 @@ export const NamedInMemoryEntity = NamedEntityMixin(InMemoryEntity); export const NamedDefaultableInMemoryEntity = NamedEntityMixin(DefaultableMixin(InMemoryEntity)); -export class HasMetadataNamedDefaultableInMemoryEntity extends HasMetadataMixin( +export const HasMetadataNamedDefaultableInMemoryEntity = HasMetadataMixin( NamedEntityMixin(DefaultableMixin(InMemoryEntity)), -) {} +); -export class HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity extends HasConsistencyChecksMixin( - HasMetadataNamedDefaultableInMemoryEntity, -) {} +export const HasConsistencyChecksHasMetadataNamedDefaultableInMemoryEntity = + HasConsistencyChecksMixin(HasMetadataNamedDefaultableInMemoryEntity); export const NamedDefaultableRepetitionImportantSettingsInMemoryEntity = ImportantSettingsProviderMixin( diff --git a/src/js/entity/set/mixins.ts b/src/js/entity/set/mixins.ts index 9e14eee..e1db050 100644 --- a/src/js/entity/set/mixins.ts +++ b/src/js/entity/set/mixins.ts @@ -27,12 +27,10 @@ export function InMemoryEntityInSetMixin(su }; } -type BaseEntityInSet = InstanceType>; - export function InMemoryEntitySetMixin(superclass: T) { return class InMemoryEntitySetMixin extends superclass { - containsEntity(entity?: T) { - return entity?.inSet.some((ref) => ref._id === this.id); + containsEntity(entity?: T) { + return Boolean(entity?.inSet?.some((ref) => ref._id === this.id)); } }; } diff --git a/src/js/utils/types.ts b/src/js/utils/types.ts new file mode 100644 index 0000000..ebc2c53 --- /dev/null +++ b/src/js/utils/types.ts @@ -0,0 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +export type Constructor = new (...args: any[]) => T; + +export type AbstractConstructor = abstract new (...args: any[]) => T;