🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@infomaximum/application-types

Package Overview
Dependencies
Maintainers
2
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@infomaximum/application-types - npm Package Compare versions

Comparing version
1.3.0-rc.0
to
1.3.0-rc.1
+54
src/workspaceContext.test-d.ts
import { type IApplicationProps } from "./index";
import {
type IWorkspaceContext,
type ITableData,
type IScriptRun,
type IScriptRunStatus,
type IScriptRunResult,
} from "./workspaceContext";
// workspaceContext опционален и имеет нужную форму
const props: IApplicationProps = {
language: "ru",
isDebugMode: false,
hasPackageWriteAccessChecker: () => true,
appRouter: { basePath: "/", route: "/", navigateApp: () => {} },
workspaceContext: {
workspaceGuid: 1,
isAvailable: true,
resources: {},
},
};
const ctx: IWorkspaceContext | undefined = props.workspaceContext;
void ctx;
// resources-группы опциональны — пустой объект валиден
const empty: IApplicationProps["workspaceContext"] = {
workspaceGuid: 2,
isAvailable: false,
resources: {},
};
void empty;
// группа ресурса опциональна, но её методы — required (getData/run/...)
async function useResources(ctx: IWorkspaceContext) {
const { tables, scripts } = ctx.resources;
// tables.getData: колоночный контракт, paging опционален
const tableData: ITableData | undefined = await tables?.getData({
tableName: "orders",
paging: { limit: 100 },
});
void tableData;
// scripts: run возвращает scriptId, getStatus/getResult — по id
const run: IScriptRun | undefined = await scripts?.run("script-guid", "payload");
const runNoData: IScriptRun | undefined = await scripts?.run("script-guid");
const status: IScriptRunStatus | undefined = await scripts?.getStatus(1);
const result: IScriptRunResult | undefined = await scripts?.getResult(2);
void run;
void runNoData;
void status;
void result;
}
void useResources;
/** Параметры постраничной выборки ресурса. */
export interface IWorkspaceResourcePaging {
limit?: number;
offset?: number;
}
/** Таблица пространства (элемент списка). */
export interface ITableInfo {
name: string;
involved: boolean;
}
/** Колонка данных таблицы. Бэкенд отдаёт данные поколоночно. */
export interface ITableColumn {
name: string;
dataType?: string;
values: string[];
}
/** Запрос данных таблицы. */
export interface ITableDataRequest {
tableName: string;
paging?: IWorkspaceResourcePaging; // сейчас поддерживается только limit
}
/** Данные таблицы в колоночном представлении. */
export interface ITableData {
columns: ITableColumn[];
}
export interface ITablesApi {
list(params?: { textFilter?: string; paging?: IWorkspaceResourcePaging }): Promise<ITableInfo[]>;
/** Чтение данных таблицы по имени с учётом RLS и прав пользователя.
* Ограничение фазы: только постраничное чтение (limit); произвольный
* фильтр/сортировка/offset — следующая фаза (новый бэк-запрос). */
getData(request: ITableDataRequest): Promise<ITableData>;
}
/** Скрипт пространства (элемент списка). */
export interface IScriptInfo {
id: number;
name: string;
}
/** Результат инициирования запуска скрипта. */
export interface IScriptRun {
scriptId: number; // execute-мутация возвращает id скрипта
}
/** Статус исполнения скрипта. */
export interface IScriptRunStatus {
status: string;
isRunning: boolean;
}
/** Результат исполнения скрипта. */
export interface IScriptRunResult {
status: string;
data?: string;
error?: string;
}
export interface IScriptsApi {
list(params?: { paging?: IWorkspaceResourcePaging }): Promise<IScriptInfo[]>;
/** Инициировать запуск скрипта по guid с опциональными данными. */
run(scriptGuid: string, data?: string): Promise<IScriptRun>;
/** Статус последнего исполнения скрипта по его id.
* Ограничение фазы: трекинг по последнему исполнению (racy при
* конкурентных запросах) — точный per-run трекинг требует доработки бэка. */
getStatus(scriptId: number): Promise<IScriptRunStatus>;
/** Результат исполнения скрипта по id исполнения. */
getResult(executionId: number): Promise<IScriptRunResult>;
}
/** Подключение пространства (элемент списка). */
export interface IConnectionInfo {
id: number;
name: string;
type: string;
}
export interface IConnectionsApi {
list(): Promise<IConnectionInfo[]>;
}
/** Интеграция пространства (элемент списка). */
export interface IIntegrationInfo {
id: number;
name: string;
guid: string;
}
export interface IIntegrationsApi {
list(): Promise<IIntegrationInfo[]>;
}
/**
* API доступа к ресурсам пространства. Группа присутствует только если её
* модуль-владелец зарегистрировал фабрику. Контракт вводится инкрементально —
* методы добавляются вместе с реализующими их фабриками (полная целевая
* поверхность — в дизайн-спеке). Сейчас реализуются list-операции 4 ресурсов,
* чтение данных таблиц (tables.getData) и управление скриптами
* (scripts.run/getStatus/getResult); fileStorage, интеграции/подключения за
* пределами list — следующие фазы (бэк-схема, гейт MS-950).
*/
export interface IWorkspaceResources {
tables?: ITablesApi;
scripts?: IScriptsApi;
connections?: IConnectionsApi;
integrations?: IIntegrationsApi;
}
/** Контекст привязанного к приложению пространства. */
export interface IWorkspaceContext {
/** GUID привязанного пространства. */
workspaceGuid: number;
/** false → привязка разорвана / пространство в корзине / нет прав. */
isAvailable: boolean;
/** API доступа к ресурсам пространства. */
resources: IWorkspaceResources;
}
+7
-0

