@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,150 +1,150 @@
|
|
|
1
|
-
name: Deploy to EC2
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [<%= branch %>]
|
|
6
|
-
workflow_dispatch:
|
|
7
|
-
|
|
8
|
-
concurrency:
|
|
9
|
-
group: deploy-<%= envName %>
|
|
10
|
-
cancel-in-progress: false
|
|
11
|
-
|
|
12
|
-
permissions:
|
|
13
|
-
contents: read
|
|
14
|
-
|
|
15
|
-
jobs:
|
|
16
|
-
deploy:
|
|
17
|
-
runs-on: ubuntu-latest
|
|
18
|
-
environment: <%= envName %>
|
|
19
|
-
env:
|
|
20
|
-
EC2_HOST: <%= ec2Host %>
|
|
21
|
-
EC2_USER: <%= ec2User %>
|
|
22
|
-
steps:
|
|
23
|
-
- uses: actions/checkout@v4
|
|
24
|
-
|
|
25
|
-
- uses: actions/setup-node@v4
|
|
26
|
-
with:
|
|
27
|
-
node-version: "<%= nodeVersion %>"
|
|
28
|
-
|
|
29
|
-
- name: Cache root node_modules
|
|
30
|
-
id: cache-root-node-modules
|
|
31
|
-
uses: actions/cache@v4
|
|
32
|
-
with:
|
|
33
|
-
path: node_modules
|
|
34
|
-
key: root-npm-${{ hashFiles('package-lock.json') }}
|
|
35
|
-
|
|
36
|
-
- name: Install root dependencies (maka-cli)
|
|
37
|
-
# maka builds through @maka/meteor-sdk (installed by this npm ci),
|
|
38
|
-
# so no separate Meteor download/install is needed.
|
|
39
|
-
if: steps.cache-root-node-modules.outputs.cache-hit != 'true'
|
|
40
|
-
run: npm ci
|
|
41
|
-
|
|
42
|
-
# A lockfile change (an engine pin or any other dependency bump)
|
|
43
|
-
# rotates this key, but the tree from the PREVIOUS lockfile is
|
|
44
|
-
# still almost entirely correct -- the prefix restore-key hands a
|
|
45
|
-
# miss that tree instead of nothing. `npm install` below (not
|
|
46
|
-
# `ci` -- ci wipes node_modules by design, which would make the
|
|
47
|
-
# restore pointless) reconciles it to the new lockfile, so only
|
|
48
|
-
# the packages that actually changed get touched. The drift guard
|
|
49
|
-
# keeps the property `npm ci` used to give for free: if npm had
|
|
50
|
-
# to rewrite the lockfile to satisfy it, fail loudly instead of
|
|
51
|
-
# silently drifting from what's committed.
|
|
52
|
-
- name: Cache app node_modules
|
|
53
|
-
id: cache-app-node-modules
|
|
54
|
-
uses: actions/cache@v4
|
|
55
|
-
with:
|
|
56
|
-
path: app/node_modules
|
|
57
|
-
key: app-npm-${{ hashFiles('app/package-lock.json') }}
|
|
58
|
-
restore-keys: |
|
|
59
|
-
app-npm-
|
|
60
|
-
|
|
61
|
-
# npm's own content cache: even a true-cold node_modules (first
|
|
62
|
-
# run, or a cache eviction) then pays extraction only, not
|
|
63
|
-
# downloads. Same evolving-key pattern as the Meteor npm-deps
|
|
64
|
-
# cache below.
|
|
65
|
-
- name: Cache npm content cache (~/.npm)
|
|
66
|
-
uses: actions/cache@v4
|
|
67
|
-
with:
|
|
68
|
-
path: ~/.npm
|
|
69
|
-
key: npm-content-${{ runner.os }}-${{ github.run_id }}
|
|
70
|
-
restore-keys: |
|
|
71
|
-
npm-content-${{ runner.os }}-
|
|
72
|
-
|
|
73
|
-
- name: Install app dependencies
|
|
74
|
-
if: steps.cache-app-node-modules.outputs.cache-hit != 'true'
|
|
75
|
-
run: |
|
|
76
|
-
npm install
|
|
77
|
-
git diff --exit-code -- package.json package-lock.json
|
|
78
|
-
working-directory: app
|
|
79
|
-
|
|
80
|
-
# Meteor's isopack/bundler/plugin caches -- without this, every
|
|
81
|
-
# deploy recompiles all isopacks from scratch (minutes of work).
|
|
82
|
-
# The run-unique key never hits exactly; restore-keys pulls the
|
|
83
|
-
# closest prior cache so Meteor's content-hash compiler cache only
|
|
84
|
-
# redoes what changed, and a fresh entry is saved each run.
|
|
85
|
-
- name: Cache Meteor build cache (app/.meteor/local)
|
|
86
|
-
uses: actions/cache@v4
|
|
87
|
-
with:
|
|
88
|
-
path: app/.meteor/local
|
|
89
|
-
key: meteor-local-${{ hashFiles('app/.meteor/release', 'app/.meteor/versions') }}-${{ github.run_id }}
|
|
90
|
-
restore-keys: |
|
|
91
|
-
meteor-local-${{ hashFiles('app/.meteor/release', 'app/.meteor/versions') }}-
|
|
92
|
-
meteor-local-
|
|
93
|
-
|
|
94
|
-
# @maka/meteor-sdk >= 0.2.8 keeps a per-user cache of core-package
|
|
95
|
-
# npm dependency trees at ~/.meteor-npm-cache. Without this step,
|
|
96
|
-
# any maka version bump (new root-npm key -> fresh SDK install)
|
|
97
|
-
# re-downloads and reinstalls every core package's npm deps during
|
|
98
|
-
# the build. Same evolving-cache key pattern as above.
|
|
99
|
-
- name: Cache Meteor npm deps (~/.meteor-npm-cache)
|
|
100
|
-
uses: actions/cache@v4
|
|
101
|
-
with:
|
|
102
|
-
path: ~/.meteor-npm-cache
|
|
103
|
-
key: meteor-npm-cache-${{ runner.os }}-${{ github.run_id }}
|
|
104
|
-
restore-keys: |
|
|
105
|
-
meteor-npm-cache-${{ runner.os }}-
|
|
106
|
-
|
|
107
|
-
- name: Build production bundle
|
|
108
|
-
run: node_modules/.bin/maka build --force
|
|
109
|
-
|
|
110
|
-
- name: Configure SSH
|
|
111
|
-
env:
|
|
112
|
-
EC2_PEM_KEY: ${{ secrets.EC2_<%= envUpper %>_PEM }}
|
|
113
|
-
run: |
|
|
114
|
-
install -m 700 -d ~/.ssh
|
|
115
|
-
install -m 600 /dev/null ~/.ssh/deploy_key
|
|
116
|
-
printf '%s\n' "$EC2_PEM_KEY" > ~/.ssh/deploy_key
|
|
117
|
-
ssh-keyscan -H "$EC2_HOST" >> ~/.ssh/known_hosts
|
|
118
|
-
|
|
119
|
-
- name: Write dotenvx decryption key
|
|
120
|
-
env:
|
|
121
|
-
DOTENV_PRIVATE_KEY_<%= dotenvKeyName %>: ${{ secrets.DOTENV_PRIVATE_KEY_<%= dotenvKeyName %> }}
|
|
122
|
-
run: |
|
|
123
|
-
install -m 600 /dev/null /tmp/.env.keys
|
|
124
|
-
echo "DOTENV_PRIVATE_KEY_<%= dotenvKeyName %>=$DOTENV_PRIVATE_KEY_<%= dotenvKeyName %>" > /tmp/.env.keys
|
|
125
|
-
|
|
126
|
-
- name: Upload bundle and config
|
|
127
|
-
run: |
|
|
128
|
-
scp -i ~/.ssh/deploy_key build/app.tar.gz "$EC2_USER@$EC2_HOST:~/app.tar.gz"
|
|
129
|
-
scp -i ~/.ssh/deploy_key config/<%= envName %>/pm2.config.js "$EC2_USER@$EC2_HOST:~/pm2.config.js"
|
|
130
|
-
scp -i ~/.ssh/deploy_key config/<%= envName %>/settings.json "$EC2_USER@$EC2_HOST:~/settings.json"
|
|
131
|
-
scp -i ~/.ssh/deploy_key config/<%= envName %>/nginx.conf "$EC2_USER@$EC2_HOST:~/nginx.conf"
|
|
132
|
-
scp -i ~/.ssh/deploy_key config/<%= envName %>/deploy.sh "$EC2_USER@$EC2_HOST:~/deploy.sh"
|
|
133
|
-
scp -i ~/.ssh/deploy_key config/<%= envName %>/process.env "$EC2_USER@$EC2_HOST:~/process.env"
|
|
134
|
-
scp -i ~/.ssh/deploy_key /tmp/.env.keys "$EC2_USER@$EC2_HOST:~/.env.keys"
|
|
135
|
-
rm -f /tmp/.env.keys
|
|
136
|
-
|
|
137
|
-
- name: Release
|
|
138
|
-
run: ssh -i ~/.ssh/deploy_key "$EC2_USER@$EC2_HOST" "chmod 600 ~/process.env ~/.env.keys && chmod +x ~/deploy.sh && ~/deploy.sh"
|
|
139
|
-
|
|
140
|
-
- name: Post-deploy health check
|
|
141
|
-
if: always()
|
|
142
|
-
run: |
|
|
143
|
-
ssh -i ~/.ssh/deploy_key "$EC2_USER@$EC2_HOST" '
|
|
144
|
-
echo "--- pm2 status ---"
|
|
145
|
-
pm2 status
|
|
146
|
-
echo "--- pm2 logs (last 60 lines) ---"
|
|
147
|
-
pm2 logs --lines 60 --nostream
|
|
148
|
-
echo "--- localhost:3000 ---"
|
|
149
|
-
curl -sS -o /dev/null -w "HTTP %{http_code}\n" http://localhost:3000/ || true
|
|
150
|
-
'
|
|
1
|
+
name: Deploy to EC2
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [<%= branch %>]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: deploy-<%= envName %>
|
|
10
|
+
cancel-in-progress: false
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
deploy:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
environment: <%= envName %>
|
|
19
|
+
env:
|
|
20
|
+
EC2_HOST: <%= ec2Host %>
|
|
21
|
+
EC2_USER: <%= ec2User %>
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v4
|
|
24
|
+
|
|
25
|
+
- uses: actions/setup-node@v4
|
|
26
|
+
with:
|
|
27
|
+
node-version: "<%= nodeVersion %>"
|
|
28
|
+
|
|
29
|
+
- name: Cache root node_modules
|
|
30
|
+
id: cache-root-node-modules
|
|
31
|
+
uses: actions/cache@v4
|
|
32
|
+
with:
|
|
33
|
+
path: node_modules
|
|
34
|
+
key: root-npm-${{ hashFiles('package-lock.json') }}
|
|
35
|
+
|
|
36
|
+
- name: Install root dependencies (maka-cli)
|
|
37
|
+
# maka builds through @maka/meteor-sdk (installed by this npm ci),
|
|
38
|
+
# so no separate Meteor download/install is needed.
|
|
39
|
+
if: steps.cache-root-node-modules.outputs.cache-hit != 'true'
|
|
40
|
+
run: npm ci
|
|
41
|
+
|
|
42
|
+
# A lockfile change (an engine pin or any other dependency bump)
|
|
43
|
+
# rotates this key, but the tree from the PREVIOUS lockfile is
|
|
44
|
+
# still almost entirely correct -- the prefix restore-key hands a
|
|
45
|
+
# miss that tree instead of nothing. `npm install` below (not
|
|
46
|
+
# `ci` -- ci wipes node_modules by design, which would make the
|
|
47
|
+
# restore pointless) reconciles it to the new lockfile, so only
|
|
48
|
+
# the packages that actually changed get touched. The drift guard
|
|
49
|
+
# keeps the property `npm ci` used to give for free: if npm had
|
|
50
|
+
# to rewrite the lockfile to satisfy it, fail loudly instead of
|
|
51
|
+
# silently drifting from what's committed.
|
|
52
|
+
- name: Cache app node_modules
|
|
53
|
+
id: cache-app-node-modules
|
|
54
|
+
uses: actions/cache@v4
|
|
55
|
+
with:
|
|
56
|
+
path: app/node_modules
|
|
57
|
+
key: app-npm-${{ hashFiles('app/package-lock.json') }}
|
|
58
|
+
restore-keys: |
|
|
59
|
+
app-npm-
|
|
60
|
+
|
|
61
|
+
# npm's own content cache: even a true-cold node_modules (first
|
|
62
|
+
# run, or a cache eviction) then pays extraction only, not
|
|
63
|
+
# downloads. Same evolving-key pattern as the Meteor npm-deps
|
|
64
|
+
# cache below.
|
|
65
|
+
- name: Cache npm content cache (~/.npm)
|
|
66
|
+
uses: actions/cache@v4
|
|
67
|
+
with:
|
|
68
|
+
path: ~/.npm
|
|
69
|
+
key: npm-content-${{ runner.os }}-${{ github.run_id }}
|
|
70
|
+
restore-keys: |
|
|
71
|
+
npm-content-${{ runner.os }}-
|
|
72
|
+
|
|
73
|
+
- name: Install app dependencies
|
|
74
|
+
if: steps.cache-app-node-modules.outputs.cache-hit != 'true'
|
|
75
|
+
run: |
|
|
76
|
+
npm install
|
|
77
|
+
git diff --exit-code -- package.json package-lock.json
|
|
78
|
+
working-directory: app
|
|
79
|
+
|
|
80
|
+
# Meteor's isopack/bundler/plugin caches -- without this, every
|
|
81
|
+
# deploy recompiles all isopacks from scratch (minutes of work).
|
|
82
|
+
# The run-unique key never hits exactly; restore-keys pulls the
|
|
83
|
+
# closest prior cache so Meteor's content-hash compiler cache only
|
|
84
|
+
# redoes what changed, and a fresh entry is saved each run.
|
|
85
|
+
- name: Cache Meteor build cache (app/.meteor/local)
|
|
86
|
+
uses: actions/cache@v4
|
|
87
|
+
with:
|
|
88
|
+
path: app/.meteor/local
|
|
89
|
+
key: meteor-local-${{ hashFiles('app/.meteor/release', 'app/.meteor/versions') }}-${{ github.run_id }}
|
|
90
|
+
restore-keys: |
|
|
91
|
+
meteor-local-${{ hashFiles('app/.meteor/release', 'app/.meteor/versions') }}-
|
|
92
|
+
meteor-local-
|
|
93
|
+
|
|
94
|
+
# @maka/meteor-sdk >= 0.2.8 keeps a per-user cache of core-package
|
|
95
|
+
# npm dependency trees at ~/.meteor-npm-cache. Without this step,
|
|
96
|
+
# any maka version bump (new root-npm key -> fresh SDK install)
|
|
97
|
+
# re-downloads and reinstalls every core package's npm deps during
|
|
98
|
+
# the build. Same evolving-cache key pattern as above.
|
|
99
|
+
- name: Cache Meteor npm deps (~/.meteor-npm-cache)
|
|
100
|
+
uses: actions/cache@v4
|
|
101
|
+
with:
|
|
102
|
+
path: ~/.meteor-npm-cache
|
|
103
|
+
key: meteor-npm-cache-${{ runner.os }}-${{ github.run_id }}
|
|
104
|
+
restore-keys: |
|
|
105
|
+
meteor-npm-cache-${{ runner.os }}-
|
|
106
|
+
|
|
107
|
+
- name: Build production bundle
|
|
108
|
+
run: node_modules/.bin/maka build --force
|
|
109
|
+
|
|
110
|
+
- name: Configure SSH
|
|
111
|
+
env:
|
|
112
|
+
EC2_PEM_KEY: ${{ secrets.EC2_<%= envUpper %>_PEM }}
|
|
113
|
+
run: |
|
|
114
|
+
install -m 700 -d ~/.ssh
|
|
115
|
+
install -m 600 /dev/null ~/.ssh/deploy_key
|
|
116
|
+
printf '%s\n' "$EC2_PEM_KEY" > ~/.ssh/deploy_key
|
|
117
|
+
ssh-keyscan -H "$EC2_HOST" >> ~/.ssh/known_hosts
|
|
118
|
+
|
|
119
|
+
- name: Write dotenvx decryption key
|
|
120
|
+
env:
|
|
121
|
+
DOTENV_PRIVATE_KEY_<%= dotenvKeyName %>: ${{ secrets.DOTENV_PRIVATE_KEY_<%= dotenvKeyName %> }}
|
|
122
|
+
run: |
|
|
123
|
+
install -m 600 /dev/null /tmp/.env.keys
|
|
124
|
+
echo "DOTENV_PRIVATE_KEY_<%= dotenvKeyName %>=$DOTENV_PRIVATE_KEY_<%= dotenvKeyName %>" > /tmp/.env.keys
|
|
125
|
+
|
|
126
|
+
- name: Upload bundle and config
|
|
127
|
+
run: |
|
|
128
|
+
scp -i ~/.ssh/deploy_key build/app.tar.gz "$EC2_USER@$EC2_HOST:~/app.tar.gz"
|
|
129
|
+
scp -i ~/.ssh/deploy_key config/<%= envName %>/pm2.config.js "$EC2_USER@$EC2_HOST:~/pm2.config.js"
|
|
130
|
+
scp -i ~/.ssh/deploy_key config/<%= envName %>/settings.json "$EC2_USER@$EC2_HOST:~/settings.json"
|
|
131
|
+
scp -i ~/.ssh/deploy_key config/<%= envName %>/nginx.conf "$EC2_USER@$EC2_HOST:~/nginx.conf"
|
|
132
|
+
scp -i ~/.ssh/deploy_key config/<%= envName %>/deploy.sh "$EC2_USER@$EC2_HOST:~/deploy.sh"
|
|
133
|
+
scp -i ~/.ssh/deploy_key config/<%= envName %>/process.env "$EC2_USER@$EC2_HOST:~/process.env"
|
|
134
|
+
scp -i ~/.ssh/deploy_key /tmp/.env.keys "$EC2_USER@$EC2_HOST:~/.env.keys"
|
|
135
|
+
rm -f /tmp/.env.keys
|
|
136
|
+
|
|
137
|
+
- name: Release
|
|
138
|
+
run: ssh -i ~/.ssh/deploy_key "$EC2_USER@$EC2_HOST" "chmod 600 ~/process.env ~/.env.keys && chmod +x ~/deploy.sh && ~/deploy.sh"
|
|
139
|
+
|
|
140
|
+
- name: Post-deploy health check
|
|
141
|
+
if: always()
|
|
142
|
+
run: |
|
|
143
|
+
ssh -i ~/.ssh/deploy_key "$EC2_USER@$EC2_HOST" '
|
|
144
|
+
echo "--- pm2 status ---"
|
|
145
|
+
pm2 status
|
|
146
|
+
echo "--- pm2 logs (last 60 lines) ---"
|
|
147
|
+
pm2 logs --lines 60 --nostream
|
|
148
|
+
echo "--- localhost:3000 ---"
|
|
149
|
+
curl -sS -o /dev/null -w "HTTP %{http_code}\n" http://localhost:3000/ || true
|
|
150
|
+
'
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import { Meteor } from 'meteor/meteor';
|
|
2
|
-
import { ValidatedMethod } from 'meteor/mdg:validated-method';
|
|
3
|
-
import { DDPRateLimiter } from 'meteor/ddp-rate-limiter';
|
|
4
|
-
import { check, Match } from 'meteor/check';
|
|
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
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @memberof Server.<%= name %>
|
|
16
|
-
* @method
|
|
17
|
-
* @property { string } name String that defines the method.
|
|
18
|
-
* @property { function } validate Is run before the main execution.
|
|
19
|
-
* @property { function } run The main action that is executed.
|
|
20
|
-
*/
|
|
21
|
-
const <%= className %> = new ValidatedMethod({
|
|
22
|
-
name: '<%= fileName %>.server',
|
|
23
|
-
validate() {
|
|
24
|
-
//check(this.userId, String);
|
|
25
|
-
},
|
|
26
|
-
run() {
|
|
27
|
-
// insert code to run.
|
|
28
|
-
return false;
|
|
29
|
-
},
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
const RATE_LIMITED_METHODS = [
|
|
33
|
-
<%= className %>,
|
|
34
|
-
].map(value => value['name']);
|
|
35
|
-
|
|
36
|
-
if (Meteor.isServer) {
|
|
37
|
-
const OPERATIONS = 5;
|
|
38
|
-
const PER_SECOND = 1 * 1000; // milliseconds
|
|
39
|
-
// Only allow 5 list operations per connection per second.
|
|
40
|
-
DDPRateLimiter.addRule({
|
|
41
|
-
name(name) {
|
|
42
|
-
return RATE_LIMITED_METHODS.includes(name);
|
|
43
|
-
},
|
|
44
|
-
|
|
45
|
-
// Rate limit per connection ID.
|
|
46
|
-
connectionId() { return true; },
|
|
47
|
-
}, OPERATIONS, PER_SECOND);
|
|
48
|
-
}
|
|
1
|
+
import { Meteor } from 'meteor/meteor';
|
|
2
|
+
import { ValidatedMethod } from 'meteor/mdg:validated-method';
|
|
3
|
+
import { DDPRateLimiter } from 'meteor/ddp-rate-limiter';
|
|
4
|
+
import { check, Match } from 'meteor/check';
|
|
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
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @memberof Server.<%= name %>
|
|
16
|
+
* @method
|
|
17
|
+
* @property { string } name String that defines the method.
|
|
18
|
+
* @property { function } validate Is run before the main execution.
|
|
19
|
+
* @property { function } run The main action that is executed.
|
|
20
|
+
*/
|
|
21
|
+
const <%= className %> = new ValidatedMethod({
|
|
22
|
+
name: '<%= fileName %>.server',
|
|
23
|
+
validate() {
|
|
24
|
+
//check(this.userId, String);
|
|
25
|
+
},
|
|
26
|
+
run() {
|
|
27
|
+
// insert code to run.
|
|
28
|
+
return false;
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
const RATE_LIMITED_METHODS = [
|
|
33
|
+
<%= className %>,
|
|
34
|
+
].map(value => value['name']);
|
|
35
|
+
|
|
36
|
+
if (Meteor.isServer) {
|
|
37
|
+
const OPERATIONS = 5;
|
|
38
|
+
const PER_SECOND = 1 * 1000; // milliseconds
|
|
39
|
+
// Only allow 5 list operations per connection per second.
|
|
40
|
+
DDPRateLimiter.addRule({
|
|
41
|
+
name(name) {
|
|
42
|
+
return RATE_LIMITED_METHODS.includes(name);
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
// Rate limit per connection ID.
|
|
46
|
+
connectionId() { return true; },
|
|
47
|
+
}, OPERATIONS, PER_SECOND);
|
|
48
|
+
}
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import { Meteor } from 'meteor/meteor';
|
|
2
|
-
import { ValidatedMethod } from 'meteor/mdg:validated-method';
|
|
3
|
-
import { DDPRateLimiter } from 'meteor/ddp-rate-limiter';
|
|
4
|
-
import { check, Match } from 'meteor/check';
|
|
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
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @memberof Server.<%= name %>
|
|
16
|
-
* @method
|
|
17
|
-
* @property { string } name String that defines the method.
|
|
18
|
-
* @property { function } validate Is run before the main execution.
|
|
19
|
-
* @property { function } run The main action that is executed.
|
|
20
|
-
*/
|
|
21
|
-
const <%= className %> = new ValidatedMethod({
|
|
22
|
-
name: '<%= fileName %>.server',
|
|
23
|
-
validate() {
|
|
24
|
-
//check(this.userId, String);
|
|
25
|
-
},
|
|
26
|
-
run() {
|
|
27
|
-
// insert code to run.
|
|
28
|
-
return false;
|
|
29
|
-
},
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
const RATE_LIMITED_METHODS = [
|
|
33
|
-
<%= className %>,
|
|
34
|
-
].map(value => value['name']);
|
|
35
|
-
|
|
36
|
-
if (Meteor.isServer) {
|
|
37
|
-
const OPERATIONS = 5;
|
|
38
|
-
const PER_SECOND = 1 * 1000; // milliseconds
|
|
39
|
-
// Only allow 5 list operations per connection per second.
|
|
40
|
-
DDPRateLimiter.addRule({
|
|
41
|
-
name(name) {
|
|
42
|
-
return RATE_LIMITED_METHODS.includes(name);
|
|
43
|
-
},
|
|
44
|
-
|
|
45
|
-
// Rate limit per connection ID.
|
|
46
|
-
connectionId() { return true; },
|
|
47
|
-
}, OPERATIONS, PER_SECOND);
|
|
48
|
-
}
|
|
1
|
+
import { Meteor } from 'meteor/meteor';
|
|
2
|
+
import { ValidatedMethod } from 'meteor/mdg:validated-method';
|
|
3
|
+
import { DDPRateLimiter } from 'meteor/ddp-rate-limiter';
|
|
4
|
+
import { check, Match } from 'meteor/check';
|
|
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
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @memberof Server.<%= name %>
|
|
16
|
+
* @method
|
|
17
|
+
* @property { string } name String that defines the method.
|
|
18
|
+
* @property { function } validate Is run before the main execution.
|
|
19
|
+
* @property { function } run The main action that is executed.
|
|
20
|
+
*/
|
|
21
|
+
const <%= className %> = new ValidatedMethod({
|
|
22
|
+
name: '<%= fileName %>.server',
|
|
23
|
+
validate() {
|
|
24
|
+
//check(this.userId, String);
|
|
25
|
+
},
|
|
26
|
+
run() {
|
|
27
|
+
// insert code to run.
|
|
28
|
+
return false;
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
const RATE_LIMITED_METHODS = [
|
|
33
|
+
<%= className %>,
|
|
34
|
+
].map(value => value['name']);
|
|
35
|
+
|
|
36
|
+
if (Meteor.isServer) {
|
|
37
|
+
const OPERATIONS = 5;
|
|
38
|
+
const PER_SECOND = 1 * 1000; // milliseconds
|
|
39
|
+
// Only allow 5 list operations per connection per second.
|
|
40
|
+
DDPRateLimiter.addRule({
|
|
41
|
+
name(name) {
|
|
42
|
+
return RATE_LIMITED_METHODS.includes(name);
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
// Rate limit per connection ID.
|
|
46
|
+
connectionId() { return true; },
|
|
47
|
+
}, OPERATIONS, PER_SECOND);
|
|
48
|
+
}
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
Package.describe({
|
|
2
|
-
name: "<%= name %>",
|
|
3
|
-
summary: "What this does",
|
|
4
|
-
version: "0.0.1",
|
|
5
|
-
git: "https://github.com/<username>/<%= fileName %>.git",
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
//Npm.depends({});
|
|
9
|
-
|
|
10
|
-
Package.onUse(function(api) {
|
|
11
|
-
api.versionsFrom('1.8');
|
|
12
|
-
|
|
13
|
-
<% if (client === 'vanilla') { %>api.use(['ecmascript, jquery, static-html']);<% } else { %>
|
|
14
|
-
api.use(['ecmascript', 'templating', 'modules']);<% } %>
|
|
15
|
-
|
|
16
|
-
const packages = [
|
|
17
|
-
];
|
|
18
|
-
|
|
19
|
-
api.use(packages);
|
|
20
|
-
api.imply(packages);
|
|
21
|
-
|
|
22
|
-
api.mainModule('server/<%= fileName %>.js', 'server');
|
|
23
|
-
api.mainModule('client/<%= fileName %>.js', 'client');
|
|
24
|
-
|
|
25
|
-
api.addFiles('lib/<%= fileName %>.js', ['client', 'server']);
|
|
26
|
-
|
|
27
|
-
api.export('<%= className %>');
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
Package.onTest(function(api) {
|
|
31
|
-
api.use('<%= name %>');
|
|
32
|
-
api.use('ecmascript');
|
|
33
|
-
api.use('sanjo:jasmine@1.0.0');
|
|
34
|
-
api.use('velocity:html-reporter@0.10.0');
|
|
35
|
-
api.addFiles('tests/server/<%= fileName %>.js', 'server');
|
|
36
|
-
api.addFiles('tests/client/<%= fileName %>.js', 'client');
|
|
37
|
-
});
|
|
1
|
+
Package.describe({
|
|
2
|
+
name: "<%= name %>",
|
|
3
|
+
summary: "What this does",
|
|
4
|
+
version: "0.0.1",
|
|
5
|
+
git: "https://github.com/<username>/<%= fileName %>.git",
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
//Npm.depends({});
|
|
9
|
+
|
|
10
|
+
Package.onUse(function(api) {
|
|
11
|
+
api.versionsFrom('1.8');
|
|
12
|
+
|
|
13
|
+
<% if (client === 'vanilla') { %>api.use(['ecmascript, jquery, static-html']);<% } else { %>
|
|
14
|
+
api.use(['ecmascript', 'templating', 'modules']);<% } %>
|
|
15
|
+
|
|
16
|
+
const packages = [
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
api.use(packages);
|
|
20
|
+
api.imply(packages);
|
|
21
|
+
|
|
22
|
+
api.mainModule('server/<%= fileName %>.js', 'server');
|
|
23
|
+
api.mainModule('client/<%= fileName %>.js', 'client');
|
|
24
|
+
|
|
25
|
+
api.addFiles('lib/<%= fileName %>.js', ['client', 'server']);
|
|
26
|
+
|
|
27
|
+
api.export('<%= className %>');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
Package.onTest(function(api) {
|
|
31
|
+
api.use('<%= name %>');
|
|
32
|
+
api.use('ecmascript');
|
|
33
|
+
api.use('sanjo:jasmine@1.0.0');
|
|
34
|
+
api.use('velocity:html-reporter@0.10.0');
|
|
35
|
+
api.addFiles('tests/server/<%= fileName %>.js', 'server');
|
|
36
|
+
api.addFiles('tests/client/<%= fileName %>.js', 'client');
|
|
37
|
+
});
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
Package.describe({
|
|
2
|
-
name: "<%= name %>",
|
|
3
|
-
summary: "What this does",
|
|
4
|
-
version: "0.0.1",
|
|
5
|
-
git: "https://github.com/<username>/<%= fileName %>.git",
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
Npm.depends({
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
Package.onUse(function(api) {
|
|
12
|
-
api.versionsFrom('1.8');
|
|
13
|
-
|
|
14
|
-
api.use(['ecmascript', 'templating', 'modules']);
|
|
15
|
-
|
|
16
|
-
var packages = [
|
|
17
|
-
];
|
|
18
|
-
|
|
19
|
-
api.use(packages);
|
|
20
|
-
api.imply(packages);
|
|
21
|
-
|
|
22
|
-
api.mainModule('server/<%= fileName %>.jsx', 'server');
|
|
23
|
-
api.mainModule('client/<%= fileName %>.jsx', 'client');
|
|
24
|
-
|
|
25
|
-
api.addFiles('lib/<%= fileName %>.jsx', ['client', 'server']);
|
|
26
|
-
|
|
27
|
-
api.export('<%= className %>');
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
Package.onTest(function(api) {
|
|
31
|
-
api.use('<%= name %>');
|
|
32
|
-
api.use('ecmascript');
|
|
33
|
-
api.use('sanjo:jasmine@1.0.0');
|
|
34
|
-
api.use('velocity:html-reporter@0.10.0');
|
|
35
|
-
api.addFiles('tests/server/<%= fileName %>.jsx', 'server');
|
|
36
|
-
api.addFiles('tests/client/<%= fileName %>.jsx', 'client');
|
|
37
|
-
});
|
|
1
|
+
Package.describe({
|
|
2
|
+
name: "<%= name %>",
|
|
3
|
+
summary: "What this does",
|
|
4
|
+
version: "0.0.1",
|
|
5
|
+
git: "https://github.com/<username>/<%= fileName %>.git",
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
Npm.depends({
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
Package.onUse(function(api) {
|
|
12
|
+
api.versionsFrom('1.8');
|
|
13
|
+
|
|
14
|
+
api.use(['ecmascript', 'templating', 'modules']);
|
|
15
|
+
|
|
16
|
+
var packages = [
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
api.use(packages);
|
|
20
|
+
api.imply(packages);
|
|
21
|
+
|
|
22
|
+
api.mainModule('server/<%= fileName %>.jsx', 'server');
|
|
23
|
+
api.mainModule('client/<%= fileName %>.jsx', 'client');
|
|
24
|
+
|
|
25
|
+
api.addFiles('lib/<%= fileName %>.jsx', ['client', 'server']);
|
|
26
|
+
|
|
27
|
+
api.export('<%= className %>');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
Package.onTest(function(api) {
|
|
31
|
+
api.use('<%= name %>');
|
|
32
|
+
api.use('ecmascript');
|
|
33
|
+
api.use('sanjo:jasmine@1.0.0');
|
|
34
|
+
api.use('velocity:html-reporter@0.10.0');
|
|
35
|
+
api.addFiles('tests/server/<%= fileName %>.jsx', 'server');
|
|
36
|
+
api.addFiles('tests/client/<%= fileName %>.jsx', 'client');
|
|
37
|
+
});
|