@common-stack/generate-plugin 6.0.1-alpha.9 → 6.0.2-alpha.2
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/.eslintrc.json +1 -1
- package/CHANGELOG.md +12 -0
- package/README.md +280 -10
- package/cde-config.json +86 -0
- package/executors.json +14 -0
- package/generators.json +15 -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/executors/sort-package-json/executor.cjs +46 -0
- package/lib/executors/sort-package-json/executor.cjs.map +1 -0
- package/lib/executors/sort-package-json/executor.d.ts +4 -0
- package/lib/executors/sort-package-json/executor.mjs +46 -0
- package/lib/executors/sort-package-json/executor.mjs.map +1 -0
- package/lib/executors/sort-package-json/executor.spec.d.ts +1 -0
- package/lib/executors/sort-package-json/schema.json +9 -0
- package/lib/executors/update-deploy-version/executor.cjs +22 -0
- package/lib/executors/update-deploy-version/executor.cjs.map +1 -0
- package/lib/executors/update-deploy-version/executor.d.ts +4 -0
- package/lib/executors/update-deploy-version/executor.mjs +22 -0
- package/lib/executors/update-deploy-version/executor.mjs.map +1 -0
- package/lib/executors/update-deploy-version/executor.spec.d.ts +1 -0
- package/lib/executors/update-deploy-version/schema.json +14 -0
- package/lib/generators/add-backend/files/CHANGELOG.md +0 -0
- package/lib/generators/add-backend/files/Dockerfile +1 -1
- package/lib/generators/add-backend/files/package.json +1 -18
- package/lib/generators/add-backend/files/tsconfig.json +1 -1
- package/lib/generators/add-backend/files/webpack.config.js +6 -10
- 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/files/package.json +2 -2
- 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/files/CHANGELOG.md +807 -0
- package/lib/generators/add-client-package/files/LICENSE +674 -0
- package/lib/generators/add-client-package/files/jest.config.js +13 -0
- package/lib/generators/add-client-package/files/package.json +30 -0
- package/lib/generators/add-client-package/files/rollup.config.mjs +29 -0
- package/lib/generators/add-client-package/files/src/components/index.tsx.template +1 -0
- package/lib/generators/add-client-package/files/src/index.ts.template +1 -0
- package/lib/generators/add-client-package/files/tsconfig.json +27 -0
- package/lib/generators/add-client-package/files/webpack.config.js +72 -0
- package/lib/generators/add-client-package/generator.cjs +17 -0
- package/lib/generators/add-client-package/generator.cjs.map +1 -0
- package/lib/generators/add-client-package/generator.d.ts +5 -0
- package/lib/generators/add-client-package/generator.mjs +17 -0
- package/lib/generators/add-client-package/generator.mjs.map +1 -0
- package/lib/generators/add-client-package/generator.spec.d.ts +1 -0
- package/lib/generators/add-client-package/schema.json +19 -0
- package/lib/generators/add-core-package/files/CHANGELOG.md +1076 -0
- package/lib/generators/add-core-package/files/LICENSE +39 -0
- package/lib/generators/add-core-package/files/jest.config.js +3 -0
- package/lib/generators/add-core-package/files/package.json +30 -0
- package/lib/generators/add-core-package/files/rollup.config.mjs +65 -0
- package/lib/generators/add-core-package/files/src/constants/index.ts.template +1 -0
- package/lib/generators/add-core-package/files/src/constants/types.ts.template +3 -0
- package/lib/generators/add-core-package/files/src/index.ts.template +2 -0
- package/lib/generators/add-core-package/files/src/types/index.ts.template +1 -0
- package/lib/generators/add-core-package/files/src/types/types.ts.template +17 -0
- package/lib/generators/add-core-package/files/tsconfig.json +22 -0
- package/lib/generators/add-core-package/files/webpack.config.js +53 -0
- package/lib/generators/add-core-package/generator.cjs +17 -0
- package/lib/generators/add-core-package/generator.cjs.map +1 -0
- package/lib/generators/add-core-package/generator.d.ts +5 -0
- package/lib/generators/add-core-package/generator.mjs +17 -0
- package/lib/generators/add-core-package/generator.mjs.map +1 -0
- package/lib/generators/add-core-package/generator.spec.d.ts +1 -0
- package/lib/generators/add-core-package/schema.json +19 -0
- 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 +18 -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/package.json +8 -8
- 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/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/files/package.json +7 -7
- 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/files/CHANGELOG.md +2599 -0
- package/lib/generators/add-server-package/files/LICENSE +674 -0
- package/lib/generators/add-server-package/files/jest.config.js +32 -0
- package/lib/generators/add-server-package/files/package.json +78 -0
- package/lib/generators/add-server-package/files/rollup.config.mjs +30 -0
- package/lib/generators/add-server-package/files/src/constants/constants.ts.template +62 -0
- package/lib/generators/add-server-package/files/src/constants/index.ts.template +1 -0
- package/lib/generators/add-server-package/files/src/constants/types.ts.template +21 -0
- package/lib/generators/add-server-package/files/src/index.ts.template +6 -0
- package/lib/generators/add-server-package/files/src/module.ts.template +6 -0
- package/lib/generators/add-server-package/files/tsconfig.json +27 -0
- package/lib/generators/add-server-package/generator.cjs +17 -0
- package/lib/generators/add-server-package/generator.cjs.map +1 -0
- package/lib/generators/add-server-package/generator.d.ts +5 -0
- package/lib/generators/add-server-package/generator.mjs +17 -0
- package/lib/generators/add-server-package/generator.mjs.map +1 -0
- package/lib/generators/add-server-package/generator.spec.d.ts +1 -0
- package/lib/generators/add-server-package/schema.json +19 -0
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +5 -0
- package/lib/index.mjs +1 -1
- package/package.json +4 -2
- package/project.json +12 -1
- package/rollup.config.mjs +8 -0
- package/src/constants/index.ts +2 -1
- package/src/executors/sort-package-json/executor.spec.ts +18 -0
- package/src/executors/sort-package-json/executor.ts +53 -0
- package/src/executors/sort-package-json/schema.d.ts +1 -0
- package/src/executors/sort-package-json/schema.json +9 -0
- package/src/executors/update-deploy-version/executor.spec.ts +18 -0
- package/src/executors/update-deploy-version/executor.ts +36 -0
- package/src/executors/update-deploy-version/schema.d.ts +3 -0
- package/src/executors/update-deploy-version/schema.json +14 -0
- 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.spec.ts +20 -0
- package/src/generators/add-client-package/generator.ts +24 -0
- package/src/generators/add-client-package/schema.d.ts +4 -0
- package/src/generators/add-client-package/schema.json +19 -0
- package/src/generators/add-core-package/generator.spec.ts +20 -0
- package/src/generators/add-core-package/generator.ts +24 -0
- package/src/generators/add-core-package/schema.d.ts +4 -0
- package/src/generators/add-core-package/schema.json +19 -0
- 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/package.json +8 -8
- 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/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/files/package.json +7 -7
- package/src/generators/add-moleculer/generator.ts +7 -6
- package/src/generators/add-server-package/generator.spec.ts +20 -0
- package/src/generators/add-server-package/generator.ts +24 -0
- package/src/generators/add-server-package/schema.d.ts +4 -0
- package/src/generators/add-server-package/schema.json +19 -0
- package/src/index.ts +5 -0
- package/lib/generators/add-backend/files/knexfile.js +0 -63
- package/lib/generators/add-backend/files/src/api/remote-config.ts.template +0 -11
- package/lib/generators/add-backend/files/src/api/resolver.ts.template +0 -15
- package/lib/generators/add-backend/files/src/api/scalar.ts.template +0 -16
- package/lib/generators/add-backend/files/src/api/schema-builder.ts.template +0 -189
- package/lib/generators/add-backend/files/src/api/utils.ts.template +0 -44
- package/lib/generators/add-backend/files/src/config/moleculer.config.ts.template +0 -228
- package/lib/generators/add-backend/files/src/connectors/connection-broker.ts.template +0 -80
- package/lib/generators/add-backend/files/src/connectors/graphql-pubsub-connector.ts.template +0 -43
- package/lib/generators/add-backend/files/src/connectors/mongo-connector.ts.template +0 -78
- package/lib/generators/add-backend/files/src/connectors/nats-connector.ts.template +0 -82
- package/lib/generators/add-backend/files/src/connectors/redis-connector.ts.template +0 -73
- package/lib/generators/add-backend/files/src/express-app.ts.template +0 -67
- package/lib/generators/add-backend/files/src/interfaces/index.ts.template +0 -1
- package/lib/generators/add-backend/files/src/interfaces/module-interface.ts.template +0 -16
- package/lib/generators/add-backend/files/src/main.spec.ts.template +0 -129
- package/lib/generators/add-backend/files/src/middleware/__tests__/cors.test.ts.template +0 -12
- package/lib/generators/add-backend/files/src/middleware/cors.ts.template +0 -31
- package/lib/generators/add-backend/files/src/middleware/error.ts.template +0 -63
- package/lib/generators/add-backend/files/src/middleware/moleculer-inter-namespace.ts.template +0 -60
- package/lib/generators/add-backend/files/src/middleware/persistedQuery.ts.template +0 -40
- package/lib/generators/add-backend/files/src/middleware/sentry.ts.template +0 -9
- package/lib/generators/add-backend/files/src/middleware/services.ts.template +0 -16
- package/lib/generators/add-backend/files/src/middleware/tracer.ts.template +0 -24
- package/lib/generators/add-backend/files/src/modules/auth/schema/auth-schema.graphql +0 -25
- package/lib/generators/add-backend/files/src/server-setup/graphql-server.ts.template +0 -185
- package/lib/generators/add-backend/files/src/server-setup/graphql-subscription-server.ts.template +0 -113
- package/lib/generators/add-backend/files/src/server-setup/graphql-ws.ts.template +0 -158
- package/lib/generators/add-backend/files/src/server-setup/mongodb-migration-update.ts.template +0 -47
- package/lib/generators/add-backend/files/src/server-setup/utils.ts.template +0 -43
- package/lib/generators/add-backend/files/src/server-setup/websocket-multipath-update.ts.template +0 -88
- package/lib/generators/add-backend/files/src/stack-server.ts.template +0 -277
- package/lib/generators/add-backend/files/src/utils/migrations.ts.template +0 -32
- package/lib/generators/add-backend/files/uploads/3986781.ppt +0 -0
- 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
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
The CDEBase Enterprise license (the “Enterprise License”)
|
|
2
|
+
Copyright (c) 2018 cdebase LLC.
|
|
3
|
+
|
|
4
|
+
With regard to the CDEBase Software:
|
|
5
|
+
|
|
6
|
+
This software and associated documentation files (the "Software") may only be
|
|
7
|
+
used in production, if you (and any entity that you represent) have agreed to,
|
|
8
|
+
and are in compliance with, the CDEBase Terms of Service, available
|
|
9
|
+
at https://about.cdebase.com/terms (the “Enterprise Terms”), or other
|
|
10
|
+
agreement governing the use of the Software, as agreed by you and CDEBase,
|
|
11
|
+
and otherwise have a valid CDEBase Enterprise subscription for the
|
|
12
|
+
correct number of user seats. Subject to the foregoing sentence, you are free to
|
|
13
|
+
modify this Software and publish patches to the Software. You agree that CDEBase
|
|
14
|
+
and/or its licensors (as applicable) retain all right, title and interest in and
|
|
15
|
+
to all such modifications and/or patches, and all such modifications and/or
|
|
16
|
+
patches may only be used, copied, modified, displayed, distributed, or otherwise
|
|
17
|
+
exploited with a valid CDEBase Enterprise subscription for the correct
|
|
18
|
+
number of user seats. Notwithstanding the foregoing, you may copy and modify
|
|
19
|
+
the Software for development and testing purposes, without requiring a
|
|
20
|
+
subscription. You agree that CDEBase and/or its licensors (as applicable) retain
|
|
21
|
+
all right, title and interest in and to all such modifications. You are not
|
|
22
|
+
granted any other rights beyond what is expressly stated herein. Subject to the
|
|
23
|
+
foregoing, it is forbidden to copy, merge, publish, distribute, sublicense,
|
|
24
|
+
and/or sell the Software.
|
|
25
|
+
|
|
26
|
+
The full text of this Enterprise License shall be included in all copies or
|
|
27
|
+
substantial portions of the Software.
|
|
28
|
+
|
|
29
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
30
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
31
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
32
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
33
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
34
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
35
|
+
SOFTWARE.
|
|
36
|
+
|
|
37
|
+
For all third party components incorporated into the CDEBase Software, those
|
|
38
|
+
components are licensed under the original license provided by the owner of the
|
|
39
|
+
applicable component.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "core-package",
|
|
3
|
+
"version": "3.1.1-alpha.4",
|
|
4
|
+
"description": "Workbench core for higher packages to depend on",
|
|
5
|
+
"license": "ISC",
|
|
6
|
+
"author": "CDMBase LLC",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "lib/index.js",
|
|
9
|
+
"module": "lib/index.js",
|
|
10
|
+
"typings": "lib/index.d.ts",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "npm run build:clean && npm run build:lib",
|
|
13
|
+
"build:clean": "rimraf lib",
|
|
14
|
+
"build:lib": "rollup -c rollup.config.mjs",
|
|
15
|
+
"build:lib:watch": "npm run build:lib -- -w",
|
|
16
|
+
"jest": "./node_modules/.bin/jest",
|
|
17
|
+
"prepublishOnly": "npm run build",
|
|
18
|
+
"test": "jest",
|
|
19
|
+
"test:debug": "npm test -- --runInBand",
|
|
20
|
+
"test:watch": "npm test -- --watch",
|
|
21
|
+
"watch": "npm run build:lib:watch"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"typescript": {
|
|
28
|
+
"definition": "lib/index.d.ts"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import graphql from '@rollup/plugin-graphql';
|
|
2
|
+
import image from '@rollup/plugin-image';
|
|
3
|
+
import typescript from '@rollup/plugin-typescript';
|
|
4
|
+
import { string } from 'rollup-plugin-string';
|
|
5
|
+
function appendJsExtensionForMonacoEditor() {
|
|
6
|
+
return {
|
|
7
|
+
name: 'append-js-extension-for-monaco-editor',
|
|
8
|
+
transform(code, id) {
|
|
9
|
+
// Only modify .ts files and ignore node_modules
|
|
10
|
+
if (id.includes('node_modules') || !id.endsWith('.ts')) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
let modifiedCode = code;
|
|
15
|
+
const monacoImportRegex = /(@vscode-alt\/monaco-editor\/esm\/vs\/[a-zA-Z0-9\/._-]+)(?<!\.js)('|")/g;
|
|
16
|
+
|
|
17
|
+
modifiedCode = modifiedCode.replace(monacoImportRegex, (match, p1, p2) => {
|
|
18
|
+
// Directly append '.js' to the captured path, excluding if it already ends with '.js'
|
|
19
|
+
return `${p1}.js${p2}`;
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
return {
|
|
23
|
+
code: modifiedCode,
|
|
24
|
+
map: null, // Returning null for simplicity, consider generating source maps if necessary
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const bundle = (config) => ({
|
|
31
|
+
...config,
|
|
32
|
+
input: 'src/index.ts',
|
|
33
|
+
// marking all node modules as external
|
|
34
|
+
external: (id) => !/^[./]/.test(id),
|
|
35
|
+
});
|
|
36
|
+
const globals = { react: 'React' };
|
|
37
|
+
|
|
38
|
+
export default [
|
|
39
|
+
bundle({
|
|
40
|
+
plugins: [
|
|
41
|
+
typescript({ noEmitOnError: true }),
|
|
42
|
+
image(),
|
|
43
|
+
graphql({
|
|
44
|
+
include: '**/*.gql',
|
|
45
|
+
}),
|
|
46
|
+
string({
|
|
47
|
+
include: '**/*.graphql',
|
|
48
|
+
}),
|
|
49
|
+
appendJsExtensionForMonacoEditor(),
|
|
50
|
+
],
|
|
51
|
+
output: [
|
|
52
|
+
{
|
|
53
|
+
dir: 'lib',
|
|
54
|
+
format: 'es',
|
|
55
|
+
name: 'Core',
|
|
56
|
+
compact: true,
|
|
57
|
+
exports: 'named',
|
|
58
|
+
sourcemap: false,
|
|
59
|
+
preserveModules: true,
|
|
60
|
+
chunkFileNames: '[name]-[hash].[format].js',
|
|
61
|
+
globals,
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
}),
|
|
65
|
+
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './types';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const enum Actions {
|
|
2
|
+
NEXT = 'NEXT',
|
|
3
|
+
CHANGE = 'CHANGE',
|
|
4
|
+
SUBMIT = 'SUBMIT',
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export const enum FormData {
|
|
8
|
+
name = 'name',
|
|
9
|
+
isContinue = 'isContinue',
|
|
10
|
+
status = 'status',
|
|
11
|
+
members = 'members',
|
|
12
|
+
integrationId = 'integrationId'
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const enum DataSource {
|
|
16
|
+
|
|
17
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../../tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"resolveJsonModule": true,
|
|
5
|
+
"rootDir": "src",
|
|
6
|
+
"outDir": "lib",
|
|
7
|
+
"declaration": true,
|
|
8
|
+
"preserveConstEnums": true,
|
|
9
|
+
"declarationDir": "lib"
|
|
10
|
+
},
|
|
11
|
+
"include": [
|
|
12
|
+
"src"
|
|
13
|
+
],
|
|
14
|
+
"exclude": [
|
|
15
|
+
"../../../node_modules",
|
|
16
|
+
"node_modules",
|
|
17
|
+
"lib",
|
|
18
|
+
"lib",
|
|
19
|
+
"webpack.config.js",
|
|
20
|
+
"rollup.config.mjs"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
var nodeExternals = require('webpack-node-externals');
|
|
2
|
+
var webpack = require('webpack');
|
|
3
|
+
var path = require('path');
|
|
4
|
+
var fs = require('fs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
var webpack_opts = {
|
|
9
|
+
mode: 'development',
|
|
10
|
+
entry: {
|
|
11
|
+
extensionApi: './src',
|
|
12
|
+
},
|
|
13
|
+
target: 'node',
|
|
14
|
+
output: {
|
|
15
|
+
path: path.join(__dirname, 'lib'),
|
|
16
|
+
filename: 'index.js',
|
|
17
|
+
libraryTarget: "commonjs2"
|
|
18
|
+
},
|
|
19
|
+
resolve: {
|
|
20
|
+
extensions: ['.ts', '.mjs', '.js'],
|
|
21
|
+
},
|
|
22
|
+
plugins: [
|
|
23
|
+
new webpack.LoaderOptionsPlugin({
|
|
24
|
+
options: {
|
|
25
|
+
test: /\.ts$/,
|
|
26
|
+
ts: {
|
|
27
|
+
compiler: 'typescript',
|
|
28
|
+
configFile: 'tsconfig.json'
|
|
29
|
+
},
|
|
30
|
+
tslint: {
|
|
31
|
+
emitErrors: true,
|
|
32
|
+
failOnHint: true
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
],
|
|
37
|
+
devtool: 'source-map',
|
|
38
|
+
module: {
|
|
39
|
+
rules: [{
|
|
40
|
+
test: /\.ts$/,
|
|
41
|
+
use: 'ts-loader'
|
|
42
|
+
}]
|
|
43
|
+
},
|
|
44
|
+
externals: [
|
|
45
|
+
nodeExternals({ modulesDir: "../../../node_modules" }),
|
|
46
|
+
nodeExternals()
|
|
47
|
+
],
|
|
48
|
+
watchOptions: {
|
|
49
|
+
ignored: /.d.ts/
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
module.exports = webpack_opts;
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
3
|
+
const configs = Object.assign({}, options);
|
|
4
|
+
return yield generateCorePackage(tree, configs);
|
|
5
|
+
});
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Tree } from '@nx/devkit';
|
|
2
|
+
import { AddCorePackageGeneratorSchema } from './schema';
|
|
3
|
+
export declare function addCorePackageGenerator(tree: Tree, options: AddCorePackageGeneratorSchema): Promise<void>;
|
|
4
|
+
export declare const generateCorePackage: (tree: Tree, options: any) => Promise<void>;
|
|
5
|
+
export default addCorePackageGenerator;
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
3
|
+
const configs = Object.assign({}, options);
|
|
4
|
+
return yield generateCorePackage(tree, configs);
|
|
5
|
+
});
|
|
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
|
|
@@ -0,0 +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;;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 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"$id": "AddCorePackage",
|
|
4
|
+
"title": "",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"name": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "",
|
|
10
|
+
"x-prompt": "What name would you like to use?"
|
|
11
|
+
},
|
|
12
|
+
"directory": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "",
|
|
15
|
+
"x-prompt": "What directory would you like to create in?"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"required": ["name", "directory"]
|
|
19
|
+
}
|
|
@@ -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
|
+
}
|