@common-stack/generate-plugin 6.0.1-alpha.8 → 6.0.2-alpha.1
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 +114 -153
- 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 +47 -47
- 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 +17 -75
- 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 +358 -358
- 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/files/package.json +4 -4
- 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 +7 -7
- 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/files/package.json +4 -4
- 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
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import * as nats from 'nats';
|
|
2
|
-
import { defaultsDeep } from 'lodash-es';
|
|
3
|
-
import { logger } from '@cdm-logger/server';
|
|
4
|
-
import { CdmLogger } from '@cdm-logger/core';
|
|
5
|
-
|
|
6
|
-
type ILogger = CdmLogger.ILogger;
|
|
7
|
-
|
|
8
|
-
export class NatsConnector {
|
|
9
|
-
private opts: nats.ClientOpts;
|
|
10
|
-
|
|
11
|
-
private client: nats.Client;
|
|
12
|
-
|
|
13
|
-
private logger: ILogger;
|
|
14
|
-
|
|
15
|
-
private connected: boolean;
|
|
16
|
-
|
|
17
|
-
constructor(opts: nats.ClientOpts) {
|
|
18
|
-
this.opts = defaultsDeep(opts, {});
|
|
19
|
-
this.logger = logger.child({ className: 'NatsConnector' });
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Connect to a NATS server
|
|
24
|
-
*
|
|
25
|
-
* @memberof NatsConnector
|
|
26
|
-
*/
|
|
27
|
-
public connect() {
|
|
28
|
-
if (this.client) {
|
|
29
|
-
return this.client;
|
|
30
|
-
}
|
|
31
|
-
return new Promise<nats.Client>((resolve, reject) => {
|
|
32
|
-
const client = nats.connect(this.opts);
|
|
33
|
-
|
|
34
|
-
client.on('connect', () => {
|
|
35
|
-
this.client = client;
|
|
36
|
-
this.connected = true;
|
|
37
|
-
this.logger.info('NATS client is connected.');
|
|
38
|
-
resolve(client);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
client.on('reconnect', () => {
|
|
42
|
-
this.logger.info('NATS client is reconnected.');
|
|
43
|
-
this.connected = true;
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
client.on('reconnecting', () => {
|
|
47
|
-
this.logger.warn('NATS client is reconnecting...');
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
client.on('disconnect', () => {
|
|
51
|
-
if (this.connected) {
|
|
52
|
-
this.logger.warn('NATS client is disconnected.');
|
|
53
|
-
this.connected = false;
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
client.on('error', (e) => {
|
|
58
|
-
this.logger.error('NATS error.', e.message);
|
|
59
|
-
this.logger.debug(e);
|
|
60
|
-
reject(e);
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
client.on('close', () => {
|
|
64
|
-
this.logger.fatal('NATS connection close.');
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Disconnect from a NATS server
|
|
71
|
-
*
|
|
72
|
-
* @memberof NatsTransporter
|
|
73
|
-
*/
|
|
74
|
-
public disconnect() {
|
|
75
|
-
if (this.client) {
|
|
76
|
-
this.client.flush(() => {
|
|
77
|
-
this.client.close();
|
|
78
|
-
this.client = null;
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { defaultsDeep } from 'lodash-es';
|
|
4
|
-
import { RedisClusterCache, RedisCache } from 'apollo-server-cache-redis';
|
|
5
|
-
import * as IORedis from 'ioredis';
|
|
6
|
-
import { logger } from '@cdm-logger/server';
|
|
7
|
-
import { config } from '../config';
|
|
8
|
-
import { CdmLogger } from '@cdm-logger/core';
|
|
9
|
-
type ILogger = CdmLogger.ILogger;
|
|
10
|
-
|
|
11
|
-
export class RedisConnector {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
private client: RedisClusterCache | RedisCache;
|
|
15
|
-
private opts: IORedis.ClusterOptions | IORedis.RedisOptions;
|
|
16
|
-
private logger: ILogger;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Creats an instance of Redis.
|
|
20
|
-
*
|
|
21
|
-
* @param {object} opts
|
|
22
|
-
*/
|
|
23
|
-
constructor(opts?: IORedis.ClusterOptions | IORedis.RedisOptions) {
|
|
24
|
-
this.opts = defaultsDeep(opts, {
|
|
25
|
-
prefix: null,
|
|
26
|
-
});
|
|
27
|
-
this.logger = logger.child({ className: 'RedisConnector' });
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Connect to the server
|
|
32
|
-
*
|
|
33
|
-
* @memberof RedisConnector
|
|
34
|
-
*/
|
|
35
|
-
public connect() {
|
|
36
|
-
return new Promise((resolve, reject) => {
|
|
37
|
-
reject('this method not implemented');
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Return redis or redis.cluster Dataloader Client
|
|
44
|
-
*
|
|
45
|
-
* @memberof RedisConnection
|
|
46
|
-
*/
|
|
47
|
-
public getRedisDataloaderClient() {
|
|
48
|
-
let client: RedisClusterCache | RedisCache;
|
|
49
|
-
if (config.REDIS_CLUSTER_ENABLED) {
|
|
50
|
-
if (!config.REDIS_CLUSTER_URL) {
|
|
51
|
-
throw new Error(`No nodes defined for cluster, ${config.REDIS_CLUSTER_URL}`);
|
|
52
|
-
}
|
|
53
|
-
this.logger.info('Setting Redis.Cluster connection');
|
|
54
|
-
client = new RedisClusterCache(config.REDIS_CLUSTER_URL as any, this.opts);
|
|
55
|
-
} else {
|
|
56
|
-
this.logger.info('Setting Redis connection');
|
|
57
|
-
client = new RedisCache(config.REDIS_URL as any || this.opts);
|
|
58
|
-
}
|
|
59
|
-
return client;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Close Redis client connection.
|
|
64
|
-
*
|
|
65
|
-
* @memberof RedisConnection
|
|
66
|
-
*/
|
|
67
|
-
public disconnect() {
|
|
68
|
-
if (!this.client) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
return this.client.close();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
2
|
-
import * as express from 'express';
|
|
3
|
-
import * as bodyParser from 'body-parser';
|
|
4
|
-
import modules from './modules';
|
|
5
|
-
import { errorMiddleware } from './middleware/error';
|
|
6
|
-
import { contextServicesMiddleware } from './middleware/services';
|
|
7
|
-
import { sentryMiddleware, sentryErrorHandlerMiddleware } from './middleware/sentry';
|
|
8
|
-
import { IModuleService } from './interfaces';
|
|
9
|
-
import { corsMiddleware } from './middleware/cors';
|
|
10
|
-
|
|
11
|
-
const cookiesMiddleware = require('universal-cookie-express');
|
|
12
|
-
|
|
13
|
-
export function expressApp(options: IModuleService, middlewares, http?) {
|
|
14
|
-
const app: express.Express = express();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
for (const applyBeforeware of modules.beforewares) {
|
|
18
|
-
applyBeforeware(app);
|
|
19
|
-
}
|
|
20
|
-
app.use(cookiesMiddleware());
|
|
21
|
-
app.use(contextServicesMiddleware(options.createContext, options.serviceContext));
|
|
22
|
-
|
|
23
|
-
// Don't rate limit heroku
|
|
24
|
-
app.enable('trust proxy');
|
|
25
|
-
|
|
26
|
-
app.use(sentryMiddleware);
|
|
27
|
-
|
|
28
|
-
if (middlewares !== null) {
|
|
29
|
-
app.use(middlewares);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
app.use('/', express.static(__FRONTEND_BUILD_DIR__, { maxAge: '180 days' }));
|
|
33
|
-
|
|
34
|
-
app.use(corsMiddleware);
|
|
35
|
-
app.use((req, res, next) => {
|
|
36
|
-
res.header('Access-Control-Allow-Credentials', JSON.stringify(true));
|
|
37
|
-
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
|
|
38
|
-
res.header(
|
|
39
|
-
'Access-Control-Allow-Headers',
|
|
40
|
-
'X-Requested-With, X-HTTP-Method-Override, X-CSP-Nonce, Content-Type, Accept',
|
|
41
|
-
);
|
|
42
|
-
next();
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
app.use(
|
|
46
|
-
bodyParser.json({
|
|
47
|
-
limit: '50mb',
|
|
48
|
-
verify: (req, res, buf) => {
|
|
49
|
-
// #Todo: Find some proper solution for it
|
|
50
|
-
(req as any).rawBody = buf;
|
|
51
|
-
},
|
|
52
|
-
}),
|
|
53
|
-
);
|
|
54
|
-
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true, parameterLimit: 50000 }));
|
|
55
|
-
|
|
56
|
-
for (const applyMiddleware of modules.middlewares) {
|
|
57
|
-
applyMiddleware(app);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (__DEV__) {
|
|
61
|
-
app.use(errorMiddleware);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
app.use(sentryErrorHandlerMiddleware);
|
|
65
|
-
|
|
66
|
-
return app;
|
|
67
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './module-interface';
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { GraphQLSchema } from 'graphql';
|
|
2
|
-
import { CdmLogger } from '@cdm-logger/core';
|
|
3
|
-
type ILogger = CdmLogger.ILogger;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export interface IModuleService {
|
|
7
|
-
serviceContainer: any;
|
|
8
|
-
serviceContext: any;
|
|
9
|
-
dataSource: any;
|
|
10
|
-
defaultPreferences: any;
|
|
11
|
-
createContext: any;
|
|
12
|
-
schema: GraphQLSchema;
|
|
13
|
-
logger: ILogger;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
// import {GRAPHQL_ROUTE, GRAPHIQL_ROUTE, main} from './main';
|
|
2
|
-
// import {get as httpGet, Server} from 'http';
|
|
3
|
-
// import 'jest';
|
|
4
|
-
|
|
5
|
-
// const ERRNO_KEY = 'errno';
|
|
6
|
-
// const PORT: number = 8080;
|
|
7
|
-
|
|
8
|
-
// function getFromServer(uri) {
|
|
9
|
-
// return new Promise((resolve, reject) => {
|
|
10
|
-
// httpGet(`http://localhost:${PORT}${uri}`, (res) => {
|
|
11
|
-
// resolve(res);
|
|
12
|
-
// }).on('error', (err: Error) => {
|
|
13
|
-
// reject(err);
|
|
14
|
-
// });
|
|
15
|
-
// });
|
|
16
|
-
// }
|
|
17
|
-
|
|
18
|
-
// describe('main', () => {
|
|
19
|
-
// it('should be able to Initialize a server (production)', () => {
|
|
20
|
-
// return main({
|
|
21
|
-
// enableCors: false,
|
|
22
|
-
// enableGraphiql: false,
|
|
23
|
-
// env: 'production',
|
|
24
|
-
// port: PORT,
|
|
25
|
-
// })
|
|
26
|
-
// .then(([server]) => {
|
|
27
|
-
// return (<Server>server).close();
|
|
28
|
-
// });
|
|
29
|
-
// });
|
|
30
|
-
|
|
31
|
-
// it('should be able to Initialize a server (development)', () => {
|
|
32
|
-
// return main({
|
|
33
|
-
// enableCors: true,
|
|
34
|
-
// enableGraphiql: true,
|
|
35
|
-
// env: 'dev',
|
|
36
|
-
// port: PORT,
|
|
37
|
-
// })
|
|
38
|
-
// .then(([server]) => {
|
|
39
|
-
// return (<Server>server).close();
|
|
40
|
-
// });
|
|
41
|
-
// });
|
|
42
|
-
|
|
43
|
-
// it('should have a working GET graphql (developemnt)', () => {
|
|
44
|
-
// return main({
|
|
45
|
-
// enableCors: true,
|
|
46
|
-
// enableGraphiql: true,
|
|
47
|
-
// env: 'dev',
|
|
48
|
-
// port: PORT,
|
|
49
|
-
// })
|
|
50
|
-
// .then(([server]) => {
|
|
51
|
-
// return getFromServer(GRAPHQL_ROUTE).then((res: any) => {
|
|
52
|
-
// (<Server>server).close();
|
|
53
|
-
// // GET without query returns 400
|
|
54
|
-
// expect(res.statusCode).toBe(400);
|
|
55
|
-
// });
|
|
56
|
-
// });
|
|
57
|
-
// });
|
|
58
|
-
|
|
59
|
-
// it('should have a working GET graphql (production)', () => {
|
|
60
|
-
// return main({
|
|
61
|
-
// enableCors: false,
|
|
62
|
-
// enableGraphiql: false,
|
|
63
|
-
// env: 'production',
|
|
64
|
-
// port: PORT,
|
|
65
|
-
// })
|
|
66
|
-
// .then(([server]) => {
|
|
67
|
-
// return getFromServer(GRAPHQL_ROUTE).then((res: any) => {
|
|
68
|
-
// (<Server>server).close();
|
|
69
|
-
// // GET without query returns 400
|
|
70
|
-
// expect(res.statusCode).toBe(400);
|
|
71
|
-
// });
|
|
72
|
-
// });
|
|
73
|
-
// });
|
|
74
|
-
|
|
75
|
-
// it('should have a working graphiql (developemnt)', () => {
|
|
76
|
-
// return main({
|
|
77
|
-
// enableCors: true,
|
|
78
|
-
// enableGraphiql: true,
|
|
79
|
-
// env: 'dev',
|
|
80
|
-
// port: PORT,
|
|
81
|
-
// })
|
|
82
|
-
// .then(([server]) => {
|
|
83
|
-
// return getFromServer(GRAPHIQL_ROUTE).then((res: any) => {
|
|
84
|
-
// (<Server>server).close();
|
|
85
|
-
// expect(res.statusCode).toBe(200);
|
|
86
|
-
// });
|
|
87
|
-
// });
|
|
88
|
-
// });
|
|
89
|
-
|
|
90
|
-
// it('should have block graphiql (production)', () => {
|
|
91
|
-
// return main({
|
|
92
|
-
// enableCors: false,
|
|
93
|
-
// enableGraphiql: false,
|
|
94
|
-
// env: 'production',
|
|
95
|
-
// port: PORT,
|
|
96
|
-
// })
|
|
97
|
-
// .then(([server]) => {
|
|
98
|
-
// return getFromServer(GRAPHIQL_ROUTE).then((res: any) => {
|
|
99
|
-
// (<Server>server).close();
|
|
100
|
-
// expect(res.statusCode).toBe(404);
|
|
101
|
-
// });
|
|
102
|
-
// });
|
|
103
|
-
// });
|
|
104
|
-
|
|
105
|
-
// it('should reject twice on same port', () => {
|
|
106
|
-
// return main({
|
|
107
|
-
// enableCors: false,
|
|
108
|
-
// enableGraphiql: false,
|
|
109
|
-
// env: 'production',
|
|
110
|
-
// port: PORT,
|
|
111
|
-
// })
|
|
112
|
-
// .then(([server]) => {
|
|
113
|
-
// return main({
|
|
114
|
-
// enableCors: false,
|
|
115
|
-
// enableGraphiql: false,
|
|
116
|
-
// env: 'production',
|
|
117
|
-
// port: PORT,
|
|
118
|
-
// })
|
|
119
|
-
// .then(([secondServer]) => {
|
|
120
|
-
// (<Server>server).close();
|
|
121
|
-
// (<Server>secondServer).close();
|
|
122
|
-
// throw new Error('Was able to listen twice!');
|
|
123
|
-
// }, (err: Error) => {
|
|
124
|
-
// (<Server>server).close();
|
|
125
|
-
// expect(err[ERRNO_KEY]).toBe('EADDRINUSE');
|
|
126
|
-
// });
|
|
127
|
-
// });
|
|
128
|
-
// });
|
|
129
|
-
// });
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/* eslint-disable jest/require-hook */
|
|
2
|
-
import * as cors from 'cors';
|
|
3
|
-
import { logger } from '@cdm-logger/server';
|
|
4
|
-
import { config } from '../config';
|
|
5
|
-
|
|
6
|
-
const CLIENT_URL = config.CLIENT_URL;
|
|
7
|
-
const BACKEND_URL = config.BACKEND_URL;
|
|
8
|
-
|
|
9
|
-
const corsWhitelist = [
|
|
10
|
-
BACKEND_URL,
|
|
11
|
-
CLIENT_URL,
|
|
12
|
-
config.GRAPHQL_URL,
|
|
13
|
-
// 'http://localhost:3000',
|
|
14
|
-
];
|
|
15
|
-
logger.info('Cors whitelist: %j', corsWhitelist);
|
|
16
|
-
const corsOptions = {
|
|
17
|
-
origin: (origin, callback) => {
|
|
18
|
-
if (corsWhitelist.indexOf(origin) !== -1) {
|
|
19
|
-
callback(null, true);
|
|
20
|
-
} else {
|
|
21
|
-
// TODO: only throw when in debug mode
|
|
22
|
-
logger.error('url (%s) is not in the whitelist', origin);
|
|
23
|
-
// callback(new Error('Not allowed by CORS'))
|
|
24
|
-
logger.warn('allowing all origins temporarily, you need to disable it.');
|
|
25
|
-
callback(null, true);
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
credentials: true,
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export const corsMiddleware = cors(corsOptions);
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/// <reference path='../../../../typings/index.d.ts' />
|
|
2
|
-
|
|
3
|
-
import * as path from 'path';
|
|
4
|
-
import * as fs from 'fs';
|
|
5
|
-
import * as url from 'url';
|
|
6
|
-
import { logger } from '@cdm-logger/server';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
let assetMap;
|
|
10
|
-
|
|
11
|
-
const stripCircular = (from, seen?: any) => {
|
|
12
|
-
const to = Array.isArray(from) ? [] : {};
|
|
13
|
-
seen = seen || [];
|
|
14
|
-
seen.push(from);
|
|
15
|
-
Object.getOwnPropertyNames(from).forEach(key => {
|
|
16
|
-
if (!from[key] || (typeof from[key] !== 'object' && !Array.isArray(from[key]))) {
|
|
17
|
-
to[key] = from[key];
|
|
18
|
-
} else if (seen.indexOf(from[key]) < 0) {
|
|
19
|
-
to[key] = stripCircular(from[key], seen.slice(0));
|
|
20
|
-
} else { to[key] = '[Circular]'; }
|
|
21
|
-
});
|
|
22
|
-
return to;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
const { pathname } = url.parse(__BACKEND_URL__);
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Middleware function that takes 4 arguments is classified as "error handling middleware"
|
|
29
|
-
* and will only get called if an error occurs.
|
|
30
|
-
* @param e
|
|
31
|
-
* @param req
|
|
32
|
-
* @param res
|
|
33
|
-
* @param next
|
|
34
|
-
*/
|
|
35
|
-
export const errorMiddleware =
|
|
36
|
-
(e, req, res, next) => {
|
|
37
|
-
if (req.path === pathname) {
|
|
38
|
-
const stack = e.stack.toString().replace(/[\n]/g, '\\n');
|
|
39
|
-
res.status(200).send(`[{"data": {}, "errors":[{"message": "${stack}"}]}]`);
|
|
40
|
-
} else {
|
|
41
|
-
logger.error(e);
|
|
42
|
-
|
|
43
|
-
if (__DEV__ || !assetMap) {
|
|
44
|
-
assetMap = JSON.parse(fs.readFileSync(path.join(__FRONTEND_BUILD_DIR__, 'assets.json')).toString());
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const serverErrorScript = `<script charset="UTF-8">window.__SERVER_ERROR__=${JSON.stringify(
|
|
48
|
-
stripCircular(e),
|
|
49
|
-
)};</script>`;
|
|
50
|
-
const vendorScript = assetMap['vendor.js']
|
|
51
|
-
? `<script src="/${assetMap['vendor.js']}" charSet="utf-8"></script>`
|
|
52
|
-
: '';
|
|
53
|
-
|
|
54
|
-
res.status(200).send(
|
|
55
|
-
`<html>${serverErrorScript}<body><div id="content"></div>
|
|
56
|
-
${vendorScript}
|
|
57
|
-
<script src="/${assetMap['index.js']}" charSet="utf-8"></script>
|
|
58
|
-
</body></html>`,
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
|
package/lib/generators/add-backend/files/src/middleware/moleculer-inter-namespace.ts.template
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-param-reassign */
|
|
2
|
-
import { ServiceBroker, Middleware } from 'moleculer';
|
|
3
|
-
import { isString, defaultsDeep } from 'lodash-es';
|
|
4
|
-
|
|
5
|
-
export const InterNamespaceMiddleware = function (options): Middleware {
|
|
6
|
-
if (!Array.isArray(options)) {
|
|
7
|
-
throw new Error('Must be an Array');
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
let thisBroker: ServiceBroker;
|
|
11
|
-
const brokers: { [key: string]: ServiceBroker } = {};
|
|
12
|
-
|
|
13
|
-
return {
|
|
14
|
-
created(broker: ServiceBroker) {
|
|
15
|
-
thisBroker = broker;
|
|
16
|
-
options.forEach((nsOpts) => {
|
|
17
|
-
if (isString(nsOpts)) {
|
|
18
|
-
nsOpts = {
|
|
19
|
-
namespace: nsOpts,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
const ns = nsOpts.namespace;
|
|
23
|
-
|
|
24
|
-
const brokerOpts = defaultsDeep(
|
|
25
|
-
{},
|
|
26
|
-
nsOpts,
|
|
27
|
-
{ nodeID: null, middlewares: null, created: null, started: null },
|
|
28
|
-
broker.options,
|
|
29
|
-
);
|
|
30
|
-
brokers[ns] = new ServiceBroker(brokerOpts);
|
|
31
|
-
});
|
|
32
|
-
},
|
|
33
|
-
|
|
34
|
-
started() {
|
|
35
|
-
return Promise.all(Object.values(brokers).map((b) => b.start()));
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
stopped() {
|
|
39
|
-
return Promise.all(Object.values(brokers).map((b) => b.stop()));
|
|
40
|
-
},
|
|
41
|
-
|
|
42
|
-
call(next) {
|
|
43
|
-
return function (actionName, params, opts = {}) {
|
|
44
|
-
if (isString(actionName) && actionName.includes('@')) {
|
|
45
|
-
const [action, namespace] = actionName.split('@');
|
|
46
|
-
|
|
47
|
-
if (brokers[namespace]) {
|
|
48
|
-
return brokers[namespace].call(action, params, opts);
|
|
49
|
-
}
|
|
50
|
-
if (namespace === thisBroker.namespace) {
|
|
51
|
-
return next(action, params, opts);
|
|
52
|
-
}
|
|
53
|
-
throw new Error(`Unknown namespace: ${namespace}`);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return next(actionName, params, opts);
|
|
57
|
-
};
|
|
58
|
-
},
|
|
59
|
-
};
|
|
60
|
-
};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { invert, isArray } from 'lodash-es';
|
|
2
|
-
import { GRAPHIQL_ROUTE } from '../ENDPOINTS';
|
|
3
|
-
import { logger } from '@cdm-logger/server';
|
|
4
|
-
|
|
5
|
-
let reqlib: any = require('app-root-path');
|
|
6
|
-
|
|
7
|
-
let persistCache = true;
|
|
8
|
-
let queryMap;
|
|
9
|
-
try {
|
|
10
|
-
queryMap = reqlib.require('@adminide-stack/graphql-gql/extracted_queries.json');
|
|
11
|
-
|
|
12
|
-
} catch (err) {
|
|
13
|
-
logger.warn('extracted_queries.json file is unavailable, disabling persist queries');
|
|
14
|
-
}
|
|
15
|
-
export const persistedQueryMiddleware = (req, res, next) => {
|
|
16
|
-
|
|
17
|
-
if (queryMap) {
|
|
18
|
-
const invertedMap = invert(queryMap);
|
|
19
|
-
|
|
20
|
-
if (isArray(req.body)) {
|
|
21
|
-
req.body = req.body.map(body => {
|
|
22
|
-
const id = body['id'];
|
|
23
|
-
return {
|
|
24
|
-
query: invertedMap[id],
|
|
25
|
-
...body,
|
|
26
|
-
};
|
|
27
|
-
});
|
|
28
|
-
next();
|
|
29
|
-
} else {
|
|
30
|
-
if (!__DEV__ || (req.get('Referer') || '').indexOf(GRAPHIQL_ROUTE) < 0) {
|
|
31
|
-
res.status(500).send('Unknown GraphQL query has been received, rejecting...');
|
|
32
|
-
} else {
|
|
33
|
-
next();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
} else {
|
|
37
|
-
next();
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import 'isomorphic-fetch';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export const contextServicesMiddleware = (createContext, serviceContext) => (req, res, next) => {
|
|
5
|
-
Promise.all([
|
|
6
|
-
createContext(req, res),
|
|
7
|
-
serviceContext(req, res),
|
|
8
|
-
])
|
|
9
|
-
.then(([ context, services ]) => {
|
|
10
|
-
req.context = context;
|
|
11
|
-
req.services = services;
|
|
12
|
-
|
|
13
|
-
next();
|
|
14
|
-
})
|
|
15
|
-
.catch((err) => next());
|
|
16
|
-
};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
const ZipkinOpentracing = require('zipkin-javascript-opentracing');
|
|
2
|
-
import { config } from '../config';
|
|
3
|
-
|
|
4
|
-
const ZIPKIN_HOST_PORT = `${config.ZIPKIN_URL}`;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export const server = new ZipkinOpentracing({
|
|
8
|
-
serviceName: 'graphql',
|
|
9
|
-
endpoint: ZIPKIN_HOST_PORT,
|
|
10
|
-
kind: 'server',
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
export const client = new ZipkinOpentracing({
|
|
15
|
-
serviceName: 'graphql',
|
|
16
|
-
endpoint: ZIPKIN_HOST_PORT,
|
|
17
|
-
kind: 'client',
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
export const local = new ZipkinOpentracing({
|
|
21
|
-
serviceName: 'graphql',
|
|
22
|
-
endpoint: ZIPKIN_HOST_PORT,
|
|
23
|
-
kind: 'local',
|
|
24
|
-
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
type LoggedInUserPayload {
|
|
2
|
-
# if `id` is `null`, it means there is not logged in user
|
|
3
|
-
id: ID
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
extend type Query {
|
|
7
|
-
loggedInUser: LoggedInUserPayload!
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
type AuthenticateUserPayload {
|
|
11
|
-
token: String!
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
extend type Mutation {
|
|
15
|
-
authenticateUser(email: String!, password: String!): AuthenticateUserPayload
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
type SignupUserPayload {
|
|
19
|
-
id: ID!
|
|
20
|
-
token: String!
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
extend type Mutation {
|
|
24
|
-
signupUser(email: String!, password: String!): SignupUserPayload
|
|
25
|
-
}
|