@jay-framework/editor-protocol 0.6.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.
package/dist/index.cjs ADDED
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function createPublishMessage(pages) {
4
+ return {
5
+ type: "publish",
6
+ pages
7
+ };
8
+ }
9
+ function createSaveImageMessage(imageId, imageData) {
10
+ return {
11
+ type: "saveImage",
12
+ imageId,
13
+ imageData
14
+ };
15
+ }
16
+ function createHasImageMessage(imageId) {
17
+ return {
18
+ type: "hasImage",
19
+ imageId
20
+ };
21
+ }
22
+ function createPublishResponse(status) {
23
+ return {
24
+ type: "publish",
25
+ success: status.every((s) => s.success),
26
+ status
27
+ };
28
+ }
29
+ function createSaveImageResponse(success, imageUrl, error) {
30
+ return {
31
+ type: "saveImage",
32
+ success,
33
+ imageUrl,
34
+ error
35
+ };
36
+ }
37
+ function createHasImageResponse(exists, imageUrl) {
38
+ return {
39
+ type: "hasImage",
40
+ success: true,
41
+ exists,
42
+ imageUrl
43
+ };
44
+ }
45
+ let messageIdCounter = 0;
46
+ function generateMessageId() {
47
+ const timestamp = Date.now();
48
+ const counter = ++messageIdCounter;
49
+ return `${timestamp}-${counter}`;
50
+ }
51
+ function createProtocolMessage(payload) {
52
+ return {
53
+ id: generateMessageId(),
54
+ timestamp: Date.now(),
55
+ payload
56
+ };
57
+ }
58
+ function createProtocolResponse(id, payload) {
59
+ return {
60
+ id,
61
+ timestamp: Date.now(),
62
+ payload
63
+ };
64
+ }
65
+ exports.createHasImageMessage = createHasImageMessage;
66
+ exports.createHasImageResponse = createHasImageResponse;
67
+ exports.createProtocolMessage = createProtocolMessage;
68
+ exports.createProtocolResponse = createProtocolResponse;
69
+ exports.createPublishMessage = createPublishMessage;
70
+ exports.createPublishResponse = createPublishResponse;
71
+ exports.createSaveImageMessage = createSaveImageMessage;
72
+ exports.createSaveImageResponse = createSaveImageResponse;
@@ -0,0 +1,90 @@
1
+ interface BaseMessage<TResponse extends BaseResponse = BaseResponse> {
2
+ type: string;
3
+ }
4
+ interface BaseResponse {
5
+ type: string;
6
+ success: boolean;
7
+ error?: string;
8
+ }
9
+ interface PublishMessage extends BaseMessage<PublishResponse> {
10
+ type: 'publish';
11
+ pages: {
12
+ route: string;
13
+ jayHtml: string;
14
+ name: string;
15
+ }[];
16
+ }
17
+ interface SaveImageMessage extends BaseMessage<SaveImageResponse> {
18
+ type: 'saveImage';
19
+ imageId: string;
20
+ imageData: string;
21
+ }
22
+ interface HasImageMessage extends BaseMessage<HasImageResponse> {
23
+ type: 'hasImage';
24
+ imageId: string;
25
+ }
26
+ interface PublishResponse extends BaseResponse {
27
+ type: 'publish';
28
+ status: {
29
+ success: boolean;
30
+ filePath?: string;
31
+ error?: string;
32
+ }[];
33
+ }
34
+ interface SaveImageResponse extends BaseResponse {
35
+ type: 'saveImage';
36
+ success: boolean;
37
+ imageUrl?: string;
38
+ error?: string;
39
+ }
40
+ interface HasImageResponse extends BaseResponse {
41
+ type: 'hasImage';
42
+ exists: boolean;
43
+ imageUrl?: string;
44
+ }
45
+ interface ProtocolMessage {
46
+ id: string;
47
+ timestamp: number;
48
+ payload: PublishMessage | SaveImageMessage | HasImageMessage;
49
+ }
50
+ interface ProtocolResponse {
51
+ id: string;
52
+ timestamp: number;
53
+ payload: PublishResponse | SaveImageResponse | HasImageResponse;
54
+ }
55
+ interface EditorProtocol {
56
+ publish(params: PublishMessage): Promise<PublishResponse>;
57
+ saveImage(params: SaveImageMessage): Promise<SaveImageResponse>;
58
+ hasImage(params: HasImageMessage): Promise<HasImageResponse>;
59
+ }
60
+ interface DevServerProtocol {
61
+ onPublish(callback: EditorProtocol['publish']): void;
62
+ onSaveImage(callback: EditorProtocol['saveImage']): void;
63
+ onHasImage(callback: EditorProtocol['hasImage']): void;
64
+ }
65
+
66
+ interface EditorConfig {
67
+ id?: string;
68
+ name?: string;
69
+ portRanges: {
70
+ http: [number, number];
71
+ editor: [number, number];
72
+ };
73
+ }
74
+ type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'error';
75
+ interface PortDiscoveryResponse {
76
+ status: 'init' | 'configured';
77
+ id?: string;
78
+ port: number;
79
+ }
80
+
81
+ declare function createPublishMessage(pages: PublishMessage['pages']): PublishMessage;
82
+ declare function createSaveImageMessage(imageId: string, imageData: string): SaveImageMessage;
83
+ declare function createHasImageMessage(imageId: string): HasImageMessage;
84
+ declare function createPublishResponse(status: PublishResponse['status']): PublishResponse;
85
+ declare function createSaveImageResponse(success: boolean, imageUrl?: string, error?: string): SaveImageResponse;
86
+ declare function createHasImageResponse(exists: boolean, imageUrl?: string): HasImageResponse;
87
+ declare function createProtocolMessage(payload: PublishMessage | SaveImageMessage | HasImageMessage): ProtocolMessage;
88
+ declare function createProtocolResponse(id: string, payload: PublishResponse | SaveImageResponse | HasImageResponse): ProtocolResponse;
89
+
90
+ export { type BaseMessage, type BaseResponse, type ConnectionState, type DevServerProtocol, type EditorConfig, type EditorProtocol, type HasImageMessage, type HasImageResponse, type PortDiscoveryResponse, type ProtocolMessage, type ProtocolResponse, type PublishMessage, type PublishResponse, type SaveImageMessage, type SaveImageResponse, createHasImageMessage, createHasImageResponse, createProtocolMessage, createProtocolResponse, createPublishMessage, createPublishResponse, createSaveImageMessage, createSaveImageResponse };
package/dist/index.js ADDED
@@ -0,0 +1,72 @@
1
+ function createPublishMessage(pages) {
2
+ return {
3
+ type: "publish",
4
+ pages
5
+ };
6
+ }
7
+ function createSaveImageMessage(imageId, imageData) {
8
+ return {
9
+ type: "saveImage",
10
+ imageId,
11
+ imageData
12
+ };
13
+ }
14
+ function createHasImageMessage(imageId) {
15
+ return {
16
+ type: "hasImage",
17
+ imageId
18
+ };
19
+ }
20
+ function createPublishResponse(status) {
21
+ return {
22
+ type: "publish",
23
+ success: status.every((s) => s.success),
24
+ status
25
+ };
26
+ }
27
+ function createSaveImageResponse(success, imageUrl, error) {
28
+ return {
29
+ type: "saveImage",
30
+ success,
31
+ imageUrl,
32
+ error
33
+ };
34
+ }
35
+ function createHasImageResponse(exists, imageUrl) {
36
+ return {
37
+ type: "hasImage",
38
+ success: true,
39
+ exists,
40
+ imageUrl
41
+ };
42
+ }
43
+ let messageIdCounter = 0;
44
+ function generateMessageId() {
45
+ const timestamp = Date.now();
46
+ const counter = ++messageIdCounter;
47
+ return `${timestamp}-${counter}`;
48
+ }
49
+ function createProtocolMessage(payload) {
50
+ return {
51
+ id: generateMessageId(),
52
+ timestamp: Date.now(),
53
+ payload
54
+ };
55
+ }
56
+ function createProtocolResponse(id, payload) {
57
+ return {
58
+ id,
59
+ timestamp: Date.now(),
60
+ payload
61
+ };
62
+ }
63
+ export {
64
+ createHasImageMessage,
65
+ createHasImageResponse,
66
+ createProtocolMessage,
67
+ createProtocolResponse,
68
+ createPublishMessage,
69
+ createPublishResponse,
70
+ createSaveImageMessage,
71
+ createSaveImageResponse
72
+ };
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@jay-framework/editor-protocol",
3
+ "version": "0.6.0",
4
+ "type": "module",
5
+ "license": "Apache-2.0",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "require": "./dist/index.cjs"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "readme.md"
17
+ ],
18
+ "scripts": {
19
+ "build": "npm run build:js && npm run build:types",
20
+ "build:watch": "npm run build:js -- --watch & npm run build:types -- --watch",
21
+ "build:js": "vite build",
22
+ "build:types": "tsup lib/index.ts --dts-only --format esm",
23
+ "build:check-types": "tsc",
24
+ "clean": "rimraf dist",
25
+ "confirm": "npm run clean && npm run build && npm run build:check-types && npm run test",
26
+ "test": ":",
27
+ "test:watch": ":"
28
+ },
29
+ "devDependencies": {
30
+ "@jay-framework/dev-environment": "^0.6.0",
31
+ "@jay-framework/jay-cli": "^0.6.0",
32
+ "@types/node": "^22.15.21",
33
+ "rimraf": "^5.0.5",
34
+ "tsup": "^8.0.1",
35
+ "typescript": "^5.3.3",
36
+ "vite": "^5.0.11",
37
+ "vitest": "^1.2.1"
38
+ }
39
+ }
package/readme.md ADDED
@@ -0,0 +1,81 @@
1
+ # @jay-framework/editor-protocol
2
+
3
+ Shared TypeScript interfaces and types for the Jay editor integration protocol.
4
+
5
+ ## Overview
6
+
7
+ This package provides the shared protocol definitions for communication between editor applications and Jay dev servers. It includes:
8
+
9
+ - `EditorProtocol` - Interface for editor-side operations
10
+ - `DevServerProtocol` - Interface for dev server-side handlers
11
+ - Message format types for WebSocket communication
12
+ - Configuration and connection state types
13
+ - Constructor functions for creating messages and responses
14
+
15
+ ## Usage
16
+
17
+ ```typescript
18
+ import type {
19
+ EditorProtocol,
20
+ DevServerProtocol,
21
+ EditorConfig,
22
+ } from '@jay-framework/editor-protocol';
23
+
24
+ import {
25
+ createPublishMessage,
26
+ createSaveImageMessage,
27
+ createHasImageMessage,
28
+ createProtocolMessage,
29
+ } from '@jay-framework/editor-protocol';
30
+
31
+ // Use in editor applications
32
+ const editor: EditorProtocol = {
33
+ publish: async (params) => ({ status: [{ success: true, filePath: '/test.jay-html' }] }),
34
+ saveImage: async (params) => ({ success: true, imageUrl: '/assets/image.png' }),
35
+ hasImage: async (params) => ({ exists: true, imageUrl: '/assets/image.png' }),
36
+ };
37
+
38
+ // Use in dev servers
39
+ const server: DevServerProtocol = {
40
+ onPublish: (callback) => {},
41
+ onSaveImage: (callback) => {},
42
+ onHasImage: (callback) => {},
43
+ };
44
+
45
+ // Create messages using constructors
46
+ const publishMessage = createPublishMessage([
47
+ { route: '/home', jayHtml: '<div>Home</div>', name: 'Home' },
48
+ ]);
49
+
50
+ const protocolMessage = createProtocolMessage(publishMessage);
51
+ ```
52
+
53
+ ## Constructor Functions
54
+
55
+ ### Message Constructors
56
+
57
+ - `createPublishMessage(pages)` - Creates a publish message
58
+ - `createSaveImageMessage(imageId, imageData)` - Creates a save image message
59
+ - `createHasImageMessage(imageId)` - Creates a has image message
60
+ - `createProtocolMessage(payload)` - Creates a protocol message wrapper with auto-generated timestamp-based ID
61
+
62
+ ### Response Constructors
63
+
64
+ - `createPublishResponse(status)` - Creates a publish response
65
+ - `createSaveImageResponse(success, imageUrl?, error?)` - Creates a save image response
66
+ - `createHasImageResponse(exists, imageUrl?)` - Creates a has image response
67
+ - `createProtocolResponse(id, payload)` - Creates a protocol response wrapper with timestamp
68
+
69
+ ## Protocol Operations
70
+
71
+ ### Publish
72
+
73
+ Publishes jay-html files to the dev server at specified routes.
74
+
75
+ ### Save Image
76
+
77
+ Saves base64 image data to the dev server's public assets.
78
+
79
+ ### Has Image
80
+
81
+ Checks if an image with the given ID already exists on the server.