react-on-rails 14.0.5 → 14.1.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/README.md +1 -0
- package/node_package/lib/Authenticity.js +1 -1
- package/node_package/lib/ComponentRegistry.js +3 -2
- package/node_package/lib/ReactOnRails.js +19 -9
- package/node_package/lib/StoreRegistry.d.ts +2 -3
- package/node_package/lib/StoreRegistry.js +3 -2
- package/node_package/lib/buildConsoleReplay.d.ts +2 -2
- package/node_package/lib/buildConsoleReplay.js +21 -10
- package/node_package/lib/clientStartup.js +3 -4
- package/node_package/lib/context.js +1 -1
- package/node_package/lib/createReactOutput.js +1 -1
- package/node_package/lib/isRenderFunction.d.ts +2 -2
- package/node_package/lib/isRenderFunction.js +3 -3
- package/node_package/lib/isServerRenderResult.d.ts +1 -1
- package/node_package/lib/isServerRenderResult.js +3 -4
- package/node_package/lib/reactHydrateOrRender.js +3 -3
- package/node_package/lib/serverRenderReactComponent.d.ts +3 -1
- package/node_package/lib/serverRenderReactComponent.js +259 -128
- package/node_package/lib/tsconfig.tsbuildinfo +1 -0
- package/node_package/lib/types/index.d.ts +44 -13
- package/package.json +10 -7
package/README.md
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
[](https://github.com/shakacode/react_on_rails/actions/workflows/lint-js-and-ruby.yml)
|
|
18
18
|
|
|
19
19
|
# News
|
|
20
|
+
* [React on Rails Pro](https://www.shakacode.com/react-on-rails-pro/) supports the latest features of React 18, including [React Server Components](https://react.dev/reference/rsc/server-components) and [streaming](https://react.dev/reference/react-dom/server/renderToPipeableStream). Contact [Justin Gordon](mailto:justin@shakacode.com) for more information.
|
|
20
21
|
* ShakaCode now maintains the official successor to `rails/webpacker`, [`shakapacker`](https://github.com/shakacode/shakapacker).
|
|
21
22
|
* Project is updated to support Rails 7 and Shakapacker v6+!
|
|
22
23
|
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.default = {
|
|
4
4
|
authenticityToken: function () {
|
|
5
5
|
var token = document.querySelector('meta[name="csrf-token"]');
|
|
6
|
-
if (token
|
|
6
|
+
if (token instanceof HTMLMetaElement) {
|
|
7
7
|
return token.content;
|
|
8
8
|
}
|
|
9
9
|
return null;
|
|
@@ -33,8 +33,9 @@ exports.default = {
|
|
|
33
33
|
* @returns { name, component, isRenderFunction, isRenderer }
|
|
34
34
|
*/
|
|
35
35
|
get: function (name) {
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
var registeredComponent = registeredComponents.get(name);
|
|
37
|
+
if (registeredComponent !== undefined) {
|
|
38
|
+
return registeredComponent;
|
|
38
39
|
}
|
|
39
40
|
var keys = Array.from(registeredComponents.keys()).join(', ');
|
|
40
41
|
throw new Error("Could not find component registered with name ".concat(name, ". Registered component names include [ ").concat(keys, " ]. Maybe you forgot to register the component?"));
|
|
@@ -33,7 +33,7 @@ var ClientStartup = __importStar(require("./clientStartup"));
|
|
|
33
33
|
var handleError_1 = __importDefault(require("./handleError"));
|
|
34
34
|
var ComponentRegistry_1 = __importDefault(require("./ComponentRegistry"));
|
|
35
35
|
var StoreRegistry_1 = __importDefault(require("./StoreRegistry"));
|
|
36
|
-
var serverRenderReactComponent_1 =
|
|
36
|
+
var serverRenderReactComponent_1 = __importStar(require("./serverRenderReactComponent"));
|
|
37
37
|
var buildConsoleReplay_1 = __importDefault(require("./buildConsoleReplay"));
|
|
38
38
|
var createReactOutput_1 = __importDefault(require("./createReactOutput"));
|
|
39
39
|
var Authenticity_1 = __importDefault(require("./Authenticity"));
|
|
@@ -60,18 +60,21 @@ ctx.ReactOnRails = {
|
|
|
60
60
|
register: function (components) {
|
|
61
61
|
ComponentRegistry_1.default.register(components);
|
|
62
62
|
},
|
|
63
|
+
registerStore: function (stores) {
|
|
64
|
+
this.registerStoreGenerators(stores);
|
|
65
|
+
},
|
|
63
66
|
/**
|
|
64
|
-
* Allows registration of store generators to be used by multiple
|
|
67
|
+
* Allows registration of store generators to be used by multiple React components on one Rails
|
|
65
68
|
* view. store generators are functions that take one arg, props, and return a store. Note that
|
|
66
69
|
* the setStore API is different in that it's the actual store hydrated with props.
|
|
67
|
-
* @param
|
|
70
|
+
* @param storeGenerators (keys are store names, values are the store generators)
|
|
68
71
|
*/
|
|
69
|
-
|
|
70
|
-
if (!
|
|
71
|
-
throw new Error('Called ReactOnRails.
|
|
72
|
+
registerStoreGenerators: function (storeGenerators) {
|
|
73
|
+
if (!storeGenerators) {
|
|
74
|
+
throw new Error('Called ReactOnRails.registerStoreGenerators with a null or undefined, rather than ' +
|
|
72
75
|
'an Object with keys being the store names and the values are the store generators.');
|
|
73
76
|
}
|
|
74
|
-
StoreRegistry_1.default.register(
|
|
77
|
+
StoreRegistry_1.default.register(storeGenerators);
|
|
75
78
|
},
|
|
76
79
|
/**
|
|
77
80
|
* Allows retrieval of the store by name. This store will be hydrated by any Rails form props.
|
|
@@ -138,7 +141,7 @@ ctx.ReactOnRails = {
|
|
|
138
141
|
},
|
|
139
142
|
/**
|
|
140
143
|
* Returns header with csrf authenticity token and XMLHttpRequest
|
|
141
|
-
* @param
|
|
144
|
+
* @param otherHeaders Other headers
|
|
142
145
|
* @returns {*} header
|
|
143
146
|
*/
|
|
144
147
|
authenticityHeaders: function (otherHeaders) {
|
|
@@ -158,7 +161,7 @@ ctx.ReactOnRails = {
|
|
|
158
161
|
},
|
|
159
162
|
/**
|
|
160
163
|
* Allows retrieval of the store generator by name. This is used internally by ReactOnRails after
|
|
161
|
-
* a
|
|
164
|
+
* a Rails form loads to prepare stores.
|
|
162
165
|
* @param name
|
|
163
166
|
* @returns Redux Store generator function
|
|
164
167
|
*/
|
|
@@ -225,6 +228,13 @@ ctx.ReactOnRails = {
|
|
|
225
228
|
serverRenderReactComponent: function (options) {
|
|
226
229
|
return (0, serverRenderReactComponent_1.default)(options);
|
|
227
230
|
},
|
|
231
|
+
/**
|
|
232
|
+
* Used by server rendering by Rails
|
|
233
|
+
* @param options
|
|
234
|
+
*/
|
|
235
|
+
streamServerRenderedReactComponent: function (options) {
|
|
236
|
+
return (0, serverRenderReactComponent_1.streamServerRenderedReactComponent)(options);
|
|
237
|
+
},
|
|
228
238
|
/**
|
|
229
239
|
* Used by Rails to catch errors in rendering
|
|
230
240
|
* @param options
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import type { StoreGenerator } from './types';
|
|
2
|
-
type Store = any;
|
|
1
|
+
import type { Store, StoreGenerator } from './types';
|
|
3
2
|
declare const _default: {
|
|
4
3
|
/**
|
|
5
4
|
* Register a store generator, a function that takes props and returns a store.
|
|
6
5
|
* @param storeGenerators { name1: storeGenerator1, name2: storeGenerator2 }
|
|
7
6
|
*/
|
|
8
7
|
register(storeGenerators: {
|
|
9
|
-
[id: string]:
|
|
8
|
+
[id: string]: StoreGenerator;
|
|
10
9
|
}): void;
|
|
11
10
|
/**
|
|
12
11
|
* Used by components to get the hydrated store which contains props.
|
|
@@ -50,8 +50,9 @@ exports.default = {
|
|
|
50
50
|
* @returns storeCreator with given name
|
|
51
51
|
*/
|
|
52
52
|
getStoreGenerator: function (name) {
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
var registeredStoreGenerator = registeredStoreGenerators.get(name);
|
|
54
|
+
if (registeredStoreGenerator) {
|
|
55
|
+
return registeredStoreGenerator;
|
|
55
56
|
}
|
|
56
57
|
var storeKeys = Array.from(registeredStoreGenerators.keys()).join(', ');
|
|
57
58
|
throw new Error("Could not find store registered with name '".concat(name, "'. Registered store ") +
|
|
@@ -6,5 +6,5 @@ declare global {
|
|
|
6
6
|
}[];
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
-
export declare function consoleReplay(): string;
|
|
10
|
-
export default function buildConsoleReplay(): string;
|
|
9
|
+
export declare function consoleReplay(customConsoleHistory?: typeof console['history'] | undefined, numberOfMessagesToSkip?: number): string;
|
|
10
|
+
export default function buildConsoleReplay(customConsoleHistory?: typeof console['history'] | undefined, numberOfMessagesToSkip?: number): string;
|
|
@@ -3,20 +3,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.consoleReplay =
|
|
6
|
+
exports.consoleReplay = consoleReplay;
|
|
7
|
+
exports.default = buildConsoleReplay;
|
|
7
8
|
var RenderUtils_1 = __importDefault(require("./RenderUtils"));
|
|
8
9
|
var scriptSanitizedVal_1 = __importDefault(require("./scriptSanitizedVal"));
|
|
9
|
-
function consoleReplay() {
|
|
10
|
+
function consoleReplay(customConsoleHistory, numberOfMessagesToSkip) {
|
|
11
|
+
if (customConsoleHistory === void 0) { customConsoleHistory = undefined; }
|
|
12
|
+
if (numberOfMessagesToSkip === void 0) { numberOfMessagesToSkip = 0; }
|
|
10
13
|
// console.history is a global polyfill used in server rendering.
|
|
11
|
-
|
|
12
|
-
if (!(
|
|
14
|
+
var consoleHistory = customConsoleHistory !== null && customConsoleHistory !== void 0 ? customConsoleHistory : console.history;
|
|
15
|
+
if (!(Array.isArray(consoleHistory))) {
|
|
13
16
|
return '';
|
|
14
17
|
}
|
|
15
|
-
var lines =
|
|
18
|
+
var lines = consoleHistory.slice(numberOfMessagesToSkip).map(function (msg) {
|
|
16
19
|
var stringifiedList = msg.arguments.map(function (arg) {
|
|
17
20
|
var val;
|
|
18
21
|
try {
|
|
19
|
-
|
|
22
|
+
if (typeof arg === 'string') {
|
|
23
|
+
val = arg;
|
|
24
|
+
}
|
|
25
|
+
else if (arg instanceof String) {
|
|
26
|
+
val = String(arg);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
val = JSON.stringify(arg);
|
|
30
|
+
}
|
|
20
31
|
if (val === undefined) {
|
|
21
32
|
val = 'undefined';
|
|
22
33
|
}
|
|
@@ -30,8 +41,8 @@ function consoleReplay() {
|
|
|
30
41
|
});
|
|
31
42
|
return lines.join('\n');
|
|
32
43
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
44
|
+
function buildConsoleReplay(customConsoleHistory, numberOfMessagesToSkip) {
|
|
45
|
+
if (customConsoleHistory === void 0) { customConsoleHistory = undefined; }
|
|
46
|
+
if (numberOfMessagesToSkip === void 0) { numberOfMessagesToSkip = 0; }
|
|
47
|
+
return RenderUtils_1.default.wrapInScriptTags('consoleReplayLog', consoleReplay(customConsoleHistory, numberOfMessagesToSkip));
|
|
36
48
|
}
|
|
37
|
-
exports.default = buildConsoleReplay;
|
|
@@ -12,7 +12,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports.reactOnRailsPageLoaded = reactOnRailsPageLoaded;
|
|
16
|
+
exports.reactOnRailsComponentLoaded = reactOnRailsComponentLoaded;
|
|
17
|
+
exports.clientStartup = clientStartup;
|
|
16
18
|
var react_dom_1 = __importDefault(require("react-dom"));
|
|
17
19
|
var createReactOutput_1 = __importDefault(require("./createReactOutput"));
|
|
18
20
|
var isServerRenderResult_1 = require("./isServerRenderResult");
|
|
@@ -163,7 +165,6 @@ function reactOnRailsPageLoaded() {
|
|
|
163
165
|
forEachStore(context, railsContext);
|
|
164
166
|
forEachReactOnRailsComponentRender(context, railsContext);
|
|
165
167
|
}
|
|
166
|
-
exports.reactOnRailsPageLoaded = reactOnRailsPageLoaded;
|
|
167
168
|
function reactOnRailsComponentLoaded(domId) {
|
|
168
169
|
debugTurbolinks("reactOnRailsComponentLoaded ".concat(domId));
|
|
169
170
|
var railsContext = parseRailsContext();
|
|
@@ -179,7 +180,6 @@ function reactOnRailsComponentLoaded(domId) {
|
|
|
179
180
|
return;
|
|
180
181
|
render(el, context, railsContext);
|
|
181
182
|
}
|
|
182
|
-
exports.reactOnRailsComponentLoaded = reactOnRailsComponentLoaded;
|
|
183
183
|
function unmount(el) {
|
|
184
184
|
var domNodeId = domNodeIdForEl(el);
|
|
185
185
|
var domNode = document.getElementById(domNodeId);
|
|
@@ -270,4 +270,3 @@ function clientStartup(context) {
|
|
|
270
270
|
context.__REACT_ON_RAILS_EVENT_HANDLERS_RAN_ONCE__ = true;
|
|
271
271
|
onPageReady(renderInit);
|
|
272
272
|
}
|
|
273
|
-
exports.clientStartup = clientStartup;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = context;
|
|
3
4
|
/**
|
|
4
5
|
* Get the context, be it window or global
|
|
5
6
|
* @returns {boolean|Window|*|context}
|
|
@@ -9,4 +10,3 @@ function context() {
|
|
|
9
10
|
((typeof global !== 'undefined') && global) ||
|
|
10
11
|
this;
|
|
11
12
|
}
|
|
12
|
-
exports.default = context;
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.default = createReactOutput;
|
|
7
8
|
var react_1 = __importDefault(require("react"));
|
|
8
9
|
var isServerRenderResult_1 = require("./isServerRenderResult");
|
|
9
10
|
/**
|
|
@@ -59,4 +60,3 @@ function createReactOutput(_a) {
|
|
|
59
60
|
// else
|
|
60
61
|
return react_1.default.createElement(component, props);
|
|
61
62
|
}
|
|
62
|
-
exports.default = createReactOutput;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ReactComponentOrRenderFunction } from "./types/index";
|
|
1
|
+
import { ReactComponentOrRenderFunction, RenderFunction } from "./types/index";
|
|
2
2
|
/**
|
|
3
3
|
* Used to determine we'll call be calling React.createElement on the component of if this is a
|
|
4
4
|
* Render-Function used return a function that takes props to return a React element
|
|
5
5
|
* @param component
|
|
6
6
|
* @returns {boolean}
|
|
7
7
|
*/
|
|
8
|
-
export default function isRenderFunction(component: ReactComponentOrRenderFunction):
|
|
8
|
+
export default function isRenderFunction(component: ReactComponentOrRenderFunction): component is RenderFunction;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = isRenderFunction;
|
|
3
4
|
/**
|
|
4
5
|
* Used to determine we'll call be calling React.createElement on the component of if this is a
|
|
5
6
|
* Render-Function used return a function that takes props to return a React element
|
|
@@ -7,9 +8,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
8
|
* @returns {boolean}
|
|
8
9
|
*/
|
|
9
10
|
function isRenderFunction(component) {
|
|
11
|
+
var _a;
|
|
10
12
|
// No for es5 or es6 React Component
|
|
11
|
-
if (component.prototype
|
|
12
|
-
component.prototype.isReactComponent) {
|
|
13
|
+
if ((_a = component.prototype) === null || _a === void 0 ? void 0 : _a.isReactComponent) {
|
|
13
14
|
return false;
|
|
14
15
|
}
|
|
15
16
|
if (component.renderFunction) {
|
|
@@ -22,4 +23,3 @@ function isRenderFunction(component) {
|
|
|
22
23
|
}
|
|
23
24
|
return false;
|
|
24
25
|
}
|
|
25
|
-
exports.default = isRenderFunction;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { CreateReactOutputResult, ServerRenderResult } from './types/index';
|
|
2
2
|
export declare function isServerRenderHash(testValue: CreateReactOutputResult): testValue is ServerRenderResult;
|
|
3
|
-
export declare function isPromise(testValue: CreateReactOutputResult): testValue is Promise<
|
|
3
|
+
export declare function isPromise<T>(testValue: CreateReactOutputResult | Promise<T> | string | null): testValue is Promise<T>;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.isServerRenderHash = isServerRenderHash;
|
|
4
|
+
exports.isPromise = isPromise;
|
|
4
5
|
function isServerRenderHash(testValue) {
|
|
5
6
|
return !!(testValue.renderedHtml ||
|
|
6
7
|
testValue.redirectLocation ||
|
|
7
8
|
testValue.routeError ||
|
|
8
9
|
testValue.error);
|
|
9
10
|
}
|
|
10
|
-
exports.isServerRenderHash = isServerRenderHash;
|
|
11
11
|
function isPromise(testValue) {
|
|
12
|
-
return !!(testValue.then);
|
|
12
|
+
return !!(testValue === null || testValue === void 0 ? void 0 : testValue.then);
|
|
13
13
|
}
|
|
14
|
-
exports.isPromise = isPromise;
|
|
@@ -3,7 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.reactHydrate = void 0;
|
|
7
|
+
exports.reactRender = reactRender;
|
|
8
|
+
exports.default = reactHydrateOrRender;
|
|
7
9
|
var react_dom_1 = __importDefault(require("react-dom"));
|
|
8
10
|
var reactApis_1 = require("./reactApis");
|
|
9
11
|
// TODO: once React dependency is updated to >= 18, we can remove this and just
|
|
@@ -36,8 +38,6 @@ function reactRender(domNode, reactElement) {
|
|
|
36
38
|
// eslint-disable-next-line react/no-render-return-value
|
|
37
39
|
return react_dom_1.default.render(reactElement, domNode);
|
|
38
40
|
}
|
|
39
|
-
exports.reactRender = reactRender;
|
|
40
41
|
function reactHydrateOrRender(domNode, reactElement, hydrate) {
|
|
41
42
|
return hydrate ? (0, exports.reactHydrate)(domNode, reactElement) : reactRender(domNode, reactElement);
|
|
42
43
|
}
|
|
43
|
-
exports.default = reactHydrateOrRender;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Readable } from 'stream';
|
|
2
|
+
import type { RenderParams, RenderResult } from './types';
|
|
2
3
|
declare function serverRenderReactComponentInternal(options: RenderParams): null | string | Promise<RenderResult>;
|
|
3
4
|
declare const serverRenderReactComponent: typeof serverRenderReactComponentInternal;
|
|
5
|
+
export declare const streamServerRenderedReactComponent: (options: RenderParams) => Readable;
|
|
4
6
|
export default serverRenderReactComponent;
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
15
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -9,8 +20,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
20
|
});
|
|
10
21
|
};
|
|
11
22
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g =
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
24
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
25
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
26
|
function step(op) {
|
|
16
27
|
if (f) throw new TypeError("Generator is already executing.");
|
|
@@ -39,145 +50,159 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
50
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
51
|
};
|
|
41
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
exports.streamServerRenderedReactComponent = void 0;
|
|
42
54
|
var server_1 = __importDefault(require("react-dom/server"));
|
|
55
|
+
var stream_1 = require("stream");
|
|
43
56
|
var ComponentRegistry_1 = __importDefault(require("./ComponentRegistry"));
|
|
44
57
|
var createReactOutput_1 = __importDefault(require("./createReactOutput"));
|
|
45
58
|
var isServerRenderResult_1 = require("./isServerRenderResult");
|
|
46
59
|
var buildConsoleReplay_1 = __importDefault(require("./buildConsoleReplay"));
|
|
47
60
|
var handleError_1 = __importDefault(require("./handleError"));
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
var renderingError = null;
|
|
55
|
-
try {
|
|
56
|
-
var componentObj = ComponentRegistry_1.default.get(name);
|
|
57
|
-
if (componentObj.isRenderer) {
|
|
58
|
-
throw new Error("Detected a renderer while server rendering component '".concat(name, "'. See https://github.com/shakacode/react_on_rails#renderer-functions"));
|
|
59
|
-
}
|
|
60
|
-
var reactRenderingResult_1 = (0, createReactOutput_1.default)({
|
|
61
|
-
componentObj: componentObj,
|
|
62
|
-
domNodeId: domNodeId,
|
|
63
|
-
trace: trace,
|
|
64
|
-
props: props,
|
|
65
|
-
railsContext: railsContext,
|
|
66
|
-
});
|
|
67
|
-
var processServerRenderHash = function () {
|
|
68
|
-
// We let the client side handle any redirect
|
|
69
|
-
// Set hasErrors in case we want to throw a Rails exception
|
|
70
|
-
hasErrors = !!reactRenderingResult_1.routeError;
|
|
71
|
-
if (hasErrors) {
|
|
72
|
-
console.error("React Router ERROR: ".concat(JSON.stringify(reactRenderingResult_1.routeError)));
|
|
73
|
-
}
|
|
74
|
-
if (reactRenderingResult_1.redirectLocation) {
|
|
75
|
-
if (trace) {
|
|
76
|
-
var redirectLocation = reactRenderingResult_1.redirectLocation;
|
|
77
|
-
var redirectPath = redirectLocation.pathname + redirectLocation.search;
|
|
78
|
-
console.log(" ROUTER REDIRECT: ".concat(name, " to dom node with id: ").concat(domNodeId, ", redirect to ").concat(redirectPath));
|
|
79
|
-
}
|
|
80
|
-
// For redirects on server rendering, we can't stop Rails from returning the same result.
|
|
81
|
-
// Possibly, someday, we could have the rails server redirect.
|
|
82
|
-
return '';
|
|
83
|
-
}
|
|
84
|
-
return reactRenderingResult_1.renderedHtml;
|
|
85
|
-
};
|
|
86
|
-
var processPromise = function () {
|
|
87
|
-
if (!renderingReturnsPromises) {
|
|
88
|
-
console.error('Your render function returned a Promise, which is only supported by a node renderer, not ExecJS.');
|
|
89
|
-
}
|
|
90
|
-
return reactRenderingResult_1;
|
|
91
|
-
};
|
|
92
|
-
var processReactElement = function () {
|
|
93
|
-
try {
|
|
94
|
-
return server_1.default.renderToString(reactRenderingResult_1);
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
console.error("Invalid call to renderToString. Possibly you have a renderFunction, a function that already\ncalls renderToString, that takes one parameter. You need to add an extra unused parameter to identify this function\nas a renderFunction and not a simple React Function Component.");
|
|
98
|
-
throw error;
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
if ((0, isServerRenderResult_1.isServerRenderHash)(reactRenderingResult_1)) {
|
|
102
|
-
renderResult = processServerRenderHash();
|
|
103
|
-
}
|
|
104
|
-
else if ((0, isServerRenderResult_1.isPromise)(reactRenderingResult_1)) {
|
|
105
|
-
renderResult = processPromise();
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
renderResult = processReactElement();
|
|
109
|
-
}
|
|
61
|
+
function convertToError(e) {
|
|
62
|
+
return e instanceof Error ? e : new Error(String(e));
|
|
63
|
+
}
|
|
64
|
+
function validateComponent(componentObj, componentName) {
|
|
65
|
+
if (componentObj.isRenderer) {
|
|
66
|
+
throw new Error("Detected a renderer while server rendering component '".concat(componentName, "'. See https://github.com/shakacode/react_on_rails#renderer-functions"));
|
|
110
67
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
68
|
+
}
|
|
69
|
+
function processServerRenderHash(result, options) {
|
|
70
|
+
var redirectLocation = result.redirectLocation, routeError = result.routeError;
|
|
71
|
+
var hasErrors = !!routeError;
|
|
72
|
+
if (hasErrors) {
|
|
73
|
+
console.error("React Router ERROR: ".concat(JSON.stringify(routeError)));
|
|
74
|
+
}
|
|
75
|
+
var htmlResult;
|
|
76
|
+
if (redirectLocation) {
|
|
77
|
+
if (options.trace) {
|
|
78
|
+
var redirectPath = redirectLocation.pathname + redirectLocation.search;
|
|
79
|
+
console.log("ROUTER REDIRECT: ".concat(options.componentName, " to dom node with id: ").concat(options.domNodeId, ", redirect to ").concat(redirectPath));
|
|
114
80
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
name: name,
|
|
119
|
-
serverSide: true,
|
|
120
|
-
});
|
|
121
|
-
renderingError = e;
|
|
81
|
+
// For redirects on server rendering, we can't stop Rails from returning the same result.
|
|
82
|
+
// Possibly, someday, we could have the Rails server redirect.
|
|
83
|
+
htmlResult = '';
|
|
122
84
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
85
|
+
else {
|
|
86
|
+
htmlResult = result.renderedHtml;
|
|
87
|
+
}
|
|
88
|
+
return { result: htmlResult, hasErrors: hasErrors };
|
|
89
|
+
}
|
|
90
|
+
function processPromise(result, renderingReturnsPromises) {
|
|
91
|
+
if (!renderingReturnsPromises) {
|
|
92
|
+
console.error('Your render function returned a Promise, which is only supported by a node renderer, not ExecJS.');
|
|
93
|
+
// If the app is using server rendering with ExecJS, then the promise will not be awaited.
|
|
94
|
+
// And when a promise is passed to JSON.stringify, it will be converted to '{}'.
|
|
95
|
+
return '{}';
|
|
96
|
+
}
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
function processReactElement(result) {
|
|
100
|
+
try {
|
|
101
|
+
return server_1.default.renderToString(result);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
console.error("Invalid call to renderToString. Possibly you have a renderFunction, a function that already\ncalls renderToString, that takes one parameter. You need to add an extra unused parameter to identify this function\nas a renderFunction and not a simple React Function Component.");
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
function processRenderingResult(result, options) {
|
|
109
|
+
if ((0, isServerRenderResult_1.isServerRenderHash)(result)) {
|
|
110
|
+
return processServerRenderHash(result, options);
|
|
111
|
+
}
|
|
112
|
+
if ((0, isServerRenderResult_1.isPromise)(result)) {
|
|
113
|
+
return { result: processPromise(result, options.renderingReturnsPromises), hasErrors: false };
|
|
114
|
+
}
|
|
115
|
+
return { result: processReactElement(result), hasErrors: false };
|
|
116
|
+
}
|
|
117
|
+
function handleRenderingError(e, options) {
|
|
118
|
+
if (options.throwJsErrors) {
|
|
119
|
+
throw e;
|
|
120
|
+
}
|
|
121
|
+
var error = convertToError(e);
|
|
122
|
+
return {
|
|
123
|
+
hasErrors: true,
|
|
124
|
+
result: (0, handleError_1.default)({ e: error, name: options.componentName, serverSide: true }),
|
|
125
|
+
error: error,
|
|
129
126
|
};
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
return __generator(this, function (_b) {
|
|
135
|
-
switch (_b.label) {
|
|
136
|
-
case 0:
|
|
137
|
-
_b.trys.push([0, 2, , 3]);
|
|
138
|
-
_a = {};
|
|
139
|
-
return [4 /*yield*/, renderResult];
|
|
140
|
-
case 1:
|
|
141
|
-
promiseResult = (_a.html = _b.sent(),
|
|
142
|
-
_a.consoleReplayScript = consoleReplayScript,
|
|
143
|
-
_a.hasErrors = hasErrors,
|
|
144
|
-
_a);
|
|
145
|
-
return [3 /*break*/, 3];
|
|
146
|
-
case 2:
|
|
147
|
-
e_1 = _b.sent();
|
|
148
|
-
if (throwJsErrors) {
|
|
149
|
-
throw e_1;
|
|
150
|
-
}
|
|
151
|
-
promiseResult = {
|
|
152
|
-
html: (0, handleError_1.default)({
|
|
153
|
-
e: e_1,
|
|
154
|
-
name: name,
|
|
155
|
-
serverSide: true,
|
|
156
|
-
}),
|
|
157
|
-
consoleReplayScript: consoleReplayScript,
|
|
158
|
-
hasErrors: true,
|
|
159
|
-
};
|
|
160
|
-
renderingError = e_1;
|
|
161
|
-
return [3 /*break*/, 3];
|
|
162
|
-
case 3:
|
|
163
|
-
if (renderingError !== null) {
|
|
164
|
-
addRenderingErrors(promiseResult, renderingError);
|
|
165
|
-
}
|
|
166
|
-
return [2 /*return*/, promiseResult];
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
}); };
|
|
170
|
-
return resolveRenderResult();
|
|
171
|
-
}
|
|
172
|
-
var result = {
|
|
173
|
-
html: renderResult,
|
|
127
|
+
}
|
|
128
|
+
function createResultObject(html, consoleReplayScript, renderState) {
|
|
129
|
+
return {
|
|
130
|
+
html: html,
|
|
174
131
|
consoleReplayScript: consoleReplayScript,
|
|
175
|
-
hasErrors: hasErrors,
|
|
132
|
+
hasErrors: renderState.hasErrors,
|
|
133
|
+
renderingError: renderState.error && { message: renderState.error.message, stack: renderState.error.stack },
|
|
134
|
+
isShellReady: 'isShellReady' in renderState ? renderState.isShellReady : undefined,
|
|
176
135
|
};
|
|
177
|
-
|
|
178
|
-
|
|
136
|
+
}
|
|
137
|
+
function createPromiseResult(renderState, componentName, throwJsErrors) {
|
|
138
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
139
|
+
var consoleHistory, html, consoleReplayScript, e_1, errorRenderState, consoleReplayScript;
|
|
140
|
+
return __generator(this, function (_a) {
|
|
141
|
+
switch (_a.label) {
|
|
142
|
+
case 0:
|
|
143
|
+
consoleHistory = console.history;
|
|
144
|
+
_a.label = 1;
|
|
145
|
+
case 1:
|
|
146
|
+
_a.trys.push([1, 3, , 4]);
|
|
147
|
+
return [4 /*yield*/, renderState.result];
|
|
148
|
+
case 2:
|
|
149
|
+
html = _a.sent();
|
|
150
|
+
consoleReplayScript = (0, buildConsoleReplay_1.default)(consoleHistory);
|
|
151
|
+
return [2 /*return*/, createResultObject(html, consoleReplayScript, renderState)];
|
|
152
|
+
case 3:
|
|
153
|
+
e_1 = _a.sent();
|
|
154
|
+
errorRenderState = handleRenderingError(e_1, { componentName: componentName, throwJsErrors: throwJsErrors });
|
|
155
|
+
consoleReplayScript = (0, buildConsoleReplay_1.default)(consoleHistory);
|
|
156
|
+
return [2 /*return*/, createResultObject(errorRenderState.result, consoleReplayScript, renderState)];
|
|
157
|
+
case 4: return [2 /*return*/];
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
function createFinalResult(renderState, componentName, throwJsErrors) {
|
|
163
|
+
var result = renderState.result;
|
|
164
|
+
if ((0, isServerRenderResult_1.isPromise)(result)) {
|
|
165
|
+
return createPromiseResult(__assign(__assign({}, renderState), { result: result }), componentName, throwJsErrors);
|
|
166
|
+
}
|
|
167
|
+
var consoleReplayScript = (0, buildConsoleReplay_1.default)();
|
|
168
|
+
return JSON.stringify(createResultObject(result, consoleReplayScript, renderState));
|
|
169
|
+
}
|
|
170
|
+
function serverRenderReactComponentInternal(options) {
|
|
171
|
+
var componentName = options.name, domNodeId = options.domNodeId, trace = options.trace, props = options.props, railsContext = options.railsContext, renderingReturnsPromises = options.renderingReturnsPromises, throwJsErrors = options.throwJsErrors;
|
|
172
|
+
var renderState = {
|
|
173
|
+
result: null,
|
|
174
|
+
hasErrors: false,
|
|
175
|
+
};
|
|
176
|
+
try {
|
|
177
|
+
var componentObj = ComponentRegistry_1.default.get(componentName);
|
|
178
|
+
validateComponent(componentObj, componentName);
|
|
179
|
+
// Renders the component or executes the render function
|
|
180
|
+
// - If the registered component is a React element or component, it renders it
|
|
181
|
+
// - If it's a render function, it executes the function and processes the result:
|
|
182
|
+
// - For React elements or components, it renders them
|
|
183
|
+
// - For promises, it returns them without awaiting (for async rendering)
|
|
184
|
+
// - For other values (e.g., strings), it returns them directly
|
|
185
|
+
// Note: Only synchronous operations are performed at this stage
|
|
186
|
+
var reactRenderingResult = (0, createReactOutput_1.default)({ componentObj: componentObj, domNodeId: domNodeId, trace: trace, props: props, railsContext: railsContext });
|
|
187
|
+
// Processes the result from createReactOutput:
|
|
188
|
+
// 1. Converts React elements to HTML strings
|
|
189
|
+
// 2. Returns rendered HTML from serverRenderHash
|
|
190
|
+
// 3. Handles promises for async rendering
|
|
191
|
+
renderState = processRenderingResult(reactRenderingResult, { componentName: componentName, domNodeId: domNodeId, trace: trace, renderingReturnsPromises: renderingReturnsPromises });
|
|
192
|
+
}
|
|
193
|
+
catch (e) {
|
|
194
|
+
renderState = handleRenderingError(e, { componentName: componentName, throwJsErrors: throwJsErrors });
|
|
179
195
|
}
|
|
180
|
-
|
|
196
|
+
// Finalize the rendering result and prepare it for server response
|
|
197
|
+
// 1. Builds the consoleReplayScript for client-side console replay
|
|
198
|
+
// 2. Extract the result from promise (if needed) by awaiting it
|
|
199
|
+
// 3. Constructs a JSON object with the following properties:
|
|
200
|
+
// - html: string | null (The rendered component HTML)
|
|
201
|
+
// - consoleReplayScript: string (Script to replay console outputs on the client)
|
|
202
|
+
// - hasErrors: boolean (Indicates if any errors occurred during rendering)
|
|
203
|
+
// - renderingError: Error | null (The error object if an error occurred, null otherwise)
|
|
204
|
+
// 4. For Promise results, it awaits resolution before creating the final JSON
|
|
205
|
+
return createFinalResult(renderState, componentName, throwJsErrors);
|
|
181
206
|
}
|
|
182
207
|
var serverRenderReactComponent = function (options) {
|
|
183
208
|
try {
|
|
@@ -186,7 +211,113 @@ var serverRenderReactComponent = function (options) {
|
|
|
186
211
|
finally {
|
|
187
212
|
// Reset console history after each render.
|
|
188
213
|
// See `RubyEmbeddedJavaScript.console_polyfill` for initialization.
|
|
214
|
+
// This is necessary when ExecJS and old versions of node renderer are used.
|
|
215
|
+
// New versions of node renderer reset the console history automatically.
|
|
189
216
|
console.history = [];
|
|
190
217
|
}
|
|
191
218
|
};
|
|
219
|
+
var stringToStream = function (str) {
|
|
220
|
+
var stream = new stream_1.PassThrough();
|
|
221
|
+
stream.write(str);
|
|
222
|
+
stream.end();
|
|
223
|
+
return stream;
|
|
224
|
+
};
|
|
225
|
+
var transformRenderStreamChunksToResultObject = function (renderState) {
|
|
226
|
+
var consoleHistory = console.history;
|
|
227
|
+
var previouslyReplayedConsoleMessages = 0;
|
|
228
|
+
var transformStream = new stream_1.PassThrough({
|
|
229
|
+
transform: function (chunk, _, callback) {
|
|
230
|
+
var htmlChunk = chunk.toString();
|
|
231
|
+
var consoleReplayScript = (0, buildConsoleReplay_1.default)(consoleHistory, previouslyReplayedConsoleMessages);
|
|
232
|
+
previouslyReplayedConsoleMessages = (consoleHistory === null || consoleHistory === void 0 ? void 0 : consoleHistory.length) || 0;
|
|
233
|
+
var jsonChunk = JSON.stringify(createResultObject(htmlChunk, consoleReplayScript, renderState));
|
|
234
|
+
this.push("".concat(jsonChunk, "\n"));
|
|
235
|
+
callback();
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
var pipedStream = null;
|
|
239
|
+
var pipeToTransform = function (pipeableStream) {
|
|
240
|
+
pipeableStream.pipe(transformStream);
|
|
241
|
+
pipedStream = pipeableStream;
|
|
242
|
+
};
|
|
243
|
+
// We need to wrap the transformStream in a Readable stream to properly handle errors:
|
|
244
|
+
// 1. If we returned transformStream directly, we couldn't emit errors into it externally
|
|
245
|
+
// 2. If an error is emitted into the transformStream, it would cause the render to fail
|
|
246
|
+
// 3. By wrapping in Readable.from(), we can explicitly emit errors into the readableStream without affecting the transformStream
|
|
247
|
+
// Note: Readable.from can merge multiple chunks into a single chunk, so we need to ensure that we can separate them later
|
|
248
|
+
var readableStream = stream_1.Readable.from(transformStream);
|
|
249
|
+
var writeChunk = function (chunk) { return transformStream.write(chunk); };
|
|
250
|
+
var emitError = function (error) { return readableStream.emit('error', error); };
|
|
251
|
+
var endStream = function () {
|
|
252
|
+
transformStream.end();
|
|
253
|
+
pipedStream === null || pipedStream === void 0 ? void 0 : pipedStream.abort();
|
|
254
|
+
};
|
|
255
|
+
return { readableStream: readableStream, pipeToTransform: pipeToTransform, writeChunk: writeChunk, emitError: emitError, endStream: endStream };
|
|
256
|
+
};
|
|
257
|
+
var streamRenderReactComponent = function (reactRenderingResult, options) {
|
|
258
|
+
var componentName = options.name, throwJsErrors = options.throwJsErrors;
|
|
259
|
+
var renderState = {
|
|
260
|
+
result: null,
|
|
261
|
+
hasErrors: false,
|
|
262
|
+
isShellReady: false
|
|
263
|
+
};
|
|
264
|
+
var _a = transformRenderStreamChunksToResultObject(renderState), readableStream = _a.readableStream, pipeToTransform = _a.pipeToTransform, writeChunk = _a.writeChunk, emitError = _a.emitError, endStream = _a.endStream;
|
|
265
|
+
var renderingStream = server_1.default.renderToPipeableStream(reactRenderingResult, {
|
|
266
|
+
onShellError: function (e) {
|
|
267
|
+
var error = convertToError(e);
|
|
268
|
+
renderState.hasErrors = true;
|
|
269
|
+
renderState.error = error;
|
|
270
|
+
if (throwJsErrors) {
|
|
271
|
+
emitError(error);
|
|
272
|
+
}
|
|
273
|
+
var errorHtml = (0, handleError_1.default)({ e: error, name: componentName, serverSide: true });
|
|
274
|
+
writeChunk(errorHtml);
|
|
275
|
+
endStream();
|
|
276
|
+
},
|
|
277
|
+
onShellReady: function () {
|
|
278
|
+
renderState.isShellReady = true;
|
|
279
|
+
pipeToTransform(renderingStream);
|
|
280
|
+
},
|
|
281
|
+
onError: function (e) {
|
|
282
|
+
if (!renderState.isShellReady) {
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
var error = convertToError(e);
|
|
286
|
+
if (throwJsErrors) {
|
|
287
|
+
emitError(error);
|
|
288
|
+
}
|
|
289
|
+
renderState.hasErrors = true;
|
|
290
|
+
renderState.error = error;
|
|
291
|
+
},
|
|
292
|
+
});
|
|
293
|
+
return readableStream;
|
|
294
|
+
};
|
|
295
|
+
var streamServerRenderedReactComponent = function (options) {
|
|
296
|
+
var componentName = options.name, domNodeId = options.domNodeId, trace = options.trace, props = options.props, railsContext = options.railsContext, throwJsErrors = options.throwJsErrors;
|
|
297
|
+
try {
|
|
298
|
+
var componentObj = ComponentRegistry_1.default.get(componentName);
|
|
299
|
+
validateComponent(componentObj, componentName);
|
|
300
|
+
var reactRenderingResult = (0, createReactOutput_1.default)({
|
|
301
|
+
componentObj: componentObj,
|
|
302
|
+
domNodeId: domNodeId,
|
|
303
|
+
trace: trace,
|
|
304
|
+
props: props,
|
|
305
|
+
railsContext: railsContext,
|
|
306
|
+
});
|
|
307
|
+
if ((0, isServerRenderResult_1.isServerRenderHash)(reactRenderingResult) || (0, isServerRenderResult_1.isPromise)(reactRenderingResult)) {
|
|
308
|
+
throw new Error('Server rendering of streams is not supported for server render hashes or promises.');
|
|
309
|
+
}
|
|
310
|
+
return streamRenderReactComponent(reactRenderingResult, options);
|
|
311
|
+
}
|
|
312
|
+
catch (e) {
|
|
313
|
+
if (throwJsErrors) {
|
|
314
|
+
throw e;
|
|
315
|
+
}
|
|
316
|
+
var error = convertToError(e);
|
|
317
|
+
var htmlResult = (0, handleError_1.default)({ e: error, name: componentName, serverSide: true });
|
|
318
|
+
var jsonResult = JSON.stringify(createResultObject(htmlResult, (0, buildConsoleReplay_1.default)(), { hasErrors: true, error: error, result: null }));
|
|
319
|
+
return stringToStream(jsonResult);
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
exports.streamServerRenderedReactComponent = streamServerRenderedReactComponent;
|
|
192
323
|
exports.default = serverRenderReactComponent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/react/index.d.ts","../src/types/index.ts","../src/authenticity.ts","../src/isrenderfunction.ts","../src/componentregistry.ts","../../node_modules/@types/react-dom/index.d.ts","../src/isserverrenderresult.ts","../src/createreactoutput.ts","../src/reactapis.ts","../src/reacthydrateorrender.ts","../src/clientstartup.ts","../../node_modules/@types/react-dom/client.d.ts","../../node_modules/@types/react-dom/server.d.ts","../src/handleerror.ts","../src/storeregistry.ts","../src/renderutils.ts","../src/scriptsanitizedval.ts","../src/buildconsolereplay.ts","../src/serverrenderreactcomponent.ts","../src/context.ts","../src/reactonrails.ts","../../node_modules/@types/babel__generator/node_modules/@babel/types/lib/index.d.ts","../../node_modules/@types/babel__generator/index.d.ts","../../node_modules/@babel/types/lib/index.d.ts","../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/@types/babel__template/node_modules/@babel/types/lib/index.d.ts","../../node_modules/@types/babel__template/node_modules/@babel/parser/typings/babel-parser.d.ts","../../node_modules/@types/babel__template/index.d.ts","../../node_modules/@types/babel__traverse/node_modules/@babel/types/lib/index.d.ts","../../node_modules/@types/babel__traverse/index.d.ts","../../node_modules/@types/babel__core/index.d.ts","../../node_modules/@types/eslint-visitor-keys/index.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/globals.global.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/ts3.6/base.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/base.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@types/graceful-fs/index.d.ts","../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../node_modules/@types/istanbul-lib-report/index.d.ts","../../node_modules/@types/istanbul-reports/index.d.ts","../../node_modules/@jest/expect-utils/build/index.d.ts","../../node_modules/chalk/index.d.ts","../../node_modules/@sinclair/typebox/typebox.d.ts","../../node_modules/@jest/schemas/build/index.d.ts","../../node_modules/pretty-format/build/index.d.ts","../../node_modules/jest-diff/build/index.d.ts","../../node_modules/jest-matcher-utils/build/index.d.ts","../../node_modules/expect/build/index.d.ts","../../node_modules/@types/jest/index.d.ts","../../node_modules/parse5/dist/common/html.d.ts","../../node_modules/parse5/dist/common/token.d.ts","../../node_modules/parse5/dist/common/error-codes.d.ts","../../node_modules/parse5/dist/tokenizer/preprocessor.d.ts","../../node_modules/parse5/dist/tokenizer/index.d.ts","../../node_modules/parse5/dist/tree-adapters/interface.d.ts","../../node_modules/parse5/dist/parser/open-element-stack.d.ts","../../node_modules/parse5/dist/parser/formatting-element-list.d.ts","../../node_modules/parse5/dist/parser/index.d.ts","../../node_modules/parse5/dist/tree-adapters/default.d.ts","../../node_modules/parse5/dist/serializer/index.d.ts","../../node_modules/parse5/dist/common/foreign-content.d.ts","../../node_modules/parse5/dist/index.d.ts","../../node_modules/@types/tough-cookie/index.d.ts","../../node_modules/@types/jsdom/base.d.ts","../../node_modules/@types/jsdom/index.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/json5/index.d.ts","../../node_modules/@types/semver/classes/semver.d.ts","../../node_modules/@types/semver/functions/parse.d.ts","../../node_modules/@types/semver/functions/valid.d.ts","../../node_modules/@types/semver/functions/clean.d.ts","../../node_modules/@types/semver/functions/inc.d.ts","../../node_modules/@types/semver/functions/diff.d.ts","../../node_modules/@types/semver/functions/major.d.ts","../../node_modules/@types/semver/functions/minor.d.ts","../../node_modules/@types/semver/functions/patch.d.ts","../../node_modules/@types/semver/functions/prerelease.d.ts","../../node_modules/@types/semver/functions/compare.d.ts","../../node_modules/@types/semver/functions/rcompare.d.ts","../../node_modules/@types/semver/functions/compare-loose.d.ts","../../node_modules/@types/semver/functions/compare-build.d.ts","../../node_modules/@types/semver/functions/sort.d.ts","../../node_modules/@types/semver/functions/rsort.d.ts","../../node_modules/@types/semver/functions/gt.d.ts","../../node_modules/@types/semver/functions/lt.d.ts","../../node_modules/@types/semver/functions/eq.d.ts","../../node_modules/@types/semver/functions/neq.d.ts","../../node_modules/@types/semver/functions/gte.d.ts","../../node_modules/@types/semver/functions/lte.d.ts","../../node_modules/@types/semver/functions/cmp.d.ts","../../node_modules/@types/semver/functions/coerce.d.ts","../../node_modules/@types/semver/classes/comparator.d.ts","../../node_modules/@types/semver/classes/range.d.ts","../../node_modules/@types/semver/functions/satisfies.d.ts","../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../node_modules/@types/semver/ranges/min-version.d.ts","../../node_modules/@types/semver/ranges/valid.d.ts","../../node_modules/@types/semver/ranges/outside.d.ts","../../node_modules/@types/semver/ranges/gtr.d.ts","../../node_modules/@types/semver/ranges/ltr.d.ts","../../node_modules/@types/semver/ranges/intersects.d.ts","../../node_modules/@types/semver/ranges/simplify.d.ts","../../node_modules/@types/semver/ranges/subset.d.ts","../../node_modules/@types/semver/internals/identifiers.d.ts","../../node_modules/@types/semver/index.d.ts","../../node_modules/@types/stack-utils/index.d.ts","../../node_modules/@types/turbolinks/index.d.ts","../../node_modules/@types/webpack-env/index.d.ts","../../node_modules/@types/yargs-parser/index.d.ts","../../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[61],[122],[60,61,62,65,67],[59],[59,64],[82,115],[117],[118],[124,127],[81,107,115,141,142,144],[143],[113],[71],[112,113],[72],[73,81,82,89,98],[73,74,81,89],[105],[76,77,82,90],[77,98],[78,79,81,89],[79],[80,81],[81],[81,82,83,98,104],[82,83],[84,89,98,104],[81,82,84,85,89,98,101,104],[84,86,101,104],[114],[81,87],[88,104],[79,81,89,98],[90],[91],[71,92],[103],[94],[95],[81,96],[96,97,105,107],[81,98],[99],[100],[89,101],[102],[70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],[89,103],[95,104],[98,106],[107],[111],[81,83,98,104,107,108],[98,109],[38],[38,49],[35,36,37],[147,186],[147,171,186],[186],[147],[147,172,186],[147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185],[172,186],[190],[120,126],[124],[121,125],[130],[129,130],[129],[129,130,131,133,134,137,138,139,140],[130,134],[129,130,131,133,134,135,136],[129,134],[134,138],[130,131,132],[131],[129,130,134],[123],[39],[53,54],[38,39,43,44,45,46,47],[39,41],[38,39,44],[38,39,50],[43],[38,39,43,46],[38,39,40,42,45,47,48,51,52,55,56,57,98],[38,39,42,44,45,50,51,55,98],[38,98]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"9e8ca8ed051c2697578c023d9c29d6df689a083561feba5c14aedee895853999","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c29793071152b207c01ea1954e343be9a44d85234447b2b236acae9e709a383","impliedFormat":1},{"version":"a7e32dcb90bf0c1b7a1e4ac89b0f7747cbcba25e7beddc1ebf17be1e161842ad","impliedFormat":1},{"version":"8ca4709dbd22a34bcc1ebf93e1877645bdb02ebd3f3d9a211a299a8db2ee4ba1","affectsGlobalScope":true,"impliedFormat":1},{"version":"23b783df1d865df4eaa52cc0d0a31cc7082bb947041cd039fefb70e4ef893927","signature":"bfb42a08c6275f2f4216b801fe62806819fc9404ac284a669e799e8d75d64a41"},{"version":"c999ddca30821d7555ecb2daeb124fb820c2ddb3cdea44badf26ecfed918d983","signature":"f86c37474d632e9aaffb21f587b3d387440c682b175863ef2b0606b42244646f"},{"version":"fe96133a1f80531f6f031985f91a7dd6f4c5d825eb006ea1bc2ea27a1e6bc90b","signature":"ec83fa2a592730d6cb0a19275f9d2680185073711bb7df4f41542f85248f6733"},{"version":"a90a34ec2ed1f0395a9df45da76bcb5dc2cd7215cbad3a6b56d7b32e8ae34b13","signature":"c50697698e99ce2e54e6c2019e5f8808caeaea8adcb09b8c633fcf12b6e5b052"},{"version":"adb17fea4d847e1267ae1241fa1ac3917c7e332999ebdab388a24d82d4f58240","impliedFormat":1},{"version":"7b8a809945a762bda5b2af843b2100d508d8bb3f56610d52e06ff14588090e2c","signature":"e5e45f3e79d68c40027c738e589e7b91030321b87422fe81ae0a4ed0c31aacc9"},{"version":"0fe7b911ce54401a1081acce3535164367d084cb82b30209f5527a09267e8705","signature":"88136989354b82fa2b85b44122a14fe97e4a4011cd355e1177eff94521ec4546"},{"version":"7383c36c839bca83dd47c3a89f2549c40f43a965508ec3f48724b7f92f03212f","signature":"622b0052b866d092eba07edd852c8387fd7795ad843f28459ea2037d47557be1"},{"version":"5dc61ed80ed1a10b7396451013cde9a53427aa371b2969b271f3042c1a535aa2","signature":"a541b1cb49a4facfed8410772866153c831ddeef48d1758780426f03e289def6"},{"version":"c2a3da3e9ca4d2af1e3eea6e081e1b423a0ff784d4a69c8d51e5383164d144d5","signature":"aed3c72141d8f7af09129e98e9c8bad6ef629f49f274af14ae168b4d652cd30a","affectsGlobalScope":true},{"version":"05321b823dd3781d0b6aac8700bfdc0c9181d56479fe52ba6a40c9196fd661a8","impliedFormat":1},{"version":"f269a1c2a37fdf64fbf3808d72da60acdbd48d2023f5a16ab51b21de39dd318f","affectsGlobalScope":true,"impliedFormat":1},{"version":"2600d5cd5d653a62e1a22a0c894300919ab0e8c74e0fa1b17bd892d2418b9b3f","signature":"b9c4cb1a20a505341e4731b60e5c5ff7a01c9c964896fb3b175443da59b2c47c"},{"version":"9591b689e7f72cef8f31543aea42043f23d95621343f293790498b3c15cebc5c","signature":"c36671ab6fa870f4098595b4598979fe550698322e0471e0954b025402d68fb5"},{"version":"bc21af206a1024cb02f6d37698ed7a9f54b7a7937c826d7562eb3f95b74402f0","signature":"33dd13eccd122686a3f35561fcec524eae25b9c7cd935216cf58a5535398d34b"},{"version":"30a0dafaf51687c204ef1a81bc18b410b4034286222c915d5b3bc22ec010e21f","signature":"ef8a4d1857a5c7c8ed39232575bb06e64ee6740307937df732e9e26879a38e08"},{"version":"378481293c6685ff575c993352c9f51a462e88ac17ca6ff757e6a247cb621295","signature":"0caeaba9556e929b69c33a88c58b930f8842f6fdac8126f36698aae71a6b1f33","affectsGlobalScope":true},{"version":"2d3d335cb63d26d2e082da5ed8790835cead1b747a895159d26e96f32d837f39","signature":"24c2ce7868874d987b805e0ee01d3a77b803b882120969d818141872c556ddd6"},{"version":"93ad0e070fda8f735ddaa3cf63b20485a5cf63890a8a333ae43664dc4d41bb9a","signature":"87e85fabf012dce9d0e742291234e92206c6c141f7642cd53bae1961587afa02"},{"version":"1d04983baeda222d77011459aeb842c5edd30aa706956ff434ffdbe387e2f364","signature":"bafb5c31e63c0f88024eefcdae317a3a1171f500e32157adc015833fdf7cd615"},{"version":"9566baf39af3e8e8525367b91f8313d0f3dee7dd21aa76bb9ecbc5c3c66df739","impliedFormat":1},{"version":"b25c5f2970d06c729f464c0aeaa64b1a5b5f1355aa93554bb5f9c199b8624b1e","impliedFormat":1},{"version":"923c136dcbf20f140c369078a7eb56f6697889d104397d694f70e21dd08b1810","impliedFormat":1},{"version":"8041cfce439ff29d339742389de04c136e3029d6b1817f07b2d7fcbfb7534990","impliedFormat":1},{"version":"9566baf39af3e8e8525367b91f8313d0f3dee7dd21aa76bb9ecbc5c3c66df739","impliedFormat":1},{"version":"56dede90729ef85351f132d66e05510851211d627e2f2c6621475d4f7938f365","impliedFormat":1},{"version":"3e0a34f7207431d967dc32d593d1cda0c23975e9484bc8895b39d96ffca4a0d8","impliedFormat":1},{"version":"9566baf39af3e8e8525367b91f8313d0f3dee7dd21aa76bb9ecbc5c3c66df739","impliedFormat":1},{"version":"1fd8e7bda08591c056a1782cc7be557735461ee93be737a27e6714979cad018b","impliedFormat":1},{"version":"b6ddf3a46ccfa4441d8be84d2e9bf3087573c48804196faedbd4a25b60631beb","impliedFormat":1},{"version":"725d9be2fd48440256f4deb00649adffdbc5ecd282b09e89d4e200663792c34c","impliedFormat":1},{"version":"25b4a0c4fab47c373ee49df4c239826ee3430019fc0c1b5e59edc3e398b7468d","affectsGlobalScope":true,"impliedFormat":1},{"version":"7698983d080f951eaf53ff81e5c7bd61abc02e4a1a21266f1bd79ea85c0dc641","impliedFormat":1},{"version":"5726b5ce952dc5beaeb08d5f64236632501568a54a390363d2339ba1dc5393b1","impliedFormat":1},{"version":"674bedbfd2004e233e2a266a3d2286e524f0d58787a98522d834d6ccda1d215a","impliedFormat":1},{"version":"714637d594e1a38a075091fe464ca91c6abc0b154784b4287f6883200e28ccef","impliedFormat":1},{"version":"23edba5f47d3409810c563fe8034ae2c59e718e1ef8570f4152ccdde1915a096","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e9c55f894ca2d9cf63b5b0d43a8cec1772dd560233fd16275bc7a485eb82f83","impliedFormat":1},{"version":"64813a6beff756b9e3f3c06d1b648d55e7c90af2b55c64d13a69d6c7f573643d","impliedFormat":1},{"version":"5f0a09de75bd965c21dc6d73671ba88830272f9ed62897bb0aa9754b369b1eed","impliedFormat":1},{"version":"2b34e7fcba9e1f24e7f54ba5c8be5a8895b0b8b444ccf6548e04acdee0899317","impliedFormat":1},{"version":"06d2be99c3dd2ff52114d02ee443ba486ab482423df1941d3c97d6a92e924d70","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd4f140c07091b5e8a963c89e6fa3f44b6cfcbc11471b465cf63e2d020ad0eb","affectsGlobalScope":true,"impliedFormat":1},{"version":"a106a0bea088b70879ac88ff606dc253c0cc474ea05ad3a282b8bfb1091ae576","impliedFormat":1},{"version":"c98ce957db9eebd75f53edda3f6893e05ab2d2283b5667b18e31bcdb6427ed10","impliedFormat":1},{"version":"1f08bd8305d4a789a68f71ab622156dfff993aa51a2aa58b9ccf166cc6f9fcf7","impliedFormat":1},{"version":"9aff68f1b847b846d3d50a58c9f8f99389bedd0258d1b1c201f11b97ecfd36f8","impliedFormat":1},{"version":"1978992206803f5761e99e893d93b25abc818c5fe619674fdf2ae02b29f641ba","impliedFormat":1},{"version":"05fbe81f09fc455a2c343d2458d2b3c600c90b92b22926be765ee79326be9466","impliedFormat":1},{"version":"8e7d6dae9e19bbe47600dcfd4418db85b30ae7351474ea0aad5e628f9845d340","impliedFormat":1},{"version":"f20ea392f7f27feb7a90e5a24319a4e365b07bf83c39a547711fe7ff9df68657","impliedFormat":1},{"version":"32542c4660ecda892a333a533feedba31738ee538ef6a78eb73af647137bc3fc","impliedFormat":1},{"version":"0ecacea5047d1a7d350e7049dbd22f26435be5e8736a81a56afec5b3264db1ca","impliedFormat":1},{"version":"ffcb4ebde21f83370ed402583888b28651d2eb7f05bfec9482eb46d82adedd7f","impliedFormat":1},{"version":"06c004006016a51c4d1855527a523562c329dc44c473931c65f10373281f730e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a7b43c69f9602d198825e403ee34e5d64f83c48b391b2897e8c0e6f72bca35f8","impliedFormat":1},{"version":"f4a3fc4efc6944e7b7bd4ccfa45e0df68b6359808e6cf9d061f04fd964a7b2d3","impliedFormat":1},{"version":"73cad675aead7a2c05cf934e7e700c61d84b2037ac1d576c3f751199b25331da","impliedFormat":1},{"version":"8c3137ba3583ec18484429ec1c8eff89efdc42730542f157b38b102fdccc0c71","impliedFormat":1},{"version":"d84300d886b45a198c346158e4ff7ae361cc7bc1c3deab44afb3db7de56b5d25","impliedFormat":1},{"version":"94ca7beec4e274d32362b54e0133152f7b4be9487db7b005070c03880b6363aa","impliedFormat":1},{"version":"2d713cbcbd5bcc38d91546eaeea7bb1c8686dc4a2995a28556d957b1b9de11d9","impliedFormat":1},{"version":"bbf21f210782db4193359010a4710786add43e3b50aa42fc0d371f45b4e4d8d3","impliedFormat":1},{"version":"0b7733d83619ac4e3963e2a9f7c75dc1e9af6850cb2354c9554977813092c10a","impliedFormat":1},{"version":"3ce933f0c3955f67f67eb7d6b5c83c2c54a18472c1d6f2bb651e51dd40c84837","impliedFormat":1},{"version":"631e96db896d645f7132c488ad34a16d71fd2be9f44696f8c98289ee1c8cbfa9","impliedFormat":1},{"version":"2c77230d381cba81eb6f87cda2fbfff6c0427c6546c2e2590110effff37c58f7","impliedFormat":1},{"version":"da86ee9a2f09a4583db1d5e37815894967e1f694ad9f3c25e84e0e4d40411e14","impliedFormat":1},{"version":"66679e8ffbf1fddef1796c60757e54e6e6551dd9823f75ef2f80176473bdaaff","impliedFormat":1},{"version":"ddc086b1adac44e2fccf55422da1e90fa970e659d77f99712422a421564b4877","impliedFormat":1},{"version":"515ef1d99036ff0dafa5bf738e02222edea94e0d97a0aa0ff277ac5e96b57977","impliedFormat":1},{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true,"impliedFormat":1},{"version":"780058f4a804c8bdcdd2f60e7af64b2bc57d149c1586ee3db732a84d659a50bf","impliedFormat":1},{"version":"ae68a04912ee5a0f589276f9ec60b095f8c40d48128a4575b3fdd7d93806931c","impliedFormat":1},{"version":"19d580a3b42ad5caeaee266ae958260e23f2df0549ee201c886c8bd7a4f01d4e","impliedFormat":1},{"version":"e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","impliedFormat":1},{"version":"9c4c395e927045b324877acdc4bfb95f128f36bc9f073266a2f0342495075a4f","impliedFormat":1},{"version":"bf88ef4208a770ca39a844b182b3695df536326ea566893fdc5b8418702a331e","impliedFormat":1},{"version":"de18acda71730bac52f4b256ce7511bb56cc21f6f114c59c46782eff2f632857","impliedFormat":1},{"version":"7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","impliedFormat":1},{"version":"905c3e8f7ddaa6c391b60c05b2f4c3931d7127ad717a080359db3df510b7bdab","impliedFormat":1},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"46894b2a21a60f8449ca6b2b7223b7179bba846a61b1434bed77b34b2902c306","affectsGlobalScope":true,"impliedFormat":1},{"version":"3411c785dbe8fd42f7d644d1e05a7e72b624774a08a9356479754999419c3c5a","impliedFormat":99},{"version":"8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","impliedFormat":99},{"version":"66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","impliedFormat":99},{"version":"33f3795a4617f98b1bb8dac36312119d02f31897ae75436a1e109ce042b48ee8","impliedFormat":99},{"version":"2850c9c5dc28d34ad5f354117d0419f325fc8932d2a62eadc4dc52c018cd569b","impliedFormat":99},{"version":"c753948f7e0febe7aa1a5b71a714001a127a68861309b2c4127775aa9b6d4f24","impliedFormat":99},{"version":"3e7a40e023e1d4a9eef1a6f08a3ded8edacb67ae5fce072014205d730f717ba5","impliedFormat":99},{"version":"a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","impliedFormat":99},{"version":"382100b010774614310d994bbf16cc9cd291c14f0d417126c7a7cfad1dc1d3f8","impliedFormat":99},{"version":"91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","impliedFormat":99},{"version":"4fdf56315340bd1770eb52e1601c3a98e45b1d207202831357e99ce29c35b55c","impliedFormat":99},{"version":"927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","impliedFormat":99},{"version":"be6fd74528b32986fbf0cd2cfa9192a5ed7f369060b32a7adcb0c8d055708e61","impliedFormat":99},{"version":"cc256fd958b33576ed32c7338c64adb0d08fc0c2c6525010202fab83f32745da","impliedFormat":1},{"version":"fd0589ca571ad090b531d8c095e26caa53d4825c64d3ff2b2b1ab95d72294175","impliedFormat":1},{"version":"669843ecafb89ae1e944df06360e8966219e4c1c34c0d28aa2503272cdd444a7","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"5b5337f28573ffdbc95c3653c4a7961d0f02fdf4788888253bf74a3b5a05443e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"85f8ebd7f245e8bf29da270e8b53dcdd17528826ffd27176c5fc7e426213ef5a","impliedFormat":1},{"version":"c6c4fea9acc55d5e38ff2b70d57ab0b5cdbd08f8bc5d7a226e322cea128c5b57","impliedFormat":1},{"version":"fbd7321f009b1558c08ce03512281a4e6054d3f387eacbc77c2787eec2688e0f","impliedFormat":1},{"version":"f2556de9025de4e422d6088b7c2f7a9d9eddb6913026adc2179b03c629c88579","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdd93ec24853e61bfa4c63ebaa425ff3e474156e87a47d90122e1d8cc717c1f","impliedFormat":1},{"version":"af6f08f05ca54890779e07b70eebabcbaf192785d31b087f05ac18ad437eff8e","impliedFormat":1}],"root":[[39,42],[44,48],[51,58]],"options":{"allowJs":true,"declaration":true,"esModuleInterop":true,"jsx":2,"module":1,"noImplicitAny":true,"outDir":"./","strict":true,"target":1},"referencedMap":[[62,1],[123,2],[68,3],[60,4],[65,5],[64,4],[67,4],[116,6],[118,7],[119,8],[128,9],[143,10],[144,11],[113,12],[71,13],[114,14],[72,15],[73,16],[74,17],[75,18],[76,19],[77,20],[78,21],[79,22],[80,23],[81,24],[82,25],[83,26],[84,27],[85,28],[86,29],[115,30],[87,31],[88,32],[89,33],[90,34],[91,35],[92,36],[93,37],[94,38],[95,39],[96,40],[97,41],[98,42],[99,43],[100,44],[101,45],[102,46],[112,47],[103,48],[104,49],[105,18],[106,50],[107,51],[111,52],[108,53],[109,54],[49,55],[43,55],[50,56],[38,57],[171,58],[172,59],[147,60],[150,60],[169,58],[170,58],[160,58],[159,61],[157,58],[152,58],[165,58],[163,58],[167,58],[151,58],[164,58],[168,58],[153,58],[154,58],[166,58],[148,58],[155,58],[156,58],[158,58],[162,58],[173,62],[161,58],[149,58],[186,63],[180,62],[182,64],[181,62],[174,62],[175,62],[177,62],[179,62],[183,64],[184,64],[176,64],[178,64],[191,65],[127,66],[125,67],[126,68],[131,69],[140,70],[130,71],[141,72],[136,73],[137,74],[135,75],[139,76],[133,77],[132,78],[138,79],[134,70],[124,80],[40,81],[55,82],[48,83],[42,84],[45,85],[51,86],[41,81],[44,81],[46,87],[47,88],[58,89],[56,90],[52,81],[39,91]],"version":"5.6.2"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ReactElement, ReactNode, Component, ComponentType } from 'react';
|
|
2
|
-
type
|
|
2
|
+
import type { Readable } from 'stream';
|
|
3
|
+
type Store = unknown;
|
|
3
4
|
type ReactComponent = ComponentType<any> | string;
|
|
4
5
|
export interface RailsContext {
|
|
5
6
|
railsEnv: string;
|
|
@@ -40,16 +41,44 @@ interface ServerRenderResult {
|
|
|
40
41
|
}
|
|
41
42
|
type CreateReactOutputResult = ServerRenderResult | ReactElement | Promise<string>;
|
|
42
43
|
type RenderFunctionResult = ReactComponent | ServerRenderResult | Promise<string>;
|
|
44
|
+
/**
|
|
45
|
+
* Render functions are used to create dynamic React components or server-rendered HTML with side effects.
|
|
46
|
+
* They receive two arguments: props and railsContext.
|
|
47
|
+
*
|
|
48
|
+
* @param props - The component props passed to the render function
|
|
49
|
+
* @param railsContext - The Rails context object containing environment information
|
|
50
|
+
* @returns A string, React component, React element, or a Promise resolving to a string
|
|
51
|
+
*
|
|
52
|
+
* @remarks
|
|
53
|
+
* To distinguish a render function from a React Function Component:
|
|
54
|
+
* 1. Ensure it accepts two parameters (props and railsContext), even if railsContext is unused, or
|
|
55
|
+
* 2. Set the `renderFunction` property to `true` on the function object.
|
|
56
|
+
*
|
|
57
|
+
* If neither condition is met, it will be treated as a React Function Component,
|
|
58
|
+
* and ReactDOMServer will attempt to render it.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* // Option 1: Two-parameter function
|
|
62
|
+
* const renderFunction = (props, railsContext) => { ... };
|
|
63
|
+
*
|
|
64
|
+
* // Option 2: Using renderFunction property
|
|
65
|
+
* const anotherRenderFunction = (props) => { ... };
|
|
66
|
+
* anotherRenderFunction.renderFunction = true;
|
|
67
|
+
*/
|
|
43
68
|
interface RenderFunction {
|
|
44
69
|
(props?: any, railsContext?: RailsContext, domNodeId?: string): RenderFunctionResult;
|
|
45
|
-
renderFunction?:
|
|
70
|
+
renderFunction?: true;
|
|
46
71
|
}
|
|
47
72
|
type ReactComponentOrRenderFunction = ReactComponent | RenderFunction;
|
|
48
73
|
export type { // eslint-disable-line import/prefer-default-export
|
|
49
|
-
ReactComponentOrRenderFunction, ReactComponent, AuthenticityHeaders, RenderFunction, RenderFunctionResult, StoreGenerator, CreateReactOutputResult, ServerRenderResult, };
|
|
74
|
+
ReactComponentOrRenderFunction, ReactComponent, AuthenticityHeaders, RenderFunction, RenderFunctionResult, Store, StoreGenerator, CreateReactOutputResult, ServerRenderResult, };
|
|
50
75
|
export interface RegisteredComponent {
|
|
51
76
|
name: string;
|
|
52
77
|
component: ReactComponentOrRenderFunction;
|
|
78
|
+
/**
|
|
79
|
+
* Indicates if the registered component is a RenderFunction
|
|
80
|
+
* @see RenderFunction for more details on its behavior and usage.
|
|
81
|
+
*/
|
|
53
82
|
renderFunction: boolean;
|
|
54
83
|
isRenderer: boolean;
|
|
55
84
|
}
|
|
@@ -68,25 +97,22 @@ export interface CreateParams extends Params {
|
|
|
68
97
|
componentObj: RegisteredComponent;
|
|
69
98
|
shouldHydrate?: boolean;
|
|
70
99
|
}
|
|
71
|
-
interface FileError extends Error {
|
|
72
|
-
fileName: string;
|
|
73
|
-
lineNumber: string;
|
|
74
|
-
}
|
|
75
100
|
export interface ErrorOptions {
|
|
76
|
-
e:
|
|
101
|
+
e: Error & {
|
|
102
|
+
fileName?: string;
|
|
103
|
+
lineNumber?: string;
|
|
104
|
+
};
|
|
77
105
|
name?: string;
|
|
78
106
|
jsCode?: string;
|
|
79
107
|
serverSide: boolean;
|
|
80
108
|
}
|
|
81
|
-
export
|
|
82
|
-
message: string;
|
|
83
|
-
stack: string;
|
|
84
|
-
}
|
|
109
|
+
export type RenderingError = Pick<Error, 'message' | 'stack'>;
|
|
85
110
|
export interface RenderResult {
|
|
86
111
|
html: string | null;
|
|
87
112
|
consoleReplayScript: string;
|
|
88
113
|
hasErrors: boolean;
|
|
89
114
|
renderingError?: RenderingError;
|
|
115
|
+
isShellReady?: boolean;
|
|
90
116
|
}
|
|
91
117
|
export interface Root {
|
|
92
118
|
render(children: ReactNode): void;
|
|
@@ -97,8 +123,12 @@ export interface ReactOnRails {
|
|
|
97
123
|
register(components: {
|
|
98
124
|
[id: string]: ReactComponentOrRenderFunction;
|
|
99
125
|
}): void;
|
|
126
|
+
/** @deprecated Use registerStoreGenerators instead */
|
|
100
127
|
registerStore(stores: {
|
|
101
|
-
[id: string]:
|
|
128
|
+
[id: string]: StoreGenerator;
|
|
129
|
+
}): void;
|
|
130
|
+
registerStoreGenerators(storeGenerators: {
|
|
131
|
+
[id: string]: StoreGenerator;
|
|
102
132
|
}): void;
|
|
103
133
|
getStore(name: string, throwIfMissing?: boolean): Store | undefined;
|
|
104
134
|
setOptions(newOptions: {
|
|
@@ -118,6 +148,7 @@ export interface ReactOnRails {
|
|
|
118
148
|
render(name: string, props: Record<string, string>, domNodeId: string, hydrate: boolean): RenderReturnType;
|
|
119
149
|
getComponent(name: string): RegisteredComponent;
|
|
120
150
|
serverRenderReactComponent(options: RenderParams): null | string | Promise<RenderResult>;
|
|
151
|
+
streamServerRenderedReactComponent(options: RenderParams): Readable;
|
|
121
152
|
handleError(options: ErrorOptions): string | undefined;
|
|
122
153
|
buildConsoleReplay(): string;
|
|
123
154
|
registeredComponents(): Map<string, RegisteredComponent>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-on-rails",
|
|
3
|
-
"version": "14.0
|
|
3
|
+
"version": "14.1.0",
|
|
4
4
|
"description": "react-on-rails JavaScript for react_on_rails Ruby gem",
|
|
5
5
|
"main": "node_package/lib/ReactOnRails.js",
|
|
6
6
|
"directories": {
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"@babel/preset-react": "^7.18.6",
|
|
16
16
|
"@babel/types": "^7.20.7",
|
|
17
17
|
"@types/jest": "^29.0.0",
|
|
18
|
-
"@types/react": "^
|
|
19
|
-
"@types/react-dom": "^
|
|
18
|
+
"@types/react": "^18.2.0",
|
|
19
|
+
"@types/react-dom": "^18.2.0",
|
|
20
20
|
"@types/turbolinks": "^5.2.2",
|
|
21
21
|
"@types/webpack-env": "^1.18.4",
|
|
22
22
|
"@typescript-eslint/eslint-plugin": "^6.18.1",
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
"prettier": "^2.8.8",
|
|
40
40
|
"prettier-eslint-cli": "^5.0.0",
|
|
41
41
|
"prop-types": "^15.8.1",
|
|
42
|
-
"react": "
|
|
43
|
-
"react-dom": "
|
|
42
|
+
"react": "18.3.0-canary-670811593-20240322",
|
|
43
|
+
"react-dom": "18.3.0-canary-670811593-20240322",
|
|
44
44
|
"react-transform-hmr": "^1.0.4",
|
|
45
45
|
"redux": "^4.2.1",
|
|
46
46
|
"ts-jest": "^29.1.0",
|
|
47
|
-
"typescript": "^5.
|
|
47
|
+
"typescript": "^5.6.2"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@babel/runtime-corejs3": "^7.12.5"
|
|
@@ -61,6 +61,8 @@
|
|
|
61
61
|
"test": "jest node_package/tests",
|
|
62
62
|
"clean": "rm -rf node_package/lib",
|
|
63
63
|
"start": "nps",
|
|
64
|
+
"prepack": "nps build.prepack",
|
|
65
|
+
"prepare": "nps build.prepack",
|
|
64
66
|
"prepublishOnly": "yarn run build",
|
|
65
67
|
"build": "yarn run clean && yarn run tsc --declaration",
|
|
66
68
|
"build-watch": "yarn run clean && yarn run tsc --watch",
|
|
@@ -88,5 +90,6 @@
|
|
|
88
90
|
"bugs": {
|
|
89
91
|
"url": "https://github.com/shakacode/react_on_rails/issues"
|
|
90
92
|
},
|
|
91
|
-
"homepage": "https://github.com/shakacode/react_on_rails#readme"
|
|
93
|
+
"homepage": "https://github.com/shakacode/react_on_rails#readme",
|
|
94
|
+
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
|
92
95
|
}
|