@mine-scripters/minecraft-rmi 1.0.1 → 1.0.2

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.
@@ -1,12 +1,10 @@
1
- import { DimensionTypes, world, system } from '@minecraft/server';
1
+ import { system } from '@minecraft/server';
2
2
 
3
3
  const MINESCRIPTERS_NAMESPACE = 'minescripters';
4
4
  const buildServerNamespace = (namespace) => `${MINESCRIPTERS_NAMESPACE}_${namespace}`;
5
5
  const inputMessageEvent = (namespace) => `${buildServerNamespace(namespace)}:rmi.event-payload`;
6
- const sendEvent = (event) => {
7
- DimensionTypes.getAll().some((dt) => {
8
- return world.getDimension(dt.typeId)?.runCommand(`scriptevent ${event}`).successCount;
9
- });
6
+ const sendEvent = (event, message) => {
7
+ system.sendScriptEvent(event, message);
10
8
  };
11
9
 
12
10
  var SchemaEntryType;
@@ -34,6 +32,7 @@ const validate = (schema, obj) => {
34
32
  schema = normalize(schema);
35
33
  if (Array.isArray(schema)) {
36
34
  let passed = false;
35
+ const errors = [];
37
36
  for (const subSchema of schema) {
38
37
  try {
39
38
  validate(subSchema, obj);
@@ -41,11 +40,11 @@ const validate = (schema, obj) => {
41
40
  break;
42
41
  }
43
42
  catch (e) {
44
- console.error(e);
43
+ errors.push(e);
45
44
  }
46
45
  }
47
46
  if (!passed) {
48
- throw new Error('Invalid schema');
47
+ throw new AggregateError(errors, 'Invalid schema, none of the schemas matched');
49
48
  }
50
49
  return;
51
50
  }
@@ -147,8 +146,6 @@ const makeId = () => {
147
146
  };
148
147
 
149
148
  const RMI_NAMESPACE = 'minescripters_rmi';
150
- // Prevents the scriptevent parser from identifying it as a json object an failing to parse
151
- const CHUNK_PADDING = '-';
152
149
  const receiverScriptEvent = (id) => `${RMI_NAMESPACE}:${id}.receiver`;
153
150
  const senderScriptEvent = (id) => `${RMI_NAMESPACE}:${id}.sender`;
154
151
  const promiseResolver = () => {
@@ -178,7 +175,7 @@ const internalSendMessage = async (header, data, scriptevent, maxMessageSize = 2
178
175
  const chunks = [];
179
176
  if (data !== undefined) {
180
177
  const dataString = JSON.stringify(data);
181
- for (let i = 0; i < maxMessageSize; i += maxMessageSize) {
178
+ for (let i = 0; i < dataString.length; i += maxMessageSize) {
182
179
  chunks.push(dataString.slice(i, i + maxMessageSize));
183
180
  }
184
181
  }
@@ -195,12 +192,12 @@ const internalSendMessage = async (header, data, scriptevent, maxMessageSize = 2
195
192
  console.error('Transport header is bigger than 2048 characters:', rawTransportHeader);
196
193
  throw new Error('Transport header is bigger than 2048');
197
194
  }
198
- sendEvent(`${scriptevent} ${rawTransportHeader}`);
195
+ sendEvent(scriptevent, rawTransportHeader);
199
196
  await initialAck;
200
197
  if (chunks.length > 0) {
201
198
  const chunksAck = ackWaiter(senderScriptEvent(id));
202
199
  for (const chunk of chunks) {
203
- sendEvent(`${receiverScriptEvent(id)} ${CHUNK_PADDING}${chunk}`);
200
+ sendEvent(receiverScriptEvent(id), chunk);
204
201
  }
205
202
  await chunksAck;
206
203
  }
@@ -219,8 +216,7 @@ const internalMessageReceived = async (rawHeader) => {
219
216
  const [acked, ack] = promiseResolver();
220
217
  const listener = system.afterEvents.scriptEventReceive.subscribe((event) => {
221
218
  if (event.id === receiverScriptEvent(id)) {
222
- // Removes CHUNK_PADDING
223
- chunks.push(event.message.slice(1));
219
+ chunks.push(event.message);
224
220
  if (chunks.length === chunkCount) {
225
221
  ack();
226
222
  }
@@ -228,12 +224,12 @@ const internalMessageReceived = async (rawHeader) => {
228
224
  }, {
229
225
  namespaces: [RMI_NAMESPACE],
230
226
  });
231
- sendEvent(`${senderScriptEvent(id)}`);
227
+ sendEvent(`${senderScriptEvent(id)}`, '');
232
228
  await acked;
233
229
  system.afterEvents.scriptEventReceive.unsubscribe(listener);
234
230
  const rawData = chunks.join('');
235
231
  data = JSON.parse(rawData);
236
- sendEvent(`${senderScriptEvent(id)}`);
232
+ sendEvent(`${senderScriptEvent(id)}`, '');
237
233
  }
238
234
  return {
239
235
  header: header.header,
@@ -1 +1 @@
1
- {"version":3,"file":"MinecraftRMI.js","sources":["../src/Communication.ts","../src/Schema.ts","../src/Utils.ts","../src/Transport.ts","../src/Server.ts","../src/Client.ts"],"sourcesContent":["import { DimensionTypes, world } from '@minecraft/server';\n\ninterface Message {\n id: string;\n endpoint: string;\n}\n\nexport interface InputMessage extends Message {\n timeout: number;\n}\n\nexport interface OutputMessage extends Message {\n isError: boolean;\n hasReturn: boolean;\n}\n\nconst MINESCRIPTERS_NAMESPACE = 'minescripters';\n\nexport const buildServerNamespace = (namespace: string) => `${MINESCRIPTERS_NAMESPACE}_${namespace}`;\n\nexport const inputMessageEvent = (namespace: string) => `${buildServerNamespace(namespace)}:rmi.event-payload`;\n\nexport const sendEvent = (event: string) => {\n DimensionTypes.getAll().some((dt) => {\n return world.getDimension(dt.typeId)?.runCommand(`scriptevent ${event}`).successCount;\n });\n};\n","export enum SchemaEntryType {\n OBJECT,\n NUMBER,\n STRING,\n ARRAY,\n BOOL,\n ANY,\n}\n\ninterface SchemaEntryBase {\n isOptional?: boolean;\n allowNull?: boolean;\n}\n\nexport interface SchemaEntryNumber extends SchemaEntryBase {\n type: SchemaEntryType.NUMBER;\n}\n\nexport interface SchemaEntryString extends SchemaEntryBase {\n type: SchemaEntryType.STRING;\n}\n\nexport interface SchemaEntryObject extends SchemaEntryBase {\n type: SchemaEntryType.OBJECT;\n extraKeys?: SchemaEntry;\n entries?: {\n [key: string]: SchemaEntry;\n };\n}\n\nexport interface SchemaEntryBool extends SchemaEntryBase {\n type: SchemaEntryType.BOOL;\n}\n\nexport interface SchemaEntryArray extends SchemaEntryBase {\n type: SchemaEntryType.ARRAY;\n items?: SchemaEntry;\n}\n\nexport type SchemaEntry =\n | SchemaEntryNumber\n | SchemaEntryString\n | SchemaEntryBool\n | SchemaEntryObject\n | SchemaEntryArray\n | SchemaEntryType\n | Array<SchemaEntry>;\n\ntype InternalSchema =\n | SchemaEntryNumber\n | SchemaEntryString\n | SchemaEntryBool\n | SchemaEntryObject\n | SchemaEntryArray\n | SchemaEntryType.ANY\n | Array<SchemaEntry>;\n\nconst validateBase = (schema: SchemaEntryBase, obj: unknown) => {\n if (!schema.isOptional) {\n if (obj === undefined) {\n throw new Error('Invalid schema, undefined but not optional');\n }\n }\n\n if (!schema.allowNull) {\n if (obj === null) {\n throw new Error('Invalid schema, null but does not allow null');\n }\n }\n};\n\nexport const validate = (schema: SchemaEntry, obj: unknown) => {\n schema = normalize(schema);\n\n if (Array.isArray(schema)) {\n let passed = false;\n for (const subSchema of schema) {\n try {\n validate(subSchema, obj);\n passed = true;\n break;\n } catch (e) {\n console.error(e);\n }\n }\n\n if (!passed) {\n throw new Error('Invalid schema');\n }\n return;\n }\n\n if (schema === SchemaEntryType.ANY) {\n return;\n }\n\n validateBase(schema, obj);\n\n if (obj === null || obj === undefined) {\n return;\n }\n\n if (schema.type === SchemaEntryType.NUMBER) {\n if (typeof obj !== 'number' && typeof obj !== 'bigint') {\n throw new Error('Invalid schema, not a number (or bigint)');\n }\n } else if (schema.type === SchemaEntryType.ARRAY) {\n if (!Array.isArray(obj)) {\n throw new Error('Invalid schema, not an array');\n }\n\n if (schema.items) {\n for (const entry of obj) {\n validate(schema.items, entry);\n }\n }\n } else if (schema.type === SchemaEntryType.STRING) {\n if (typeof obj !== 'string') {\n throw new Error('Invalid schema, not a string');\n }\n } else if (schema.type === SchemaEntryType.BOOL) {\n if (typeof obj !== 'boolean') {\n throw new Error('Invalid schema, not a bool');\n }\n } else if (schema.type === SchemaEntryType.OBJECT) {\n if (typeof obj !== 'object' || Array.isArray(obj)) {\n throw new Error('Invalid schema, not an object');\n }\n\n if (schema.entries) {\n for (const key of Object.keys(obj)) {\n if (key in schema.entries) {\n validate(schema.entries[key], (obj as { [key]: unknown })[key]);\n } else {\n if (!schema.extraKeys) {\n throw new Error('Invalid schema, invalid key: ' + key);\n }\n\n validate(schema.extraKeys, (obj as { [key]: unknown })[key]);\n }\n }\n } else if (schema.extraKeys) {\n const extraKeys = schema.extraKeys;\n Object.values(obj).forEach((o) => validate(extraKeys, o));\n }\n }\n};\n\nexport const validateArray = (schemas: Array<SchemaEntry>, objs: Array<unknown>) => {\n objs = [...objs];\n while (schemas.length > objs.length) {\n objs.push(undefined);\n }\n\n for (let i = 0; i < schemas.length; i++) {\n validate(schemas[i], objs[i]);\n }\n};\n\nconst normalize = (schema: SchemaEntry): InternalSchema => {\n if (schema === SchemaEntryType.NUMBER) {\n return {\n type: SchemaEntryType.NUMBER,\n };\n } else if (schema === SchemaEntryType.STRING) {\n return {\n type: SchemaEntryType.STRING,\n };\n } else if (schema === SchemaEntryType.OBJECT) {\n return {\n type: SchemaEntryType.OBJECT,\n };\n } else if (schema === SchemaEntryType.ARRAY) {\n return {\n type: SchemaEntryType.ARRAY,\n };\n } else if (schema === SchemaEntryType.BOOL) {\n return {\n type: SchemaEntryType.BOOL,\n };\n }\n\n return schema;\n};\n","export const makeId = (): string => {\n return Math.random().toString(36).substring(2);\n};\n","import { system } from '@minecraft/server';\nimport { makeId } from './Utils';\nimport { sendEvent } from './Communication';\n\ninterface TransportHeader {\n id: string;\n chunkCount?: number;\n header: unknown;\n}\n\nexport interface Received {\n header: unknown;\n data?: unknown;\n}\n\nconst RMI_NAMESPACE = 'minescripters_rmi';\n// Prevents the scriptevent parser from identifying it as a json object an failing to parse\nconst CHUNK_PADDING = '-';\n\nconst receiverScriptEvent = (id: string) => `${RMI_NAMESPACE}:${id}.receiver`;\nconst senderScriptEvent = (id: string) => `${RMI_NAMESPACE}:${id}.sender`;\n\nconst promiseResolver = (): [Promise<void>, () => void] => {\n let resolver: () => void = () => {};\n return [\n new Promise((resolve) => {\n resolver = resolve;\n }),\n resolver,\n ];\n};\n\nconst ackWaiter = async (scriptEvent: string) => {\n const [acked, ack] = promiseResolver();\n\n const namespace = scriptEvent.split(':')[0];\n const listener = system.afterEvents.scriptEventReceive.subscribe(\n (event) => {\n if (event.id === scriptEvent) {\n ack();\n }\n },\n {\n namespaces: [namespace],\n }\n );\n\n await acked;\n\n system.afterEvents.scriptEventReceive.unsubscribe(listener);\n};\n\nexport const internalSendMessage = async (\n header: unknown,\n data: unknown,\n scriptevent: string,\n maxMessageSize = 2048\n) => {\n const id = makeId();\n\n const chunks: Array<string> = [];\n\n if (data !== undefined) {\n const dataString = JSON.stringify(data);\n for (let i = 0; i < maxMessageSize; i += maxMessageSize) {\n chunks.push(dataString.slice(i, i + maxMessageSize));\n }\n }\n\n const transportHeader: TransportHeader = {\n id,\n header,\n };\n\n if (chunks.length > 0) {\n transportHeader.chunkCount = chunks.length;\n }\n\n const initialAck = ackWaiter(senderScriptEvent(id));\n const rawTransportHeader = JSON.stringify(transportHeader);\n if (rawTransportHeader.length > 2048) {\n console.error('Transport header is bigger than 2048 characters:', rawTransportHeader);\n throw new Error('Transport header is bigger than 2048');\n }\n\n sendEvent(`${scriptevent} ${rawTransportHeader}`);\n\n await initialAck;\n if (chunks.length > 0) {\n const chunksAck = ackWaiter(senderScriptEvent(id));\n\n for (const chunk of chunks) {\n sendEvent(`${receiverScriptEvent(id)} ${CHUNK_PADDING}${chunk}`);\n }\n\n await chunksAck;\n }\n};\n\nexport const internalMessageReceived = async (rawHeader: string): Promise<Received> => {\n const header = JSON.parse(rawHeader) as Partial<TransportHeader>;\n const id = header.id;\n\n if (!id) {\n console.error('Unknown data received:', header);\n throw new Error('Unknow data received');\n }\n\n const chunkCount = header.chunkCount;\n const chunks: Array<string> = [];\n let data = undefined;\n\n if (chunkCount && chunkCount > 0) {\n const [acked, ack] = promiseResolver();\n\n const listener = system.afterEvents.scriptEventReceive.subscribe(\n (event) => {\n if (event.id === receiverScriptEvent(id)) {\n // Removes CHUNK_PADDING\n chunks.push(event.message.slice(1));\n\n if (chunks.length === chunkCount) {\n ack();\n }\n }\n },\n {\n namespaces: [RMI_NAMESPACE],\n }\n );\n\n sendEvent(`${senderScriptEvent(id)}`);\n\n await acked;\n system.afterEvents.scriptEventReceive.unsubscribe(listener);\n\n const rawData = chunks.join('');\n\n data = JSON.parse(rawData);\n sendEvent(`${senderScriptEvent(id)}`);\n }\n\n return {\n header: header.header,\n data,\n };\n};\n","import { system } from '@minecraft/server';\nimport { buildServerNamespace, sendEvent, InputMessage, OutputMessage, inputMessageEvent } from './Communication';\nimport { SchemaEntry, validate, validateArray } from './Schema';\nimport { internalMessageReceived, internalSendMessage } from './Transport';\n\nexport interface Server {\n namespace: string;\n endpoints: Record<string, Endpoint>;\n}\n\nexport interface Endpoint {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler: (...params: Array<any>) => unknown;\n schema?: EndpointSchema;\n}\n\nexport type EndpointSchema = {\n arguments?: Array<SchemaEntry>;\n returnValue?: SchemaEntry;\n};\n\nconst serverStopEvent = (server: Server) => `${buildServerNamespace(server.namespace)}:rmi.event-stop`;\nconst serverReturnEvent = (namespace: string, message: OutputMessage) => {\n const localNamespace = `${buildServerNamespace(namespace)}_${message.id}`;\n return `${localNamespace}:${message.endpoint}`;\n};\n\nconst returnError = (server: Server, payload: InputMessage, error: string) => {\n const message: OutputMessage = {\n id: payload.id,\n endpoint: payload.endpoint,\n hasReturn: false,\n isError: true,\n };\n\n internalSendMessage(message, error, serverReturnEvent(server.namespace, message));\n};\n\nconst returnValue = (server: Server, payload: InputMessage, value: unknown) => {\n const message: OutputMessage = {\n id: payload.id,\n endpoint: payload.endpoint,\n hasReturn: value !== undefined,\n isError: false,\n };\n\n internalSendMessage(message, value, serverReturnEvent(server.namespace, message));\n};\n\nconst start = (server: Server) => {\n const stopEvent = serverStopEvent(server);\n const payloadEvent = inputMessageEvent(server.namespace);\n const handler = system.afterEvents.scriptEventReceive.subscribe(\n async (event) => {\n if (event.id === stopEvent) {\n system.afterEvents.scriptEventReceive.unsubscribe(handler);\n } else if (event.id === payloadEvent) {\n const messageReceived = await internalMessageReceived(event.message);\n const payload = messageReceived.header as InputMessage;\n\n if (!(payload.endpoint in server.endpoints)) {\n returnError(server, payload, `Endpoint ${payload.endpoint} not found`);\n return;\n }\n\n const params = (messageReceived.data === undefined ? [] : messageReceived.data) as Array<unknown>;\n\n const endpoint = server.endpoints[payload.endpoint];\n if (endpoint.schema?.arguments) {\n try {\n validateArray(endpoint.schema.arguments, params);\n } catch (e) {\n returnError(server, payload, `Failed schema validation for arguments: ${e}`);\n }\n }\n\n const response = await endpoint.handler(...params);\n\n if (endpoint.schema?.returnValue) {\n try {\n validate(endpoint.schema.returnValue, response);\n } catch (e) {\n returnError(server, payload, `Failed schema validation for return value: ${e}`);\n }\n }\n\n returnValue(server, payload, response);\n }\n },\n {\n namespaces: [buildServerNamespace(server.namespace)],\n }\n );\n};\n\nexport const stopServer = (server: Server) => {\n sendEvent(serverStopEvent(server));\n};\n\nexport const startServer = (_server: Server) => {\n if (_server.namespace.includes(':')) {\n throw new Error('`:` is not a legal character for a namespace in: ' + _server.namespace);\n }\n\n const server = {\n ..._server,\n endpoints: { ..._server.endpoints },\n };\n\n start(server);\n};\n","import { system } from '@minecraft/server';\nimport { buildServerNamespace, InputMessage, OutputMessage, inputMessageEvent } from './Communication';\nimport { makeId } from './Utils';\nimport { internalMessageReceived, internalSendMessage } from './Transport';\n\ninterface ResponseListenerInput {\n timeout: number;\n endpoint: string;\n namespace: string;\n localNamespace: string;\n eventKey: string;\n}\n\nconst responseListener = (input: ResponseListenerInput): [() => void, Promise<unknown>] => {\n let handler: ReturnType<typeof system.afterEvents.scriptEventReceive.subscribe>;\n const promise = new Promise<unknown>((resolve, reject) => {\n const cancelHandler = system.runTimeout(() => {\n reject(new Error(`Timeout: Timed out trying to run ${input.endpoint} of ${input.namespace}`));\n }, input.timeout);\n\n handler = system.afterEvents.scriptEventReceive.subscribe(\n async (event) => {\n if (event.id === input.eventKey) {\n try {\n const response = await internalMessageReceived(event.message);\n const returnMessage: OutputMessage = response.header as OutputMessage;\n if (returnMessage.isError) {\n reject(new Error(response.data as string));\n } else {\n if (returnMessage.hasReturn) {\n resolve(response.data);\n } else {\n resolve(undefined);\n }\n }\n } catch (e) {\n reject(e);\n } finally {\n system.clearRun(cancelHandler);\n }\n }\n },\n {\n namespaces: [input.localNamespace],\n }\n );\n });\n\n const clean = () => {\n system.afterEvents.scriptEventReceive.unsubscribe(handler);\n };\n\n return [clean, promise];\n};\n\nexport const sendMessage = async (\n namespace: string,\n endpoint: string,\n args: Array<unknown> | undefined,\n timeout: number = 60\n): Promise<unknown> => {\n const messageId = makeId();\n const localNamespace = `${buildServerNamespace(namespace)}_${messageId}`;\n const eventKey = `${localNamespace}:${endpoint}`;\n\n const message: InputMessage = {\n id: messageId,\n endpoint: endpoint,\n timeout,\n };\n\n const [clean, promise] = responseListener({\n endpoint,\n eventKey,\n localNamespace,\n namespace,\n timeout,\n });\n\n try {\n internalSendMessage(message, args, inputMessageEvent(namespace));\n\n return await promise;\n } finally {\n clean();\n }\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MinecraftRMI.js","sources":["../src/Communication.ts","../src/Schema.ts","../src/Utils.ts","../src/Transport.ts","../src/Server.ts","../src/Client.ts"],"sourcesContent":["import { system } from '@minecraft/server';\n\ninterface Message {\n id: string;\n endpoint: string;\n}\n\nexport interface InputMessage extends Message {\n timeout: number;\n}\n\nexport interface OutputMessage extends Message {\n isError: boolean;\n hasReturn: boolean;\n}\n\nconst MINESCRIPTERS_NAMESPACE = 'minescripters';\n\nexport const buildServerNamespace = (namespace: string) => `${MINESCRIPTERS_NAMESPACE}_${namespace}`;\n\nexport const inputMessageEvent = (namespace: string) => `${buildServerNamespace(namespace)}:rmi.event-payload`;\n\nexport const sendEvent = (event: string, message: string) => {\n system.sendScriptEvent(event, message);\n};\n","export enum SchemaEntryType {\n OBJECT,\n NUMBER,\n STRING,\n ARRAY,\n BOOL,\n ANY,\n}\n\ninterface SchemaEntryBase {\n isOptional?: boolean;\n allowNull?: boolean;\n}\n\nexport interface SchemaEntryNumber extends SchemaEntryBase {\n type: SchemaEntryType.NUMBER;\n}\n\nexport interface SchemaEntryString extends SchemaEntryBase {\n type: SchemaEntryType.STRING;\n}\n\nexport interface SchemaEntryObject extends SchemaEntryBase {\n type: SchemaEntryType.OBJECT;\n extraKeys?: SchemaEntry;\n entries?: {\n [key: string]: SchemaEntry;\n };\n}\n\nexport interface SchemaEntryBool extends SchemaEntryBase {\n type: SchemaEntryType.BOOL;\n}\n\nexport interface SchemaEntryArray extends SchemaEntryBase {\n type: SchemaEntryType.ARRAY;\n items?: SchemaEntry;\n}\n\nexport type SchemaEntry =\n | SchemaEntryNumber\n | SchemaEntryString\n | SchemaEntryBool\n | SchemaEntryObject\n | SchemaEntryArray\n | SchemaEntryType\n | Array<SchemaEntry>;\n\ntype InternalSchema =\n | SchemaEntryNumber\n | SchemaEntryString\n | SchemaEntryBool\n | SchemaEntryObject\n | SchemaEntryArray\n | SchemaEntryType.ANY\n | Array<SchemaEntry>;\n\nconst validateBase = (schema: SchemaEntryBase, obj: unknown) => {\n if (!schema.isOptional) {\n if (obj === undefined) {\n throw new Error('Invalid schema, undefined but not optional');\n }\n }\n\n if (!schema.allowNull) {\n if (obj === null) {\n throw new Error('Invalid schema, null but does not allow null');\n }\n }\n};\n\nexport const validate = (schema: SchemaEntry, obj: unknown) => {\n schema = normalize(schema);\n\n if (Array.isArray(schema)) {\n let passed = false;\n const errors = [];\n for (const subSchema of schema) {\n try {\n validate(subSchema, obj);\n passed = true;\n break;\n } catch (e) {\n errors.push(e);\n }\n }\n\n if (!passed) {\n throw new AggregateError(errors, 'Invalid schema, none of the schemas matched');\n }\n return;\n }\n\n if (schema === SchemaEntryType.ANY) {\n return;\n }\n\n validateBase(schema, obj);\n\n if (obj === null || obj === undefined) {\n return;\n }\n\n if (schema.type === SchemaEntryType.NUMBER) {\n if (typeof obj !== 'number' && typeof obj !== 'bigint') {\n throw new Error('Invalid schema, not a number (or bigint)');\n }\n } else if (schema.type === SchemaEntryType.ARRAY) {\n if (!Array.isArray(obj)) {\n throw new Error('Invalid schema, not an array');\n }\n\n if (schema.items) {\n for (const entry of obj) {\n validate(schema.items, entry);\n }\n }\n } else if (schema.type === SchemaEntryType.STRING) {\n if (typeof obj !== 'string') {\n throw new Error('Invalid schema, not a string');\n }\n } else if (schema.type === SchemaEntryType.BOOL) {\n if (typeof obj !== 'boolean') {\n throw new Error('Invalid schema, not a bool');\n }\n } else if (schema.type === SchemaEntryType.OBJECT) {\n if (typeof obj !== 'object' || Array.isArray(obj)) {\n throw new Error('Invalid schema, not an object');\n }\n\n if (schema.entries) {\n for (const key of Object.keys(obj)) {\n if (key in schema.entries) {\n validate(schema.entries[key], (obj as { [key]: unknown })[key]);\n } else {\n if (!schema.extraKeys) {\n throw new Error('Invalid schema, invalid key: ' + key);\n }\n\n validate(schema.extraKeys, (obj as { [key]: unknown })[key]);\n }\n }\n } else if (schema.extraKeys) {\n const extraKeys = schema.extraKeys;\n Object.values(obj).forEach((o) => validate(extraKeys, o));\n }\n }\n};\n\nexport const validateArray = (schemas: Array<SchemaEntry>, objs: Array<unknown>) => {\n objs = [...objs];\n while (schemas.length > objs.length) {\n objs.push(undefined);\n }\n\n for (let i = 0; i < schemas.length; i++) {\n validate(schemas[i], objs[i]);\n }\n};\n\nconst normalize = (schema: SchemaEntry): InternalSchema => {\n if (schema === SchemaEntryType.NUMBER) {\n return {\n type: SchemaEntryType.NUMBER,\n };\n } else if (schema === SchemaEntryType.STRING) {\n return {\n type: SchemaEntryType.STRING,\n };\n } else if (schema === SchemaEntryType.OBJECT) {\n return {\n type: SchemaEntryType.OBJECT,\n };\n } else if (schema === SchemaEntryType.ARRAY) {\n return {\n type: SchemaEntryType.ARRAY,\n };\n } else if (schema === SchemaEntryType.BOOL) {\n return {\n type: SchemaEntryType.BOOL,\n };\n }\n\n return schema;\n};\n","export const makeId = (): string => {\n return Math.random().toString(36).substring(2);\n};\n","import { system } from '@minecraft/server';\nimport { makeId } from './Utils';\nimport { sendEvent } from './Communication';\n\ninterface TransportHeader {\n id: string;\n chunkCount?: number;\n header: unknown;\n}\n\nexport interface Received {\n header: unknown;\n data?: unknown;\n}\n\nconst RMI_NAMESPACE = 'minescripters_rmi';\n\nconst receiverScriptEvent = (id: string) => `${RMI_NAMESPACE}:${id}.receiver`;\nconst senderScriptEvent = (id: string) => `${RMI_NAMESPACE}:${id}.sender`;\n\nconst promiseResolver = (): [Promise<void>, () => void] => {\n let resolver: () => void = () => {};\n return [\n new Promise((resolve) => {\n resolver = resolve;\n }),\n resolver,\n ];\n};\n\nconst ackWaiter = async (scriptEvent: string) => {\n const [acked, ack] = promiseResolver();\n\n const namespace = scriptEvent.split(':')[0];\n const listener = system.afterEvents.scriptEventReceive.subscribe(\n (event) => {\n if (event.id === scriptEvent) {\n ack();\n }\n },\n {\n namespaces: [namespace],\n }\n );\n\n await acked;\n\n system.afterEvents.scriptEventReceive.unsubscribe(listener);\n};\n\nexport const internalSendMessage = async (\n header: unknown,\n data: unknown,\n scriptevent: string,\n maxMessageSize = 2048\n) => {\n const id = makeId();\n\n const chunks: Array<string> = [];\n\n if (data !== undefined) {\n const dataString = JSON.stringify(data);\n for (let i = 0; i < dataString.length; i += maxMessageSize) {\n chunks.push(dataString.slice(i, i + maxMessageSize));\n }\n }\n\n const transportHeader: TransportHeader = {\n id,\n header,\n };\n\n if (chunks.length > 0) {\n transportHeader.chunkCount = chunks.length;\n }\n\n const initialAck = ackWaiter(senderScriptEvent(id));\n const rawTransportHeader = JSON.stringify(transportHeader);\n if (rawTransportHeader.length > 2048) {\n console.error('Transport header is bigger than 2048 characters:', rawTransportHeader);\n throw new Error('Transport header is bigger than 2048');\n }\n\n sendEvent(scriptevent, rawTransportHeader);\n\n await initialAck;\n if (chunks.length > 0) {\n const chunksAck = ackWaiter(senderScriptEvent(id));\n\n for (const chunk of chunks) {\n sendEvent(receiverScriptEvent(id), chunk);\n }\n\n await chunksAck;\n }\n};\n\nexport const internalMessageReceived = async (rawHeader: string): Promise<Received> => {\n const header = JSON.parse(rawHeader) as Partial<TransportHeader>;\n const id = header.id;\n\n if (!id) {\n console.error('Unknown data received:', header);\n throw new Error('Unknow data received');\n }\n\n const chunkCount = header.chunkCount;\n const chunks: Array<string> = [];\n let data = undefined;\n\n if (chunkCount && chunkCount > 0) {\n const [acked, ack] = promiseResolver();\n\n const listener = system.afterEvents.scriptEventReceive.subscribe(\n (event) => {\n if (event.id === receiverScriptEvent(id)) {\n chunks.push(event.message);\n\n if (chunks.length === chunkCount) {\n ack();\n }\n }\n },\n {\n namespaces: [RMI_NAMESPACE],\n }\n );\n\n sendEvent(`${senderScriptEvent(id)}`, '');\n\n await acked;\n system.afterEvents.scriptEventReceive.unsubscribe(listener);\n\n const rawData = chunks.join('');\n data = JSON.parse(rawData);\n sendEvent(`${senderScriptEvent(id)}`, '');\n }\n\n return {\n header: header.header,\n data,\n };\n};\n","import { system } from '@minecraft/server';\nimport { buildServerNamespace, sendEvent, InputMessage, OutputMessage, inputMessageEvent } from './Communication';\nimport { SchemaEntry, validate, validateArray } from './Schema';\nimport { internalMessageReceived, internalSendMessage } from './Transport';\n\nexport interface Server {\n namespace: string;\n endpoints: Record<string, Endpoint>;\n}\n\nexport interface Endpoint {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler: (...params: Array<any>) => unknown;\n schema?: EndpointSchema;\n}\n\nexport type EndpointSchema = {\n arguments?: Array<SchemaEntry>;\n returnValue?: SchemaEntry;\n};\n\nconst serverStopEvent = (server: Server) => `${buildServerNamespace(server.namespace)}:rmi.event-stop`;\nconst serverReturnEvent = (namespace: string, message: OutputMessage) => {\n const localNamespace = `${buildServerNamespace(namespace)}_${message.id}`;\n return `${localNamespace}:${message.endpoint}`;\n};\n\nconst returnError = (server: Server, payload: InputMessage, error: string) => {\n const message: OutputMessage = {\n id: payload.id,\n endpoint: payload.endpoint,\n hasReturn: false,\n isError: true,\n };\n\n internalSendMessage(message, error, serverReturnEvent(server.namespace, message));\n};\n\nconst returnValue = (server: Server, payload: InputMessage, value: unknown) => {\n const message: OutputMessage = {\n id: payload.id,\n endpoint: payload.endpoint,\n hasReturn: value !== undefined,\n isError: false,\n };\n\n internalSendMessage(message, value, serverReturnEvent(server.namespace, message));\n};\n\nconst start = (server: Server) => {\n const stopEvent = serverStopEvent(server);\n const payloadEvent = inputMessageEvent(server.namespace);\n const handler = system.afterEvents.scriptEventReceive.subscribe(\n async (event) => {\n if (event.id === stopEvent) {\n system.afterEvents.scriptEventReceive.unsubscribe(handler);\n } else if (event.id === payloadEvent) {\n const messageReceived = await internalMessageReceived(event.message);\n const payload = messageReceived.header as InputMessage;\n\n if (!(payload.endpoint in server.endpoints)) {\n returnError(server, payload, `Endpoint ${payload.endpoint} not found`);\n return;\n }\n\n const params = (messageReceived.data === undefined ? [] : messageReceived.data) as Array<unknown>;\n\n const endpoint = server.endpoints[payload.endpoint];\n if (endpoint.schema?.arguments) {\n try {\n validateArray(endpoint.schema.arguments, params);\n } catch (e) {\n returnError(server, payload, `Failed schema validation for arguments: ${e}`);\n }\n }\n\n const response = await endpoint.handler(...params);\n\n if (endpoint.schema?.returnValue) {\n try {\n validate(endpoint.schema.returnValue, response);\n } catch (e) {\n returnError(server, payload, `Failed schema validation for return value: ${e}`);\n }\n }\n\n returnValue(server, payload, response);\n }\n },\n {\n namespaces: [buildServerNamespace(server.namespace)],\n }\n );\n};\n\nexport const stopServer = (server: Server) => {\n sendEvent(serverStopEvent(server), '');\n};\n\nexport const startServer = (_server: Server) => {\n if (_server.namespace.includes(':')) {\n throw new Error('`:` is not a legal character for a namespace in: ' + _server.namespace);\n }\n\n const server = {\n ..._server,\n endpoints: { ..._server.endpoints },\n };\n\n start(server);\n};\n","import { system } from '@minecraft/server';\nimport { buildServerNamespace, InputMessage, OutputMessage, inputMessageEvent } from './Communication';\nimport { makeId } from './Utils';\nimport { internalMessageReceived, internalSendMessage } from './Transport';\n\ninterface ResponseListenerInput {\n timeout: number;\n endpoint: string;\n namespace: string;\n localNamespace: string;\n eventKey: string;\n}\n\nconst responseListener = (input: ResponseListenerInput): [() => void, Promise<unknown>] => {\n let handler: ReturnType<typeof system.afterEvents.scriptEventReceive.subscribe>;\n const promise = new Promise<unknown>((resolve, reject) => {\n const cancelHandler = system.runTimeout(() => {\n reject(new Error(`Timeout: Timed out trying to run ${input.endpoint} of ${input.namespace}`));\n }, input.timeout);\n\n handler = system.afterEvents.scriptEventReceive.subscribe(\n async (event) => {\n if (event.id === input.eventKey) {\n try {\n const response = await internalMessageReceived(event.message);\n const returnMessage: OutputMessage = response.header as OutputMessage;\n if (returnMessage.isError) {\n reject(new Error(response.data as string));\n } else {\n if (returnMessage.hasReturn) {\n resolve(response.data);\n } else {\n resolve(undefined);\n }\n }\n } catch (e) {\n reject(e);\n } finally {\n system.clearRun(cancelHandler);\n }\n }\n },\n {\n namespaces: [input.localNamespace],\n }\n );\n });\n\n const clean = () => {\n system.afterEvents.scriptEventReceive.unsubscribe(handler);\n };\n\n return [clean, promise];\n};\n\nexport const sendMessage = async (\n namespace: string,\n endpoint: string,\n args: Array<unknown> | undefined,\n timeout: number = 60\n): Promise<unknown> => {\n const messageId = makeId();\n const localNamespace = `${buildServerNamespace(namespace)}_${messageId}`;\n const eventKey = `${localNamespace}:${endpoint}`;\n\n const message: InputMessage = {\n id: messageId,\n endpoint: endpoint,\n timeout,\n };\n\n const [clean, promise] = responseListener({\n endpoint,\n eventKey,\n localNamespace,\n namespace,\n timeout,\n });\n\n try {\n internalSendMessage(message, args, inputMessageEvent(namespace));\n\n return await promise;\n } finally {\n clean();\n }\n};\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mine-scripters/minecraft-rmi",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Minecraft Remote method invocation",
5
5
  "main": "./dist/MinecraftRMI.js",
6
6
  "types": "./dist/MinecraftRMI.d.ts",