@maka/maka-cli 5.123.0 → 5.123.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/README.md +64 -64
- package/bundle/typescript/package.json +120 -120
- package/bundle/typescript/src/README.md +64 -64
- package/bundle/typescript/src/commands/aws/aws.command.js +2 -2
- package/bundle/typescript/src/commands/aws/ci.sub.cmd.js +5 -5
- package/bundle/typescript/src/commands/aws/ckp.sub.cmd.js +12 -12
- package/bundle/typescript/src/commands/aws/csg.sub.cmd.js +3 -3
- package/bundle/typescript/src/commands/aws/di.sub.cmd.js +8 -8
- package/bundle/typescript/src/commands/aws/rkp.sub.cmd.js +5 -5
- package/bundle/typescript/src/commands/aws/sth.sub.cmd.js +3 -3
- package/bundle/typescript/src/commands/aws/ti.sub.cmd.js +5 -5
- package/bundle/typescript/src/commands/build/build.js +16 -16
- package/bundle/typescript/src/commands/build/docker.sub.cmd.js +9 -9
- package/bundle/typescript/src/commands/create.js +36 -36
- package/bundle/typescript/src/commands/debug.js +4 -4
- package/bundle/typescript/src/commands/deploy/deploy.command.js +2 -2
- package/bundle/typescript/src/commands/deploy/galaxy.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/deploy/github.sub.cmd.js +8 -8
- package/bundle/typescript/src/commands/deploy/ubuntu.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/env/env.command.js +8 -8
- package/bundle/typescript/src/commands/env/set.sub.cmd.js +11 -11
- package/bundle/typescript/src/commands/game/sideQuest/commands/go.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/commands/search.js +9 -9
- package/bundle/typescript/src/commands/game/sideQuest/commands/source.js +7 -7
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-chunks.js +443 -443
- package/bundle/typescript/src/commands/game/sideQuest/factories/scene-factory.js +6 -6
- package/bundle/typescript/src/commands/game/sideQuest/game.js +1 -1
- package/bundle/typescript/src/commands/game/sideQuest/models/npc.js +206 -206
- package/bundle/typescript/src/commands/game/sideQuest/models/room.js +9 -9
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene1.json +556 -556
- package/bundle/typescript/src/commands/game/sideQuest/scenes/scene2.json +1447 -1447
- package/bundle/typescript/src/commands/game/sideQuest/utilities/ephemeral.js +14 -14
- package/bundle/typescript/src/commands/game/sideQuest-backlog.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/game/sideQuest.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/generate.js +2 -2
- package/bundle/typescript/src/commands/lint.js +10 -10
- package/bundle/typescript/src/commands/maka.cmd.js +26 -26
- package/bundle/typescript/src/commands/murder.js +14 -14
- package/bundle/typescript/src/commands/proxy.js +13 -13
- package/bundle/typescript/src/commands/remote/reconfig.sub.cmd.js +6 -6
- package/bundle/typescript/src/commands/run/docker.sub.cmd.js +11 -11
- package/bundle/typescript/src/commands/run/run.command.js +24 -24
- package/bundle/typescript/src/commands/set/global.sub.cmd.js +8 -8
- package/bundle/typescript/src/commands/set/local.sub.cmd.js +2 -2
- package/bundle/typescript/src/commands/set/set.command.js +3 -3
- package/bundle/typescript/src/commands/testCmd/test.command.js +2 -2
- package/bundle/typescript/src/exec.js +0 -0
- package/bundle/typescript/src/generators/api.js +11 -11
- package/bundle/typescript/src/generators/collection.js +6 -6
- package/bundle/typescript/src/generators/hook.js +10 -10
- package/bundle/typescript/src/generators/kits/auth/auth.generator.js +2 -2
- package/bundle/typescript/src/generators/kits/auth/auth0-meteor.auth.gen.js +612 -612
- package/bundle/typescript/src/generators/kits/auth/basic-meteor.auth.gen.js +48 -48
- package/bundle/typescript/src/generators/kits/auth/provider.auth.gen.js +12 -12
- package/bundle/typescript/src/generators/kits/esri/esri.generator.js +3 -3
- package/bundle/typescript/src/generators/kits/esri/map.esri.gen.js +7 -7
- package/bundle/typescript/src/generators/kits/frames/frames.generator.js +16 -16
- package/bundle/typescript/src/generators/kits/mui/auth.mui.gen.js +2 -2
- package/bundle/typescript/src/generators/kits/mui/auth0.mui.gen.js +5 -5
- package/bundle/typescript/src/generators/kits/mui/frame.mui.gen.js +4 -4
- package/bundle/typescript/src/generators/kits/mui/mui.generator.js +22 -22
- package/bundle/typescript/src/generators/services/translation.js +5 -5
- package/bundle/typescript/src/templates/aws/cloudformation/create-ec2-instance.template +14 -14
- package/bundle/typescript/src/templates/meteor/api/api.js +20 -20
- package/bundle/typescript/src/templates/meteor/api/api.js.ts +20 -20
- package/bundle/typescript/src/templates/meteor/api/apollo-gateway.js +50 -50
- package/bundle/typescript/src/templates/meteor/api/apollo-gateway.js.ts +55 -55
- package/bundle/typescript/src/templates/meteor/api/graphql-api.js +63 -63
- package/bundle/typescript/src/templates/meteor/api/graphql-api.js.ts +69 -69
- package/bundle/typescript/src/templates/meteor/api/methods.js +39 -39
- package/bundle/typescript/src/templates/meteor/api/methods.js.ts +40 -40
- package/bundle/typescript/src/templates/meteor/api/register-api.js +3 -3
- package/bundle/typescript/src/templates/meteor/api/register-api.js.ts +3 -3
- package/bundle/typescript/src/templates/meteor/api/resolvers.js +9 -9
- package/bundle/typescript/src/templates/meteor/api/resolvers.js.ts +9 -9
- package/bundle/typescript/src/templates/meteor/api/typeDefs.js +6 -6
- package/bundle/typescript/src/templates/meteor/api/typeDefs.js.ts +6 -6
- package/bundle/typescript/src/templates/meteor/app/client/body.html +3 -3
- package/bundle/typescript/src/templates/meteor/app/client/head.html +12 -12
- package/bundle/typescript/src/templates/meteor/app/client/main.js +15 -15
- package/bundle/typescript/src/templates/meteor/app/client/main.js.jsx +15 -15
- package/bundle/typescript/src/templates/meteor/app/client/main.js.ts +17 -17
- package/bundle/typescript/src/templates/meteor/app/client/main.js.tsx +17 -17
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js +20 -20
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.jsx +107 -107
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.ts +20 -20
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/index.js.tsx +108 -108
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js +39 -39
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.jsx +33 -33
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.ts +24 -24
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/routes.js.tsx +33 -33
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js +9 -9
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.jsx +9 -9
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.ts +9 -9
- package/bundle/typescript/src/templates/meteor/app/imports/startup/client/templates.js.tsx +9 -9
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js +1 -1
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.jsx +20 -20
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.ts +1 -1
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/index.js.tsx +20 -20
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/routes.js.jsx +28 -28
- package/bundle/typescript/src/templates/meteor/app/imports/startup/lib/routes.js.tsx +28 -28
- package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js +1 -1
- package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js.jsx +95 -95
- package/bundle/typescript/src/templates/meteor/app/imports/startup/server/index.js.tsx +98 -98
- package/bundle/typescript/src/templates/meteor/app/imports/ui/test-helpers.js +24 -24
- package/bundle/typescript/src/templates/meteor/app/imports/ui/test-helpers.js.ts +24 -24
- package/bundle/typescript/src/templates/meteor/app/lib/main.js +3 -3
- package/bundle/typescript/src/templates/meteor/app/lib/main.js.jsx +3 -3
- package/bundle/typescript/src/templates/meteor/app/lib/main.js.ts +3 -3
- package/bundle/typescript/src/templates/meteor/app/lib/main.js.tsx +3 -3
- package/bundle/typescript/src/templates/meteor/app/maka.d.ts +533 -533
- package/bundle/typescript/src/templates/meteor/app/meteor.d.ts +181 -181
- package/bundle/typescript/src/templates/meteor/app/public/manifest.json +27 -27
- package/bundle/typescript/src/templates/meteor/app/public/sw.js +30 -30
- package/bundle/typescript/src/templates/meteor/app/public/sw.js.jsx +30 -30
- package/bundle/typescript/src/templates/meteor/app/public/sw.js.ts +30 -30
- package/bundle/typescript/src/templates/meteor/app/public/sw.js.tsx +30 -30
- package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js +179 -179
- package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.jsx +179 -179
- package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.ts +179 -179
- package/bundle/typescript/src/templates/meteor/app/server/helmet-csp.js.tsx +179 -179
- package/bundle/typescript/src/templates/meteor/app/server/main.js +13 -13
- package/bundle/typescript/src/templates/meteor/app/server/main.js.jsx +13 -13
- package/bundle/typescript/src/templates/meteor/app/server/main.js.ts +14 -14
- package/bundle/typescript/src/templates/meteor/app/server/main.js.tsx +14 -14
- package/bundle/typescript/src/templates/meteor/app/tsconfig.json +42 -42
- package/bundle/typescript/src/templates/meteor/collection/collection.js +51 -51
- package/bundle/typescript/src/templates/meteor/collection/collection.js.ts +55 -55
- package/bundle/typescript/src/templates/meteor/collection/tests.js +27 -27
- package/bundle/typescript/src/templates/meteor/collection/tests.js.ts +27 -27
- package/bundle/typescript/src/templates/meteor/config/deploy.sh.template +101 -101
- package/bundle/typescript/src/templates/meteor/config/docker-compose.yaml +17 -17
- package/bundle/typescript/src/templates/meteor/config/nginx.conf.template +31 -31
- package/bundle/typescript/src/templates/meteor/config/pm2.config.js +27 -27
- package/bundle/typescript/src/templates/meteor/config/process.env +5 -5
- package/bundle/typescript/src/templates/meteor/config/settings.json +11 -11
- package/bundle/typescript/src/templates/meteor/config/ssh.json +6 -6
- package/bundle/typescript/src/templates/meteor/dbc/config.js +70 -70
- package/bundle/typescript/src/templates/meteor/dbc/config.js.ts +70 -70
- package/bundle/typescript/src/templates/meteor/dbc/conn.js +37 -37
- package/bundle/typescript/src/templates/meteor/dbc/conn.js.ts +37 -37
- package/bundle/typescript/src/templates/meteor/dbc/register-dbc.js +3 -3
- package/bundle/typescript/src/templates/meteor/dbc/register-dbc.js.ts +3 -3
- package/bundle/typescript/src/templates/meteor/github/workflows/deploy.yaml +150 -150
- package/bundle/typescript/src/templates/meteor/method/method.js +48 -48
- package/bundle/typescript/src/templates/meteor/method/method.js.ts +48 -48
- package/bundle/typescript/src/templates/meteor/package/package.js +37 -37
- package/bundle/typescript/src/templates/meteor/package/package.js.jsx +37 -37
- package/bundle/typescript/src/templates/meteor/package/package.js.ts +36 -36
- package/bundle/typescript/src/templates/meteor/package/package.js.tsx +37 -37
- package/bundle/typescript/src/templates/meteor/package/tests/client/package.js +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.jsx +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.ts +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/client/package.js.tsx +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/server/package.js +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.jsx +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.ts +5 -5
- package/bundle/typescript/src/templates/meteor/package/tests/server/package.js.tsx +5 -5
- package/bundle/typescript/src/templates/meteor/project/.maka/config.json +29 -29
- package/bundle/typescript/src/templates/meteor/project/README.md +33 -33
- package/bundle/typescript/src/templates/meteor/project/build/README +4 -4
- package/bundle/typescript/src/templates/meteor/project/gitignore +10 -10
- package/bundle/typescript/src/templates/meteor/project/package.json +29 -29
- package/bundle/typescript/src/templates/meteor/publish/publish.js +7 -7
- package/bundle/typescript/src/templates/meteor/publish/publish.js.ts +7 -7
- package/bundle/typescript/src/templates/meteor/service/logger/logger.js +27 -27
- package/bundle/typescript/src/templates/meteor/service/logger/logger.js.ts +27 -27
- package/bundle/typescript/src/templates/meteor/stylesheet/stylesheet.css +5 -5
- package/bundle/typescript/src/templates/meteor/stylesheet/stylesheet.css.less +5 -5
- package/bundle/typescript/src/templates/meteor/template/template-tests.js +1 -1
- package/bundle/typescript/src/templates/meteor/template/template-tests.js.jsx +55 -55
- package/bundle/typescript/src/templates/meteor/template/template-tests.js.ts +1 -1
- package/bundle/typescript/src/templates/meteor/template/template-tests.js.tsx +55 -55
- package/bundle/typescript/src/templates/meteor/template/template.css +3 -3
- package/bundle/typescript/src/templates/meteor/template/template.css.less +3 -3
- package/bundle/typescript/src/templates/meteor/template/template.css.scss +3 -3
- package/bundle/typescript/src/templates/meteor/template/template.html +5 -5
- package/bundle/typescript/src/templates/meteor/template/template.js +20 -20
- package/bundle/typescript/src/templates/meteor/template/template.js.jsx +77 -77
- package/bundle/typescript/src/templates/meteor/template/template.js.ts +1 -1
- package/bundle/typescript/src/templates/meteor/template/template.js.tsx +89 -89
- package/bundle/typescript/src/templates/react/component/component.css +6 -6
- package/bundle/typescript/src/templates/react/component/component.css.less +6 -6
- package/bundle/typescript/src/templates/react/component/component.css.scss +3 -3
- package/bundle/typescript/src/templates/react/component/component.js.jsx +59 -59
- package/bundle/typescript/src/templates/react/component/component.js.tsx +65 -65
- package/bundle/typescript/src/templates/react/hook/hook.css +3 -3
- package/bundle/typescript/src/templates/react/hook/hook.css.scss +3 -3
- package/bundle/typescript/src/templates/react/hook/hook.js.jsx +19 -19
- package/bundle/typescript/src/templates/react/hook/hook.js.tsx +19 -19
- package/bundle/typescript/src/templates/react/kit/auth/provider/authentication-provider.js.jsx +306 -306
- package/bundle/typescript/src/templates/react/kit/auth/provider/authentication-provider.js.tsx +350 -350
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-client.js.jsx +178 -178
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-client.js.tsx +178 -178
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-config.js.jsx +59 -59
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-config.js.tsx +67 -67
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-methods.js.jsx +273 -273
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-methods.js.tsx +275 -275
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-validator.js.jsx +182 -182
- package/bundle/typescript/src/templates/react/kit/auth/service/auth0-validator.js.tsx +199 -199
- package/bundle/typescript/src/templates/react/kit/auth/service/meteor-auth-service.js.jsx +138 -138
- package/bundle/typescript/src/templates/react/kit/auth/service/meteor-auth-service.js.tsx +153 -153
- package/bundle/typescript/src/templates/react/kit/esri/map/basic-map.js.jsx +29 -29
- package/bundle/typescript/src/templates/react/kit/esri/map/basic-map.js.tsx +32 -32
- package/bundle/typescript/src/templates/react/kit/frames/frames-demo.css +63 -63
- package/bundle/typescript/src/templates/react/kit/frames/frames-demo.jsx +153 -153
- package/bundle/typescript/src/templates/react/kit/frames/frames-demo.tsx +164 -164
- package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.css +105 -105
- package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.jsx +158 -158
- package/bundle/typescript/src/templates/react/kit/frames/workspace-manager.tsx +166 -166
- package/bundle/typescript/src/templates/react/kit/mui/auth/forgot-password/basic-forgot-password-page.js.jsx +34 -34
- package/bundle/typescript/src/templates/react/kit/mui/auth/forgot-password/basic-forgot-password-page.js.tsx +33 -33
- package/bundle/typescript/src/templates/react/kit/mui/auth/login/basic-login-page.js.jsx +53 -53
- package/bundle/typescript/src/templates/react/kit/mui/auth/login/basic-login-page.js.tsx +53 -53
- package/bundle/typescript/src/templates/react/kit/mui/auth/logout/basic-logout-page.js.jsx +25 -25
- package/bundle/typescript/src/templates/react/kit/mui/auth/logout/basic-logout-page.js.tsx +25 -25
- package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.jsx +41 -41
- package/bundle/typescript/src/templates/react/kit/mui/auth/password-reset/basic-password-reset-page.js.tsx +34 -34
- package/bundle/typescript/src/templates/react/kit/mui/auth/register/basic-register-page.js.jsx +33 -33
- package/bundle/typescript/src/templates/react/kit/mui/auth/register/basic-register-page.js.tsx +33 -33
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth-callback.js.jsx +71 -71
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth-callback.js.tsx +71 -71
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-account-settings.js.jsx +123 -123
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-account-settings.js.tsx +123 -123
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-login-button.js.jsx +56 -56
- package/bundle/typescript/src/templates/react/kit/mui/auth0/auth0-login-button.js.tsx +74 -74
- package/bundle/typescript/src/templates/react/kit/mui/frame/app-bars/basic-app-bar.js.jsx +43 -43
- package/bundle/typescript/src/templates/react/kit/mui/frame/app-bars/basic-app-bar.js.tsx +43 -43
- package/bundle/typescript/src/templates/react/kit/mui/frame/drawers/basic-drawer.js.jsx +121 -121
- package/bundle/typescript/src/templates/react/kit/mui/frame/drawers/basic-drawer.js.tsx +117 -117
- package/bundle/typescript/src/templates/react/kit/mui/frame/footers/basic-sticky-footer.js.jsx +41 -41
- package/bundle/typescript/src/templates/react/kit/mui/frame/footers/basic-sticky-footer.js.tsx +41 -41
- package/bundle/typescript/src/templates/react/route/route.js +8 -8
- package/bundle/typescript/src/templates/react/route/route.js.jsx +5 -5
- package/bundle/typescript/src/templates/react/route/route.js.ts +8 -8
- package/bundle/typescript/src/templates/react/route/route.js.tsx +5 -5
- package/bundle/typescript/src/templates/react/test/test.js +1 -1
- package/bundle/typescript/src/templates/react/test/test.js.jsx +40 -40
- package/bundle/typescript/src/templates/react/test/test.js.ts +1 -1
- package/bundle/typescript/src/templates/react/test/test.js.tsx +40 -40
- package/bundle/typescript/src/templates/service/docker/Dockerfile +54 -54
- package/bundle/typescript/src/templates/service/eslint/babel.config.js +16 -16
- package/bundle/typescript/src/templates/service/eslint/config.eslint.js +69 -69
- package/bundle/typescript/src/templates/service/i18n/i18n.js +33 -33
- package/bundle/typescript/src/templates/service/i18n/i18n.js.ts +33 -33
- package/bundle/typescript/src/templates/service/i18n/locales.js +3 -3
- package/bundle/typescript/src/templates/service/i18n/locales.js.ts +3 -3
- package/bundle/typescript/src/templates/service/openssl/openssl.conf +22 -22
- package/bundle/typescript/src/templates/service/test/jest/jest.config.js +24 -24
- package/bundle/typescript/src/templates/service/test/jest/jest.setup.js +7 -7
- package/bundle/typescript/src/tools/mpi/sdk-runtime.d.ts +1 -0
- package/bundle/typescript/src/tools/mpi/sdk-runtime.js +29 -0
- package/bundle/typescript/src/tools/mpi/sdk-runtime.js.map +1 -1
- package/package.json +120 -120
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import { ApolloServer } from '@apollo/server';
|
|
2
|
-
import { ApolloGateway, IntrospectAndCompose } from '@apollo/gateway';
|
|
3
|
-
import { WebApp } from 'meteor/webapp';
|
|
4
|
-
import express, { Request, Response } from 'express';
|
|
5
|
-
import { expressMiddleware } from '@as-integrations/express5';
|
|
6
|
-
import { ApolloServerPluginUsageReportingDisabled } from '@apollo/server/plugin/disabled';
|
|
7
|
-
import { Meteor } from 'meteor/meteor';
|
|
8
|
-
|
|
9
|
-
// Define the context interface
|
|
10
|
-
interface Context {
|
|
11
|
-
token?: string;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// Use `IntrospectAndCompose` to introspect the subgraphs (empty for now, add subgraphs as needed)
|
|
15
|
-
const gateway = new ApolloGateway({
|
|
16
|
-
supergraphSdl: new IntrospectAndCompose({
|
|
17
|
-
subgraphs: [
|
|
18
|
-
],
|
|
19
|
-
}),
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
const server = new ApolloServer<Context>({
|
|
23
|
-
gateway, // Attach the Apollo Gateway
|
|
24
|
-
cacheControl: {
|
|
25
|
-
defaultMaxAge: 5, // Cache control settings
|
|
26
|
-
},
|
|
27
|
-
cache: 'bounded',
|
|
28
|
-
formatError: (err) => {
|
|
29
|
-
if (Meteor.isProduction) {
|
|
30
|
-
return { message: err.extensions?.code || 'Internal Server Error' };
|
|
31
|
-
}
|
|
32
|
-
console.error(err);
|
|
33
|
-
return err;
|
|
34
|
-
},
|
|
35
|
-
plugins: [ApolloServerPluginUsageReportingDisabled()]
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
const startApolloGateway = async (server: ApolloServer<Context>) => {
|
|
39
|
-
await server.start();
|
|
40
|
-
|
|
41
|
-
// Use Meteor's WebApp to handle the Apollo middleware
|
|
42
|
-
WebApp.connectHandlers.use(
|
|
43
|
-
'/graphql', // The endpoint for the federated GraphQL API
|
|
44
|
-
express.json({ limit: '5mb' }), // Handle JSON requests
|
|
45
|
-
expressMiddleware(server, {
|
|
46
|
-
context: async ({ req }: { req: Request }): Promise<Context> => {
|
|
47
|
-
const token = req.headers.authorization || null;
|
|
48
|
-
return { token }; // Pass token for authentication
|
|
49
|
-
},
|
|
50
|
-
}),
|
|
51
|
-
);
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
// Start the Apollo Gateway server
|
|
55
|
-
startApolloGateway(server);
|
|
1
|
+
import { ApolloServer } from '@apollo/server';
|
|
2
|
+
import { ApolloGateway, IntrospectAndCompose } from '@apollo/gateway';
|
|
3
|
+
import { WebApp } from 'meteor/webapp';
|
|
4
|
+
import express, { Request, Response } from 'express';
|
|
5
|
+
import { expressMiddleware } from '@as-integrations/express5';
|
|
6
|
+
import { ApolloServerPluginUsageReportingDisabled } from '@apollo/server/plugin/disabled';
|
|
7
|
+
import { Meteor } from 'meteor/meteor';
|
|
8
|
+
|
|
9
|
+
// Define the context interface
|
|
10
|
+
interface Context {
|
|
11
|
+
token?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Use `IntrospectAndCompose` to introspect the subgraphs (empty for now, add subgraphs as needed)
|
|
15
|
+
const gateway = new ApolloGateway({
|
|
16
|
+
supergraphSdl: new IntrospectAndCompose({
|
|
17
|
+
subgraphs: [
|
|
18
|
+
],
|
|
19
|
+
}),
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const server = new ApolloServer<Context>({
|
|
23
|
+
gateway, // Attach the Apollo Gateway
|
|
24
|
+
cacheControl: {
|
|
25
|
+
defaultMaxAge: 5, // Cache control settings
|
|
26
|
+
},
|
|
27
|
+
cache: 'bounded',
|
|
28
|
+
formatError: (err) => {
|
|
29
|
+
if (Meteor.isProduction) {
|
|
30
|
+
return { message: err.extensions?.code || 'Internal Server Error' };
|
|
31
|
+
}
|
|
32
|
+
console.error(err);
|
|
33
|
+
return err;
|
|
34
|
+
},
|
|
35
|
+
plugins: [ApolloServerPluginUsageReportingDisabled()]
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const startApolloGateway = async (server: ApolloServer<Context>) => {
|
|
39
|
+
await server.start();
|
|
40
|
+
|
|
41
|
+
// Use Meteor's WebApp to handle the Apollo middleware
|
|
42
|
+
WebApp.connectHandlers.use(
|
|
43
|
+
'/graphql', // The endpoint for the federated GraphQL API
|
|
44
|
+
express.json({ limit: '5mb' }), // Handle JSON requests
|
|
45
|
+
expressMiddleware(server, {
|
|
46
|
+
context: async ({ req }: { req: Request }): Promise<Context> => {
|
|
47
|
+
const token = req.headers.authorization || null;
|
|
48
|
+
return { token }; // Pass token for authentication
|
|
49
|
+
},
|
|
50
|
+
}),
|
|
51
|
+
);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// Start the Apollo Gateway server
|
|
55
|
+
startApolloGateway(server);
|
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import { resolvers } from './graphql/resolvers';
|
|
2
|
-
import { typeDefs } from './graphql/typeDefs';
|
|
3
|
-
|
|
4
|
-
import { ApolloServer } from '@apollo/server';
|
|
5
|
-
import { ApolloServerPluginUsageReportingDisabled } from '@apollo/server/plugin/disabled';
|
|
6
|
-
import { WebApp } from 'meteor/webapp';
|
|
7
|
-
import { expressMiddleware } from '@as-integrations/express5';
|
|
8
|
-
import { buildSubgraphSchema } from '@apollo/subgraph';
|
|
9
|
-
import express from 'express';
|
|
10
|
-
import { rateLimit, ipKeyGenerator } from 'express-rate-limit';
|
|
11
|
-
|
|
12
|
-
// Create rate limiter middleware
|
|
13
|
-
const limiter = rateLimit({
|
|
14
|
-
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
15
|
-
max: 100, // Limit each IP to 100 requests per windowMs
|
|
16
|
-
message: 'Too many requests, please try again later.',
|
|
17
|
-
standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers
|
|
18
|
-
legacyHeaders: false, // Disable the `X-RateLimit-*` headers,
|
|
19
|
-
keyGenerator: (req) => {
|
|
20
|
-
// Trust the 'X-Forwarded-For' header for client IP, but only if it exists
|
|
21
|
-
return req.headers['x-forwarded-for'] || ipKeyGenerator(req.ip);
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
const server = new ApolloServer({
|
|
26
|
-
schema: buildSubgraphSchema({ typeDefs, resolvers }),
|
|
27
|
-
cacheControl: {
|
|
28
|
-
defaultMaxAge: 5, // seconds
|
|
29
|
-
},
|
|
30
|
-
cache: 'bounded',
|
|
31
|
-
formatError: (err) => {
|
|
32
|
-
if (Meteor.isProduction) {
|
|
33
|
-
// Don't give specific errors to the client
|
|
34
|
-
err.message = err.extensions.code; // eslint-disable-line no-param-reassign
|
|
35
|
-
return err;
|
|
36
|
-
}
|
|
37
|
-
console.error(err);
|
|
38
|
-
return err;
|
|
39
|
-
},
|
|
40
|
-
validate: true, // Validates the schema on startup
|
|
41
|
-
plugins: [ApolloServerPluginUsageReportingDisabled()]
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
const startApolloServer = async (server) => {
|
|
45
|
-
await server.start();
|
|
46
|
-
|
|
47
|
-
// Use Meteor's built-in WebApp and Express's built-in JSON parser
|
|
48
|
-
WebApp.connectHandlers.use(
|
|
49
|
-
'/graphql/<%= apiVersion %>/<%= fileName %>',
|
|
50
|
-
limiter, // Apply rate limiter middleware before GraphQL middleware
|
|
51
|
-
express.json({ limit: '5mb' }),
|
|
52
|
-
expressMiddleware(server, {
|
|
53
|
-
context: async ({ req }) => {
|
|
54
|
-
const token = req.headers.authorization;
|
|
55
|
-
// Validate and decode token here, e.g., using JWT:
|
|
56
|
-
return { token };
|
|
57
|
-
}
|
|
58
|
-
}),
|
|
59
|
-
);
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
// Start the Apollo server
|
|
63
|
-
startApolloServer(server);
|
|
1
|
+
import { resolvers } from './graphql/resolvers';
|
|
2
|
+
import { typeDefs } from './graphql/typeDefs';
|
|
3
|
+
|
|
4
|
+
import { ApolloServer } from '@apollo/server';
|
|
5
|
+
import { ApolloServerPluginUsageReportingDisabled } from '@apollo/server/plugin/disabled';
|
|
6
|
+
import { WebApp } from 'meteor/webapp';
|
|
7
|
+
import { expressMiddleware } from '@as-integrations/express5';
|
|
8
|
+
import { buildSubgraphSchema } from '@apollo/subgraph';
|
|
9
|
+
import express from 'express';
|
|
10
|
+
import { rateLimit, ipKeyGenerator } from 'express-rate-limit';
|
|
11
|
+
|
|
12
|
+
// Create rate limiter middleware
|
|
13
|
+
const limiter = rateLimit({
|
|
14
|
+
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
15
|
+
max: 100, // Limit each IP to 100 requests per windowMs
|
|
16
|
+
message: 'Too many requests, please try again later.',
|
|
17
|
+
standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers
|
|
18
|
+
legacyHeaders: false, // Disable the `X-RateLimit-*` headers,
|
|
19
|
+
keyGenerator: (req) => {
|
|
20
|
+
// Trust the 'X-Forwarded-For' header for client IP, but only if it exists
|
|
21
|
+
return req.headers['x-forwarded-for'] || ipKeyGenerator(req.ip);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const server = new ApolloServer({
|
|
26
|
+
schema: buildSubgraphSchema({ typeDefs, resolvers }),
|
|
27
|
+
cacheControl: {
|
|
28
|
+
defaultMaxAge: 5, // seconds
|
|
29
|
+
},
|
|
30
|
+
cache: 'bounded',
|
|
31
|
+
formatError: (err) => {
|
|
32
|
+
if (Meteor.isProduction) {
|
|
33
|
+
// Don't give specific errors to the client
|
|
34
|
+
err.message = err.extensions.code; // eslint-disable-line no-param-reassign
|
|
35
|
+
return err;
|
|
36
|
+
}
|
|
37
|
+
console.error(err);
|
|
38
|
+
return err;
|
|
39
|
+
},
|
|
40
|
+
validate: true, // Validates the schema on startup
|
|
41
|
+
plugins: [ApolloServerPluginUsageReportingDisabled()]
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
const startApolloServer = async (server) => {
|
|
45
|
+
await server.start();
|
|
46
|
+
|
|
47
|
+
// Use Meteor's built-in WebApp and Express's built-in JSON parser
|
|
48
|
+
WebApp.connectHandlers.use(
|
|
49
|
+
'/graphql/<%= apiVersion %>/<%= fileName %>',
|
|
50
|
+
limiter, // Apply rate limiter middleware before GraphQL middleware
|
|
51
|
+
express.json({ limit: '5mb' }),
|
|
52
|
+
expressMiddleware(server, {
|
|
53
|
+
context: async ({ req }) => {
|
|
54
|
+
const token = req.headers.authorization;
|
|
55
|
+
// Validate and decode token here, e.g., using JWT:
|
|
56
|
+
return { token };
|
|
57
|
+
}
|
|
58
|
+
}),
|
|
59
|
+
);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// Start the Apollo server
|
|
63
|
+
startApolloServer(server);
|
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
import { resolvers } from './graphql/resolvers';
|
|
2
|
-
import { typeDefs } from './graphql/typeDefs';
|
|
3
|
-
|
|
4
|
-
import { ApolloServer } from '@apollo/server';
|
|
5
|
-
import { ApolloServerPluginUsageReportingDisabled } from '@apollo/server/plugin/disabled';
|
|
6
|
-
import { WebApp } from 'meteor/webapp';
|
|
7
|
-
import { expressMiddleware } from '@as-integrations/express5';
|
|
8
|
-
import { buildSubgraphSchema } from '@apollo/subgraph';
|
|
9
|
-
import express, { Request } from 'express';
|
|
10
|
-
import { rateLimit, ipKeyGenerator } from 'express-rate-limit';
|
|
11
|
-
|
|
12
|
-
// Define the types for the context
|
|
13
|
-
interface Context {
|
|
14
|
-
token?: string;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// Create rate limiter middleware
|
|
18
|
-
const limiter = rateLimit({
|
|
19
|
-
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
20
|
-
max: 100, // Limit each IP to 100 requests per windowMs
|
|
21
|
-
message: 'Too many requests, please try again later.',
|
|
22
|
-
standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers
|
|
23
|
-
legacyHeaders: false, // Disable the `X-RateLimit-*` headers
|
|
24
|
-
keyGenerator: (req: Request) => {
|
|
25
|
-
// Trust the 'X-Forwarded-For' header for client IP, but only if it exists
|
|
26
|
-
return req.headers['x-forwarded-for'] || ipKeyGenerator(req.ip);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
// Create the Apollo Server instance
|
|
31
|
-
const server = new ApolloServer<Context>({
|
|
32
|
-
schema: buildSubgraphSchema({ typeDefs, resolvers }), // Federation-ready schema
|
|
33
|
-
cacheControl: {
|
|
34
|
-
defaultMaxAge: 5, // seconds
|
|
35
|
-
},
|
|
36
|
-
cache: 'bounded',
|
|
37
|
-
formatError: (err) => {
|
|
38
|
-
if (Meteor.isProduction) {
|
|
39
|
-
// Hide specific error details in production
|
|
40
|
-
err.message = err.extensions?.code || 'Internal Server Error'; // eslint-disable-line no-param-reassign
|
|
41
|
-
return err;
|
|
42
|
-
}
|
|
43
|
-
console.error(err);
|
|
44
|
-
return err;
|
|
45
|
-
},
|
|
46
|
-
validate: true, // Validates the schema on startup
|
|
47
|
-
plugins: [ApolloServerPluginUsageReportingDisabled()]
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
const startApolloServer = async (server: ApolloServer<Context>) => {
|
|
51
|
-
await server.start();
|
|
52
|
-
|
|
53
|
-
// Use Meteor's WebApp with Express's JSON parser
|
|
54
|
-
WebApp.connectHandlers.use(
|
|
55
|
-
'/graphql/<%= apiVersion %>/<%= fileName %>',
|
|
56
|
-
limiter, // Apply rate limiter middleware before GraphQL middleware
|
|
57
|
-
express.json({ limit: '5mb' }), // JSON parsing middleware
|
|
58
|
-
expressMiddleware(server, {
|
|
59
|
-
context: async ({ req }: { req: Request }): Promise<Context> => {
|
|
60
|
-
const token = req.headers.authorization || null;
|
|
61
|
-
// You can add additional validation here (e.g., JWT validation)
|
|
62
|
-
return { token };
|
|
63
|
-
},
|
|
64
|
-
}),
|
|
65
|
-
);
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
// Start the Apollo server
|
|
69
|
-
startApolloServer(server);
|
|
1
|
+
import { resolvers } from './graphql/resolvers';
|
|
2
|
+
import { typeDefs } from './graphql/typeDefs';
|
|
3
|
+
|
|
4
|
+
import { ApolloServer } from '@apollo/server';
|
|
5
|
+
import { ApolloServerPluginUsageReportingDisabled } from '@apollo/server/plugin/disabled';
|
|
6
|
+
import { WebApp } from 'meteor/webapp';
|
|
7
|
+
import { expressMiddleware } from '@as-integrations/express5';
|
|
8
|
+
import { buildSubgraphSchema } from '@apollo/subgraph';
|
|
9
|
+
import express, { Request } from 'express';
|
|
10
|
+
import { rateLimit, ipKeyGenerator } from 'express-rate-limit';
|
|
11
|
+
|
|
12
|
+
// Define the types for the context
|
|
13
|
+
interface Context {
|
|
14
|
+
token?: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Create rate limiter middleware
|
|
18
|
+
const limiter = rateLimit({
|
|
19
|
+
windowMs: 15 * 60 * 1000, // 15 minutes
|
|
20
|
+
max: 100, // Limit each IP to 100 requests per windowMs
|
|
21
|
+
message: 'Too many requests, please try again later.',
|
|
22
|
+
standardHeaders: true, // Return rate limit info in the `RateLimit-*` headers
|
|
23
|
+
legacyHeaders: false, // Disable the `X-RateLimit-*` headers
|
|
24
|
+
keyGenerator: (req: Request) => {
|
|
25
|
+
// Trust the 'X-Forwarded-For' header for client IP, but only if it exists
|
|
26
|
+
return req.headers['x-forwarded-for'] || ipKeyGenerator(req.ip);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
// Create the Apollo Server instance
|
|
31
|
+
const server = new ApolloServer<Context>({
|
|
32
|
+
schema: buildSubgraphSchema({ typeDefs, resolvers }), // Federation-ready schema
|
|
33
|
+
cacheControl: {
|
|
34
|
+
defaultMaxAge: 5, // seconds
|
|
35
|
+
},
|
|
36
|
+
cache: 'bounded',
|
|
37
|
+
formatError: (err) => {
|
|
38
|
+
if (Meteor.isProduction) {
|
|
39
|
+
// Hide specific error details in production
|
|
40
|
+
err.message = err.extensions?.code || 'Internal Server Error'; // eslint-disable-line no-param-reassign
|
|
41
|
+
return err;
|
|
42
|
+
}
|
|
43
|
+
console.error(err);
|
|
44
|
+
return err;
|
|
45
|
+
},
|
|
46
|
+
validate: true, // Validates the schema on startup
|
|
47
|
+
plugins: [ApolloServerPluginUsageReportingDisabled()]
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const startApolloServer = async (server: ApolloServer<Context>) => {
|
|
51
|
+
await server.start();
|
|
52
|
+
|
|
53
|
+
// Use Meteor's WebApp with Express's JSON parser
|
|
54
|
+
WebApp.connectHandlers.use(
|
|
55
|
+
'/graphql/<%= apiVersion %>/<%= fileName %>',
|
|
56
|
+
limiter, // Apply rate limiter middleware before GraphQL middleware
|
|
57
|
+
express.json({ limit: '5mb' }), // JSON parsing middleware
|
|
58
|
+
expressMiddleware(server, {
|
|
59
|
+
context: async ({ req }: { req: Request }): Promise<Context> => {
|
|
60
|
+
const token = req.headers.authorization || null;
|
|
61
|
+
// You can add additional validation here (e.g., JWT validation)
|
|
62
|
+
return { token };
|
|
63
|
+
},
|
|
64
|
+
}),
|
|
65
|
+
);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// Start the Apollo server
|
|
69
|
+
startApolloServer(server);
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
import { Meteor } from 'meteor/meteor';
|
|
2
|
-
import { ValidatedMethod } from 'meteor/mdg:validated-method';
|
|
3
|
-
import { DDPRateLimiter } from 'meteor/ddp-rate-limiter';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Using ValidatedMethod (maintained by MDG) is the best
|
|
8
|
-
* practice by Meteor Development Group (MDG),
|
|
9
|
-
* and as such is used here to validate that method
|
|
10
|
-
* calls from the client are properly handled.
|
|
11
|
-
*
|
|
12
|
-
*/
|
|
13
|
-
const <%= name %>Status = new ValidatedMethod({
|
|
14
|
-
name: '<%= fileName %>-<%= apiVersion %>-status',
|
|
15
|
-
validate() {
|
|
16
|
-
// check(this.userId, String, 'while validating user');
|
|
17
|
-
},
|
|
18
|
-
run() {
|
|
19
|
-
return 'OK';
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
const RATE_LIMITED_METHODS = [
|
|
24
|
-
<%= name %>Status
|
|
25
|
-
].map(value => value['name']);
|
|
26
|
-
|
|
27
|
-
if (Meteor.isServer) {
|
|
28
|
-
const OPERATIONS = 5;
|
|
29
|
-
const PER_SECOND = 1 * 1000; // milliseconds
|
|
30
|
-
// Only allow 5 list operations per connection per second.
|
|
31
|
-
DDPRateLimiter.addRule({
|
|
32
|
-
name(name) {
|
|
33
|
-
return RATE_LIMITED_METHODS.includes(name);
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
// Rate limit per connection ID.
|
|
37
|
-
connectionId() { return true; },
|
|
38
|
-
}, OPERATIONS, PER_SECOND);
|
|
39
|
-
}
|
|
1
|
+
import { Meteor } from 'meteor/meteor';
|
|
2
|
+
import { ValidatedMethod } from 'meteor/mdg:validated-method';
|
|
3
|
+
import { DDPRateLimiter } from 'meteor/ddp-rate-limiter';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Using ValidatedMethod (maintained by MDG) is the best
|
|
8
|
+
* practice by Meteor Development Group (MDG),
|
|
9
|
+
* and as such is used here to validate that method
|
|
10
|
+
* calls from the client are properly handled.
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
const <%= name %>Status = new ValidatedMethod({
|
|
14
|
+
name: '<%= fileName %>-<%= apiVersion %>-status',
|
|
15
|
+
validate() {
|
|
16
|
+
// check(this.userId, String, 'while validating user');
|
|
17
|
+
},
|
|
18
|
+
run() {
|
|
19
|
+
return 'OK';
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const RATE_LIMITED_METHODS = [
|
|
24
|
+
<%= name %>Status
|
|
25
|
+
].map(value => value['name']);
|
|
26
|
+
|
|
27
|
+
if (Meteor.isServer) {
|
|
28
|
+
const OPERATIONS = 5;
|
|
29
|
+
const PER_SECOND = 1 * 1000; // milliseconds
|
|
30
|
+
// Only allow 5 list operations per connection per second.
|
|
31
|
+
DDPRateLimiter.addRule({
|
|
32
|
+
name(name) {
|
|
33
|
+
return RATE_LIMITED_METHODS.includes(name);
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
// Rate limit per connection ID.
|
|
37
|
+
connectionId() { return true; },
|
|
38
|
+
}, OPERATIONS, PER_SECOND);
|
|
39
|
+
}
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import { Meteor } from 'meteor/meteor';
|
|
2
|
-
import { ValidatedMethod } from 'meteor/mdg:validated-method';
|
|
3
|
-
import { DDPRateLimiter } from 'meteor/ddp-rate-limiter';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Using ValidatedMethod (maintained by MDG) is the best
|
|
8
|
-
* practice by Meteor Development Group (MDG),
|
|
9
|
-
* and as such is used here to validate that method
|
|
10
|
-
* calls from the client are properly handled.
|
|
11
|
-
*
|
|
12
|
-
*/
|
|
13
|
-
const <%= name %>Status = new ValidatedMethod({
|
|
14
|
-
name: '<%= fileName %>-<%= apiVersion %>status',
|
|
15
|
-
validate() {
|
|
16
|
-
// check(this.userId, String, 'while validating user');
|
|
17
|
-
},
|
|
18
|
-
run() {
|
|
19
|
-
return 'OK';
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
const RATE_LIMITED_METHODS = [
|
|
24
|
-
<%= name %>Status
|
|
25
|
-
].map(value => value['name']);
|
|
26
|
-
|
|
27
|
-
if (Meteor.isServer) {
|
|
28
|
-
const OPERATIONS = 5;
|
|
29
|
-
const PER_SECOND = 1 * 1000; // milliseconds
|
|
30
|
-
// Only allow 5 list operations per connection per second.
|
|
31
|
-
DDPRateLimiter.addRule({
|
|
32
|
-
name(name) {
|
|
33
|
-
return RATE_LIMITED_METHODS.includes(name);
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
// Rate limit per connection ID.
|
|
37
|
-
connectionId() { return true; },
|
|
38
|
-
}, OPERATIONS, PER_SECOND);
|
|
39
|
-
}
|
|
40
|
-
|
|
1
|
+
import { Meteor } from 'meteor/meteor';
|
|
2
|
+
import { ValidatedMethod } from 'meteor/mdg:validated-method';
|
|
3
|
+
import { DDPRateLimiter } from 'meteor/ddp-rate-limiter';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Using ValidatedMethod (maintained by MDG) is the best
|
|
8
|
+
* practice by Meteor Development Group (MDG),
|
|
9
|
+
* and as such is used here to validate that method
|
|
10
|
+
* calls from the client are properly handled.
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
const <%= name %>Status = new ValidatedMethod({
|
|
14
|
+
name: '<%= fileName %>-<%= apiVersion %>status',
|
|
15
|
+
validate() {
|
|
16
|
+
// check(this.userId, String, 'while validating user');
|
|
17
|
+
},
|
|
18
|
+
run() {
|
|
19
|
+
return 'OK';
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const RATE_LIMITED_METHODS = [
|
|
24
|
+
<%= name %>Status
|
|
25
|
+
].map(value => value['name']);
|
|
26
|
+
|
|
27
|
+
if (Meteor.isServer) {
|
|
28
|
+
const OPERATIONS = 5;
|
|
29
|
+
const PER_SECOND = 1 * 1000; // milliseconds
|
|
30
|
+
// Only allow 5 list operations per connection per second.
|
|
31
|
+
DDPRateLimiter.addRule({
|
|
32
|
+
name(name) {
|
|
33
|
+
return RATE_LIMITED_METHODS.includes(name);
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
// Rate limit per connection ID.
|
|
37
|
+
connectionId() { return true; },
|
|
38
|
+
}, OPERATIONS, PER_SECOND);
|
|
39
|
+
}
|
|
40
|
+
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<% if( withMethods ) { %>import '../../api/<%= apiVersion %><%= optsDir %><%= fileName %>/<%= fileName %>-<%= apiVersion %>-rpc-methods';<% } %>
|
|
2
|
-
<% if( withRest ) { %>import '../../api/<%= apiVersion %><%= optsDir %><%= fileName %>/<%= fileName %>-<%= apiVersion %>-rest-api';<% } %>
|
|
3
|
-
<% if (withGql) { %>import '../../api/<%= apiVersion %><%= optsDir %><%= fileName %>/<%= fileName %>-<%= apiVersion %>-graphql-api';<% } %>
|
|
1
|
+
<% if( withMethods ) { %>import '../../api/<%= apiVersion %><%= optsDir %><%= fileName %>/<%= fileName %>-<%= apiVersion %>-rpc-methods';<% } %>
|
|
2
|
+
<% if( withRest ) { %>import '../../api/<%= apiVersion %><%= optsDir %><%= fileName %>/<%= fileName %>-<%= apiVersion %>-rest-api';<% } %>
|
|
3
|
+
<% if (withGql) { %>import '../../api/<%= apiVersion %><%= optsDir %><%= fileName %>/<%= fileName %>-<%= apiVersion %>-graphql-api';<% } %>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<% if( withMethods ) { %>import '../../api/<%= apiVersion %><%= optsDir %><%= fileName %>/<%= fileName %>-<%= apiVersion %>-rpc-methods';<% } %>
|
|
2
|
-
<% if( withRest ) { %>import '../../api/<%= apiVersion %><%= optsDir %><%= fileName %>/<%= fileName %>-<%= apiVersion %>-rest-api';<% } %>
|
|
3
|
-
<% if (withGql) { %>import '../../api/<%= apiVersion %><%= optsDir %><%= fileName %>/<%= fileName %>-<%= apiVersion %>-graphql-api';<% } %>
|
|
1
|
+
<% if( withMethods ) { %>import '../../api/<%= apiVersion %><%= optsDir %><%= fileName %>/<%= fileName %>-<%= apiVersion %>-rpc-methods';<% } %>
|
|
2
|
+
<% if( withRest ) { %>import '../../api/<%= apiVersion %><%= optsDir %><%= fileName %>/<%= fileName %>-<%= apiVersion %>-rest-api';<% } %>
|
|
3
|
+
<% if (withGql) { %>import '../../api/<%= apiVersion %><%= optsDir %><%= fileName %>/<%= fileName %>-<%= apiVersion %>-graphql-api';<% } %>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export const resolvers = {
|
|
2
|
-
Query: {
|
|
3
|
-
async <%= camelCase %>(root, args, context) {
|
|
4
|
-
// How to enable authentication
|
|
5
|
-
// if (!context.user._id && !Meteor.isDevelopment) throw 'UNAUTHORIZED';
|
|
6
|
-
return 'hello <%= camelCase %>';
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
};
|
|
1
|
+
export const resolvers = {
|
|
2
|
+
Query: {
|
|
3
|
+
async <%= camelCase %>(root, args, context) {
|
|
4
|
+
// How to enable authentication
|
|
5
|
+
// if (!context.user._id && !Meteor.isDevelopment) throw 'UNAUTHORIZED';
|
|
6
|
+
return 'hello <%= camelCase %>';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export const resolvers = {
|
|
2
|
-
Query: {
|
|
3
|
-
async <%= camelCase %>(root, args, context) {
|
|
4
|
-
// How to enable authentication
|
|
5
|
-
// if (!context.user._id && !Meteor.isDevelopment) throw 'UNAUTHORIZED';
|
|
6
|
-
return 'hello <%= camelCase %>';
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
};
|
|
1
|
+
export const resolvers = {
|
|
2
|
+
Query: {
|
|
3
|
+
async <%= camelCase %>(root, args, context) {
|
|
4
|
+
// How to enable authentication
|
|
5
|
+
// if (!context.user._id && !Meteor.isDevelopment) throw 'UNAUTHORIZED';
|
|
6
|
+
return 'hello <%= camelCase %>';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { gql } from 'graphql-tag';
|
|
2
|
-
export const typeDefs = gql`
|
|
3
|
-
type Query {
|
|
4
|
-
<%= camelCase %>: String
|
|
5
|
-
}
|
|
6
|
-
`;
|
|
1
|
+
import { gql } from 'graphql-tag';
|
|
2
|
+
export const typeDefs = gql`
|
|
3
|
+
type Query {
|
|
4
|
+
<%= camelCase %>: String
|
|
5
|
+
}
|
|
6
|
+
`;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { gql } from 'graphql-tag';
|
|
2
|
-
export const typeDefs = gql`
|
|
3
|
-
type Query {
|
|
4
|
-
<%= camelCase %>: String
|
|
5
|
-
}
|
|
6
|
-
`;
|
|
1
|
+
import { gql } from 'graphql-tag';
|
|
2
|
+
export const typeDefs = gql`
|
|
3
|
+
type Query {
|
|
4
|
+
<%= camelCase %>: String
|
|
5
|
+
}
|
|
6
|
+
`;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<body><% if (config.engines.client === 'react' || config.engines.client === 'reflux' || config.engines.client === 'vanilla') { %>
|
|
2
|
-
<div id="app"></div><% } %>
|
|
3
|
-
</body>
|
|
1
|
+
<body><% if (config.engines.client === 'react' || config.engines.client === 'reflux' || config.engines.client === 'vanilla') { %>
|
|
2
|
+
<div id="app"></div><% } %>
|
|
3
|
+
</body>
|