jitar 0.1.2 → 0.1.3

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/client.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  import LocalNode from './runtime/LocalNode.js';
2
2
  export declare function startClient(...segmentFiles: string[]): Promise<LocalNode>;
3
+ export declare function getClient(): Promise<LocalNode>;
package/dist/client.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import LocalNode from './runtime/LocalNode.js';
2
2
  import RemoteGateway from './runtime/RemoteGateway.js';
3
3
  import RemoteRepository from './runtime/RemoteRepository.js';
4
+ let client = undefined;
5
+ const resolvers = [];
4
6
  export async function startClient(...segmentFiles) {
5
7
  const remoteUrl = document.location.origin;
6
8
  const node = new LocalNode();
@@ -8,5 +10,15 @@ export async function startClient(...segmentFiles) {
8
10
  const repository = new RemoteRepository(remoteUrl);
9
11
  await node.setGateway(gateway);
10
12
  await node.setRepository(repository, segmentFiles);
13
+ client = node;
14
+ resolvers.forEach((resolve) => resolve(node));
11
15
  return node;
12
16
  }
17
+ export async function getClient() {
18
+ if (client === undefined) {
19
+ return new Promise((resolve) => {
20
+ resolvers.push(resolve);
21
+ });
22
+ }
23
+ return client;
24
+ }
@@ -10,8 +10,15 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  import { Controller, Get, Post } from '@overnightjs/core';
11
11
  import { Logger } from 'tslog';
12
12
  import Version from '../../core/Version.js';
13
+ import ImplementationNotFound from '../../core/errors/ImplementationNotFound.js';
14
+ import InvalidVersionNumber from '../../core/errors/InvalidVersionNumber.js';
15
+ import MissingParameterValue from '../../core/errors/MissingParameterValue.js';
16
+ import ProcedureNotFound from '../../core/errors/ProcedureNotFound.js';
17
+ import UnknownParameter from '../../core/errors/UnknownParameter.js';
13
18
  import ValueSerializer from '../../runtime/serialization/ValueSerializer.js';
14
19
  const RPC_PARAMETERS = ['version', 'serialize'];
20
+ const INVALID_REQUEST_ERRORS = [InvalidVersionNumber, MissingParameterValue, UnknownParameter];
21
+ const NOT_FOUND_ERRORS = [ImplementationNotFound, ProcedureNotFound];
15
22
  let RPCController = class RPCController {
16
23
  #runtime;
17
24
  #logger;
@@ -84,7 +91,7 @@ let RPCController = class RPCController {
84
91
  const message = error instanceof Error ? error.message : String(error);
85
92
  const errorData = serialize ? error : message;
86
93
  this.#logger.error(`Failed to run procedure -> ${fqn} (${version.toString()}) | ${message}`);
87
- return this.#createErrorResponse(errorData, response, serialize);
94
+ return this.#createErrorResponse(error, errorData, response, serialize);
88
95
  }
89
96
  }
90
97
  #createResultResponse(result, response, serialize) {
@@ -93,11 +100,12 @@ let RPCController = class RPCController {
93
100
  response.setHeader('Content-Type', contentType);
94
101
  return response.status(200).send(content);
95
102
  }
96
- #createErrorResponse(errorData, response, serialize) {
103
+ #createErrorResponse(error, errorData, response, serialize) {
97
104
  const content = this.#createResponseContent(errorData, serialize);
98
105
  const contentType = this.#createResponseContentType(content);
106
+ const statusCode = this.#createResponseStatusCode(error);
99
107
  response.setHeader('Content-Type', contentType);
100
- return response.status(500).send(content);
108
+ return response.status(statusCode).send(content);
101
109
  }
102
110
  #createResponseContent(data, serialize) {
103
111
  return serialize
@@ -109,6 +117,15 @@ let RPCController = class RPCController {
109
117
  ? 'application/json'
110
118
  : 'text/plain';
111
119
  }
120
+ #createResponseStatusCode(error) {
121
+ if (INVALID_REQUEST_ERRORS.some(invalidError => error instanceof invalidError)) {
122
+ return 400;
123
+ }
124
+ if (NOT_FOUND_ERRORS.some(notFoundError => error instanceof notFoundError)) {
125
+ return 404;
126
+ }
127
+ return 500;
128
+ }
112
129
  };
113
130
  __decorate([
114
131
  Get('*'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jitar",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Distributed runtime for JavaScript and TypeScript to chop monolithic applications into micros.",
5
5
  "author": "Masking Technology <info@masking.tech> (https://jitar.dev)",
6
6
  "license": "MIT",
@@ -18,7 +18,8 @@
18
18
  "test-coverage": "jest --coverage",
19
19
  "lint": "eslint . --ext .ts",
20
20
  "build": "tsc -p tsconfig.json",
21
- "clean": "rm -rf dist build"
21
+ "clean": "rm -rf dist build",
22
+ "release": "npm run clean && npm run build && npm publish"
22
23
  },
23
24
  "dependencies": {
24
25
  "@overnightjs/core": "^1.7.6",