@dvina/artifact-renderer 0.0.1

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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Dvina
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,117 @@
1
+ # @dvina/artifact-renderer
2
+
3
+ `@dvina/artifact-renderer` is an iframe-first SDK for embedding the Dvina Artifact Renderer inside your application.
4
+
5
+ It is designed for products that need to preview user uploads, generated artifacts, and private documents without rendering untrusted content directly inside the host app DOM.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install @dvina/artifact-renderer
11
+ ```
12
+
13
+ ## Important
14
+
15
+ This package is the host-side SDK. You also need to deploy the self-hosted viewer app from the repository to a dedicated origin such as `https://viewer.example.com/`.
16
+
17
+ ## Quick Start
18
+
19
+ ```ts
20
+ import { createViewer, type ViewerDocument } from "@dvina/artifact-renderer";
21
+
22
+ const container = document.querySelector("#viewer-slot");
23
+
24
+ if (!(container instanceof HTMLElement)) {
25
+ throw new Error("Viewer container not found.");
26
+ }
27
+
28
+ const documentToPreview: ViewerDocument = {
29
+ id: "artifact-123",
30
+ name: "analysis.pdf",
31
+ format: "pdf",
32
+ source: {
33
+ kind: "url",
34
+ url: "https://cdn.example.com/previews/analysis.pdf",
35
+ },
36
+ previewUrl: "https://cdn.example.com/previews/analysis.pdf",
37
+ };
38
+
39
+ createViewer({
40
+ container,
41
+ viewerUrl: "https://viewer.example.com/",
42
+ allowedOrigin: "https://viewer.example.com",
43
+ document: documentToPreview,
44
+ });
45
+ ```
46
+
47
+ ## Private Files
48
+
49
+ For private files, use a session-backed document and provide `getSession()`.
50
+
51
+ ```ts
52
+ createViewer({
53
+ container,
54
+ viewerUrl: "https://viewer.example.com/",
55
+ allowedOrigin: "https://viewer.example.com",
56
+ document: {
57
+ id: "private-doc-7",
58
+ name: "board-packet.docx",
59
+ format: "docx",
60
+ source: {
61
+ kind: "session",
62
+ sessionId: "board-packet-session",
63
+ },
64
+ previewUrl: "https://api.example.com/viewer/files/private-doc-7/preview",
65
+ downloadUrl: "https://api.example.com/viewer/files/private-doc-7/download",
66
+ },
67
+ getSession: async () => {
68
+ const response = await fetch("https://api.example.com/viewer/sessions", {
69
+ method: "POST",
70
+ headers: {
71
+ "Content-Type": "application/json",
72
+ },
73
+ body: JSON.stringify({
74
+ documentId: "private-doc-7",
75
+ scope: "artifacts:read",
76
+ }),
77
+ credentials: "include",
78
+ });
79
+
80
+ if (!response.ok) {
81
+ throw new Error("Failed to create viewer session.");
82
+ }
83
+
84
+ return response.json();
85
+ },
86
+ });
87
+ ```
88
+
89
+ ## Main API
90
+
91
+ - `createViewer(options)`
92
+ - `controller.loadDocument(document, options?)`
93
+ - `controller.goToPage(page)`
94
+ - `controller.sendArtifactData(data, options?)`
95
+ - `controller.destroy()`
96
+ - `controller.getDiagnostics()`
97
+
98
+ ## Runtime Notes
99
+
100
+ - browser-only package
101
+ - exact `allowedOrigin` is required
102
+ - private files should use short-lived bearer-token sessions
103
+
104
+ ## Related Packages
105
+
106
+ - `@dvina/artifact-renderer-core`
107
+ - `@dvina/artifact-renderer-protocol`
108
+
109
+ ## Documentation
110
+
111
+ See the repository documentation for:
112
+
113
+ - React integration
114
+ - Angular 20+ integration
115
+ - NestJS backend integration
116
+ - viewer deployment
117
+ - release checklist
@@ -0,0 +1,53 @@
1
+ import type { ViewerDocument, ViewerJsonValue, ViewerTelemetryRecord, ViewerTheme } from "@dvina/artifact-renderer-core";
2
+ import { createViewerMessage, isViewerChildEvent, isViewerResponse, VIEWER_CHANNEL, VIEWER_PROTOCOL_VERSION, type ViewerChildEvent, type ViewerHostContext, type ViewerSession } from "@dvina/artifact-renderer-protocol";
3
+ export * from "@dvina/artifact-renderer-core";
4
+ export { VIEWER_CHANNEL, VIEWER_PROTOCOL_VERSION, createViewerMessage, isViewerChildEvent, isViewerResponse, };
5
+ export type { ViewerAckResponse, ViewerChildEvent, ViewerGoToPageCommand, ViewerHostContext, ViewerInitCommand, ViewerLoadDocumentCommand, ViewerSendArtifactDataCommand, ViewerSession, ViewerTelemetryEvent, } from "@dvina/artifact-renderer-protocol";
6
+ export type ViewerEmbedState = "mounting" | "waiting-for-ready" | "initializing" | "ready" | "error" | "destroyed";
7
+ export interface ViewerEmbedTimeouts {
8
+ readyMs: number;
9
+ initAckMs: number;
10
+ documentLoadMs: number;
11
+ }
12
+ export interface ViewerSdkError {
13
+ code: "ready-timeout" | "init-ack-timeout" | "document-load-timeout" | "message-rejected" | "origin-mismatch" | "iframe-unavailable" | "session-expired";
14
+ message: string;
15
+ }
16
+ export interface ViewerDiagnosticRecord {
17
+ at: number;
18
+ type: "event" | "telemetry" | "sdk-error";
19
+ name: string;
20
+ detail: string;
21
+ context?: Record<string, string | number | boolean | null>;
22
+ }
23
+ export interface CreateViewerOptions {
24
+ container: HTMLElement;
25
+ viewerUrl: string;
26
+ allowedOrigin: string;
27
+ document: ViewerDocument;
28
+ getSession?: () => Promise<ViewerSession | undefined> | ViewerSession | undefined;
29
+ theme?: ViewerTheme;
30
+ height?: number | string;
31
+ iframeTitle?: string;
32
+ host?: Partial<ViewerHostContext>;
33
+ onEvent?: (event: ViewerChildEvent) => void;
34
+ onTelemetry?: (telemetry: ViewerTelemetryRecord) => void;
35
+ onError?: (error: ViewerSdkError) => void;
36
+ timeouts?: Partial<ViewerEmbedTimeouts>;
37
+ }
38
+ export interface ViewerController {
39
+ destroy(): void;
40
+ loadDocument(document: ViewerDocument, options?: {
41
+ theme?: ViewerTheme;
42
+ }): Promise<void>;
43
+ goToPage(page: number): void;
44
+ sendArtifactData(data: ViewerJsonValue, options?: {
45
+ documentId?: string;
46
+ }): void;
47
+ getState(): ViewerEmbedState;
48
+ getIframe(): HTMLIFrameElement;
49
+ getDiagnostics(): readonly ViewerDiagnosticRecord[];
50
+ }
51
+ export declare const DEFAULT_VIEWER_TIMEOUTS: ViewerEmbedTimeouts;
52
+ export declare function createViewer(options: CreateViewerOptions): ViewerController;
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,351 @@
1
+ import { createViewerMessage, isViewerChildEvent, isViewerResponse, VIEWER_CHANNEL, VIEWER_PROTOCOL_VERSION, } from "@dvina/artifact-renderer-protocol";
2
+ export * from "@dvina/artifact-renderer-core";
3
+ export { VIEWER_CHANNEL, VIEWER_PROTOCOL_VERSION, createViewerMessage, isViewerChildEvent, isViewerResponse, };
4
+ export const DEFAULT_VIEWER_TIMEOUTS = {
5
+ readyMs: 5000,
6
+ initAckMs: 5000,
7
+ documentLoadMs: 30000,
8
+ };
9
+ function createInstanceId() {
10
+ if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
11
+ return crypto.randomUUID();
12
+ }
13
+ return `viewer-instance-${Math.random().toString(36).slice(2, 10)}`;
14
+ }
15
+ function createHostContext(host) {
16
+ const locationOrigin = typeof window === "undefined" ? "unknown" : window.location.origin;
17
+ return {
18
+ name: host?.name ?? "unknown-host",
19
+ origin: host?.origin ?? locationOrigin,
20
+ sdkVersion: host?.sdkVersion ?? "0.1.0",
21
+ };
22
+ }
23
+ function setIframeHeight(iframe, height) {
24
+ iframe.style.height =
25
+ typeof height === "number" ? `${height}px` : (height ?? "100%");
26
+ }
27
+ function isSessionExpired(session) {
28
+ if (!session) {
29
+ return false;
30
+ }
31
+ return Number.isNaN(Date.parse(session.expiresAt)) || Date.parse(session.expiresAt) <= Date.now();
32
+ }
33
+ export function createViewer(options) {
34
+ if (typeof window === "undefined" || typeof document === "undefined") {
35
+ throw new Error("@dvina/artifact-renderer is browser-only and must run in a DOM environment.");
36
+ }
37
+ const instanceId = createInstanceId();
38
+ const hostContext = createHostContext(options.host);
39
+ const viewerUrl = new URL(options.viewerUrl, window.location.href);
40
+ const iframe = document.createElement("iframe");
41
+ const timeouts = {
42
+ ...DEFAULT_VIEWER_TIMEOUTS,
43
+ ...options.timeouts,
44
+ };
45
+ viewerUrl.searchParams.set("instanceId", instanceId);
46
+ viewerUrl.searchParams.set("parentOrigin", hostContext.origin);
47
+ iframe.src = viewerUrl.toString();
48
+ iframe.title = options.iframeTitle ?? "Dvina Artifact Renderer";
49
+ iframe.style.display = "block";
50
+ iframe.style.width = "100%";
51
+ iframe.style.border = "0";
52
+ iframe.style.background = "transparent";
53
+ iframe.setAttribute("sandbox", "allow-downloads allow-same-origin allow-scripts");
54
+ setIframeHeight(iframe, options.height);
55
+ let state = "mounting";
56
+ let isDestroyed = false;
57
+ let readyTimer = 0;
58
+ let initAckTimer = 0;
59
+ let documentLoadTimer = 0;
60
+ let pendingRequestId = null;
61
+ let currentTheme = options.theme;
62
+ let currentDocument = options.document;
63
+ const diagnostics = [];
64
+ if (options.allowedOrigin === "*") {
65
+ throw new Error("createViewer requires an explicit allowed origin.");
66
+ }
67
+ function pushDiagnostic(record) {
68
+ diagnostics.unshift(record);
69
+ if (diagnostics.length > 50) {
70
+ diagnostics.length = 50;
71
+ }
72
+ }
73
+ function emitSdkError(error) {
74
+ state = "error";
75
+ pushDiagnostic({
76
+ at: Date.now(),
77
+ type: "sdk-error",
78
+ name: error.code,
79
+ detail: error.message,
80
+ });
81
+ options.onError?.(error);
82
+ }
83
+ function emitTelemetry(event) {
84
+ pushDiagnostic({
85
+ at: Date.now(),
86
+ type: "telemetry",
87
+ name: event.payload.name,
88
+ detail: event.payload.message,
89
+ context: event.payload.context,
90
+ });
91
+ options.onTelemetry?.({
92
+ name: event.payload.name,
93
+ level: event.payload.level,
94
+ message: event.payload.message,
95
+ context: event.payload.context,
96
+ });
97
+ }
98
+ function clearTimer(timerId) {
99
+ if (timerId !== 0) {
100
+ window.clearTimeout(timerId);
101
+ }
102
+ }
103
+ function clearTimers() {
104
+ clearTimer(readyTimer);
105
+ clearTimer(initAckTimer);
106
+ clearTimer(documentLoadTimer);
107
+ readyTimer = 0;
108
+ initAckTimer = 0;
109
+ documentLoadTimer = 0;
110
+ }
111
+ function scheduleDocumentLoadTimeout() {
112
+ clearTimer(documentLoadTimer);
113
+ documentLoadTimer = window.setTimeout(() => {
114
+ emitSdkError({
115
+ code: "document-load-timeout",
116
+ message: "Viewer did not finish loading the document in time.",
117
+ });
118
+ }, timeouts.documentLoadMs);
119
+ }
120
+ function postCommand(command) {
121
+ if (!iframe.contentWindow) {
122
+ emitSdkError({
123
+ code: "iframe-unavailable",
124
+ message: "Viewer iframe is not available yet.",
125
+ });
126
+ return;
127
+ }
128
+ pendingRequestId = command.messageId;
129
+ iframe.contentWindow.postMessage(command, options.allowedOrigin);
130
+ }
131
+ function postTransientCommand(command) {
132
+ if (!iframe.contentWindow) {
133
+ emitSdkError({
134
+ code: "iframe-unavailable",
135
+ message: "Viewer iframe is not available yet.",
136
+ });
137
+ return;
138
+ }
139
+ iframe.contentWindow.postMessage(command, options.allowedOrigin);
140
+ }
141
+ async function initializeDocument(documentToLoad) {
142
+ if (isDestroyed) {
143
+ return;
144
+ }
145
+ state = "initializing";
146
+ currentDocument = documentToLoad;
147
+ const session = await options.getSession?.();
148
+ if (isSessionExpired(session)) {
149
+ emitSdkError({
150
+ code: "session-expired",
151
+ message: "Viewer session is missing or already expired.",
152
+ });
153
+ return;
154
+ }
155
+ const initMessage = createViewerMessage({
156
+ instanceId,
157
+ type: "viewer.init",
158
+ payload: {
159
+ document: documentToLoad,
160
+ theme: currentTheme,
161
+ session,
162
+ host: hostContext,
163
+ },
164
+ });
165
+ postCommand(initMessage);
166
+ clearTimer(initAckTimer);
167
+ initAckTimer = window.setTimeout(() => {
168
+ emitSdkError({
169
+ code: "init-ack-timeout",
170
+ message: "Viewer did not acknowledge initialization in time.",
171
+ });
172
+ }, timeouts.initAckMs);
173
+ scheduleDocumentLoadTimeout();
174
+ }
175
+ async function sendLoadDocument(documentToLoad, loadOptions) {
176
+ if (isDestroyed) {
177
+ return;
178
+ }
179
+ if (loadOptions?.theme) {
180
+ currentTheme = loadOptions.theme;
181
+ }
182
+ currentDocument = documentToLoad;
183
+ const session = await options.getSession?.();
184
+ if (isSessionExpired(session)) {
185
+ emitSdkError({
186
+ code: "session-expired",
187
+ message: "Viewer session is missing or already expired.",
188
+ });
189
+ return;
190
+ }
191
+ const loadMessage = createViewerMessage({
192
+ instanceId,
193
+ type: "viewer.load-document",
194
+ payload: {
195
+ document: documentToLoad,
196
+ theme: currentTheme,
197
+ session,
198
+ },
199
+ });
200
+ postCommand(loadMessage);
201
+ scheduleDocumentLoadTimeout();
202
+ }
203
+ function handleAck(response) {
204
+ if (response.requestId !== pendingRequestId) {
205
+ return;
206
+ }
207
+ clearTimer(initAckTimer);
208
+ if (response.payload.status === "rejected") {
209
+ emitSdkError({
210
+ code: "message-rejected",
211
+ message: response.payload.reason ?? "Viewer rejected the command.",
212
+ });
213
+ }
214
+ }
215
+ function handleEvent(event) {
216
+ pushDiagnostic({
217
+ at: Date.now(),
218
+ type: "event",
219
+ name: event.type,
220
+ detail: JSON.stringify(event.payload),
221
+ });
222
+ options.onEvent?.(event);
223
+ switch (event.type) {
224
+ case "viewer.ready": {
225
+ clearTimer(readyTimer);
226
+ void initializeDocument(options.document);
227
+ break;
228
+ }
229
+ case "viewer.resize": {
230
+ if (options.height === undefined) {
231
+ const boundedHeight = Math.min(Math.max(event.payload.height, 480), 960);
232
+ iframe.style.height = `${boundedHeight}px`;
233
+ }
234
+ break;
235
+ }
236
+ case "viewer.telemetry": {
237
+ emitTelemetry(event);
238
+ break;
239
+ }
240
+ case "viewer.document-loaded": {
241
+ clearTimer(documentLoadTimer);
242
+ state = "ready";
243
+ break;
244
+ }
245
+ case "viewer.error": {
246
+ clearTimer(documentLoadTimer);
247
+ emitSdkError({
248
+ code: "message-rejected",
249
+ message: event.payload.message,
250
+ });
251
+ break;
252
+ }
253
+ case "viewer.unsupported": {
254
+ clearTimer(documentLoadTimer);
255
+ state = "ready";
256
+ break;
257
+ }
258
+ default:
259
+ break;
260
+ }
261
+ }
262
+ function handleMessage(messageEvent) {
263
+ if (isDestroyed || messageEvent.source !== iframe.contentWindow) {
264
+ return;
265
+ }
266
+ if (messageEvent.origin !== options.allowedOrigin) {
267
+ emitSdkError({
268
+ code: "origin-mismatch",
269
+ message: `Unexpected viewer origin: ${messageEvent.origin}`,
270
+ });
271
+ return;
272
+ }
273
+ if (isViewerChildEvent(messageEvent.data)) {
274
+ const childEvent = messageEvent.data;
275
+ if (childEvent.instanceId !== instanceId) {
276
+ return;
277
+ }
278
+ handleEvent(childEvent);
279
+ return;
280
+ }
281
+ if (isViewerResponse(messageEvent.data)) {
282
+ const response = messageEvent.data;
283
+ if (response.instanceId !== instanceId) {
284
+ return;
285
+ }
286
+ handleAck(response);
287
+ }
288
+ }
289
+ window.addEventListener("message", handleMessage);
290
+ options.container.appendChild(iframe);
291
+ state = "waiting-for-ready";
292
+ readyTimer = window.setTimeout(() => {
293
+ emitSdkError({
294
+ code: "ready-timeout",
295
+ message: "Viewer did not announce readiness in time.",
296
+ });
297
+ }, timeouts.readyMs);
298
+ return {
299
+ destroy() {
300
+ if (isDestroyed) {
301
+ return;
302
+ }
303
+ isDestroyed = true;
304
+ state = "destroyed";
305
+ clearTimers();
306
+ window.removeEventListener("message", handleMessage);
307
+ iframe.remove();
308
+ },
309
+ async loadDocument(documentToLoad, loadOptions) {
310
+ state = "initializing";
311
+ clearTimer(initAckTimer);
312
+ initAckTimer = window.setTimeout(() => {
313
+ emitSdkError({
314
+ code: "init-ack-timeout",
315
+ message: "Viewer did not acknowledge document loading in time.",
316
+ });
317
+ }, timeouts.initAckMs);
318
+ await sendLoadDocument(documentToLoad, loadOptions);
319
+ },
320
+ goToPage(page) {
321
+ const nextPage = Math.max(1, Math.floor(page));
322
+ postTransientCommand(createViewerMessage({
323
+ instanceId,
324
+ type: "viewer.go-to-page",
325
+ payload: {
326
+ page: nextPage,
327
+ },
328
+ }));
329
+ },
330
+ sendArtifactData(data, sendOptions) {
331
+ postTransientCommand(createViewerMessage({
332
+ instanceId,
333
+ type: "viewer.send-artifact-data",
334
+ payload: {
335
+ documentId: sendOptions?.documentId ?? currentDocument.id,
336
+ data,
337
+ },
338
+ }));
339
+ },
340
+ getState() {
341
+ return state;
342
+ },
343
+ getIframe() {
344
+ return iframe;
345
+ },
346
+ getDiagnostics() {
347
+ return diagnostics;
348
+ },
349
+ };
350
+ }
351
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@dvina/artifact-renderer",
3
+ "version": "0.0.1",
4
+ "description": "Framework-agnostic SDK for embedding the Dvina Artifact Renderer in an iframe.",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "README.md",
11
+ "LICENSE"
12
+ ],
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js",
17
+ "default": "./dist/index.js"
18
+ }
19
+ },
20
+ "dependencies": {
21
+ "@dvina/artifact-renderer-protocol": "0.0.1",
22
+ "@dvina/artifact-renderer-core": "0.0.1"
23
+ },
24
+ "license": "MIT",
25
+ "sideEffects": false,
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git+https://github.com/dvina/artifact-renderer.git",
29
+ "directory": "packages/embed-sdk"
30
+ },
31
+ "homepage": "https://github.com/dvina/artifact-renderer#readme",
32
+ "bugs": {
33
+ "url": "https://github.com/dvina/artifact-renderer/issues"
34
+ },
35
+ "keywords": [
36
+ "dvina",
37
+ "artifact-renderer",
38
+ "iframe",
39
+ "viewer",
40
+ "sdk",
41
+ "ai"
42
+ ],
43
+ "engines": {
44
+ "node": ">=20"
45
+ },
46
+ "publishConfig": {
47
+ "access": "public"
48
+ },
49
+ "scripts": {
50
+ "build": "tsc -p tsconfig.json",
51
+ "check": "tsc -p tsconfig.json --noEmit",
52
+ "test": "vitest run --config vitest.config.ts src/index.test.ts"
53
+ }
54
+ }