@infomaximum/application-types
Advanced tools
| 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", |
+3
-68
| /// <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; |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
23413
19.96%6
20%215
51.41%1
Infinity%