import { Fn, Refinement, RootStore, Store, Timeline } from "atom.io/internal"; import { Json } from "atom.io/foundations/json"; import { AtomToken, Loadable, ReadableToken, ReadonlyPureSelectorFamilyToken, SelectorToken, TimelineToken, TransactionOutcomeEvent, TransactionToken } from "atom.io"; import { Flat } from "atom.io/foundations/type-utils"; //#region src/introspection/attach-atom-index.d.ts type AtomTokenIndex = WritableTokenIndex>; //#endregion //#region src/introspection/attach-selector-index.d.ts type SelectorTokenIndex = WritableTokenIndex>; //#endregion //#region src/introspection/attach-introspection-states.d.ts type IntrospectionStates = { atomIndex: AtomToken; selectorIndex: AtomToken; transactionIndex: AtomToken[]>; transactionLogSelectors: ReadonlyPureSelectorFamilyToken>[], string>; timelineIndex: AtomToken[]>; timelineSelectors: ReadonlyPureSelectorFamilyToken, string>; typeSelectors: ReadonlyPureSelectorFamilyToken, string>; }; declare const attachIntrospectionStates: (store: RootStore) => IntrospectionStates; //#endregion //#region src/introspection/auditor.d.ts type ListResourcesParam = { atomFamilies: boolean; selectorFamilies: boolean; }; /** * Auditor is a tool for identifying lingering resources in your store that may result in memory leaks. * @experimental */ declare class Auditor { readonly store: Store; auditorCreatedAt: number; statesCreatedAt: Map; readonly atomIndex: AtomToken; readonly selectorIndex: AtomToken; disposed: boolean; private readonly unsubscribeFromAtomCreation; private readonly unsubscribeFromAtomDisposal; private readonly unsubscribeFromSelectorCreation; private readonly unsubscribeFromSelectorDisposal; /** * @param {Store} store - The store to audit. */ constructor(store?: Store); static readonly DEFAULT_LIST_RESOURCES_PARAM: ListResourcesParam; /** * Lists all resources in the store, along with their creation time. * * @param {ListResourcesParam} [param] - Optional parameters for filtering the list of resources. * @returns {readonly [ReadableToken, number]}[] - An array of tuples, where each tuple contains a state token belonging to a family in the store and that state's creation time. */ listResources(param?: ListResourcesParam): (readonly [ReadableToken, number])[]; [Symbol.dispose](): void; } //#endregion //#region src/introspection/refinery.d.ts type ClassSignature = abstract new (...args: any) => any; type RefinementStrategy = ClassSignature | Refinement; type Supported = Refine extends Refinement ? T : Refine extends ClassSignature ? InstanceType : never; type RefinementSupport = Record; declare class Refinery { supported: SupportedTypes; constructor(supported: SupportedTypes); refine(input: T): Flat<{ [K in keyof SupportedTypes]: T extends Supported ? { type: K; data: Supported; } : Supported extends T ? { type: K; data: Supported; } : never; }>[keyof SupportedTypes] | (T extends Supported ? never : null); } declare const primitiveRefinery: Refinery<{ number: (input: unknown) => input is number; string: (input: unknown) => input is string; boolean: (input: unknown) => input is boolean; null: (input: unknown) => input is null; }>; declare function isPlainObject(input: unknown): input is Json.Tree.Object; declare const jsonTreeRefinery: Refinery<{ object: (input: unknown) => input is Json.Tree.Object; array: (input: unknown) => input is Json.Tree.Array; }>; declare const jsonRefinery: Refinery<{ object: (input: unknown) => input is Json.Tree.Object; array: (input: unknown) => input is Json.Tree.Array; number: (input: unknown) => input is number; string: (input: unknown) => input is string; boolean: (input: unknown) => input is boolean; null: (input: unknown) => input is null; }>; type JsonType = keyof typeof jsonRefinery.supported; declare const discoverType: (input: unknown) => JsonType | `Map` | `Set` | `undefined` | (string & {}); //#endregion //#region src/introspection/differ.d.ts declare function diffNumber(a: number, b: number): Delta; declare function diffString(a: string, b: string): Delta; declare function diffBoolean(a: boolean, b: boolean): Delta; declare function diffObject(a: Json.Tree.Object, b: Json.Tree.Object, recurse: Diff): Delta; declare function diffArray(a: Json.Tree.Array, b: Json.Tree.Array, recurse: Diff): Delta; type Delta = { summary: string; added?: [path: string, addedStringifiedValue: string][]; removed?: [path: string, removedStringifiedValue: string][]; changed?: [path: string, delta: Delta][]; }; type Diff = (a: T, b: T) => Delta; type DiffTree = (a: T, b: T, recurse: Differ[`diff`]) => Delta; declare class Differ, Tree extends Record> { leafRefinery: Refinery; treeRefinery: Refinery; leafDiffers: { [KL in keyof Leaf]: Diff>; }; treeDiffers: { [KT in keyof Tree]: DiffTree>; }; constructor(leafRefinery: Refinery, treeRefinery: Refinery, diffFunctions: { [KT in keyof Tree]: DiffTree>; } & { [KL in keyof Leaf]: Diff>; }); diff(a: unknown, b: unknown): Delta; } declare const prettyJson: Differ<{ number: (input: unknown) => input is number; string: (input: unknown) => input is string; boolean: (input: unknown) => input is boolean; null: (input: unknown) => input is null; }, { object: (input: unknown) => input is Json.Tree.Object; array: (input: unknown) => input is Json.Tree.Array; }>; //#endregion //#region src/introspection/sprawl.d.ts type InspectionResult = Partial<{ pathComplete: true; jobComplete: true; }>; type InspectNode = (path: string[], node: unknown) => InspectionResult | void; declare const sprawl: (tree: Array | object, inspector: InspectNode) => void; //#endregion //#region src/introspection/index.d.ts type FamilyNode> = { key: string; familyMembers: Map; }; type ReadonlyTokenIndex> = ReadonlyMap | Token>; type WritableTokenIndex> = Map | Token>; //#endregion export { Auditor, ClassSignature, Differ, FamilyNode, InspectNode, InspectionResult, IntrospectionStates, JsonType, ListResourcesParam, ReadonlyTokenIndex, RefinementStrategy, RefinementSupport, Refinery, Supported, WritableTokenIndex, attachIntrospectionStates, diffArray, diffBoolean, diffNumber, diffObject, diffString, discoverType, isPlainObject, jsonRefinery, jsonTreeRefinery, prettyJson, primitiveRefinery, sprawl }; //# sourceMappingURL=index.d.ts.map