@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
|
@@ -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
|
-
}
|