@@ -5,2 +5,9 @@ # Changelog

## [1.3.0-rc.1](https://github.com/Infomaximum/frontend-lib/compare/v1.3.0-rc.0...v1.3.0-rc.1) (2026-06-24)
### Features
* доступ к данным таблиц и управление скриптами пространства ([da33b78](https://github.com/Infomaximum/frontend-lib/commit/da33b78ded8d128541dc0770e939b954811f2b5b))
## [1.3.0-rc.0](https://github.com/Infomaximum/frontend-lib/compare/v1.1.1...v1.3.0-rc.0) (2026-06-23)

@@ -7,0 +14,0 @@

+1
-1
{
"name": "@infomaximum/application-types",
"version": "1.3.0-rc.0",
"version": "1.3.0-rc.1",
"license": "Apache-2.0",

@@ -5,0 +5,0 @@ "main": "./src/index.ts",

/// <reference types="@infomaximum/global-types" />
import { type TFilterDescriptions } from "@infomaximum/custom-filter";
import { type IWorkspaceContext } from "./workspaceContext";
export * from "./workspaceContext";
/**

@@ -62,70 +65,2 @@ * API роутинга кастомного приложения. Приложение управляет своим роутом через

/** Параметры постраничной выборки ресурса. */
export interface IWorkspaceResourcePaging {
limit?: number;
offset?: number;
}
/** Таблица пространства (элемент списка). */
export interface ITableInfo {
name: string;
involved: boolean;
}
export interface ITablesApi {
list(params?: { textFilter?: string; paging?: IWorkspaceResourcePaging }): Promise<ITableInfo[]>;
}
/** Скрипт пространства (элемент списка). */
export interface IScriptInfo {
id: number;
name: string;
}
export interface IScriptsApi {
list(params?: { paging?: IWorkspaceResourcePaging }): Promise<IScriptInfo[]>;
}
/** Подключение пространства (элемент списка). */
export interface IConnectionInfo {
id: number;
name: string;
type: string;
}
export interface IConnectionsApi {
list(): Promise<IConnectionInfo[]>;
}
/** Интеграция пространства (элемент списка). */
export interface IIntegrationInfo {
id: number;
name: string;
guid: string;
}
export interface IIntegrationsApi {
list(): Promise<IIntegrationInfo[]>;
}
/**
* API доступа к ресурсам пространства. Группа присутствует только если её
* модуль-владелец зарегистрировал фабрику. Контракт вводится инкрементально —
* методы добавляются вместе с реализующими их фабриками (полная целевая
* поверхность — в дизайн-спеке). Сейчас реализуются list-операции 4 ресурсов;
* fileStorage, tables.getData, scripts.run/getStatus — следующие фазы (бэк-схема).
*/
export interface IWorkspaceResources {
tables?: ITablesApi;
scripts?: IScriptsApi;
connections?: IConnectionsApi;
integrations?: IIntegrationsApi;
}
/** Контекст привязанного к приложению пространства. */
export interface IWorkspaceContext {
/** GUID привязанного пространства. */
workspaceGuid: number;
/** false → привязка разорвана / пространство в корзине / нет прав. */
isAvailable: boolean;
/** API доступа к ресурсам пространства. */
resources: IWorkspaceResources;
}
declare global {

@@ -132,0 +67,0 @@ interface Infomaximum {

import { type IApplicationProps, type IWorkspaceContext } from "./index";
// workspaceContext опционален и имеет нужную форму
const props: IApplicationProps = {
language: "ru",
isDebugMode: false,
hasPackageWriteAccessChecker: () => true,
appRouter: { basePath: "/", route: "/", navigateApp: () => {} },
workspaceContext: {
workspaceGuid: 1,
isAvailable: true,
resources: {},
},
};
const ctx: IWorkspaceContext | undefined = props.workspaceContext;
void ctx;
// resources-группы опциональны — пустой объект валиден
const empty: IApplicationProps["workspaceContext"] = {
workspaceGuid: 2,
isAvailable: false,
resources: {},
};
void empty;