Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion extensions/api.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@ import type { DBKVStore } from '@heyputer/backend/src/services/repositories/DBKV
import type { SUService } from '@heyputer/backend/src/services/SUService.js';
import type { RequestHandler } from 'express';
import type helpers from '../src/backend/src/helpers.js';
import type FSNodeContext from '../src/backend/src/filesystem/FSNodeContext.js';
import type selectors from '../src/backend/src/filesystem/node/selectors.js';

export type FSNodeContext = FSNodeContext;

declare global {
namespace Express {
interface Request {
Expand Down Expand Up @@ -37,6 +42,13 @@ interface CoreRuntimeModule {
}
}

type FilesystemModule = {
FSNodeContext: FSNodeContext,
selectors: selectors,
}

type StripPrefix<TPrefix extends string, T extends string> = T extends `${TPrefix}.${infer R}` ? R : never;
// TODO DS: define this globally in core to use it there too
interface ServiceNameMap {
'meteringService': Pick<MeteringServiceWrapper, 'meteringService'> & MeteringService // TODO DS: squash into a single class without wrapper
'puter-kv': DBKVStore
Expand All @@ -46,7 +58,11 @@ interface Extension extends RouterMethods {
import(module:'core'): CoreRuntimeModule,
import<T extends `service:${keyof ServiceNameMap}`| (string & {})>(module: T): T extends `service:${infer R extends keyof ServiceNameMap}`
? ServiceNameMap[R]
: unknown;
: T extends 'core'
? CoreRuntimeModule
: T extends 'fs'
? FilesystemModule
: unknown
}

declare global {
Expand Down
Loading