@module-federation/nextjs-mf 0.0.0-feat-node-support-1702694175665 → 0.0.0-feat-node-support-1702930274547
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/package.json +7 -7
- package/src/plugins/container/InvertedContainerPlugin.js +2 -1
- package/src/plugins/container/InvertedContainerPlugin.js.map +1 -1
- package/utils/build-utils.d.ts +10 -0
- package/utils/build-utils.js +24 -0
- package/utils/build-utils.js.map +1 -0
- package/utils/flushedChunks.d.ts +22 -0
- package/utils/flushedChunks.js +67 -0
- package/utils/flushedChunks.js.map +1 -0
- package/utils/index.d.ts +30 -0
- package/utils/index.js +68 -0
- package/utils/index.js.map +1 -0
- /package/src/{default-delegate.cjs → default-delegate.js} +0 -0
- /package/src/{federation-noop.cjs → federation-noop.js} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@module-federation/nextjs-mf",
|
|
3
|
-
"version": "0.0.0-feat-node-support-
|
|
3
|
+
"version": "0.0.0-feat-node-support-1702930274547",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "src/index.d.ts",
|
|
@@ -22,12 +22,12 @@
|
|
|
22
22
|
"semver": "7.5.4",
|
|
23
23
|
"tapable": "2.2.1",
|
|
24
24
|
"webpack-sources": "^3.2.3",
|
|
25
|
-
"@module-federation/enhanced": "0.0.0-feat-node-support-
|
|
26
|
-
"@module-federation/node": "0.0.0-feat-node-support-
|
|
27
|
-
"@module-federation/runtime": "0.0.0-feat-node-support-
|
|
28
|
-
"@module-federation/sdk": "0.0.0-feat-node-support-
|
|
29
|
-
"@module-federation/utilities": "0.0.0-feat-node-support-
|
|
30
|
-
"@module-federation/webpack-bundler-runtime": "0.0.0-feat-node-support-
|
|
25
|
+
"@module-federation/enhanced": "0.0.0-feat-node-support-1702930274546",
|
|
26
|
+
"@module-federation/node": "0.0.0-feat-node-support-1702930274547",
|
|
27
|
+
"@module-federation/runtime": "0.0.0-feat-node-support-1702930274548",
|
|
28
|
+
"@module-federation/sdk": "0.0.0-feat-node-support-1702930274548",
|
|
29
|
+
"@module-federation/utilities": "0.0.0-feat-node-support-1702930274548",
|
|
30
|
+
"@module-federation/webpack-bundler-runtime": "0.0.0-feat-node-support-1702930274549"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"next": "^12 || ^13 || ^14",
|
|
@@ -16,7 +16,8 @@ class InvertedContainerPlugin {
|
|
|
16
16
|
chunkToEmbed: this.options.chunkToEmbed,
|
|
17
17
|
}).apply(compiler);
|
|
18
18
|
new enhanced_1.AsyncBoundaryPlugin({
|
|
19
|
-
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
eager: (module) => /\.federation/.test(module?.request || ''),
|
|
20
21
|
//@ts-ignore
|
|
21
22
|
}).apply(compiler);
|
|
22
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvertedContainerPlugin.js","sourceRoot":"","sources":["../../../../../../packages/nextjs-mf/src/plugins/container/InvertedContainerPlugin.ts"],"names":[],"mappings":";;;;;AAEA,wFAAgE;AAChE,0DAAkE;AAUlE,MAAM,uBAAuB;IAG3B,YAAY,OAAiC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,QAAkB;QAC7B,IAAI,iCAAuB,CAAC;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;SACxC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEnB,IAAI,8BAAmB,CAAC;YACtB,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"InvertedContainerPlugin.js","sourceRoot":"","sources":["../../../../../../packages/nextjs-mf/src/plugins/container/InvertedContainerPlugin.ts"],"names":[],"mappings":";;;;;AAEA,wFAAgE;AAChE,0DAAkE;AAUlE,MAAM,uBAAuB;IAG3B,YAAY,OAAiC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,QAAkB;QAC7B,IAAI,iCAAuB,CAAC;YAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;SACxC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEnB,IAAI,8BAAmB,CAAC;YACtB,aAAa;YACb,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;YAC7D,YAAY;SACb,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;CACF;AAED,kBAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Computes the remote filename based on the server status and the provided filename.
|
|
3
|
+
* If the server is active and a filename is provided, it returns the basename of the filename.
|
|
4
|
+
* Otherwise, it returns the provided filename.
|
|
5
|
+
*
|
|
6
|
+
* @param {boolean} isServer - Indicates if the server is active.
|
|
7
|
+
* @param {string} filename - The filename to compute.
|
|
8
|
+
* @returns {string} The computed filename.
|
|
9
|
+
*/
|
|
10
|
+
export declare const computeRemoteFilename: (isServer: boolean, filename: string) => string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.computeRemoteFilename = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
/**
|
|
9
|
+
* Computes the remote filename based on the server status and the provided filename.
|
|
10
|
+
* If the server is active and a filename is provided, it returns the basename of the filename.
|
|
11
|
+
* Otherwise, it returns the provided filename.
|
|
12
|
+
*
|
|
13
|
+
* @param {boolean} isServer - Indicates if the server is active.
|
|
14
|
+
* @param {string} filename - The filename to compute.
|
|
15
|
+
* @returns {string} The computed filename.
|
|
16
|
+
*/
|
|
17
|
+
const computeRemoteFilename = (isServer, filename) => {
|
|
18
|
+
if (isServer && filename) {
|
|
19
|
+
return path_1.default.basename(filename);
|
|
20
|
+
}
|
|
21
|
+
return filename;
|
|
22
|
+
};
|
|
23
|
+
exports.computeRemoteFilename = computeRemoteFilename;
|
|
24
|
+
//# sourceMappingURL=build-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-utils.js","sourceRoot":"","sources":["../../../../packages/nextjs-mf/utils/build-utils.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB;;;;;;;;GAQG;AACI,MAAM,qBAAqB,GAAG,CAAC,QAAiB,EAAE,QAAgB,EAAE,EAAE;IAC3E,IAAI,QAAQ,IAAI,QAAQ,EAAE;QACxB,OAAO,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAChC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AALW,QAAA,qBAAqB,yBAKhC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* FlushedChunks component.
|
|
4
|
+
* This component creates script and link elements for each chunk.
|
|
5
|
+
*
|
|
6
|
+
* @param {FlushedChunksProps} props - The properties of the component.
|
|
7
|
+
* @param {string[]} props.chunks - The chunks to be flushed.
|
|
8
|
+
* @returns {React.ReactElement} The created script and link elements.
|
|
9
|
+
*/
|
|
10
|
+
export declare const FlushedChunks: ({ chunks }: FlushedChunksProps) => React.FunctionComponentElement<{
|
|
11
|
+
children?: React.ReactNode;
|
|
12
|
+
}>;
|
|
13
|
+
/**
|
|
14
|
+
* FlushedChunksProps interface.
|
|
15
|
+
* This interface represents the properties of the FlushedChunks component.
|
|
16
|
+
*
|
|
17
|
+
* @interface
|
|
18
|
+
* @property {string[]} chunks - The chunks to be flushed.
|
|
19
|
+
*/
|
|
20
|
+
export interface FlushedChunksProps {
|
|
21
|
+
chunks: string[];
|
|
22
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.FlushedChunks = void 0;
|
|
27
|
+
const React = __importStar(require("react"));
|
|
28
|
+
/**
|
|
29
|
+
* FlushedChunks component.
|
|
30
|
+
* This component creates script and link elements for each chunk.
|
|
31
|
+
*
|
|
32
|
+
* @param {FlushedChunksProps} props - The properties of the component.
|
|
33
|
+
* @param {string[]} props.chunks - The chunks to be flushed.
|
|
34
|
+
* @returns {React.ReactElement} The created script and link elements.
|
|
35
|
+
*/
|
|
36
|
+
const FlushedChunks = ({ chunks = [] }) => {
|
|
37
|
+
const scripts = chunks
|
|
38
|
+
.filter((c) => {
|
|
39
|
+
// TODO: host shouldnt flush its own remote out
|
|
40
|
+
// if(c.includes('?')) {
|
|
41
|
+
// return c.split('?')[0].endsWith('.js')
|
|
42
|
+
// }
|
|
43
|
+
return c.endsWith('.js');
|
|
44
|
+
})
|
|
45
|
+
.map((chunk) => {
|
|
46
|
+
if (!chunk.includes('?') && chunk.includes('remoteEntry')) {
|
|
47
|
+
chunk = chunk + '?t=' + Date.now();
|
|
48
|
+
}
|
|
49
|
+
return React.createElement('script', {
|
|
50
|
+
key: chunk,
|
|
51
|
+
src: chunk,
|
|
52
|
+
async: true,
|
|
53
|
+
}, null);
|
|
54
|
+
});
|
|
55
|
+
const css = chunks
|
|
56
|
+
.filter((c) => c.endsWith('.css'))
|
|
57
|
+
.map((chunk) => {
|
|
58
|
+
return React.createElement('link', {
|
|
59
|
+
key: chunk,
|
|
60
|
+
href: chunk,
|
|
61
|
+
rel: 'stylesheet',
|
|
62
|
+
}, null);
|
|
63
|
+
});
|
|
64
|
+
return React.createElement(React.Fragment, null, css, scripts);
|
|
65
|
+
};
|
|
66
|
+
exports.FlushedChunks = FlushedChunks;
|
|
67
|
+
//# sourceMappingURL=flushedChunks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flushedChunks.js","sourceRoot":"","sources":["../../../../packages/nextjs-mf/utils/flushedChunks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAE/B;;;;;;;GAOG;AACI,MAAM,aAAa,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,EAAsB,EAAE,EAAE;IACnE,MAAM,OAAO,GAAG,MAAM;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,+CAA+C;QAC/C,wBAAwB;QACxB,2CAA2C;QAC3C,IAAI;QACJ,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACzD,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;SACpC;QACD,OAAO,KAAK,CAAC,aAAa,CACxB,QAAQ,EACR;YACE,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,KAAK,EAAE,IAAI;SACZ,EACD,IAAI,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,MAAM,GAAG,GAAG,MAAM;SACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,OAAO,KAAK,CAAC,aAAa,CACxB,MAAM,EACN;YACE,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,YAAY;SAClB,EACD,IAAI,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC,CAAC;AAvCW,QAAA,aAAa,iBAuCxB"}
|
package/utils/index.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts the URL and global from the module federation utilities.
|
|
3
|
+
* @module @module-federation/utilities/src/utils/pure
|
|
4
|
+
*/
|
|
5
|
+
export { extractUrlAndGlobal } from '@module-federation/utilities/src/utils/pure';
|
|
6
|
+
/**
|
|
7
|
+
* Injects a script from the module federation utilities.
|
|
8
|
+
* @module @module-federation/utilities/src/utils/common
|
|
9
|
+
*/
|
|
10
|
+
export { injectScript } from '@module-federation/utilities/src/utils/common';
|
|
11
|
+
/**
|
|
12
|
+
* Flushes chunks from the module federation node utilities.
|
|
13
|
+
* @module @module-federation/node/utils
|
|
14
|
+
*/
|
|
15
|
+
export { flushChunks } from '@module-federation/node/utils';
|
|
16
|
+
/**
|
|
17
|
+
* Exports the FlushedChunks component from the current directory.
|
|
18
|
+
*/
|
|
19
|
+
export { FlushedChunks } from './flushedChunks';
|
|
20
|
+
/**
|
|
21
|
+
* Exports the FlushedChunksProps type from the current directory.
|
|
22
|
+
*/
|
|
23
|
+
export type { FlushedChunksProps } from './flushedChunks';
|
|
24
|
+
/**
|
|
25
|
+
* Revalidates the current state.
|
|
26
|
+
* If the function is called on the client side, it logs an error and returns a resolved promise with false.
|
|
27
|
+
* If the function is called on the server side, it imports the revalidate function from the module federation node utilities and returns the result of calling that function.
|
|
28
|
+
* @returns {Promise<boolean>} A promise that resolves with a boolean.
|
|
29
|
+
*/
|
|
30
|
+
export declare const revalidate: () => Promise<boolean>;
|
package/utils/index.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.revalidate = exports.FlushedChunks = exports.flushChunks = exports.injectScript = exports.extractUrlAndGlobal = void 0;
|
|
27
|
+
/**
|
|
28
|
+
* Extracts the URL and global from the module federation utilities.
|
|
29
|
+
* @module @module-federation/utilities/src/utils/pure
|
|
30
|
+
*/
|
|
31
|
+
var pure_1 = require("@module-federation/utilities/src/utils/pure");
|
|
32
|
+
Object.defineProperty(exports, "extractUrlAndGlobal", { enumerable: true, get: function () { return pure_1.extractUrlAndGlobal; } });
|
|
33
|
+
/**
|
|
34
|
+
* Injects a script from the module federation utilities.
|
|
35
|
+
* @module @module-federation/utilities/src/utils/common
|
|
36
|
+
*/
|
|
37
|
+
var common_1 = require("@module-federation/utilities/src/utils/common");
|
|
38
|
+
Object.defineProperty(exports, "injectScript", { enumerable: true, get: function () { return common_1.injectScript; } });
|
|
39
|
+
/**
|
|
40
|
+
* Flushes chunks from the module federation node utilities.
|
|
41
|
+
* @module @module-federation/node/utils
|
|
42
|
+
*/
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
var utils_1 = require("@module-federation/node/utils");
|
|
45
|
+
Object.defineProperty(exports, "flushChunks", { enumerable: true, get: function () { return utils_1.flushChunks; } });
|
|
46
|
+
/**
|
|
47
|
+
* Exports the FlushedChunks component from the current directory.
|
|
48
|
+
*/
|
|
49
|
+
var flushedChunks_1 = require("./flushedChunks");
|
|
50
|
+
Object.defineProperty(exports, "FlushedChunks", { enumerable: true, get: function () { return flushedChunks_1.FlushedChunks; } });
|
|
51
|
+
/**
|
|
52
|
+
* Revalidates the current state.
|
|
53
|
+
* If the function is called on the client side, it logs an error and returns a resolved promise with false.
|
|
54
|
+
* If the function is called on the server side, it imports the revalidate function from the module federation node utilities and returns the result of calling that function.
|
|
55
|
+
* @returns {Promise<boolean>} A promise that resolves with a boolean.
|
|
56
|
+
*/
|
|
57
|
+
const revalidate = () => {
|
|
58
|
+
if (typeof window !== 'undefined') {
|
|
59
|
+
console.error('revalidate should only be called server-side');
|
|
60
|
+
return Promise.resolve(false);
|
|
61
|
+
}
|
|
62
|
+
// @ts-ignore
|
|
63
|
+
return Promise.resolve().then(() => __importStar(require('@module-federation/node/utils'))).then((utils) => {
|
|
64
|
+
return utils.revalidate();
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
exports.revalidate = revalidate;
|
|
68
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/nextjs-mf/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;GAGG;AACH,oEAAkF;AAAzE,2GAAA,mBAAmB,OAAA;AAE5B;;;GAGG;AACH,wEAA6E;AAApE,sGAAA,YAAY,OAAA;AAErB;;;GAGG;AACH,aAAa;AACb,uDAA4D;AAAnD,oGAAA,WAAW,OAAA;AAEpB;;GAEG;AACH,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAOtB;;;;;GAKG;AACI,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAC/B;IACD,aAAa;IACb,OAAO,kDAAO,+BAA+B,IAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5D,OAAO,KAAK,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AATW,QAAA,UAAU,cASrB"}
|
|
File without changes
|
|
File without changes
|