@dvina/artifact-renderer-protocol 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,7 @@
1
+ # @dvina/artifact-renderer-protocol
2
+
3
+ Advanced protocol types and runtime guards for the Dvina Artifact Renderer.
4
+
5
+ Most users should install `@dvina/artifact-renderer` instead of this package directly.
6
+
7
+ Use this package when you need direct access to the versioned viewer message contracts.
@@ -0,0 +1,137 @@
1
+ import type { ViewerCapability, ViewerDocument, ViewerErrorCode, ViewerFallbackAction, ViewerFormat, ViewerJsonValue, ViewerTelemetryLevel, ViewerTheme, ViewerUnsupportedReason } from "@dvina/artifact-renderer-core";
2
+ export declare const VIEWER_CHANNEL = "dvina-artifact-renderer";
3
+ export declare const VIEWER_PROTOCOL_VERSION = "1.0";
4
+ export type ViewerChannel = typeof VIEWER_CHANNEL;
5
+ export type ViewerProtocolVersion = typeof VIEWER_PROTOCOL_VERSION;
6
+ export type ViewerCommandType = "viewer.init" | "viewer.load-document" | "viewer.go-to-page" | "viewer.send-artifact-data";
7
+ export type ViewerEventType = "viewer.ready" | "viewer.document-loaded" | "viewer.page-changed" | "viewer.slide-changed" | "viewer.artifact-event" | "viewer.resize" | "viewer.telemetry" | "viewer.error" | "viewer.unsupported";
8
+ export type ViewerResponseType = "viewer.ack";
9
+ export type ViewerMessageType = ViewerCommandType | ViewerEventType | ViewerResponseType;
10
+ export interface ViewerSession {
11
+ token: string;
12
+ expiresAt: string;
13
+ scopes: string[];
14
+ }
15
+ export interface ViewerHostContext {
16
+ name: string;
17
+ origin: string;
18
+ sdkVersion: string;
19
+ }
20
+ export interface ViewerReadyPayload {
21
+ viewerVersion: string;
22
+ supportedProtocolVersions: ViewerProtocolVersion[];
23
+ capabilities: ViewerCapability[];
24
+ }
25
+ export interface ViewerInitPayload {
26
+ document: ViewerDocument;
27
+ theme?: ViewerTheme;
28
+ session?: ViewerSession;
29
+ host: ViewerHostContext;
30
+ }
31
+ export interface ViewerLoadDocumentPayload {
32
+ document: ViewerDocument;
33
+ theme?: ViewerTheme;
34
+ session?: ViewerSession;
35
+ }
36
+ export interface ViewerGoToPagePayload {
37
+ page: number;
38
+ }
39
+ export interface ViewerSendArtifactDataPayload {
40
+ documentId?: string;
41
+ data: ViewerJsonValue;
42
+ }
43
+ export interface ViewerDocumentLoadedPayload {
44
+ documentId: string;
45
+ format: ViewerFormat;
46
+ title: string;
47
+ pageCount?: number;
48
+ slideCount?: number;
49
+ }
50
+ export interface ViewerPageChangedPayload {
51
+ page: number;
52
+ pageCount?: number;
53
+ }
54
+ export interface ViewerSlideChangedPayload {
55
+ slide: number;
56
+ slideCount?: number;
57
+ }
58
+ export interface ViewerArtifactEventPayload {
59
+ documentId: string;
60
+ name: string;
61
+ detail?: ViewerJsonValue;
62
+ }
63
+ export interface ViewerResizePayload {
64
+ height: number;
65
+ reason: "content" | "viewport" | "renderer";
66
+ }
67
+ export interface ViewerTelemetryPayload {
68
+ name: string;
69
+ level: ViewerTelemetryLevel;
70
+ message: string;
71
+ context?: Record<string, string | number | boolean | null>;
72
+ }
73
+ export interface ViewerUnsupportedPayload {
74
+ documentId: string;
75
+ reason: ViewerUnsupportedReason;
76
+ message: string;
77
+ fallback: ViewerFallbackAction;
78
+ }
79
+ export interface ViewerErrorPayload {
80
+ documentId?: string;
81
+ code: ViewerErrorCode;
82
+ message: string;
83
+ recoverable: boolean;
84
+ fallback?: ViewerFallbackAction;
85
+ }
86
+ export interface ViewerAckPayload {
87
+ status: "accepted" | "rejected";
88
+ reason?: string;
89
+ }
90
+ export interface ViewerMessageBase<TType extends ViewerMessageType, TPayload> {
91
+ channel: ViewerChannel;
92
+ version: ViewerProtocolVersion;
93
+ instanceId: string;
94
+ messageId: string;
95
+ type: TType;
96
+ timestamp: number;
97
+ payload: TPayload;
98
+ }
99
+ export interface ViewerCommandMessage<TType extends ViewerCommandType, TPayload> extends ViewerMessageBase<TType, TPayload> {
100
+ requestId?: never;
101
+ }
102
+ export interface ViewerEventMessage<TType extends ViewerEventType, TPayload> extends ViewerMessageBase<TType, TPayload> {
103
+ requestId?: never;
104
+ }
105
+ export interface ViewerResponseMessage<TType extends ViewerResponseType, TPayload> extends ViewerMessageBase<TType, TPayload> {
106
+ requestId: string;
107
+ }
108
+ export type ViewerInitCommand = ViewerCommandMessage<"viewer.init", ViewerInitPayload>;
109
+ export type ViewerLoadDocumentCommand = ViewerCommandMessage<"viewer.load-document", ViewerLoadDocumentPayload>;
110
+ export type ViewerGoToPageCommand = ViewerCommandMessage<"viewer.go-to-page", ViewerGoToPagePayload>;
111
+ export type ViewerSendArtifactDataCommand = ViewerCommandMessage<"viewer.send-artifact-data", ViewerSendArtifactDataPayload>;
112
+ export type ViewerReadyEvent = ViewerEventMessage<"viewer.ready", ViewerReadyPayload>;
113
+ export type ViewerDocumentLoadedEvent = ViewerEventMessage<"viewer.document-loaded", ViewerDocumentLoadedPayload>;
114
+ export type ViewerPageChangedEvent = ViewerEventMessage<"viewer.page-changed", ViewerPageChangedPayload>;
115
+ export type ViewerSlideChangedEvent = ViewerEventMessage<"viewer.slide-changed", ViewerSlideChangedPayload>;
116
+ export type ViewerArtifactEvent = ViewerEventMessage<"viewer.artifact-event", ViewerArtifactEventPayload>;
117
+ export type ViewerResizeEvent = ViewerEventMessage<"viewer.resize", ViewerResizePayload>;
118
+ export type ViewerTelemetryEvent = ViewerEventMessage<"viewer.telemetry", ViewerTelemetryPayload>;
119
+ export type ViewerUnsupportedEvent = ViewerEventMessage<"viewer.unsupported", ViewerUnsupportedPayload>;
120
+ export type ViewerErrorEvent = ViewerEventMessage<"viewer.error", ViewerErrorPayload>;
121
+ export type ViewerAckResponse = ViewerResponseMessage<"viewer.ack", ViewerAckPayload>;
122
+ export type ViewerParentCommand = ViewerInitCommand | ViewerLoadDocumentCommand | ViewerGoToPageCommand | ViewerSendArtifactDataCommand;
123
+ export type ViewerChildEvent = ViewerReadyEvent | ViewerDocumentLoadedEvent | ViewerPageChangedEvent | ViewerSlideChangedEvent | ViewerArtifactEvent | ViewerResizeEvent | ViewerTelemetryEvent | ViewerUnsupportedEvent | ViewerErrorEvent;
124
+ export type ViewerResponse = ViewerAckResponse;
125
+ export type ViewerMessage = ViewerParentCommand | ViewerChildEvent | ViewerResponse;
126
+ export declare function isViewerCommandType(value: unknown): value is ViewerCommandType;
127
+ export declare function isViewerEventType(value: unknown): value is ViewerEventType;
128
+ export declare function isViewerResponseType(value: unknown): value is ViewerResponseType;
129
+ export declare function isViewerMessageType(value: unknown): value is ViewerMessageType;
130
+ export declare function isViewerEnvelope(value: unknown): value is ViewerMessageBase<ViewerMessageType, unknown>;
131
+ export declare function isViewerMessage(value: unknown): value is ViewerMessage;
132
+ export declare function isViewerParentCommand(value: unknown): value is ViewerParentCommand;
133
+ export declare function isViewerChildEvent(value: unknown): value is ViewerChildEvent;
134
+ export declare function isViewerResponse(value: unknown): value is ViewerResponse;
135
+ export declare function assertViewerMessage(value: unknown): asserts value is ViewerMessage;
136
+ export declare function createViewerMessage<TMessage extends ViewerMessage>(message: Omit<TMessage, "channel" | "version" | "messageId" | "timestamp"> & Partial<Pick<TMessage, "messageId" | "timestamp">>): TMessage;
137
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,cAAc,4BAA4B,CAAC;AACxD,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAE7C,MAAM,MAAM,aAAa,GAAG,OAAO,cAAc,CAAC;AAClD,MAAM,MAAM,qBAAqB,GAAG,OAAO,uBAAuB,CAAC;AAEnE,MAAM,MAAM,iBAAiB,GACzB,aAAa,GACb,sBAAsB,GACtB,mBAAmB,GACnB,2BAA2B,CAAC;AAEhC,MAAM,MAAM,eAAe,GACvB,cAAc,GACd,wBAAwB,GACxB,qBAAqB,GACrB,sBAAsB,GACtB,uBAAuB,GACvB,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,oBAAoB,CAAC;AAEzB,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;AAE9C,MAAM,MAAM,iBAAiB,GACzB,iBAAiB,GACjB,eAAe,GACf,kBAAkB,CAAC;AAEvB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,yBAAyB,EAAE,qBAAqB,EAAE,CAAC;IACnD,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;CAC7C;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,oBAAoB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;CAC5D;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,uBAAuB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB,CAChC,KAAK,SAAS,iBAAiB,EAC/B,QAAQ;IAER,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB,CACnC,KAAK,SAAS,iBAAiB,EAC/B,QAAQ,CACR,SAAQ,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC1C,SAAS,CAAC,EAAE,KAAK,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB,CACjC,KAAK,SAAS,eAAe,EAC7B,QAAQ,CACR,SAAQ,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC1C,SAAS,CAAC,EAAE,KAAK,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB,CACpC,KAAK,SAAS,kBAAkB,EAChC,QAAQ,CACR,SAAQ,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,oBAAoB,CAClD,aAAa,EACb,iBAAiB,CAClB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,oBAAoB,CAC1D,sBAAsB,EACtB,yBAAyB,CAC1B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,CACtD,mBAAmB,EACnB,qBAAqB,CACtB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,oBAAoB,CAC9D,2BAA2B,EAC3B,6BAA6B,CAC9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAC/C,cAAc,EACd,kBAAkB,CACnB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,CACxD,wBAAwB,EACxB,2BAA2B,CAC5B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CACrD,qBAAqB,EACrB,wBAAwB,CACzB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,kBAAkB,CACtD,sBAAsB,EACtB,yBAAyB,CAC1B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,CAClD,uBAAuB,EACvB,0BAA0B,CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,CAChD,eAAe,EACf,mBAAmB,CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CACnD,kBAAkB,EAClB,sBAAsB,CACvB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CACrD,oBAAoB,EACpB,wBAAwB,CACzB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAC/C,cAAc,EACd,kBAAkB,CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,CACnD,YAAY,EACZ,gBAAgB,CACjB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,iBAAiB,GACjB,yBAAyB,GACzB,qBAAqB,GACrB,6BAA6B,CAAC;AAElC,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,yBAAyB,GACzB,sBAAsB,GACtB,uBAAuB,GACvB,mBAAmB,GACnB,iBAAiB,GACjB,oBAAoB,GACpB,sBAAsB,GACtB,gBAAgB,CAAC;AAErB,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAE/C,MAAM,MAAM,aAAa,GACrB,mBAAmB,GACnB,gBAAgB,GAChB,cAAc,CAAC;AA0YnB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAE9E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAEhF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAM9E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAWvG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CActE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAElF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAIlF;AAUD,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,aAAa,EAChE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,CAAC,GACxE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,GACnD,QAAQ,CAQV"}
package/dist/index.js ADDED
@@ -0,0 +1,357 @@
1
+ export const VIEWER_CHANNEL = "dvina-artifact-renderer";
2
+ export const VIEWER_PROTOCOL_VERSION = "1.0";
3
+ const commandTypes = new Set([
4
+ "viewer.init",
5
+ "viewer.load-document",
6
+ "viewer.go-to-page",
7
+ "viewer.send-artifact-data",
8
+ ]);
9
+ const eventTypes = new Set([
10
+ "viewer.ready",
11
+ "viewer.document-loaded",
12
+ "viewer.page-changed",
13
+ "viewer.slide-changed",
14
+ "viewer.artifact-event",
15
+ "viewer.resize",
16
+ "viewer.telemetry",
17
+ "viewer.error",
18
+ "viewer.unsupported",
19
+ ]);
20
+ const responseTypes = new Set(["viewer.ack"]);
21
+ function isRecord(value) {
22
+ return typeof value === "object" && value !== null;
23
+ }
24
+ function isNonEmptyString(value) {
25
+ return typeof value === "string" && value.length > 0;
26
+ }
27
+ function isStringArray(value) {
28
+ return Array.isArray(value) && value.every(isNonEmptyString);
29
+ }
30
+ function isViewerCapability(value) {
31
+ return (value === "load-document" ||
32
+ value === "pagination" ||
33
+ value === "slide-navigation" ||
34
+ value === "download" ||
35
+ value === "open-externally" ||
36
+ value === "resize-notifications" ||
37
+ value === "artifact-runtime");
38
+ }
39
+ function isHtmlSandboxCapability(value) {
40
+ return (value === "allow-downloads" ||
41
+ value === "allow-forms" ||
42
+ value === "allow-modals" ||
43
+ value === "allow-pointer-lock" ||
44
+ value === "allow-popups" ||
45
+ value === "allow-popups-to-escape-sandbox" ||
46
+ value === "allow-same-origin" ||
47
+ value === "allow-scripts" ||
48
+ value === "allow-top-navigation-by-user-activation");
49
+ }
50
+ function isViewerFormat(value) {
51
+ return (value === "pdf" ||
52
+ value === "docx" ||
53
+ value === "xls" ||
54
+ value === "xlsx" ||
55
+ value === "csv" ||
56
+ value === "pptx" ||
57
+ value === "audio" ||
58
+ value === "image" ||
59
+ value === "video" ||
60
+ value === "zip" ||
61
+ value === "epub" ||
62
+ value === "text" ||
63
+ value === "code" ||
64
+ value === "html" ||
65
+ value === "markdown" ||
66
+ value === "mermaid" ||
67
+ value === "json" ||
68
+ value === "jsonl" ||
69
+ value === "ndjson" ||
70
+ value === "tsv" ||
71
+ value === "xml" ||
72
+ value === "toml" ||
73
+ value === "ini" ||
74
+ value === "dotenv" ||
75
+ value === "yaml" ||
76
+ value === "unknown");
77
+ }
78
+ function isViewerJsonValue(value) {
79
+ if (value === null ||
80
+ typeof value === "string" ||
81
+ typeof value === "boolean") {
82
+ return true;
83
+ }
84
+ if (typeof value === "number") {
85
+ return Number.isFinite(value);
86
+ }
87
+ if (Array.isArray(value)) {
88
+ return value.every(isViewerJsonValue);
89
+ }
90
+ if (!isRecord(value)) {
91
+ return false;
92
+ }
93
+ return Object.values(value).every(isViewerJsonValue);
94
+ }
95
+ function isViewerTheme(value) {
96
+ if (!isRecord(value)) {
97
+ return false;
98
+ }
99
+ if (value.mode !== "light" && value.mode !== "dark") {
100
+ return false;
101
+ }
102
+ if (value.tokens === undefined) {
103
+ return true;
104
+ }
105
+ if (!isRecord(value.tokens)) {
106
+ return false;
107
+ }
108
+ return Object.values(value.tokens).every((tokenValue) => tokenValue === undefined || typeof tokenValue === "string");
109
+ }
110
+ function isViewerDocument(value) {
111
+ if (!isRecord(value)) {
112
+ return false;
113
+ }
114
+ const source = value.source;
115
+ if (!isRecord(source)) {
116
+ return false;
117
+ }
118
+ const sourceIsValid = (source.kind === "url" && isNonEmptyString(source.url)) ||
119
+ (source.kind === "session" && isNonEmptyString(source.sessionId));
120
+ const renderOptions = value.renderOptions;
121
+ const renderOptionsAreValid = renderOptions === undefined ||
122
+ (isRecord(renderOptions) &&
123
+ (renderOptions.spreadsheetMode === undefined ||
124
+ renderOptions.spreadsheetMode === "fast" ||
125
+ renderOptions.spreadsheetMode === "styled") &&
126
+ (renderOptions.codeLanguage === undefined || isNonEmptyString(renderOptions.codeLanguage)) &&
127
+ (renderOptions.html === undefined ||
128
+ (isRecord(renderOptions.html) &&
129
+ (renderOptions.html.revisionId === undefined ||
130
+ isNonEmptyString(renderOptions.html.revisionId)) &&
131
+ (renderOptions.html.artifactData === undefined ||
132
+ isViewerJsonValue(renderOptions.html.artifactData)) &&
133
+ (renderOptions.html.bootstrap === undefined ||
134
+ renderOptions.html.bootstrap === "auto" ||
135
+ renderOptions.html.bootstrap === "off") &&
136
+ (renderOptions.html.sandbox === undefined ||
137
+ (Array.isArray(renderOptions.html.sandbox) &&
138
+ renderOptions.html.sandbox.every(isHtmlSandboxCapability))))));
139
+ return (isNonEmptyString(value.id) &&
140
+ isNonEmptyString(value.name) &&
141
+ isViewerFormat(value.format) &&
142
+ sourceIsValid &&
143
+ renderOptionsAreValid &&
144
+ (value.previewUrl === undefined || typeof value.previewUrl === "string") &&
145
+ (value.mimeType === undefined || typeof value.mimeType === "string") &&
146
+ (value.size === undefined || typeof value.size === "number") &&
147
+ (value.downloadUrl === undefined || typeof value.downloadUrl === "string") &&
148
+ (value.openUrl === undefined || typeof value.openUrl === "string"));
149
+ }
150
+ function isViewerSession(value) {
151
+ return (isRecord(value) &&
152
+ isNonEmptyString(value.token) &&
153
+ isNonEmptyString(value.expiresAt) &&
154
+ isStringArray(value.scopes));
155
+ }
156
+ function isViewerHostContext(value) {
157
+ return (isRecord(value) &&
158
+ isNonEmptyString(value.name) &&
159
+ isNonEmptyString(value.origin) &&
160
+ isNonEmptyString(value.sdkVersion));
161
+ }
162
+ function isViewerUnsupportedReason(value) {
163
+ return (value === "format-not-supported" ||
164
+ value === "encrypted-document" ||
165
+ value === "missing-renderer" ||
166
+ value === "feature-not-available");
167
+ }
168
+ function isViewerFallbackAction(value) {
169
+ return value === "download" || value === "open-externally" || value === "retry";
170
+ }
171
+ function isViewerErrorCode(value) {
172
+ return (value === "invalid-message" ||
173
+ value === "origin-mismatch" ||
174
+ value === "session-expired" ||
175
+ value === "document-fetch-failed" ||
176
+ value === "renderer-failed" ||
177
+ value === "timeout");
178
+ }
179
+ function isViewerTelemetryLevel(value) {
180
+ return value === "info" || value === "warn" || value === "error";
181
+ }
182
+ function isViewerReadyPayload(value) {
183
+ return (isRecord(value) &&
184
+ isNonEmptyString(value.viewerVersion) &&
185
+ Array.isArray(value.supportedProtocolVersions) &&
186
+ value.supportedProtocolVersions.every((version) => version === VIEWER_PROTOCOL_VERSION) &&
187
+ Array.isArray(value.capabilities) &&
188
+ value.capabilities.every(isViewerCapability));
189
+ }
190
+ function isViewerInitPayload(value) {
191
+ return (isRecord(value) &&
192
+ isViewerDocument(value.document) &&
193
+ (value.theme === undefined || isViewerTheme(value.theme)) &&
194
+ (value.session === undefined || isViewerSession(value.session)) &&
195
+ isViewerHostContext(value.host));
196
+ }
197
+ function isViewerLoadDocumentPayload(value) {
198
+ return (isRecord(value) &&
199
+ isViewerDocument(value.document) &&
200
+ (value.theme === undefined || isViewerTheme(value.theme)) &&
201
+ (value.session === undefined || isViewerSession(value.session)));
202
+ }
203
+ function isViewerGoToPagePayload(value) {
204
+ return isRecord(value) && typeof value.page === "number" && Number.isInteger(value.page) && value.page > 0;
205
+ }
206
+ function isViewerSendArtifactDataPayload(value) {
207
+ return (isRecord(value) &&
208
+ (value.documentId === undefined || isNonEmptyString(value.documentId)) &&
209
+ isViewerJsonValue(value.data));
210
+ }
211
+ function isViewerDocumentLoadedPayload(value) {
212
+ return (isRecord(value) &&
213
+ isNonEmptyString(value.documentId) &&
214
+ isViewerFormat(value.format) &&
215
+ isNonEmptyString(value.title) &&
216
+ (value.pageCount === undefined || typeof value.pageCount === "number") &&
217
+ (value.slideCount === undefined || typeof value.slideCount === "number"));
218
+ }
219
+ function isViewerPageChangedPayload(value) {
220
+ return (isRecord(value) &&
221
+ typeof value.page === "number" &&
222
+ (value.pageCount === undefined || typeof value.pageCount === "number"));
223
+ }
224
+ function isViewerSlideChangedPayload(value) {
225
+ return (isRecord(value) &&
226
+ typeof value.slide === "number" &&
227
+ (value.slideCount === undefined || typeof value.slideCount === "number"));
228
+ }
229
+ function isViewerArtifactEventPayload(value) {
230
+ return (isRecord(value) &&
231
+ isNonEmptyString(value.documentId) &&
232
+ isNonEmptyString(value.name) &&
233
+ (value.detail === undefined || isViewerJsonValue(value.detail)));
234
+ }
235
+ function isViewerResizePayload(value) {
236
+ return (isRecord(value) &&
237
+ typeof value.height === "number" &&
238
+ (value.reason === "content" ||
239
+ value.reason === "viewport" ||
240
+ value.reason === "renderer"));
241
+ }
242
+ function isViewerTelemetryPayload(value) {
243
+ return (isRecord(value) &&
244
+ isNonEmptyString(value.name) &&
245
+ isViewerTelemetryLevel(value.level) &&
246
+ isNonEmptyString(value.message) &&
247
+ (value.context === undefined ||
248
+ (isRecord(value.context) &&
249
+ Object.values(value.context).every((entry) => entry === null ||
250
+ typeof entry === "string" ||
251
+ typeof entry === "number" ||
252
+ typeof entry === "boolean"))));
253
+ }
254
+ function isViewerUnsupportedPayload(value) {
255
+ return (isRecord(value) &&
256
+ isNonEmptyString(value.documentId) &&
257
+ isViewerUnsupportedReason(value.reason) &&
258
+ isNonEmptyString(value.message) &&
259
+ isViewerFallbackAction(value.fallback));
260
+ }
261
+ function isViewerErrorPayload(value) {
262
+ return (isRecord(value) &&
263
+ (value.documentId === undefined || isNonEmptyString(value.documentId)) &&
264
+ isViewerErrorCode(value.code) &&
265
+ isNonEmptyString(value.message) &&
266
+ typeof value.recoverable === "boolean" &&
267
+ (value.fallback === undefined || isViewerFallbackAction(value.fallback)));
268
+ }
269
+ function isViewerAckPayload(value) {
270
+ return (isRecord(value) &&
271
+ (value.status === "accepted" || value.status === "rejected") &&
272
+ (value.reason === undefined || isNonEmptyString(value.reason)));
273
+ }
274
+ const payloadValidators = {
275
+ "viewer.ready": isViewerReadyPayload,
276
+ "viewer.init": isViewerInitPayload,
277
+ "viewer.load-document": isViewerLoadDocumentPayload,
278
+ "viewer.go-to-page": isViewerGoToPagePayload,
279
+ "viewer.send-artifact-data": isViewerSendArtifactDataPayload,
280
+ "viewer.document-loaded": isViewerDocumentLoadedPayload,
281
+ "viewer.page-changed": isViewerPageChangedPayload,
282
+ "viewer.slide-changed": isViewerSlideChangedPayload,
283
+ "viewer.artifact-event": isViewerArtifactEventPayload,
284
+ "viewer.resize": isViewerResizePayload,
285
+ "viewer.telemetry": isViewerTelemetryPayload,
286
+ "viewer.error": isViewerErrorPayload,
287
+ "viewer.unsupported": isViewerUnsupportedPayload,
288
+ "viewer.ack": isViewerAckPayload,
289
+ };
290
+ export function isViewerCommandType(value) {
291
+ return typeof value === "string" && commandTypes.has(value);
292
+ }
293
+ export function isViewerEventType(value) {
294
+ return typeof value === "string" && eventTypes.has(value);
295
+ }
296
+ export function isViewerResponseType(value) {
297
+ return typeof value === "string" && responseTypes.has(value);
298
+ }
299
+ export function isViewerMessageType(value) {
300
+ return (isViewerCommandType(value) ||
301
+ isViewerEventType(value) ||
302
+ isViewerResponseType(value));
303
+ }
304
+ export function isViewerEnvelope(value) {
305
+ return (isRecord(value) &&
306
+ value.channel === VIEWER_CHANNEL &&
307
+ value.version === VIEWER_PROTOCOL_VERSION &&
308
+ isNonEmptyString(value.instanceId) &&
309
+ isNonEmptyString(value.messageId) &&
310
+ isViewerMessageType(value.type) &&
311
+ typeof value.timestamp === "number" &&
312
+ "payload" in value);
313
+ }
314
+ export function isViewerMessage(value) {
315
+ if (!isViewerEnvelope(value)) {
316
+ return false;
317
+ }
318
+ if (isViewerResponseType(value.type)) {
319
+ if (!isNonEmptyString(value.requestId)) {
320
+ return false;
321
+ }
322
+ }
323
+ else if ("requestId" in value && value.requestId !== undefined) {
324
+ return false;
325
+ }
326
+ return payloadValidators[value.type](value.payload);
327
+ }
328
+ export function isViewerParentCommand(value) {
329
+ return isViewerMessage(value) && isViewerCommandType(value.type);
330
+ }
331
+ export function isViewerChildEvent(value) {
332
+ return isViewerMessage(value) && isViewerEventType(value.type);
333
+ }
334
+ export function isViewerResponse(value) {
335
+ return isViewerMessage(value) && isViewerResponseType(value.type);
336
+ }
337
+ export function assertViewerMessage(value) {
338
+ if (!isViewerMessage(value)) {
339
+ throw new Error("Invalid viewer message received.");
340
+ }
341
+ }
342
+ function createMessageId() {
343
+ if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
344
+ return crypto.randomUUID();
345
+ }
346
+ return `viewer-${Math.random().toString(36).slice(2, 10)}`;
347
+ }
348
+ export function createViewerMessage(message) {
349
+ return {
350
+ channel: VIEWER_CHANNEL,
351
+ version: VIEWER_PROTOCOL_VERSION,
352
+ messageId: message.messageId ?? createMessageId(),
353
+ timestamp: message.timestamp ?? Date.now(),
354
+ ...message,
355
+ };
356
+ }
357
+ //# 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,52 @@
1
+ {
2
+ "name": "@dvina/artifact-renderer-protocol",
3
+ "version": "0.0.1",
4
+ "description": "Strict iframe messaging protocol and runtime guards for Dvina Artifact Renderer.",
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-core": "0.0.1"
22
+ },
23
+ "license": "MIT",
24
+ "sideEffects": false,
25
+ "repository": {
26
+ "type": "git",
27
+ "url": "git+https://github.com/dvina/artifact-renderer.git",
28
+ "directory": "packages/protocol"
29
+ },
30
+ "homepage": "https://github.com/dvina/artifact-renderer#readme",
31
+ "bugs": {
32
+ "url": "https://github.com/dvina/artifact-renderer/issues"
33
+ },
34
+ "keywords": [
35
+ "dvina",
36
+ "artifact-renderer",
37
+ "iframe",
38
+ "protocol",
39
+ "postmessage"
40
+ ],
41
+ "engines": {
42
+ "node": ">=20"
43
+ },
44
+ "publishConfig": {
45
+ "access": "public"
46
+ },
47
+ "scripts": {
48
+ "build": "tsc -p tsconfig.json",
49
+ "check": "tsc -p tsconfig.json --noEmit",
50
+ "test": "vitest run src/index.test.ts"
51
+ }
52
+ }