@plurid/plurid-react-server 0.0.0-2 → 0.0.0-5

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,2 +1,2 @@
1
- export * from "./general/index";
2
- export * from "./stiller/index";
1
+ export * from './general';
2
+ export * from './stiller';
@@ -1,2 +1,2 @@
1
- import { PluridStillerOptions } from "../../interfaces/index";
1
+ import { PluridStillerOptions } from "../../interfaces";
2
2
  export declare const defaultStillerOptions: PluridStillerOptions;
@@ -1,7 +1,6 @@
1
1
  import express from 'express';
2
2
  import { Helmet } from 'react-helmet-async';
3
- import { PluridRoute, PluridRoutePlane, PluridPreserve } from '@plurid/plurid-data';
4
- import { routing } from '@plurid/plurid-engine';
3
+ import { PluridRoute, PluridRoutePlane, PluridPreserve, IsoMatcherRouteResult } from '@plurid/plurid-data';
5
4
  import { PluridReactComponent } from '@plurid/plurid-react';
6
5
  export declare type PluridServerMiddleware = (request: express.Request, response: express.Response, next: express.NextFunction) => void;
7
6
  export declare type ServerRequest = express.Request & {
@@ -70,7 +69,7 @@ export interface PluridServerService<P = any> {
70
69
  export interface PluridServerConfiguration {
71
70
  routes: PluridRoute<PluridReactComponent>[];
72
71
  planes?: PluridRoutePlane<PluridReactComponent>[];
73
- preserves: PluridPreserve<routing.IsoMatcherRouteResult<PluridReactComponent<any>> | undefined, express.Request, express.Response>[];
72
+ preserves: PluridPreserveReact[];
74
73
  helmet: Helmet;
75
74
  styles?: string[];
76
75
  middleware?: PluridServerMiddleware[];
@@ -141,3 +140,7 @@ export interface PluridStillerOptions {
141
140
  */
142
141
  ignore: string[];
143
142
  }
143
+ export declare type PluridPreserveReact = PluridPreserve<IsoMatcherRouteResult<PluridReactComponent<any>> | undefined, express.Request, express.Response>;
144
+ export interface PluridLiveServerOptions {
145
+ server: string;
146
+ }
@@ -1,2 +1,2 @@
1
- export * from "./external/index";
2
- export * from "./internal/index";
1
+ export * from './external';
2
+ export * from './internal';
@@ -2,7 +2,7 @@ import { Helmet } from 'react-helmet-async';
2
2
  import { ServerStyleSheet } from 'styled-components';
3
3
  import { Indexed, PluridRoute, PluridRoutePlane, PluridPreserveResponse } from '@plurid/plurid-data';
4
4
  import { PluridReactComponent } from '@plurid/plurid-react';
5
- import { PluridServerService, PluridStillerOptions } from "../external/index";
5
+ import { PluridServerService, PluridStillerOptions } from '../external';
6
6
  export interface PluridRendererConfiguration {
7
7
  htmlLanguage: string | undefined;
8
8
  htmlAttributes: string;
@@ -1,5 +1,6 @@
1
- import PluridServer from "./objects/Server/index";
2
- import PluridStillsGenerator from "./objects/StillsGenerator/index";
3
- export * from "./data/interfaces/external/index";
4
- export { PluridStillsGenerator, };
1
+ import PluridServer from './objects/Server';
2
+ import PluridLiveServer from './objects/LiveServer';
3
+ import PluridStillsGenerator from './objects/StillsGenerator';
4
+ export * from './data/interfaces/external';
5
+ export { PluridLiveServer, PluridStillsGenerator, };
5
6
  export default PluridServer;
@@ -24,12 +24,12 @@ import { renderToString } from "react-dom/server";
24
24
 
25
25
  import { HelmetProvider } from "react-helmet-async";
26
26
 
27
+ import http from "http";
28
+
27
29
  import { fork } from "child_process";
28
30
 
29
31
  import detectPort from "detect-port";
30
32
 
31
- import puppeteer from "puppeteer";
32
-
33
33
  function __awaiter(thisArg, _arguments, P, generator) {
34
34
  function adopt(value) {
35
35
  return value instanceof P ? value : new P((function(resolve) {
@@ -440,8 +440,7 @@ class PluridServer {
440
440
  if (this.debugAllows("info")) {
441
441
  console.info(`[${time.stamp()} :: ${requestID}] (000 Start) Handling GET ${request.path}`);
442
442
  }
443
- const path = request.originalUrl;
444
- const ignorable = this.ignoreGetRequest(path);
443
+ const ignorable = this.ignoreGetRequest(request.path);
445
444
  if (ignorable) {
446
445
  if (this.debugAllows("info")) {
447
446
  const requestTime = this.computeRequestTime(request);
@@ -458,7 +457,7 @@ class PluridServer {
458
457
  }
459
458
  return;
460
459
  }
461
- const {externalRedirect: externalRedirect, matchingPath: matchingPath} = this.resolveMatchingPath(preserveResult, path);
460
+ const {externalRedirect: externalRedirect, matchingPath: matchingPath} = this.resolveMatchingPath(preserveResult, request.originalUrl);
462
461
  if (externalRedirect) {
463
462
  if (this.debugAllows("info")) {
464
463
  const requestTime = this.computeRequestTime(request);
@@ -916,6 +915,37 @@ class PluridServer {
916
915
  }
917
916
  }
918
917
 
918
+ class LiveServer {
919
+ constructor(options) {
920
+ this.sockets = [];
921
+ this.resolveOptions = options => {
922
+ const defaultServerPath = "./source/server/index.ts";
923
+ const resolvedOptions = {
924
+ server: (options === null || options === void 0 ? void 0 : options.server) || defaultServerPath
925
+ };
926
+ return resolvedOptions;
927
+ };
928
+ this.options = this.resolveOptions(options);
929
+ this.expressServer = express();
930
+ this.setupExpressServer();
931
+ this.httpServer = http.createServer(this.expressServer);
932
+ this.setupHttpServer();
933
+ }
934
+ setupExpressServer() {}
935
+ setupHttpServer() {
936
+ this.httpServer.on("connection", (socket => {
937
+ this.sockets.push(socket);
938
+ socket.once("close", (() => {
939
+ this.sockets.splice(this.sockets.indexOf(socket), 1);
940
+ }));
941
+ }));
942
+ this.httpServer.on("error", (error => {
943
+ throw error;
944
+ }));
945
+ }
946
+ start() {}
947
+ }
948
+
919
949
  const replacePluridResolution = html => {
920
950
  const normalResolution = "width: 1366px; height: 768px;";
921
951
  const zeroResolution = "width: 0px; height: 0px;";
@@ -924,7 +954,7 @@ const replacePluridResolution = html => {
924
954
 
925
955
  const isCurrentUserRoot = () => process.getuid() == 0;
926
956
 
927
- const render = (host, route, configuration) => __awaiter(void 0, void 0, void 0, (function*() {
957
+ const render = (puppeteer, host, route, configuration) => __awaiter(void 0, void 0, void 0, (function*() {
928
958
  const start = Date.now();
929
959
  const browser = yield puppeteer.launch({
930
960
  defaultViewport: {
@@ -958,6 +988,11 @@ const render = (host, route, configuration) => __awaiter(void 0, void 0, void 0,
958
988
 
959
989
  class Stiller {
960
990
  constructor(options) {
991
+ try {
992
+ this.puppeteer = require("puppeteer");
993
+ } catch (error) {
994
+ console.error("could not load puppeteer: check puppeteer is installed");
995
+ }
961
996
  const {host: host, routes: routes, configuration: configuration} = options;
962
997
  this.host = host;
963
998
  this.routes = routes;
@@ -966,7 +1001,7 @@ class Stiller {
966
1001
  still() {
967
1002
  return __asyncGenerator(this, arguments, (function* still_1() {
968
1003
  for (const route of this.routes) {
969
- yield yield __await(yield __await(render(this.host, route, this.configuration)));
1004
+ yield yield __await(yield __await(render(this.puppeteer, this.host, route, this.configuration)));
970
1005
  }
971
1006
  }));
972
1007
  }
@@ -1063,6 +1098,4 @@ class StillsGenerator {
1063
1098
  }
1064
1099
  }
1065
1100
 
1066
- export default PluridServer;
1067
-
1068
- export { StillsGenerator as PluridStillsGenerator };
1101
+ export { LiveServer as PluridLiveServer, StillsGenerator as PluridStillsGenerator, PluridServer as default };
@@ -30,12 +30,12 @@ var server = require("react-dom/server");
30
30
 
31
31
  var reactHelmetAsync = require("react-helmet-async");
32
32
 
33
+ var http = require("http");
34
+
33
35
  var child_process = require("child_process");
34
36
 
35
37
  var detectPort = require("detect-port");
36
38
 
37
- var puppeteer = require("puppeteer");
38
-
39
39
  function _interopDefaultLegacy(e) {
40
40
  return e && typeof e === "object" && "default" in e ? e : {
41
41
  default: e
@@ -74,9 +74,9 @@ var open__default = _interopDefaultLegacy(open);
74
74
 
75
75
  var React__default = _interopDefaultLegacy(React);
76
76
 
77
- var detectPort__default = _interopDefaultLegacy(detectPort);
77
+ var http__default = _interopDefaultLegacy(http);
78
78
 
79
- var puppeteer__default = _interopDefaultLegacy(puppeteer);
79
+ var detectPort__default = _interopDefaultLegacy(detectPort);
80
80
 
81
81
  function __awaiter(thisArg, _arguments, P, generator) {
82
82
  function adopt(value) {
@@ -359,9 +359,11 @@ class PluridContentGenerator {
359
359
  const providers = {};
360
360
  for (const service of this.data.services) {
361
361
  try {
362
- const importedService = yield Promise.resolve().then((function() {
363
- return _interopNamespace(require(service.package));
364
- }));
362
+ const importedService = yield function(t) {
363
+ return Promise.resolve().then((function() {
364
+ return _interopNamespace(require(t));
365
+ }));
366
+ }(service.package);
365
367
  const ImportedServiceProvider = service.provider === "default" ? importedService : importedService[service.provider];
366
368
  providers[service.name] = ImportedServiceProvider;
367
369
  } catch (error) {
@@ -490,8 +492,7 @@ class PluridServer {
490
492
  if (this.debugAllows("info")) {
491
493
  console.info(`[${pluridFunctions.time.stamp()} :: ${requestID}] (000 Start) Handling GET ${request.path}`);
492
494
  }
493
- const path = request.originalUrl;
494
- const ignorable = this.ignoreGetRequest(path);
495
+ const ignorable = this.ignoreGetRequest(request.path);
495
496
  if (ignorable) {
496
497
  if (this.debugAllows("info")) {
497
498
  const requestTime = this.computeRequestTime(request);
@@ -508,7 +509,7 @@ class PluridServer {
508
509
  }
509
510
  return;
510
511
  }
511
- const {externalRedirect: externalRedirect, matchingPath: matchingPath} = this.resolveMatchingPath(preserveResult, path);
512
+ const {externalRedirect: externalRedirect, matchingPath: matchingPath} = this.resolveMatchingPath(preserveResult, request.originalUrl);
512
513
  if (externalRedirect) {
513
514
  if (this.debugAllows("info")) {
514
515
  const requestTime = this.computeRequestTime(request);
@@ -966,6 +967,37 @@ class PluridServer {
966
967
  }
967
968
  }
968
969
 
970
+ class LiveServer {
971
+ constructor(options) {
972
+ this.sockets = [];
973
+ this.resolveOptions = options => {
974
+ const defaultServerPath = "./source/server/index.ts";
975
+ const resolvedOptions = {
976
+ server: (options === null || options === void 0 ? void 0 : options.server) || defaultServerPath
977
+ };
978
+ return resolvedOptions;
979
+ };
980
+ this.options = this.resolveOptions(options);
981
+ this.expressServer = express__default["default"]();
982
+ this.setupExpressServer();
983
+ this.httpServer = http__default["default"].createServer(this.expressServer);
984
+ this.setupHttpServer();
985
+ }
986
+ setupExpressServer() {}
987
+ setupHttpServer() {
988
+ this.httpServer.on("connection", (socket => {
989
+ this.sockets.push(socket);
990
+ socket.once("close", (() => {
991
+ this.sockets.splice(this.sockets.indexOf(socket), 1);
992
+ }));
993
+ }));
994
+ this.httpServer.on("error", (error => {
995
+ throw error;
996
+ }));
997
+ }
998
+ start() {}
999
+ }
1000
+
969
1001
  const replacePluridResolution = html => {
970
1002
  const normalResolution = "width: 1366px; height: 768px;";
971
1003
  const zeroResolution = "width: 0px; height: 0px;";
@@ -974,9 +1006,9 @@ const replacePluridResolution = html => {
974
1006
 
975
1007
  const isCurrentUserRoot = () => process.getuid() == 0;
976
1008
 
977
- const render = (host, route, configuration) => __awaiter(void 0, void 0, void 0, (function*() {
1009
+ const render = (puppeteer, host, route, configuration) => __awaiter(void 0, void 0, void 0, (function*() {
978
1010
  const start = Date.now();
979
- const browser = yield puppeteer__default["default"].launch({
1011
+ const browser = yield puppeteer.launch({
980
1012
  defaultViewport: {
981
1013
  width: 1366,
982
1014
  height: 768
@@ -1008,6 +1040,11 @@ const render = (host, route, configuration) => __awaiter(void 0, void 0, void 0,
1008
1040
 
1009
1041
  class Stiller {
1010
1042
  constructor(options) {
1043
+ try {
1044
+ this.puppeteer = require("puppeteer");
1045
+ } catch (error) {
1046
+ console.error("could not load puppeteer: check puppeteer is installed");
1047
+ }
1011
1048
  const {host: host, routes: routes, configuration: configuration} = options;
1012
1049
  this.host = host;
1013
1050
  this.routes = routes;
@@ -1016,7 +1053,7 @@ class Stiller {
1016
1053
  still() {
1017
1054
  return __asyncGenerator(this, arguments, (function* still_1() {
1018
1055
  for (const route of this.routes) {
1019
- yield yield __await(yield __await(render(this.host, route, this.configuration)));
1056
+ yield yield __await(yield __await(render(this.puppeteer, this.host, route, this.configuration)));
1020
1057
  }
1021
1058
  }));
1022
1059
  }
@@ -1113,6 +1150,8 @@ class StillsGenerator {
1113
1150
  }
1114
1151
  }
1115
1152
 
1153
+ exports.PluridLiveServer = LiveServer;
1154
+
1116
1155
  exports.PluridStillsGenerator = StillsGenerator;
1117
1156
 
1118
- exports.default = PluridServer;
1157
+ exports["default"] = PluridServer;
@@ -1,4 +1,4 @@
1
- import { PluridContentGeneratorData } from "../../data/interfaces/index";
1
+ import { PluridContentGeneratorData } from "../../data/interfaces";
2
2
  declare class PluridContentGenerator {
3
3
  private data;
4
4
  private providers;
@@ -0,0 +1,13 @@
1
+ import { PluridLiveServerOptions } from "../../data/interfaces";
2
+ declare class LiveServer {
3
+ private options;
4
+ private expressServer;
5
+ private httpServer;
6
+ private sockets;
7
+ constructor(options?: Partial<PluridLiveServerOptions>);
8
+ private resolveOptions;
9
+ private setupExpressServer;
10
+ private setupHttpServer;
11
+ start(): void;
12
+ }
13
+ export default LiveServer;
@@ -1,4 +1,4 @@
1
- import { PluridRendererConfiguration } from "../../data/interfaces/index";
1
+ import { PluridRendererConfiguration } from "../../data/interfaces";
2
2
  declare class PluridRenderer {
3
3
  private htmlLanguage;
4
4
  private head;
@@ -1,3 +1,3 @@
1
- import { RendererTemplateData } from "../../../data/interfaces/index";
1
+ import { RendererTemplateData } from "../../../data/interfaces";
2
2
  declare const template: (data: RendererTemplateData) => string;
3
3
  export default template;
@@ -3,7 +3,7 @@ import { Server } from 'http';
3
3
  import express from 'express';
4
4
  import { PluridRoute } from '@plurid/plurid-data';
5
5
  import { PluridReactComponent } from '@plurid/plurid-react';
6
- import { PluridServerOptions, PluridServerConfiguration } from "../../data/interfaces/index";
6
+ import { PluridServerOptions, PluridServerConfiguration } from "../../data/interfaces";
7
7
  declare class PluridServer {
8
8
  private routes;
9
9
  private planes;
@@ -1,4 +1,4 @@
1
- import { StillerOptions } from "../../data/interfaces/index";
1
+ import { StillerOptions } from "../../data/interfaces";
2
2
  /**
3
3
  * The Server will parse the given application routes,
4
4
  * and will decide which ones to send to the Stiller.
@@ -10,6 +10,7 @@ import { StillerOptions } from "../../data/interfaces/index";
10
10
  * to serve the adequate plurid space structure when asked for the given route.
11
11
  */
12
12
  declare class Stiller {
13
+ private puppeteer;
13
14
  private host;
14
15
  private routes;
15
16
  private configuration;
@@ -1,4 +1,4 @@
1
- import { StillsGeneratorOptions } from "../../data/interfaces/index";
1
+ import { StillsGeneratorOptions } from "../../data/interfaces";
2
2
  declare class StillsGenerator {
3
3
  private options;
4
4
  constructor(options?: Partial<StillsGeneratorOptions>);
@@ -1,4 +1,4 @@
1
- import { PluridServerOptions } from "../../data/interfaces/index";
1
+ import { PluridServerOptions } from "../../data/interfaces";
2
2
  declare class StillsManager {
3
3
  private options;
4
4
  private stills;
@@ -1,6 +1,6 @@
1
- import { routing } from '@plurid/plurid-engine';
1
+ import { IsoMatcherPlaneResult } from '@plurid/plurid-data';
2
2
  import { PluridReactComponent } from '@plurid/plurid-react';
3
- export declare const resolveElementFromPlaneMatch: (planeMatch: routing.IsoMatcherPlaneResult<PluridReactComponent<any>>, elementqlEndpoint: string | undefined) => {
3
+ export declare const resolveElementFromPlaneMatch: (planeMatch: IsoMatcherPlaneResult<PluridReactComponent<any>>, elementqlEndpoint: string | undefined) => {
4
4
  name: string;
5
5
  url: string | undefined;
6
6
  } | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plurid/plurid-react-server",
3
- "version": "0.0.0-2",
3
+ "version": "0.0.0-5",
4
4
  "description": "React implementation of Plurid to view and explore the web in three dimensions with server-side rendering",
5
5
  "keywords": [
6
6
  "plurid",
@@ -60,7 +60,6 @@
60
60
  "@plurid/plurid-ui-components-react": "*",
61
61
  "@plurid/plurid-ui-state-react": "*",
62
62
  "cross-fetch": ">=3.1",
63
- "puppeteer": ">=2.1",
64
63
  "react": ">=16.8",
65
64
  "react-dom": ">=16.8",
66
65
  "react-helmet-async": ">=1",
@@ -69,66 +68,65 @@
69
68
  "styled-components": ">=5"
70
69
  },
71
70
  "dependencies": {
72
- "body-parser": "^1.19.0",
71
+ "body-parser": "^1.19.2",
73
72
  "compression": "^1.7.4",
74
73
  "detect-port": "^1.3.0",
75
- "express": "^4.17.1",
76
- "open": "^8.0.9"
74
+ "express": "^4.17.3",
75
+ "open": "^8.4.0"
77
76
  },
78
77
  "devDependencies": {
79
- "@apollo/client": "^3.3.18",
80
- "@babel/core": "^7.14.3",
78
+ "@apollo/client": "^3.5.9",
79
+ "@babel/core": "^7.17.5",
81
80
  "@plurid/elementql": "^0.0.0-1",
82
81
  "@plurid/elementql-client-react": "^0.0.0-1",
83
- "@plurid/plurid-data": "0.0.0-4",
84
- "@plurid/plurid-engine": "0.0.0-3",
85
- "@plurid/plurid-functions": "0.0.0-3",
86
- "@plurid/plurid-functions-react": "0.0.0-1",
87
- "@plurid/plurid-icons-react": "0.0.0-0",
88
- "@plurid/plurid-pubsub": "0.0.0-4",
89
- "@plurid/plurid-react": "0.0.0-4",
90
- "@plurid/plurid-themes": "0.0.0-0",
91
- "@plurid/plurid-ui-components-react": "0.0.0-1",
92
- "@plurid/plurid-ui-state-react": "0.0.0-0",
93
- "@rollup/plugin-node-resolve": "^13.0.0",
94
- "@types/body-parser": "^1.19.0",
95
- "@types/compression": "^1.7.0",
96
- "@types/detect-port": "^1.3.0",
97
- "@types/express": "^4.17.11",
98
- "@types/hammerjs": "^2.0.39",
99
- "@types/jest": "^26.0.23",
100
- "@types/puppeteer": "^5.4.3",
101
- "@types/react": "^17.0.5",
102
- "@types/react-dom": "^17.0.5",
103
- "@types/react-redux": "^7.1.16",
104
- "@types/react-stripe-elements": "^6.0.4",
105
- "@types/styled-components": "^5.1.9",
106
- "@typescript-eslint/eslint-plugin": "^4.24.0",
107
- "@typescript-eslint/parser": "^4.24.0",
82
+ "@plurid/plurid-data": "0.0.0-11",
83
+ "@plurid/plurid-engine": "0.0.0-9",
84
+ "@plurid/plurid-functions": "0.0.0-21",
85
+ "@plurid/plurid-functions-react": "0.0.0-4",
86
+ "@plurid/plurid-icons-react": "0.0.0-3",
87
+ "@plurid/plurid-pubsub": "0.0.0-5",
88
+ "@plurid/plurid-react": "0.0.0-17",
89
+ "@plurid/plurid-themes": "0.0.0-2",
90
+ "@plurid/plurid-ui-components-react": "0.0.0-11",
91
+ "@plurid/plurid-ui-state-react": "0.0.0-2",
92
+ "@rollup/plugin-node-resolve": "^13.1.3",
93
+ "@types/body-parser": "^1.19.2",
94
+ "@types/compression": "^1.7.2",
95
+ "@types/detect-port": "^1.3.2",
96
+ "@types/express": "^4.17.13",
97
+ "@types/hammerjs": "^2.0.41",
98
+ "@types/jest": "^27.4.1",
99
+ "@types/node": "^17.0.21",
100
+ "@types/react": "^17.0.39",
101
+ "@types/react-dom": "^17.0.11",
102
+ "@types/react-redux": "^7.1.22",
103
+ "@types/react-stripe-elements": "^6.0.6",
104
+ "@types/styled-components": "^5.1.23",
105
+ "@typescript-eslint/eslint-plugin": "^5.13.0",
106
+ "@typescript-eslint/parser": "^5.13.0",
108
107
  "@zerollup/ts-transform-paths": "^1.7.18",
109
- "cross-fetch": "^3.1.4",
110
- "eslint": "^7.26.0",
111
- "graphql": "^15.5.0",
108
+ "cross-fetch": "^3.1.5",
109
+ "eslint": "^8.10.0",
110
+ "graphql": "^16.3.0",
112
111
  "hammerjs": "^2.0.8",
113
- "jest": "^26.6.3",
114
- "jest-config": "^26.6.3",
115
- "puppeteer": "^9.1.1",
112
+ "jest": "^27.5.1",
113
+ "jest-config": "^27.5.1",
116
114
  "react": "^17.0.2",
117
115
  "react-dom": "^17.0.2",
118
- "react-helmet-async": "^1.0.9",
119
- "react-redux": "^7.2.4",
120
- "redux": "^4.1.0",
116
+ "react-helmet-async": "^1.2.3",
117
+ "react-redux": "^7.2.6",
118
+ "redux": "^4.1.2",
121
119
  "redux-devtools-extension": "^2.13.9",
122
- "redux-thunk": "^2.3.0",
123
- "rollup": "^2.48.0",
120
+ "redux-thunk": "^2.4.1",
121
+ "rollup": "^2.68.0",
124
122
  "rollup-plugin-peer-deps-external": "^2.2.4",
125
123
  "rollup-plugin-terser": "^7.0.2",
126
- "rollup-plugin-typescript2": "^0.30.0",
127
- "styled-components": "^5.3.0",
128
- "ts-jest": "^26.5.6",
129
- "ts-node": "^9.1.1",
130
- "ttypescript": "^1.5.12",
131
- "typescript": "^4.2.4",
132
- "typescript-transform-paths": "^2.2.3"
124
+ "rollup-plugin-typescript2": "^0.31.2",
125
+ "styled-components": "^5.3.3",
126
+ "ts-jest": "^27.1.3",
127
+ "ts-node": "^10.5.0",
128
+ "ttypescript": "^1.5.13",
129
+ "typescript": "^4.6.2",
130
+ "typescript-transform-paths": "^3.3.1"
133
131
  }
134
132
  }