@common-stack/generate-plugin 5.0.6-alpha.4 → 5.0.6-alpha.7
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/CHANGELOG.md +8 -0
- package/README.md +280 -10
- package/cde-config.json +86 -0
- package/lib/constants/index.cjs +2 -1
- package/lib/constants/index.cjs.map +1 -1
- package/lib/constants/index.d.ts +1 -0
- package/lib/constants/index.mjs +2 -1
- package/lib/constants/index.mjs.map +1 -1
- package/lib/generators/add-backend/files/Dockerfile +1 -1
- package/lib/generators/add-backend/files/package.json +1 -60
- package/lib/generators/add-backend/generator.cjs +21 -17
- package/lib/generators/add-backend/generator.cjs.map +1 -1
- package/lib/generators/add-backend/generator.d.ts +1 -0
- package/lib/generators/add-backend/generator.mjs +21 -17
- package/lib/generators/add-backend/generator.mjs.map +1 -1
- package/lib/generators/add-browser-package/generator.cjs +14 -16
- package/lib/generators/add-browser-package/generator.cjs.map +1 -1
- package/lib/generators/add-browser-package/generator.d.ts +1 -0
- package/lib/generators/add-browser-package/generator.mjs +14 -16
- package/lib/generators/add-browser-package/generator.mjs.map +1 -1
- package/lib/generators/add-client-package/generator.cjs +14 -16
- package/lib/generators/add-client-package/generator.cjs.map +1 -1
- package/lib/generators/add-client-package/generator.d.ts +1 -0
- package/lib/generators/add-client-package/generator.mjs +14 -16
- package/lib/generators/add-client-package/generator.mjs.map +1 -1
- package/lib/generators/add-core-package/generator.cjs +14 -16
- package/lib/generators/add-core-package/generator.cjs.map +1 -1
- package/lib/generators/add-core-package/generator.d.ts +1 -0
- package/lib/generators/add-core-package/generator.mjs +14 -16
- package/lib/generators/add-core-package/generator.mjs.map +1 -1
- package/lib/generators/add-frontend/frameworks/tailwindui/entry.client.tsx.template +90 -0
- package/lib/generators/add-frontend/frameworks/tailwindui/entry.server.tsx.template +238 -0
- package/lib/generators/add-frontend/frameworks/tailwindui/root.tsx.template +117 -0
- package/lib/generators/add-frontend/frameworks/tailwindui/tailwind.css +3 -0
- package/lib/generators/add-frontend/generator.cjs +60 -42
- package/lib/generators/add-frontend/generator.cjs.map +1 -1
- package/lib/generators/add-frontend/generator.d.ts +1 -0
- package/lib/generators/add-frontend/generator.mjs +60 -42
- package/lib/generators/add-frontend/generator.mjs.map +1 -1
- package/lib/generators/add-frontend/schema.json +1 -1
- package/lib/generators/add-frontend/templates/package.json +17 -76
- package/lib/generators/add-frontend/templates/postcss.config.js +6 -0
- package/lib/generators/add-frontend/templates/tailwind.config.ts.template +12 -0
- package/lib/generators/add-fullstack/files/jest-mongodb-config.js +3 -2
- package/lib/generators/add-fullstack/files/jest.config copy.js +27 -0
- package/lib/generators/add-fullstack/files/jest.config.base.js +43 -4
- package/lib/generators/add-fullstack/files/jest.config.base.mjs +99 -0
- package/lib/generators/add-fullstack/files/jest.config.mongodb.mjs +3 -0
- package/lib/generators/add-fullstack/files/lint-staged.config.js +4 -1
- package/lib/generators/add-fullstack/files/nx.json +18 -13
- package/lib/generators/add-fullstack/files/tools/cli/helpers/util.js +1 -1
- package/lib/generators/add-fullstack/files/tools/deploy-cli/updateLernaVersion.js +1 -1
- package/lib/generators/add-fullstack/files/tools/html-plugin-template.ejs +28 -0
- package/lib/generators/add-fullstack/files/tools/prettier.config.js +8 -0
- package/lib/generators/add-fullstack/files/tools/rollup/rollupPluginGenerateJson.mjs +48 -0
- package/lib/generators/add-fullstack/files/tools/rollup/rollupPluginModifyLibFiles.mjs +410 -0
- package/lib/generators/add-fullstack/files/tools/runLint.mjs +15 -0
- package/lib/generators/add-fullstack/files/tools/sortPackageJson.mjs +0 -1
- package/lib/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -0
- package/lib/generators/add-fullstack/files/tools/update-dependency-link.mjs +138 -0
- package/lib/generators/add-fullstack/files/tools/update-dependency-version.js +104 -89
- package/lib/generators/add-fullstack/files/tools/updateUtils.mjs +77 -0
- package/lib/generators/add-fullstack/generator.cjs +63 -2
- package/lib/generators/add-fullstack/generator.cjs.map +1 -1
- package/lib/generators/add-fullstack/generator.mjs +63 -2
- package/lib/generators/add-fullstack/generator.mjs.map +1 -1
- package/lib/generators/add-fullstack/schema.json +4 -0
- package/lib/generators/add-moleculer/generator.cjs +14 -16
- package/lib/generators/add-moleculer/generator.cjs.map +1 -1
- package/lib/generators/add-moleculer/generator.d.ts +1 -0
- package/lib/generators/add-moleculer/generator.mjs +14 -16
- package/lib/generators/add-moleculer/generator.mjs.map +1 -1
- package/lib/generators/add-server-package/generator.cjs +14 -16
- package/lib/generators/add-server-package/generator.cjs.map +1 -1
- package/lib/generators/add-server-package/generator.d.ts +1 -0
- package/lib/generators/add-server-package/generator.mjs +14 -16
- package/lib/generators/add-server-package/generator.mjs.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.mjs +1 -1
- package/package.json +3 -2
- package/src/constants/index.ts +2 -1
- package/src/generators/add-backend/generator.ts +8 -4
- package/src/generators/add-browser-package/generator.ts +7 -6
- package/src/generators/add-client-package/generator.ts +7 -6
- package/src/generators/add-core-package/generator.ts +7 -6
- package/src/generators/add-frontend/frameworks/tailwindui/entry.client.tsx.template +90 -0
- package/src/generators/add-frontend/frameworks/tailwindui/entry.server.tsx.template +238 -0
- package/src/generators/add-frontend/frameworks/tailwindui/root.tsx.template +117 -0
- package/src/generators/add-frontend/frameworks/tailwindui/tailwind.css +3 -0
- package/src/generators/add-frontend/generator.ts +24 -2
- package/src/generators/add-frontend/schema.json +1 -1
- package/src/generators/add-fullstack/files/jest-mongodb-config.js +3 -2
- package/src/generators/add-fullstack/files/jest.config copy.js +27 -0
- package/src/generators/add-fullstack/files/jest.config.base.js +43 -4
- package/src/generators/add-fullstack/files/jest.config.base.mjs +99 -0
- package/src/generators/add-fullstack/files/jest.config.mongodb.mjs +3 -0
- package/src/generators/add-fullstack/files/lint-staged.config.js +4 -1
- package/src/generators/add-fullstack/files/nx.json +18 -13
- package/src/generators/add-fullstack/files/tools/cli/helpers/util.js +1 -1
- package/src/generators/add-fullstack/files/tools/deploy-cli/updateLernaVersion.js +1 -1
- package/src/generators/add-fullstack/files/tools/html-plugin-template.ejs +28 -0
- package/src/generators/add-fullstack/files/tools/prettier.config.js +8 -0
- package/src/generators/add-fullstack/files/tools/rollup/rollupPluginGenerateJson.mjs +48 -0
- package/src/generators/add-fullstack/files/tools/rollup/rollupPluginModifyLibFiles.mjs +410 -0
- package/src/generators/add-fullstack/files/tools/runLint.mjs +15 -0
- package/src/generators/add-fullstack/files/tools/sortPackageJson.mjs +0 -1
- package/src/generators/add-fullstack/files/tools/update-dependencies.mjs +95 -0
- package/src/generators/add-fullstack/files/tools/update-dependency-link.mjs +138 -0
- package/src/generators/add-fullstack/files/tools/update-dependency-version.js +104 -89
- package/src/generators/add-fullstack/files/tools/updateUtils.mjs +77 -0
- package/src/generators/add-fullstack/generator.ts +83 -1
- package/src/generators/add-fullstack/schema.d.ts +1 -0
- package/src/generators/add-fullstack/schema.json +4 -0
- package/src/generators/add-moleculer/generator.ts +7 -6
- package/src/generators/add-server-package/generator.ts +7 -6
- package/lib/generators/add-backend/files/CHANGELOG.md +0 -196
- package/lib/generators/add-fullstack/files/tools/update-dependency-link.js +0 -107
- package/src/generators/add-fullstack/files/tools/update-dependency-link.js +0 -107
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var tslib=require('tslib'),devkit=require('@nx/devkit'),path=require('path'),index=require('../../utils/index.cjs');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var path__namespace=/*#__PURE__*/_interopNamespaceDefault(path);function addBrowserPackageGenerator(tree, options) {
|
|
2
2
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const projectRoot = index.isValid(options.directory) ? `${index.getValid(options.directory)}/${projectName}` : projectName;
|
|
6
|
-
// addProjectConfiguration(tree, options.name, {
|
|
7
|
-
// root: projectRoot,
|
|
8
|
-
// projectType: 'library',
|
|
9
|
-
// sourceRoot: `${projectRoot}/src`,
|
|
10
|
-
// targets: {},
|
|
11
|
-
// });
|
|
12
|
-
devkit.generateFiles(tree, path__namespace.join(__dirname, 'files'), projectRoot, options);
|
|
13
|
-
devkit.updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
|
|
14
|
-
packageJson['name'] = projectName;
|
|
15
|
-
return packageJson;
|
|
16
|
-
});
|
|
17
|
-
yield devkit.formatFiles(tree);
|
|
3
|
+
const configs = Object.assign({}, options);
|
|
4
|
+
return yield generateBrowserPackage(tree, configs);
|
|
18
5
|
});
|
|
19
|
-
}
|
|
6
|
+
}
|
|
7
|
+
const generateBrowserPackage = (tree, options) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
8
|
+
var _a;
|
|
9
|
+
const projectName = (_a = index.getValid(options.name)) !== null && _a !== void 0 ? _a : 'browser-package';
|
|
10
|
+
const projectRoot = index.isValid(options.directory) ? `${index.getValid(options.directory)}/${projectName}` : projectName;
|
|
11
|
+
devkit.generateFiles(tree, path__namespace.join(__dirname, 'files'), projectRoot, options);
|
|
12
|
+
devkit.updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
|
|
13
|
+
packageJson['name'] = projectName;
|
|
14
|
+
return packageJson;
|
|
15
|
+
});
|
|
16
|
+
yield devkit.formatFiles(tree);
|
|
17
|
+
});exports.addBrowserPackageGenerator=addBrowserPackageGenerator;exports.default=addBrowserPackageGenerator;exports.generateBrowserPackage=generateBrowserPackage;//# sourceMappingURL=generator.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.cjs","sources":["../../../src/generators/add-browser-package/generator.ts"],"sourcesContent":[null],"names":["getValid","isValid","generateFiles","path","updateJson","formatFiles"],"mappings":"whBAKsB,SAAA,0BAA0B,CAAC,IAAU,EAAE,OAAyC,EAAA
|
|
1
|
+
{"version":3,"file":"generator.cjs","sources":["../../../src/generators/add-browser-package/generator.ts"],"sourcesContent":[null],"names":["__awaiter","getValid","isValid","generateFiles","path","updateJson","formatFiles"],"mappings":"whBAKsB,SAAA,0BAA0B,CAAC,IAAU,EAAE,OAAyC,EAAA;;AAClG,QAAA,MAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAY,OAAO,CAAC,CAAC;AAClC,QAAA,OAAO,MAAM,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACtD,CAAA,CAAA;AAAA,CAAA;MAEY,sBAAsB,GAAG,CAAO,IAAU,EAAE,OAAY,KAAIA,eAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;IACrE,MAAM,WAAW,GAAG,CAAA,EAAA,GAAAC,cAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,iBAAiB,CAAC;IAChE,MAAM,WAAW,GAAGC,aAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAA,EAAGD,cAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,GAAG,WAAW,CAAC;AAE/G,IAAAE,oBAAa,CAAC,IAAI,EAAEC,eAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACzEC,iBAAU,CAAC,IAAI,EAAE,CAAG,EAAA,WAAW,eAAe,EAAE,CAAC,WAAW,KAAI;AAC5D,QAAA,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;AAClC,QAAA,OAAO,WAAW,CAAC;AACvB,KAAC,CAAC,CAAC;AAEH,IAAA,MAAMC,kBAAW,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Tree } from '@nx/devkit';
|
|
2
2
|
import { AddBrowserPackageGeneratorSchema } from './schema';
|
|
3
3
|
export declare function addBrowserPackageGenerator(tree: Tree, options: AddBrowserPackageGeneratorSchema): Promise<void>;
|
|
4
|
+
export declare const generateBrowserPackage: (tree: Tree, options: any) => Promise<void>;
|
|
4
5
|
export default addBrowserPackageGenerator;
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import {__awaiter}from'tslib';import {generateFiles,updateJson,formatFiles}from'@nx/devkit';import*as path from'path';import {getValid,isValid}from'../../utils/index.mjs';function addBrowserPackageGenerator(tree, options) {
|
|
2
2
|
return __awaiter(this, void 0, void 0, function* () {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const projectRoot = isValid(options.directory) ? `${getValid(options.directory)}/${projectName}` : projectName;
|
|
6
|
-
// addProjectConfiguration(tree, options.name, {
|
|
7
|
-
// root: projectRoot,
|
|
8
|
-
// projectType: 'library',
|
|
9
|
-
// sourceRoot: `${projectRoot}/src`,
|
|
10
|
-
// targets: {},
|
|
11
|
-
// });
|
|
12
|
-
generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options);
|
|
13
|
-
updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
|
|
14
|
-
packageJson['name'] = projectName;
|
|
15
|
-
return packageJson;
|
|
16
|
-
});
|
|
17
|
-
yield formatFiles(tree);
|
|
3
|
+
const configs = Object.assign({}, options);
|
|
4
|
+
return yield generateBrowserPackage(tree, configs);
|
|
18
5
|
});
|
|
19
|
-
}
|
|
6
|
+
}
|
|
7
|
+
const generateBrowserPackage = (tree, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
8
|
+
var _a;
|
|
9
|
+
const projectName = (_a = getValid(options.name)) !== null && _a !== void 0 ? _a : 'browser-package';
|
|
10
|
+
const projectRoot = isValid(options.directory) ? `${getValid(options.directory)}/${projectName}` : projectName;
|
|
11
|
+
generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options);
|
|
12
|
+
updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
|
|
13
|
+
packageJson['name'] = projectName;
|
|
14
|
+
return packageJson;
|
|
15
|
+
});
|
|
16
|
+
yield formatFiles(tree);
|
|
17
|
+
});export{addBrowserPackageGenerator,addBrowserPackageGenerator as default,generateBrowserPackage};//# sourceMappingURL=generator.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.mjs","sources":["../../../src/generators/add-browser-package/generator.ts"],"sourcesContent":[null],"names":[],"mappings":"2KAKsB,SAAA,0BAA0B,CAAC,IAAU,EAAE,OAAyC,EAAA
|
|
1
|
+
{"version":3,"file":"generator.mjs","sources":["../../../src/generators/add-browser-package/generator.ts"],"sourcesContent":[null],"names":[],"mappings":"2KAKsB,SAAA,0BAA0B,CAAC,IAAU,EAAE,OAAyC,EAAA;;AAClG,QAAA,MAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAY,OAAO,CAAC,CAAC;AAClC,QAAA,OAAO,MAAM,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACtD,CAAA,CAAA;AAAA,CAAA;MAEY,sBAAsB,GAAG,CAAO,IAAU,EAAE,OAAY,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;IACrE,MAAM,WAAW,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,iBAAiB,CAAC;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAA,EAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,GAAG,WAAW,CAAC;AAE/G,IAAA,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACzE,UAAU,CAAC,IAAI,EAAE,CAAG,EAAA,WAAW,eAAe,EAAE,CAAC,WAAW,KAAI;AAC5D,QAAA,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;AAClC,QAAA,OAAO,WAAW,CAAC;AACvB,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var tslib=require('tslib'),devkit=require('@nx/devkit'),path=require('path'),index=require('../../utils/index.cjs');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var path__namespace=/*#__PURE__*/_interopNamespaceDefault(path);function addClientPackageGenerator(tree, options) {
|
|
2
2
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const projectRoot = index.isValid(options.directory) ? `${index.getValid(options.directory)}/${projectName}` : projectName;
|
|
6
|
-
// addProjectConfiguration(tree, options.name, {
|
|
7
|
-
// root: projectRoot,
|
|
8
|
-
// projectType: 'library',
|
|
9
|
-
// sourceRoot: `${projectRoot}/src`,
|
|
10
|
-
// targets: {},
|
|
11
|
-
// });
|
|
12
|
-
devkit.generateFiles(tree, path__namespace.join(__dirname, 'files'), projectRoot, options);
|
|
13
|
-
devkit.updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
|
|
14
|
-
packageJson['name'] = projectName;
|
|
15
|
-
return packageJson;
|
|
16
|
-
});
|
|
17
|
-
yield devkit.formatFiles(tree);
|
|
3
|
+
const configs = Object.assign({}, options);
|
|
4
|
+
return yield generateClientPackage(tree, configs);
|
|
18
5
|
});
|
|
19
|
-
}
|
|
6
|
+
}
|
|
7
|
+
const generateClientPackage = (tree, options) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
8
|
+
var _a;
|
|
9
|
+
const projectName = (_a = index.getValid(options.name)) !== null && _a !== void 0 ? _a : 'client-package';
|
|
10
|
+
const projectRoot = index.isValid(options.directory) ? `${index.getValid(options.directory)}/${projectName}` : projectName;
|
|
11
|
+
devkit.generateFiles(tree, path__namespace.join(__dirname, 'files'), projectRoot, options);
|
|
12
|
+
devkit.updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
|
|
13
|
+
packageJson['name'] = projectName;
|
|
14
|
+
return packageJson;
|
|
15
|
+
});
|
|
16
|
+
yield devkit.formatFiles(tree);
|
|
17
|
+
});exports.addClientPackageGenerator=addClientPackageGenerator;exports.default=addClientPackageGenerator;exports.generateClientPackage=generateClientPackage;//# sourceMappingURL=generator.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.cjs","sources":["../../../src/generators/add-client-package/generator.ts"],"sourcesContent":[null],"names":["getValid","isValid","generateFiles","path","updateJson","formatFiles"],"mappings":"whBAKsB,SAAA,yBAAyB,CAAC,IAAU,EAAE,OAAwC,EAAA
|
|
1
|
+
{"version":3,"file":"generator.cjs","sources":["../../../src/generators/add-client-package/generator.ts"],"sourcesContent":[null],"names":["__awaiter","getValid","isValid","generateFiles","path","updateJson","formatFiles"],"mappings":"whBAKsB,SAAA,yBAAyB,CAAC,IAAU,EAAE,OAAwC,EAAA;;AAChG,QAAA,MAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAY,OAAO,CAAC,CAAC;AAClC,QAAA,OAAO,MAAM,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACrD,CAAA,CAAA;AAAA,CAAA;MAEY,qBAAqB,GAAG,CAAO,IAAU,EAAE,OAAY,KAAIA,eAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;IACpE,MAAM,WAAW,GAAG,CAAA,EAAA,GAAAC,cAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,gBAAgB,CAAC;IAC/D,MAAM,WAAW,GAAGC,aAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAA,EAAGD,cAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,GAAG,WAAW,CAAC;AAE/G,IAAAE,oBAAa,CAAC,IAAI,EAAEC,eAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACzEC,iBAAU,CAAC,IAAI,EAAE,CAAG,EAAA,WAAW,eAAe,EAAE,CAAC,WAAW,KAAI;AAC5D,QAAA,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;AAClC,QAAA,OAAO,WAAW,CAAC;AACvB,KAAC,CAAC,CAAC;AAEH,IAAA,MAAMC,kBAAW,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Tree } from '@nx/devkit';
|
|
2
2
|
import { AddClientPackageGeneratorSchema } from './schema';
|
|
3
3
|
export declare function addClientPackageGenerator(tree: Tree, options: AddClientPackageGeneratorSchema): Promise<void>;
|
|
4
|
+
export declare const generateClientPackage: (tree: Tree, options: any) => Promise<void>;
|
|
4
5
|
export default addClientPackageGenerator;
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import {__awaiter}from'tslib';import {generateFiles,updateJson,formatFiles}from'@nx/devkit';import*as path from'path';import {getValid,isValid}from'../../utils/index.mjs';function addClientPackageGenerator(tree, options) {
|
|
2
2
|
return __awaiter(this, void 0, void 0, function* () {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const projectRoot = isValid(options.directory) ? `${getValid(options.directory)}/${projectName}` : projectName;
|
|
6
|
-
// addProjectConfiguration(tree, options.name, {
|
|
7
|
-
// root: projectRoot,
|
|
8
|
-
// projectType: 'library',
|
|
9
|
-
// sourceRoot: `${projectRoot}/src`,
|
|
10
|
-
// targets: {},
|
|
11
|
-
// });
|
|
12
|
-
generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options);
|
|
13
|
-
updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
|
|
14
|
-
packageJson['name'] = projectName;
|
|
15
|
-
return packageJson;
|
|
16
|
-
});
|
|
17
|
-
yield formatFiles(tree);
|
|
3
|
+
const configs = Object.assign({}, options);
|
|
4
|
+
return yield generateClientPackage(tree, configs);
|
|
18
5
|
});
|
|
19
|
-
}
|
|
6
|
+
}
|
|
7
|
+
const generateClientPackage = (tree, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
8
|
+
var _a;
|
|
9
|
+
const projectName = (_a = getValid(options.name)) !== null && _a !== void 0 ? _a : 'client-package';
|
|
10
|
+
const projectRoot = isValid(options.directory) ? `${getValid(options.directory)}/${projectName}` : projectName;
|
|
11
|
+
generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options);
|
|
12
|
+
updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
|
|
13
|
+
packageJson['name'] = projectName;
|
|
14
|
+
return packageJson;
|
|
15
|
+
});
|
|
16
|
+
yield formatFiles(tree);
|
|
17
|
+
});export{addClientPackageGenerator,addClientPackageGenerator as default,generateClientPackage};//# sourceMappingURL=generator.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.mjs","sources":["../../../src/generators/add-client-package/generator.ts"],"sourcesContent":[null],"names":[],"mappings":"2KAKsB,SAAA,yBAAyB,CAAC,IAAU,EAAE,OAAwC,EAAA
|
|
1
|
+
{"version":3,"file":"generator.mjs","sources":["../../../src/generators/add-client-package/generator.ts"],"sourcesContent":[null],"names":[],"mappings":"2KAKsB,SAAA,yBAAyB,CAAC,IAAU,EAAE,OAAwC,EAAA;;AAChG,QAAA,MAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAY,OAAO,CAAC,CAAC;AAClC,QAAA,OAAO,MAAM,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACrD,CAAA,CAAA;AAAA,CAAA;MAEY,qBAAqB,GAAG,CAAO,IAAU,EAAE,OAAY,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;IACpE,MAAM,WAAW,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,gBAAgB,CAAC;IAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAA,EAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,GAAG,WAAW,CAAC;AAE/G,IAAA,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACzE,UAAU,CAAC,IAAI,EAAE,CAAG,EAAA,WAAW,eAAe,EAAE,CAAC,WAAW,KAAI;AAC5D,QAAA,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;AAClC,QAAA,OAAO,WAAW,CAAC;AACvB,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var tslib=require('tslib'),devkit=require('@nx/devkit'),path=require('path'),index=require('../../utils/index.cjs');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var path__namespace=/*#__PURE__*/_interopNamespaceDefault(path);function addCorePackageGenerator(tree, options) {
|
|
2
2
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const projectRoot = index.isValid(options.directory) ? `${index.getValid(options.directory)}/${projectName}` : projectName;
|
|
6
|
-
// addProjectConfiguration(tree, options.name, {
|
|
7
|
-
// root: projectRoot,
|
|
8
|
-
// projectType: 'library',
|
|
9
|
-
// sourceRoot: `${projectRoot}/src`,
|
|
10
|
-
// targets: {},
|
|
11
|
-
// });
|
|
12
|
-
devkit.generateFiles(tree, path__namespace.join(__dirname, 'files'), projectRoot, options);
|
|
13
|
-
devkit.updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
|
|
14
|
-
packageJson['name'] = projectName;
|
|
15
|
-
return packageJson;
|
|
16
|
-
});
|
|
17
|
-
yield devkit.formatFiles(tree);
|
|
3
|
+
const configs = Object.assign({}, options);
|
|
4
|
+
return yield generateCorePackage(tree, configs);
|
|
18
5
|
});
|
|
19
|
-
}
|
|
6
|
+
}
|
|
7
|
+
const generateCorePackage = (tree, options) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
8
|
+
var _a;
|
|
9
|
+
const projectName = (_a = index.getValid(options.name)) !== null && _a !== void 0 ? _a : 'core-package';
|
|
10
|
+
const projectRoot = index.isValid(options.directory) ? `${index.getValid(options.directory)}/${projectName}` : projectName;
|
|
11
|
+
devkit.generateFiles(tree, path__namespace.join(__dirname, 'files'), projectRoot, options);
|
|
12
|
+
devkit.updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
|
|
13
|
+
packageJson['name'] = projectName;
|
|
14
|
+
return packageJson;
|
|
15
|
+
});
|
|
16
|
+
yield devkit.formatFiles(tree);
|
|
17
|
+
});exports.addCorePackageGenerator=addCorePackageGenerator;exports.default=addCorePackageGenerator;exports.generateCorePackage=generateCorePackage;//# sourceMappingURL=generator.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.cjs","sources":["../../../src/generators/add-core-package/generator.ts"],"sourcesContent":[null],"names":["getValid","isValid","generateFiles","path","updateJson","formatFiles"],"mappings":"whBAKsB,SAAA,uBAAuB,CAAC,IAAU,EAAE,OAAsC,EAAA
|
|
1
|
+
{"version":3,"file":"generator.cjs","sources":["../../../src/generators/add-core-package/generator.ts"],"sourcesContent":[null],"names":["__awaiter","getValid","isValid","generateFiles","path","updateJson","formatFiles"],"mappings":"whBAKsB,SAAA,uBAAuB,CAAC,IAAU,EAAE,OAAsC,EAAA;;AAC5F,QAAA,MAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAY,OAAO,CAAC,CAAC;AAClC,QAAA,OAAO,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACnD,CAAA,CAAA;AAAA,CAAA;MAEY,mBAAmB,GAAG,CAAO,IAAU,EAAE,OAAY,KAAIA,eAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;IAClE,MAAM,WAAW,GAAG,CAAA,EAAA,GAAAC,cAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,cAAc,CAAC;IAC7D,MAAM,WAAW,GAAGC,aAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAA,EAAGD,cAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,GAAG,WAAW,CAAC;AAE/G,IAAAE,oBAAa,CAAC,IAAI,EAAEC,eAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACzEC,iBAAU,CAAC,IAAI,EAAE,CAAG,EAAA,WAAW,eAAe,EAAE,CAAC,WAAW,KAAI;AAC5D,QAAA,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;AAClC,QAAA,OAAO,WAAW,CAAC;AACvB,KAAC,CAAC,CAAC;AAEH,IAAA,MAAMC,kBAAW,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Tree } from '@nx/devkit';
|
|
2
2
|
import { AddCorePackageGeneratorSchema } from './schema';
|
|
3
3
|
export declare function addCorePackageGenerator(tree: Tree, options: AddCorePackageGeneratorSchema): Promise<void>;
|
|
4
|
+
export declare const generateCorePackage: (tree: Tree, options: any) => Promise<void>;
|
|
4
5
|
export default addCorePackageGenerator;
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import {__awaiter}from'tslib';import {generateFiles,updateJson,formatFiles}from'@nx/devkit';import*as path from'path';import {getValid,isValid}from'../../utils/index.mjs';function addCorePackageGenerator(tree, options) {
|
|
2
2
|
return __awaiter(this, void 0, void 0, function* () {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const projectRoot = isValid(options.directory) ? `${getValid(options.directory)}/${projectName}` : projectName;
|
|
6
|
-
// addProjectConfiguration(tree, options.name, {
|
|
7
|
-
// root: projectRoot,
|
|
8
|
-
// projectType: 'library',
|
|
9
|
-
// sourceRoot: `${projectRoot}/src`,
|
|
10
|
-
// targets: {},
|
|
11
|
-
// });
|
|
12
|
-
generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options);
|
|
13
|
-
updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
|
|
14
|
-
packageJson['name'] = projectName;
|
|
15
|
-
return packageJson;
|
|
16
|
-
});
|
|
17
|
-
yield formatFiles(tree);
|
|
3
|
+
const configs = Object.assign({}, options);
|
|
4
|
+
return yield generateCorePackage(tree, configs);
|
|
18
5
|
});
|
|
19
|
-
}
|
|
6
|
+
}
|
|
7
|
+
const generateCorePackage = (tree, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
8
|
+
var _a;
|
|
9
|
+
const projectName = (_a = getValid(options.name)) !== null && _a !== void 0 ? _a : 'core-package';
|
|
10
|
+
const projectRoot = isValid(options.directory) ? `${getValid(options.directory)}/${projectName}` : projectName;
|
|
11
|
+
generateFiles(tree, path.join(__dirname, 'files'), projectRoot, options);
|
|
12
|
+
updateJson(tree, `${projectRoot}/package.json`, (packageJson) => {
|
|
13
|
+
packageJson['name'] = projectName;
|
|
14
|
+
return packageJson;
|
|
15
|
+
});
|
|
16
|
+
yield formatFiles(tree);
|
|
17
|
+
});export{addCorePackageGenerator,addCorePackageGenerator as default,generateCorePackage};//# sourceMappingURL=generator.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.mjs","sources":["../../../src/generators/add-core-package/generator.ts"],"sourcesContent":[null],"names":[],"mappings":"2KAKsB,SAAA,uBAAuB,CAAC,IAAU,EAAE,OAAsC,EAAA
|
|
1
|
+
{"version":3,"file":"generator.mjs","sources":["../../../src/generators/add-core-package/generator.ts"],"sourcesContent":[null],"names":[],"mappings":"2KAKsB,SAAA,uBAAuB,CAAC,IAAU,EAAE,OAAsC,EAAA;;AAC5F,QAAA,MAAM,OAAO,GAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAY,OAAO,CAAC,CAAC;AAClC,QAAA,OAAO,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACnD,CAAA,CAAA;AAAA,CAAA;MAEY,mBAAmB,GAAG,CAAO,IAAU,EAAE,OAAY,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;IAClE,MAAM,WAAW,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,cAAc,CAAC;IAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAA,EAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,GAAG,WAAW,CAAC;AAE/G,IAAA,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACzE,UAAU,CAAC,IAAI,EAAE,CAAG,EAAA,WAAW,eAAe,EAAE,CAAC,WAAW,KAAI;AAC5D,QAAA,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;AAClC,QAAA,OAAO,WAAW,CAAC;AACvB,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* By default, Remix will handle hydrating your app on the client for you.
|
|
3
|
+
* You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨
|
|
4
|
+
* For more information, see https://remix.run/file-conventions/entry.client
|
|
5
|
+
*/
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
import 'reflect-metadata';
|
|
8
|
+
import { RemixBrowser } from '@remix-run/react';
|
|
9
|
+
import { startTransition, StrictMode } from 'react';
|
|
10
|
+
import { hydrateRoot } from 'react-dom/client';
|
|
11
|
+
import { ApolloProvider } from '@apollo/client/index.js';
|
|
12
|
+
import { SlotFillProvider, removeUniversalPortals } from '@common-stack/components-pro';
|
|
13
|
+
import { InversifyProvider } from '@common-stack/client-react';
|
|
14
|
+
import { Provider as ReduxProvider } from 'react-redux';
|
|
15
|
+
import { PersistGate } from 'redux-persist/integration/react';
|
|
16
|
+
import { persistStore } from 'redux-persist';
|
|
17
|
+
import i18next from 'i18next';
|
|
18
|
+
import { I18nextProvider, initReactI18next } from 'react-i18next';
|
|
19
|
+
import LanguageDetector from 'i18next-browser-languagedetector';
|
|
20
|
+
import Backend from 'i18next-http-backend';
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
import { getInitialNamespaces } from 'remix-i18next/client';
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
import { createReduxStore } from '@app/frontend-stack-react/config/redux-config.js';
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
import { createClientContainer } from '@app/frontend-stack-react/config/client.service';
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
import clientModules from '@app/frontend-stack-react/modules.js';
|
|
29
|
+
// @ts-ignore
|
|
30
|
+
import config from '@app/cde-webconfig.json';
|
|
31
|
+
|
|
32
|
+
const { apolloClient: client, container, serviceFunc } = createClientContainer();
|
|
33
|
+
const { store } = createReduxStore(client, serviceFunc(), container);
|
|
34
|
+
const persistor = persistStore(store);
|
|
35
|
+
|
|
36
|
+
(window as any).__remixStore = store;
|
|
37
|
+
removeUniversalPortals((window as any).__SLOT_FILLS__ || []);
|
|
38
|
+
|
|
39
|
+
async function hydrate() {
|
|
40
|
+
if (!i18next.isInitialized && config.i18n.enabled) {
|
|
41
|
+
await i18next
|
|
42
|
+
.use(initReactI18next)
|
|
43
|
+
.use(LanguageDetector)
|
|
44
|
+
.use(Backend)
|
|
45
|
+
.init({
|
|
46
|
+
fallbackLng: config.i18n.fallbackLng,
|
|
47
|
+
defaultNS: config.i18n.defaultNS,
|
|
48
|
+
react: config.i18n.react,
|
|
49
|
+
supportedLngs: config.i18n.supportedLngs,
|
|
50
|
+
backend: config.i18n.backend,
|
|
51
|
+
ns: getInitialNamespaces(),
|
|
52
|
+
detection: {
|
|
53
|
+
order: ['htmlTag'],
|
|
54
|
+
caches: [],
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
startTransition(() => {
|
|
59
|
+
hydrateRoot(
|
|
60
|
+
document,
|
|
61
|
+
(
|
|
62
|
+
<I18nextProvider i18n={i18next}>
|
|
63
|
+
<StrictMode>
|
|
64
|
+
<ReduxProvider store={store}>
|
|
65
|
+
<SlotFillProvider>
|
|
66
|
+
<InversifyProvider container={container} modules={clientModules}>
|
|
67
|
+
<PersistGate loading={null} persistor={persistor}>
|
|
68
|
+
{() => (
|
|
69
|
+
<ApolloProvider client={client}>
|
|
70
|
+
<RemixBrowser />
|
|
71
|
+
</ApolloProvider>
|
|
72
|
+
)}
|
|
73
|
+
</PersistGate>
|
|
74
|
+
</InversifyProvider>
|
|
75
|
+
</SlotFillProvider>
|
|
76
|
+
</ReduxProvider>
|
|
77
|
+
</StrictMode>
|
|
78
|
+
</I18nextProvider>
|
|
79
|
+
) as any,
|
|
80
|
+
);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (window.requestIdleCallback) {
|
|
85
|
+
window.requestIdleCallback(hydrate);
|
|
86
|
+
} else {
|
|
87
|
+
// Safari doesn't support requestIdleCallback
|
|
88
|
+
// https://caniuse.com/requestidlecallback
|
|
89
|
+
window.setTimeout(hydrate, 1);
|
|
90
|
+
}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* By default, Remix will handle generating the HTTP Response for you.
|
|
3
|
+
* You are free to delete this file if you'd like to, but if you ever want it revealed again, you can run `npx remix reveal` ✨
|
|
4
|
+
* For more information, see https://remix.run/file-conventions/entry.server
|
|
5
|
+
*/
|
|
6
|
+
import * as React from 'react';
|
|
7
|
+
(global as any).__CLIENT__ = false;
|
|
8
|
+
(global as any).__SERVER__ = true;
|
|
9
|
+
import { PassThrough, Transform } from 'node:stream';
|
|
10
|
+
import type { EntryContext } from '@remix-run/node';
|
|
11
|
+
import { createReadableStreamFromReadable } from '@remix-run/node';
|
|
12
|
+
import { RemixServer } from '@remix-run/react';
|
|
13
|
+
import { isbot } from 'isbot';
|
|
14
|
+
import { ApolloProvider } from '@apollo/client/index.js';
|
|
15
|
+
import { SlotFillProvider } from '@common-stack/components-pro';
|
|
16
|
+
import { InversifyProvider } from '@common-stack/client-react';
|
|
17
|
+
import { renderToPipeableStream } from 'react-dom/server';
|
|
18
|
+
import { Provider as ReduxProvider } from 'react-redux';
|
|
19
|
+
import { LOCATION_CHANGE } from '@common-stack/remix-router-redux';
|
|
20
|
+
import serialize from 'serialize-javascript';
|
|
21
|
+
import { createInstance } from 'i18next';
|
|
22
|
+
import { I18nextProvider, initReactI18next } from 'react-i18next';
|
|
23
|
+
import Backend from 'i18next-fs-backend';
|
|
24
|
+
import { resolve } from 'node:path';
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
import { i18nextInstance as i18next } from '@app/frontend-stack-react/i18n-localization/i18next.server.js';
|
|
27
|
+
import config from '@app/cde-webconfig.json';
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
import type { IAppLoadContext } from '@common-stack/client-core';
|
|
30
|
+
|
|
31
|
+
const ABORT_DELAY = 5_000;
|
|
32
|
+
|
|
33
|
+
class ConstantsTransform extends Transform {
|
|
34
|
+
_fills: string[];
|
|
35
|
+
_apolloState: any;
|
|
36
|
+
_reduxState: any;
|
|
37
|
+
_styleSheet: string;
|
|
38
|
+
|
|
39
|
+
constructor(fills: string[], apolloState: any, reduxState: any, styleSheet: any) {
|
|
40
|
+
super();
|
|
41
|
+
this._fills = fills;
|
|
42
|
+
this._apolloState = apolloState;
|
|
43
|
+
this._reduxState = reduxState;
|
|
44
|
+
this._styleSheet = styleSheet;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
_transform(chunk, encoding, callback) {
|
|
48
|
+
let transformedChunk = chunk.toString();
|
|
49
|
+
|
|
50
|
+
if (transformedChunk.includes('[__APOLLO_STATE__]')) {
|
|
51
|
+
transformedChunk = transformedChunk.replace(
|
|
52
|
+
'[__APOLLO_STATE__]',
|
|
53
|
+
serialize(this._apolloState, { isJSON: true }),
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
if (transformedChunk.includes('[__PRELOADED_STATE__]')) {
|
|
57
|
+
transformedChunk = transformedChunk.replace(
|
|
58
|
+
'[__PRELOADED_STATE__]',
|
|
59
|
+
serialize(this._reduxState, { isJSON: true }),
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
if (transformedChunk.includes('[__SLOT_FILLS__]')) {
|
|
63
|
+
transformedChunk = transformedChunk.replace('[__SLOT_FILLS__]', serialize(this._fills, { isJSON: true }));
|
|
64
|
+
}
|
|
65
|
+
if (transformedChunk.includes('[__STYLESHEET__]')) {
|
|
66
|
+
transformedChunk = transformedChunk.replace('[__STYLESHEET__]', this._styleSheet);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
callback(null, transformedChunk);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export default async function handleRequest(
|
|
74
|
+
request: Request,
|
|
75
|
+
responseStatusCode: number,
|
|
76
|
+
responseHeaders: Headers,
|
|
77
|
+
remixContext: EntryContext,
|
|
78
|
+
// This is ignored so we can keep it in the template for visibility. Feel
|
|
79
|
+
// free to delete this parameter in your app if you're not using it!
|
|
80
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
81
|
+
loadContext: IAppLoadContext,
|
|
82
|
+
) {
|
|
83
|
+
const instance = createInstance();
|
|
84
|
+
const lng = await i18next.getLocale(request);
|
|
85
|
+
const ns = i18next.getRouteNamespaces(remixContext);
|
|
86
|
+
|
|
87
|
+
// First, we create a new instance of i18next so every request will have a
|
|
88
|
+
// completely unique instance and not share any state.
|
|
89
|
+
if (config.i18n.enabled) {
|
|
90
|
+
await instance
|
|
91
|
+
.use(initReactI18next) // Tell our instance to use react-i18next
|
|
92
|
+
.use(Backend) // Setup our backend.init({
|
|
93
|
+
.init({
|
|
94
|
+
fallbackLng: config.i18n.fallbackLng,
|
|
95
|
+
defaultNS: config.i18n.defaultNS,
|
|
96
|
+
react: config.i18n.react,
|
|
97
|
+
supportedLngs: config.i18n.supportedLngs,
|
|
98
|
+
lng, // The locale we detected above
|
|
99
|
+
ns, // The namespaces the routes about to render want to use
|
|
100
|
+
backend: {
|
|
101
|
+
loadPath: resolve(config.i18n.backend.loadServerPath),
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return isbot(request.headers.get('user-agent') || '')
|
|
107
|
+
? handleBotRequest(request, responseStatusCode, responseHeaders, remixContext, loadContext, instance)
|
|
108
|
+
: handleBrowserRequest(request, responseStatusCode, responseHeaders, remixContext, loadContext, instance);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
function handleBotRequest(
|
|
112
|
+
request: Request,
|
|
113
|
+
responseStatusCode: number,
|
|
114
|
+
responseHeaders: Headers,
|
|
115
|
+
remixContext: EntryContext,
|
|
116
|
+
loadContext: IAppLoadContext,
|
|
117
|
+
i18nInstance: i18next,
|
|
118
|
+
) {
|
|
119
|
+
return new Promise((resolve, reject) => {
|
|
120
|
+
let shellRendered = false;
|
|
121
|
+
const { pipe, abort } = renderToPipeableStream(
|
|
122
|
+
<I18nextProvider i18n={i18nInstance}>
|
|
123
|
+
<RemixServer context={remixContext} url={request.url} abortDelay={ABORT_DELAY} />
|
|
124
|
+
</I18nextProvider>,
|
|
125
|
+
{
|
|
126
|
+
onAllReady() {
|
|
127
|
+
shellRendered = true;
|
|
128
|
+
const body = new PassThrough();
|
|
129
|
+
const stream = createReadableStreamFromReadable(body);
|
|
130
|
+
|
|
131
|
+
responseHeaders.set('Content-Type', 'text/html');
|
|
132
|
+
|
|
133
|
+
resolve(
|
|
134
|
+
new Response(stream, {
|
|
135
|
+
headers: responseHeaders,
|
|
136
|
+
status: responseStatusCode,
|
|
137
|
+
}),
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
pipe(body);
|
|
141
|
+
},
|
|
142
|
+
onShellError(error: unknown) {
|
|
143
|
+
reject(error);
|
|
144
|
+
},
|
|
145
|
+
onError(error: unknown) {
|
|
146
|
+
responseStatusCode = 500;
|
|
147
|
+
// Log streaming rendering errors from inside the shell. Don't log
|
|
148
|
+
// errors encountered during initial shell rendering since they'll
|
|
149
|
+
// reject and get logged in handleDocumentRequest.
|
|
150
|
+
if (shellRendered) {
|
|
151
|
+
console.error(error);
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
setTimeout(abort, ABORT_DELAY);
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function handleBrowserRequest(
|
|
162
|
+
request: Request,
|
|
163
|
+
responseStatusCode: number,
|
|
164
|
+
responseHeaders: Headers,
|
|
165
|
+
remixContext: EntryContext,
|
|
166
|
+
loadContext: IAppLoadContext,
|
|
167
|
+
i18nInstance: i18next,
|
|
168
|
+
) {
|
|
169
|
+
return new Promise((resolve, reject) => {
|
|
170
|
+
let shellRendered = false;
|
|
171
|
+
const slotFillContext = { fills: {} };
|
|
172
|
+
const { modules: clientModules, container, apolloClient: client, store } = loadContext;
|
|
173
|
+
|
|
174
|
+
const { pathname, search, hash } = new URL(request.url);
|
|
175
|
+
store.dispatch({
|
|
176
|
+
type: LOCATION_CHANGE,
|
|
177
|
+
payload: { location: { pathname, search, hash }, action: 'POP' },
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
const { pipe, abort } = renderToPipeableStream(
|
|
181
|
+
(
|
|
182
|
+
<I18nextProvider i18n={i18nInstance}>
|
|
183
|
+
<ReduxProvider store={store}>
|
|
184
|
+
<SlotFillProvider context={slotFillContext}>
|
|
185
|
+
<InversifyProvider container={container} modules={clientModules as any}>
|
|
186
|
+
<ApolloProvider client={client}>
|
|
187
|
+
<RemixServer
|
|
188
|
+
context={remixContext}
|
|
189
|
+
url={request.url}
|
|
190
|
+
abortDelay={ABORT_DELAY}
|
|
191
|
+
/>
|
|
192
|
+
</ApolloProvider>
|
|
193
|
+
</InversifyProvider>
|
|
194
|
+
</SlotFillProvider>
|
|
195
|
+
</ReduxProvider>
|
|
196
|
+
</I18nextProvider>
|
|
197
|
+
) as any,
|
|
198
|
+
{
|
|
199
|
+
onShellReady() {
|
|
200
|
+
shellRendered = true;
|
|
201
|
+
const body = new PassThrough();
|
|
202
|
+
const stream = createReadableStreamFromReadable(body);
|
|
203
|
+
const apolloState = { ...client.extract() };
|
|
204
|
+
const reduxState = { ...store.getState() };
|
|
205
|
+
const fills = Object.keys(slotFillContext.fills);
|
|
206
|
+
|
|
207
|
+
const transform = new ConstantsTransform(fills, apolloState, reduxState, []);
|
|
208
|
+
|
|
209
|
+
responseHeaders.set('Content-Type', 'text/html');
|
|
210
|
+
|
|
211
|
+
resolve(
|
|
212
|
+
new Response(stream, {
|
|
213
|
+
headers: responseHeaders,
|
|
214
|
+
status: responseStatusCode,
|
|
215
|
+
}),
|
|
216
|
+
);
|
|
217
|
+
|
|
218
|
+
pipe(transform).pipe(body);
|
|
219
|
+
},
|
|
220
|
+
onShellError(error: unknown) {
|
|
221
|
+
reject(error);
|
|
222
|
+
},
|
|
223
|
+
onError(error: unknown) {
|
|
224
|
+
responseStatusCode = 500;
|
|
225
|
+
// Log streaming rendering errors from inside the shell. Don't log
|
|
226
|
+
// errors encountered during initial shell rendering since they'll
|
|
227
|
+
// reject and get logged in handleDocumentRequest.
|
|
228
|
+
if (shellRendered) {
|
|
229
|
+
console.error(error);
|
|
230
|
+
}
|
|
231
|
+
reject(error);
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
);
|
|
235
|
+
|
|
236
|
+
setTimeout(abort, ABORT_DELAY);
|
|
237
|
+
});
|
|
238
|
+
}
|