UNPKG

@altostra/core

Version:

Core library for shared types and logic

30 lines (29 loc) 2.41 kB
import type { Connection } from "../Blueprint/Connection"; import type { Resource, ResourceType } from "../Blueprint/Resource"; import type { Maybe, ResourceId } from "../Common"; import type { Point } from "../Point"; import type { RawResourceId, ResourceTemplate, ResourceTemplateByType } from "../Resources"; import type { BlueprintHelper } from "./BlueprintHelper"; import { Collection } from "./Collection"; import type { ConnectionHelper } from "./ConnectionHelper"; import type { It } from "./Iterable"; import type { ParameterizedResourceTemplate, ParameterizedResourceTemplateByType, ResourceHelperByType } from "./ResourceHelper"; import { ResourceHelper } from "./ResourceHelper"; export declare class ResourceCollection extends Collection<Resource, ResourceHelper, ResourceId> { private readonly _blueprint; constructor(resourcesCache: WeakMap<Resource, ResourceHelper>, connCache: WeakMap<Connection, ConnectionHelper>, _blueprint: BlueprintHelper); has(id: ResourceId): boolean; [Symbol.iterator](): Generator<ResourceHelper<ResourceType>, void, unknown>; addByType<T extends ResourceType>(type: T, resource: Omit<ResourceTemplateByType<T>, 'type'>, position?: Point): ResourceHelper<T>; add<TResource extends Resource>(resourceOrTemplate: Resource | ResourceTemplate<TResource>, position?: Point): ResourceHelper<TResource['type']>; addParameterizedResourceByType<T extends ResourceType>(type: T, resource: Omit<ParameterizedResourceTemplateByType<T>, 'type'>, position?: Point): ResourceHelper<T>; addParameterizedResource<TResource extends Resource>(resourceOrTemplate: ParameterizedResourceTemplate<TResource>, position?: Point): ResourceHelper<TResource['type']>; delete(resource: Maybe<ResourceHelper>): void; private _initCreatedId; deleteAll(): void; get(resourceId: RawResourceId): Maybe<ResourceHelper>; ofType<TType extends ResourceType>(...type: [TType, ...TType[]]): It<ResourceHelperByType<TType>>; assertType<TType extends ResourceType>(...validTypes: TType[]): It<ResourceHelperByType<TType>>; } export declare function ofResourceType<TType extends ResourceType>(...type: [TType, ...TType[]]): (src: Iterable<ResourceHelper>) => It<ResourceHelperByType<TType>>; export declare function assertResourceType<TType extends ResourceType>(...validTypes: TType[]): (src: Iterable<ResourceHelper>) => It<ResourceHelperByType<TType>>;