@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 +72 -0
- package/dist/index.d.ts +90 -0
- package/dist/index.js +72 -0
- package/package.json +39 -0
- package/readme.md +81 -0
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;
|
package/dist/index.d.ts
ADDED
|
@@ -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.
|