@t4h.framework/vite-panel-plugin 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,51 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <!--panel-base-->
7
+ <title>T4H Framework Panel</title>
8
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
9
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
10
+ <link
11
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Sora:wght@600;700&display=swap"
12
+ rel="stylesheet"
13
+ />
14
+ <style>
15
+ *,
16
+ *::before,
17
+ *::after {
18
+ box-sizing: border-box;
19
+ margin: 0;
20
+ padding: 0;
21
+ }
22
+ html,
23
+ body,
24
+ #root {
25
+ height: 100%;
26
+ background: #0b1326;
27
+ font-family: 'Inter', sans-serif;
28
+ -webkit-font-smoothing: antialiased;
29
+ }
30
+ ::-webkit-scrollbar {
31
+ width: 6px;
32
+ height: 6px;
33
+ }
34
+ ::-webkit-scrollbar-track {
35
+ background: transparent;
36
+ }
37
+ ::-webkit-scrollbar-thumb {
38
+ background: #2d3449;
39
+ border-radius: 3px;
40
+ }
41
+ ::-webkit-scrollbar-thumb:hover {
42
+ background: #464554;
43
+ }
44
+ </style>
45
+ <script type="module" crossorigin src="./assets/index-C8OZoaNO.js"></script>
46
+ </head>
47
+ <body>
48
+ <div id="root"></div>
49
+ <!--panel-config-->
50
+ </body>
51
+ </html>
@@ -0,0 +1,4 @@
1
+ export { default, type PanelPluginOptions } from './vite-panel-plugin.js';
2
+ export type { PanelApi, PanelCapabilities, PanelConfig, PanelConfigInput, PanelFields, PanelMetadata, PanelRoute, PanelRoutes, } from './panel-config.js';
3
+ export type * from './panel-api.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACzE,YAAY,EACV,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAC1B,mBAAmB,gBAAgB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { default } from './vite-panel-plugin.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA2B,MAAM,wBAAwB,CAAA"}
package/dist/node.d.ts ADDED
@@ -0,0 +1,30 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ import { type PanelConfig, type PanelConfigInput } from './panel-config.js';
3
+ export { resolvePanelConfig, type PanelApi, type PanelCapabilities, type PanelConfig, type PanelConfigInput, type PanelFields, type PanelMetadata, type PanelRoute, type PanelRoutes, } from './panel-config.js';
4
+ export declare const PANEL_CLIENT_DIST: string;
5
+ export declare const PANEL_CLIENT_ASSETS_DIR: string;
6
+ export type NodeMiddleware = (req: IncomingMessage, res: ServerResponse, next: (err?: unknown) => void) => void;
7
+ export declare function assertPanelBuilt(): void;
8
+ export interface RenderOptions {
9
+ /**
10
+ * `<base href>` of the page, `` `${config.basePath}/` `` by default. A host
11
+ * that serves the assets from a path shared by every mount point (the
12
+ * runtime, whose `basePath` carries the tenant and the version) points it
13
+ * there instead.
14
+ */
15
+ baseHref?: string;
16
+ }
17
+ export declare function render(config: PanelConfig, { baseHref }?: RenderOptions): string;
18
+ export interface PanelAssetsHandlerOptions {
19
+ root?: string;
20
+ immutable?: boolean;
21
+ }
22
+ export declare function createPanelAssetsHandler({ root, immutable, }?: PanelAssetsHandlerOptions): NodeMiddleware;
23
+ export declare function stripBasePath(url: string, basePath: string): string | null;
24
+ export declare function isNavigation(req: IncomingMessage, pathname: string): boolean;
25
+ export interface PanelHandlerOptions {
26
+ config?: PanelConfigInput;
27
+ baseHref?: string;
28
+ }
29
+ export declare function createPanelHandler({ config: input, baseHref, }?: PanelHandlerOptions): NodeMiddleware;
30
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAKhE,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,kBAAkB,EAClB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAA;AAE1B,eAAO,MAAM,iBAAiB,QAK7B,CAAA;AAED,eAAO,MAAM,uBAAuB,QAAyC,CAAA;AAQ7E,MAAM,MAAM,cAAc,GAAG,CAC3B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,KAC1B,IAAI,CAAA;AAET,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAUD,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,MAAM,CACpB,MAAM,EAAE,WAAW,EACnB,EAAE,QAAgC,EAAE,GAAE,aAAkB,GACvD,MAAM,CASR;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAgB,wBAAwB,CAAC,EACvC,IAA8B,EAC9B,SAAgB,GACjB,GAAE,yBAA8B,GAAG,cAAc,CAQjD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ1E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQ5E;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EAAE,KAAU,EAClB,QAAQ,GACT,GAAE,mBAAwB,GAAG,cAAc,CAgC3C"}
package/dist/node.js ADDED
@@ -0,0 +1,76 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import serveStatic from 'serve-static';
4
+ import { PANEL_CONFIG_GLOBAL, resolvePanelConfig, } from './panel-config.js';
5
+ export { resolvePanelConfig, } from './panel-config.js';
6
+ export const PANEL_CLIENT_DIST = path.resolve(import.meta.dirname, '..', 'dist', 'client');
7
+ export const PANEL_CLIENT_ASSETS_DIR = path.join(PANEL_CLIENT_DIST, 'assets');
8
+ const INDEX_HTML = path.join(PANEL_CLIENT_DIST, 'index.html');
9
+ const BASE_PLACEHOLDER = '<!--panel-base-->';
10
+ const CONFIG_PLACEHOLDER = '<!--panel-config-->';
11
+ export function assertPanelBuilt() {
12
+ if (!fs.existsSync(INDEX_HTML))
13
+ throw new Error(`Panel assets not found at ${PANEL_CLIENT_DIST}; build @t4h.framework/vite-panel-plugin first`);
14
+ }
15
+ let template;
16
+ function readTemplate() {
17
+ assertPanelBuilt();
18
+ return (template ??= fs.readFileSync(INDEX_HTML, 'utf8'));
19
+ }
20
+ export function render(config, { baseHref = `${config.basePath}/` } = {}) {
21
+ const json = JSON.stringify(config).replaceAll('</', '<\\/');
22
+ return readTemplate()
23
+ .replace(BASE_PLACEHOLDER, `<base href="${baseHref}" />`)
24
+ .replace(CONFIG_PLACEHOLDER, `<script>window.${PANEL_CONFIG_GLOBAL} = ${json}</script>`);
25
+ }
26
+ export function createPanelAssetsHandler({ root = PANEL_CLIENT_ASSETS_DIR, immutable = true, } = {}) {
27
+ assertPanelBuilt();
28
+ return serveStatic(root, {
29
+ index: false,
30
+ immutable,
31
+ maxAge: immutable ? '1y' : 0,
32
+ });
33
+ }
34
+ export function stripBasePath(url, basePath) {
35
+ if (!basePath)
36
+ return url;
37
+ if (url === basePath)
38
+ return '/';
39
+ return url.startsWith(`${basePath}/`) || url.startsWith(`${basePath}?`)
40
+ ? url.slice(basePath.length)
41
+ : null;
42
+ }
43
+ export function isNavigation(req, pathname) {
44
+ if (req.method !== 'GET' && req.method !== 'HEAD')
45
+ return false;
46
+ if (pathname.startsWith('/@'))
47
+ return false;
48
+ if (/\.[a-z0-9]+$/i.test(pathname))
49
+ return false;
50
+ return (req.headers.accept ?? '').includes('text/html');
51
+ }
52
+ export function createPanelHandler({ config: input = {}, baseHref, } = {}) {
53
+ const config = resolvePanelConfig(input);
54
+ const index = render(config, baseHref === undefined ? {} : { baseHref });
55
+ const assets = createPanelAssetsHandler({
56
+ root: PANEL_CLIENT_DIST,
57
+ immutable: false,
58
+ });
59
+ return (req, res, next) => {
60
+ const url = stripBasePath(req.url ?? '/', config.basePath);
61
+ if (url === null)
62
+ return next();
63
+ const pathname = url.split('?')[0] ?? '/';
64
+ if (isNavigation(req, pathname)) {
65
+ res.setHeader('content-type', 'text/html; charset=utf-8');
66
+ return res.end(index);
67
+ }
68
+ const original = req.url;
69
+ req.url = url;
70
+ assets(req, res, () => {
71
+ req.url = original;
72
+ next();
73
+ });
74
+ };
75
+ }
76
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ export type JsonSchema = Record<string, unknown> & {
2
+ type?: string | string[];
3
+ properties?: Record<string, JsonSchema>;
4
+ required?: string[];
5
+ items?: JsonSchema | JsonSchema[];
6
+ description?: string;
7
+ };
8
+ export interface ManifestAuthorization {
9
+ pathToModule: string;
10
+ context?: unknown;
11
+ }
12
+ export interface ManifestWorkflow {
13
+ id: string;
14
+ description: string | null;
15
+ schema: JsonSchema | null;
16
+ authorization?: ManifestAuthorization | null;
17
+ }
18
+ export interface AppManifest {
19
+ id: string;
20
+ description: string | null;
21
+ workflows: ManifestWorkflow[];
22
+ authorization?: ManifestAuthorization | null;
23
+ }
24
+ export type ServerState = 'idle' | 'starting' | 'ready' | 'exited';
25
+ export interface WaitingActivity {
26
+ id: string;
27
+ pendingId: string;
28
+ runId: string;
29
+ workflowId: string;
30
+ type: string;
31
+ schema?: JsonSchema;
32
+ timeoutAt?: string;
33
+ }
34
+ export interface PageQuery {
35
+ limit?: number;
36
+ offset?: number;
37
+ }
38
+ export interface WaitingActivitiesPage {
39
+ count: number;
40
+ activities: WaitingActivity[];
41
+ }
42
+ export type WorkflowRunStatus = 'running' | 'fulfilled' | 'rejected';
43
+ export interface WorkflowRun {
44
+ id: string;
45
+ workflow: string;
46
+ status: WorkflowRunStatus;
47
+ rejectedActivityId: string | null;
48
+ parentWorkflowRunId: string | null;
49
+ parentWorkflowRunActivityId: string | null;
50
+ createdAt: string;
51
+ updatedAt: string;
52
+ }
53
+ export type WorkflowRunActivityKind = 'sync' | 'async';
54
+ export type AsyncActivityPendingStatus = 'pending' | 'fulfilled' | 'rejected';
55
+ export interface WorkflowRunAsyncActivityPending {
56
+ id: string;
57
+ previousId: string | null;
58
+ status: AsyncActivityPendingStatus;
59
+ schema: JsonSchema | null;
60
+ timeoutAt: string | null;
61
+ result: unknown;
62
+ payload: unknown;
63
+ createdAt: string;
64
+ updatedAt: string;
65
+ }
66
+ interface WorkflowRunActivityBase {
67
+ id: string;
68
+ type: string;
69
+ kind: WorkflowRunActivityKind;
70
+ status: WorkflowRunStatus;
71
+ /** When `status` last left `running`; `null` while still running. */
72
+ settledAt: string | null;
73
+ hasChildren: boolean;
74
+ createdAt: string;
75
+ }
76
+ export interface WorkflowRunSyncActivity extends WorkflowRunActivityBase {
77
+ kind: 'sync';
78
+ }
79
+ export interface WorkflowRunAsyncActivity extends WorkflowRunActivityBase {
80
+ kind: 'async';
81
+ pendingStatus: AsyncActivityPendingStatus | null;
82
+ }
83
+ export type WorkflowRunActivity = WorkflowRunSyncActivity | WorkflowRunAsyncActivity;
84
+ export type WorkflowRunActivityDetails = WorkflowRunActivity & {
85
+ input: unknown;
86
+ output: unknown;
87
+ };
88
+ export interface WorkflowRunActivitiesPage {
89
+ count: number;
90
+ activities: WorkflowRunActivity[];
91
+ }
92
+ export interface WorkflowRunAsyncActivityPendingsPage {
93
+ count: number;
94
+ pendings: WorkflowRunAsyncActivityPending[];
95
+ }
96
+ export interface WorkflowRunLog {
97
+ level: string;
98
+ args: unknown[];
99
+ at: string;
100
+ }
101
+ export interface WorkflowRunLogsPage {
102
+ count: number;
103
+ logs: WorkflowRunLog[];
104
+ }
105
+ export interface WorkflowRunDetails extends WorkflowRun {
106
+ input: unknown;
107
+ output: unknown;
108
+ rejectedReason: {
109
+ message: string;
110
+ stack?: string;
111
+ } | null;
112
+ }
113
+ export interface WorkflowRunsPage {
114
+ count: number;
115
+ runs: WorkflowRun[];
116
+ }
117
+ export interface WorkflowRunsQuery extends PageQuery {
118
+ status?: WorkflowRunStatus;
119
+ workflow?: string;
120
+ id?: string;
121
+ parentRunId?: string;
122
+ parentActivityId?: string;
123
+ rootOnly?: boolean;
124
+ createdAfter?: number;
125
+ createdBefore?: number;
126
+ }
127
+ export interface AdvanceResult {
128
+ id: string;
129
+ type: string;
130
+ status: AsyncActivityPendingStatus;
131
+ }
132
+ export type PanelEventName = 'manifest' | 'build:status' | 'build:fail' | 'app:exit' | 'run:created' | 'run:updated';
133
+ export {};
134
+ //# sourceMappingURL=panel-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-api.d.ts","sourceRoot":"","sources":["../src/panel-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=panel-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-api.js","sourceRoot":"","sources":["../src/panel-api.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ export type PanelMetadata = Record<string, string>;
2
+ /** Sent verbatim as `q`; the host, not the panel, knows how it names its fields. */
3
+ export interface PanelFields {
4
+ runs?: string;
5
+ run?: string;
6
+ runActivities?: string;
7
+ runActivity?: string;
8
+ runActivityPendings?: string;
9
+ }
10
+ /** Path templates under `apiUrl`; the panel knows what it asks, not where a host mounts it. */
11
+ export interface PanelApi {
12
+ manifest: string;
13
+ /** Only called with `capabilities.rebuild`. */
14
+ state: string;
15
+ runs: string;
16
+ run: string;
17
+ runActivities: string;
18
+ runActivity: string;
19
+ runActivityPendings: string;
20
+ runLogs: string;
21
+ waitingActivities: string;
22
+ runWorkflow: string;
23
+ advanceActivity: string;
24
+ /** Only opened with `capabilities.events`. */
25
+ events: string;
26
+ }
27
+ export interface PanelCapabilities {
28
+ trigger: boolean;
29
+ advance: boolean;
30
+ events: boolean;
31
+ rebuild: boolean;
32
+ }
33
+ export interface PanelRoute {
34
+ method: string;
35
+ path: string;
36
+ headers?: Record<string, string>;
37
+ }
38
+ export interface PanelRoutes {
39
+ runs: PanelRoute;
40
+ advance: PanelRoute;
41
+ }
42
+ export interface PanelConfig {
43
+ title: string;
44
+ basePath: string;
45
+ apiUrl: string;
46
+ /** The dev server only learns it at the first build, so it may be absent and the manifest fills in. */
47
+ project?: string;
48
+ metadata: PanelMetadata;
49
+ fields: PanelFields;
50
+ api: PanelApi;
51
+ capabilities: PanelCapabilities;
52
+ routes: PanelRoutes;
53
+ }
54
+ export interface PanelConfigInput {
55
+ title?: string;
56
+ basePath?: string;
57
+ apiUrl?: string;
58
+ project?: string;
59
+ metadata?: PanelMetadata;
60
+ fields?: PanelFields;
61
+ api?: Partial<PanelApi>;
62
+ capabilities?: Partial<PanelCapabilities>;
63
+ routes?: Partial<PanelRoutes>;
64
+ }
65
+ export declare const PANEL_CONFIG_GLOBAL = "__T4H_PANEL__";
66
+ export declare const LOCAL_PANEL_CONFIG: PanelConfig;
67
+ /** A missing value leaves the placeholder, so the reader sees what is missing. */
68
+ export declare function expandRoute(template: string, params: Record<string, string | undefined>): string;
69
+ export declare function normalizeBasePath(basePath?: string): string;
70
+ export declare function resolvePanelConfig(input?: PanelConfigInput): PanelConfig;
71
+ //# sourceMappingURL=panel-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-config.d.ts","sourceRoot":"","sources":["../src/panel-config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAElD,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,+FAA+F;AAC/F,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,UAAU,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,uGAAuG;IACvG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,aAAa,CAAA;IACvB,MAAM,EAAE,WAAW,CAAA;IACnB,GAAG,EAAE,QAAQ,CAAA;IACb,YAAY,EAAE,iBAAiB,CAAA;IAC/B,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;CAC9B;AAED,eAAO,MAAM,mBAAmB,kBAAkB,CAAA;AAElD,eAAO,MAAM,kBAAkB,EAAE,WA+BhC,CAAA;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACzC,MAAM,CAMR;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,SAAK,GAAG,MAAM,CAMvD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,gBAAqB,GAAG,WAAW,CAY5E"}
@@ -0,0 +1,60 @@
1
+ export const PANEL_CONFIG_GLOBAL = '__T4H_PANEL__';
2
+ export const LOCAL_PANEL_CONFIG = {
3
+ title: 'Framework Panel',
4
+ basePath: '',
5
+ apiUrl: '/_dev',
6
+ metadata: {},
7
+ fields: {},
8
+ api: {
9
+ manifest: '/manifest',
10
+ state: '/state',
11
+ runs: '/runs',
12
+ run: '/runs/:run',
13
+ runActivities: '/runs/:run/activities',
14
+ runActivity: '/runs/:run/activities/:activity',
15
+ runActivityPendings: '/runs/:run/activities/:activity/pendings',
16
+ runLogs: '/runs/:run/logs',
17
+ waitingActivities: '/activities/waiting',
18
+ runWorkflow: '/workflows/:workflow/runs',
19
+ advanceActivity: '/activities/:activity/advance',
20
+ events: '/events',
21
+ },
22
+ capabilities: { trigger: true, advance: true, events: true, rebuild: true },
23
+ routes: {
24
+ runs: {
25
+ method: 'POST',
26
+ path: '/projects/:project/workflows/:workflow/runs',
27
+ },
28
+ advance: {
29
+ method: 'PATCH',
30
+ path: '/projects/:project/workflows/:workflow/runs/:run/activities/:activity',
31
+ },
32
+ },
33
+ };
34
+ /** A missing value leaves the placeholder, so the reader sees what is missing. */
35
+ export function expandRoute(template, params) {
36
+ return template.replace(/:(\w+)/g, (match, name) => {
37
+ const value = params[name];
38
+ return value === undefined ? match : encodeURIComponent(value);
39
+ });
40
+ }
41
+ export function normalizeBasePath(basePath = '') {
42
+ const trimmed = basePath.trim().replace(/\/+$/, '');
43
+ if (trimmed === '' || trimmed === '/')
44
+ return '';
45
+ return trimmed.startsWith('/') ? trimmed : `/${trimmed}`;
46
+ }
47
+ export function resolvePanelConfig(input = {}) {
48
+ return {
49
+ title: input.title?.trim() || LOCAL_PANEL_CONFIG.title,
50
+ basePath: normalizeBasePath(input.basePath),
51
+ apiUrl: (input.apiUrl ?? LOCAL_PANEL_CONFIG.apiUrl).replace(/\/+$/, ''),
52
+ project: input.project,
53
+ metadata: { ...input.metadata },
54
+ fields: { ...input.fields },
55
+ api: { ...LOCAL_PANEL_CONFIG.api, ...input.api },
56
+ capabilities: { ...LOCAL_PANEL_CONFIG.capabilities, ...input.capabilities },
57
+ routes: { ...LOCAL_PANEL_CONFIG.routes, ...input.routes },
58
+ };
59
+ }
60
+ //# sourceMappingURL=panel-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel-config.js","sourceRoot":"","sources":["../src/panel-config.ts"],"names":[],"mappings":"AAwEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAA;AAElD,MAAM,CAAC,MAAM,kBAAkB,GAAgB;IAC7C,KAAK,EAAE,iBAAiB;IACxB,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,EAAE;IACV,GAAG,EAAE;QACH,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE,QAAQ;QACf,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,YAAY;QACjB,aAAa,EAAE,uBAAuB;QACtC,WAAW,EAAE,iCAAiC;QAC9C,mBAAmB,EAAE,0CAA0C;QAC/D,OAAO,EAAE,iBAAiB;QAC1B,iBAAiB,EAAE,qBAAqB;QACxC,WAAW,EAAE,2BAA2B;QACxC,eAAe,EAAE,+BAA+B;QAChD,MAAM,EAAE,SAAS;KAClB;IACD,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3E,MAAM,EAAE;QACN,IAAI,EAAE;YACJ,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,6CAA6C;SACpD;QACD,OAAO,EAAE;YACP,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,uEAAuE;SAC9E;KACF;CACF,CAAA;AAED,kFAAkF;AAClF,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,MAA0C;IAE1C,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAE1B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAQ,GAAG,EAAE;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAEnD,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,EAAE,CAAA;IAEhD,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAA0B,EAAE;IAC7D,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,kBAAkB,CAAC,KAAK;QACtD,QAAQ,EAAE,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3C,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACvE,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE;QAC/B,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE;QAC3B,GAAG,EAAE,EAAE,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE;QAChD,YAAY,EAAE,EAAE,GAAG,kBAAkB,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC,YAAY,EAAE;QAC3E,MAAM,EAAE,EAAE,GAAG,kBAAkB,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE;KAC1D,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Plugin } from 'vite';
2
+ import type { PanelConfigInput } from './panel-config.js';
3
+ export interface PanelPluginOptions {
4
+ config?: PanelConfigInput;
5
+ }
6
+ export default function panelPlugin({ config, }?: PanelPluginOptions): Plugin;
7
+ //# sourceMappingURL=vite-panel-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-panel-plugin.d.ts","sourceRoot":"","sources":["../src/vite-panel-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,MAAM,EAAE,MAAM,MAAM,CAAA;AAG3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAW,GACZ,GAAE,kBAAuB,GAAG,MAAM,CAalC"}
@@ -0,0 +1,12 @@
1
+ import { assertPanelBuilt, createPanelHandler } from './node.js';
2
+ export default function panelPlugin({ config = {}, } = {}) {
3
+ return {
4
+ name: 't4h-vite-panel-plugin',
5
+ apply: 'serve',
6
+ configureServer(server) {
7
+ assertPanelBuilt();
8
+ server.middlewares.use(createPanelHandler({ config }));
9
+ },
10
+ };
11
+ }
12
+ //# sourceMappingURL=vite-panel-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-panel-plugin.js","sourceRoot":"","sources":["../src/vite-panel-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAOhE,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,GAAG,EAAE,MACW,EAAE;IACxB,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,OAAO;QAEd,eAAe,CAAC,MAAM;YACpB,gBAAgB,EAAE,CAAA;YAElB,MAAM,CAAC,WAAW,CAAC,GAAG,CACpB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAA+B,CAC7D,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,98 @@
1
+ {
2
+ "name": "@t4h.framework/vite-panel-plugin",
3
+ "version": "0.0.0",
4
+ "description": "Panel UI plugin for T4H Framework",
5
+ "homepage": "https://github.com/tech4humans-brasil/framework/tree/main/packages/vite-panel-plugin",
6
+ "bugs": "https://github.com/tech4humans-brasil/framework/issues",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/tech4humans-brasil/framework.git",
10
+ "directory": "packages/vite-panel-plugin"
11
+ },
12
+ "license": "MIT",
13
+ "author": "Tech4Humans <contact@tech4h.com.br> (https://tech4h.com.br)",
14
+ "type": "module",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "default": "./dist/index.js"
19
+ },
20
+ "./node": {
21
+ "types": "./dist/node.d.ts",
22
+ "default": "./dist/node.js"
23
+ }
24
+ },
25
+ "module": "./dist/index.js",
26
+ "types": "./dist/index.d.ts",
27
+ "files": [
28
+ "dist",
29
+ "LICENSE"
30
+ ],
31
+ "scripts": {
32
+ "dev": "vite dev",
33
+ "build": "vite build && tsc -p tsconfig.build.json",
34
+ "check-types": "tsc --noEmit",
35
+ "lint": "eslint .",
36
+ "test": "vitest --run",
37
+ "test:watch": "vitest",
38
+ "storybook": "storybook dev -p 6006",
39
+ "build-storybook": "storybook build",
40
+ "prepublishOnly": "yarn build"
41
+ },
42
+ "dependencies": {
43
+ "serve-static": "^2.2.1"
44
+ },
45
+ "devDependencies": {
46
+ "@babel/core": "^7",
47
+ "@storybook/addon-docs": "^10.6.0",
48
+ "@storybook/react-vite": "^10.6.0",
49
+ "@t4h.ds/button": "0.0.0-experimental-6dea0ef",
50
+ "@t4h.ds/core": "0.0.0-experimental-80a3706",
51
+ "@t4h.ds/dropdown": "0.0.0-experimental-85da96d",
52
+ "@t4h.ds/icons": "0.0.0-experimental-85da96d",
53
+ "@t4h.ds/outside-press-detector": "0.0.0-experimental-85da96d",
54
+ "@t4h.ds/pressable": "0.0.0-experimental-85da96d",
55
+ "@t4h.ds/reanimated": "0.0.0-experimental-85da96d",
56
+ "@t4h.ds/select": "0.0.0-experimental-85da96d",
57
+ "@t4h.ds/spinner": "0.0.0-experimental-85da96d",
58
+ "@t4h.ds/switch": "0.0.0-experimental-85da96d",
59
+ "@t4h.ds/tag": "0.0.0-experimental-85da96d",
60
+ "@t4h.ds/text-input": "0.0.0-experimental-85da96d",
61
+ "@t4h.ds/theme": "0.0.0-experimental-85da96d",
62
+ "@t4h.ds/vite-plugin": "0.0.0-experimental-ed9e491",
63
+ "@tanstack/react-query": "^5",
64
+ "@testing-library/dom": "^10.4.1",
65
+ "@testing-library/react": "^16.3.3",
66
+ "@testing-library/user-event": "^14.6.7",
67
+ "@types/jsdom": "^30",
68
+ "@types/node": "^25.3.5",
69
+ "@types/react": "^19.2.2",
70
+ "@types/react-dom": "^19.2.2",
71
+ "@types/react-native-web": "^0",
72
+ "@types/serve-static": "^2",
73
+ "jsdom": "^30.0.1",
74
+ "nuqs": "^2",
75
+ "react": "^19.2.4",
76
+ "react-dom": "^19.2.4",
77
+ "react-native-reanimated": "^3.18.0",
78
+ "react-native-svg": "^15.12.1",
79
+ "react-native-web": "patch:react-native-web@npm%3A0.21.2#~/.yarn/patches/react-native-web-npm-0.21.2-ba4fb01a9d.patch",
80
+ "react-router": "^7.13.1",
81
+ "storybook": "^10.6.0",
82
+ "typescript": "^5.9.3",
83
+ "vite": "^8.0.3",
84
+ "vitest": "^4.0.18"
85
+ },
86
+ "packageManager": "yarn@4.12.0",
87
+ "engines": {
88
+ "node": ">=22.13"
89
+ },
90
+ "peerDependencies": {
91
+ "vite": "^8.0.0"
92
+ },
93
+ "peerDependenciesMeta": {
94
+ "vite": {
95
+ "optional": true
96
+ }
97
+ }
98
+ }