Create Meteor App with React
This commit is contained in:
parent
1715a46867
commit
65b8b9718d
141
.gitignore
vendored
141
.gitignore
vendored
@ -1,142 +1 @@
|
|||||||
# Logs
|
|
||||||
logs
|
|
||||||
*.log
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
lerna-debug.log*
|
|
||||||
|
|
||||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
|
||||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
|
||||||
|
|
||||||
# Runtime data
|
|
||||||
pids
|
|
||||||
*.pid
|
|
||||||
*.seed
|
|
||||||
*.pid.lock
|
|
||||||
|
|
||||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
||||||
lib-cov
|
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul
|
|
||||||
coverage
|
|
||||||
*.lcov
|
|
||||||
|
|
||||||
# nyc test coverage
|
|
||||||
.nyc_output
|
|
||||||
|
|
||||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
|
||||||
.grunt
|
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
|
||||||
bower_components
|
|
||||||
|
|
||||||
# node-waf configuration
|
|
||||||
.lock-wscript
|
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
||||||
build/Release
|
|
||||||
|
|
||||||
# Dependency directories
|
|
||||||
node_modules/
|
node_modules/
|
||||||
jspm_packages/
|
|
||||||
|
|
||||||
# Snowpack dependency directory (https://snowpack.dev/)
|
|
||||||
web_modules/
|
|
||||||
|
|
||||||
# TypeScript cache
|
|
||||||
*.tsbuildinfo
|
|
||||||
|
|
||||||
# Optional npm cache directory
|
|
||||||
.npm
|
|
||||||
|
|
||||||
# Optional eslint cache
|
|
||||||
.eslintcache
|
|
||||||
|
|
||||||
# Microbundle cache
|
|
||||||
.rpt2_cache/
|
|
||||||
.rts2_cache_cjs/
|
|
||||||
.rts2_cache_es/
|
|
||||||
.rts2_cache_umd/
|
|
||||||
|
|
||||||
# Optional REPL history
|
|
||||||
.node_repl_history
|
|
||||||
|
|
||||||
# Output of 'npm pack'
|
|
||||||
*.tgz
|
|
||||||
|
|
||||||
# Yarn Integrity file
|
|
||||||
.yarn-integrity
|
|
||||||
|
|
||||||
# dotenv environment variables file
|
|
||||||
.env
|
|
||||||
.env.test
|
|
||||||
|
|
||||||
# parcel-bundler cache (https://parceljs.org/)
|
|
||||||
.cache
|
|
||||||
.parcel-cache
|
|
||||||
|
|
||||||
# Next.js build output
|
|
||||||
.next
|
|
||||||
out
|
|
||||||
|
|
||||||
# Nuxt.js build / generate output
|
|
||||||
.nuxt
|
|
||||||
dist
|
|
||||||
|
|
||||||
# Gatsby files
|
|
||||||
.cache/
|
|
||||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
|
||||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
|
||||||
# public
|
|
||||||
|
|
||||||
# vuepress build output
|
|
||||||
.vuepress/dist
|
|
||||||
|
|
||||||
# Serverless directories
|
|
||||||
.serverless/
|
|
||||||
|
|
||||||
# FuseBox cache
|
|
||||||
.fusebox/
|
|
||||||
|
|
||||||
# DynamoDB Local files
|
|
||||||
.dynamodb/
|
|
||||||
|
|
||||||
# TernJS port file
|
|
||||||
.tern-port
|
|
||||||
|
|
||||||
# Stores VSCode versions used for testing VSCode extensions
|
|
||||||
.vscode-test
|
|
||||||
|
|
||||||
# yarn v2
|
|
||||||
.yarn/cache
|
|
||||||
.yarn/unplugged
|
|
||||||
.yarn/build-state.yml
|
|
||||||
.yarn/install-state.gz
|
|
||||||
.pnp.*
|
|
||||||
# .idea
|
|
||||||
.idea
|
|
||||||
# Dependency directory
|
|
||||||
bower_components# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
|
||||||
|
|
||||||
# dependencies
|
|
||||||
/node_modules
|
|
||||||
/.pnp
|
|
||||||
.pnp.js
|
|
||||||
|
|
||||||
# testing
|
|
||||||
/coverage
|
|
||||||
|
|
||||||
# production
|
|
||||||
/build
|
|
||||||
|
|
||||||
# misc
|
|
||||||
.DS_Store
|
|
||||||
.env.local
|
|
||||||
.env.development.local
|
|
||||||
.env.test.local
|
|
||||||
.env.production.local
|
|
||||||
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
|
|||||||
19
.meteor/.finished-upgraders
Normal file
19
.meteor/.finished-upgraders
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# This file contains information which helps Meteor properly upgrade your
|
||||||
|
# app when you run 'meteor update'. You should check it into version control
|
||||||
|
# with your project.
|
||||||
|
|
||||||
|
notices-for-0.9.0
|
||||||
|
notices-for-0.9.1
|
||||||
|
0.9.4-platform-file
|
||||||
|
notices-for-facebook-graph-api-2
|
||||||
|
1.2.0-standard-minifiers-package
|
||||||
|
1.2.0-meteor-platform-split
|
||||||
|
1.2.0-cordova-changes
|
||||||
|
1.2.0-breaking-changes
|
||||||
|
1.3.0-split-minifiers-package
|
||||||
|
1.4.0-remove-old-dev-bundle-link
|
||||||
|
1.4.1-add-shell-server-package
|
||||||
|
1.4.3-split-account-service-packages
|
||||||
|
1.5-add-dynamic-import-package
|
||||||
|
1.7-split-underscore-from-meteor-base
|
||||||
|
1.8.3-split-jquery-from-blaze
|
||||||
1
.meteor/.gitignore
vendored
Normal file
1
.meteor/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
local
|
||||||
7
.meteor/.id
Normal file
7
.meteor/.id
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# This file contains a token that is unique to your project.
|
||||||
|
# Check it into your repository along with the rest of this directory.
|
||||||
|
# It can be used for purposes such as:
|
||||||
|
# - ensuring you don't accidentally deploy one app on top of another
|
||||||
|
# - providing package authors with aggregated statistics
|
||||||
|
|
||||||
|
jucx7ujvvusc.lj8riv8bptr8
|
||||||
22
.meteor/packages
Normal file
22
.meteor/packages
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Meteor packages used by this project, one per line.
|
||||||
|
# Check this file (and the other files in this directory) into your repository.
|
||||||
|
#
|
||||||
|
# 'meteor add' and 'meteor remove' will edit this file for you,
|
||||||
|
# but you can also edit it by hand.
|
||||||
|
|
||||||
|
meteor-base@1.4.0 # Packages every Meteor app needs to have
|
||||||
|
mobile-experience@1.1.0 # Packages for a great mobile UX
|
||||||
|
mongo@1.10.0 # The database Meteor supports right now
|
||||||
|
reactive-var@1.0.11 # Reactive variable for tracker
|
||||||
|
|
||||||
|
standard-minifier-css@1.6.0 # CSS minifier run for production mode
|
||||||
|
standard-minifier-js@2.6.0 # JS minifier run for production mode
|
||||||
|
es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers
|
||||||
|
ecmascript@0.14.3 # Enable ECMAScript2015+ syntax in app code
|
||||||
|
typescript@3.7.6 # Enable TypeScript syntax in .ts and .tsx modules
|
||||||
|
shell-server@0.5.0 # Server-side component of the `meteor shell` command
|
||||||
|
|
||||||
|
autopublish@1.0.7 # Publish all data to the clients (for prototyping)
|
||||||
|
insecure@1.0.7 # Allow all DB writes from clients (for prototyping)
|
||||||
|
static-html # Define static page content in .html files
|
||||||
|
react-meteor-data # React higher-order component for reactively tracking Meteor data
|
||||||
2
.meteor/platforms
Normal file
2
.meteor/platforms
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
server
|
||||||
|
browser
|
||||||
1
.meteor/release
Normal file
1
.meteor/release
Normal file
@ -0,0 +1 @@
|
|||||||
|
METEOR@1.10.2
|
||||||
72
.meteor/versions
Normal file
72
.meteor/versions
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
allow-deny@1.1.0
|
||||||
|
autopublish@1.0.7
|
||||||
|
autoupdate@1.6.0
|
||||||
|
babel-compiler@7.5.3
|
||||||
|
babel-runtime@1.5.0
|
||||||
|
base64@1.0.12
|
||||||
|
binary-heap@1.0.11
|
||||||
|
blaze-tools@1.0.10
|
||||||
|
boilerplate-generator@1.7.0
|
||||||
|
caching-compiler@1.2.2
|
||||||
|
caching-html-compiler@1.1.3
|
||||||
|
callback-hook@1.3.0
|
||||||
|
check@1.3.1
|
||||||
|
ddp@1.4.0
|
||||||
|
ddp-client@2.3.3
|
||||||
|
ddp-common@1.4.0
|
||||||
|
ddp-server@2.3.1
|
||||||
|
deps@1.0.12
|
||||||
|
diff-sequence@1.1.1
|
||||||
|
dynamic-import@0.5.2
|
||||||
|
ecmascript@0.14.3
|
||||||
|
ecmascript-runtime@0.7.0
|
||||||
|
ecmascript-runtime-client@0.10.0
|
||||||
|
ecmascript-runtime-server@0.9.0
|
||||||
|
ejson@1.1.1
|
||||||
|
es5-shim@4.8.0
|
||||||
|
fetch@0.1.1
|
||||||
|
geojson-utils@1.0.10
|
||||||
|
hot-code-push@1.0.4
|
||||||
|
html-tools@1.0.11
|
||||||
|
htmljs@1.0.11
|
||||||
|
id-map@1.1.0
|
||||||
|
insecure@1.0.7
|
||||||
|
inter-process-messaging@0.1.1
|
||||||
|
launch-screen@1.2.0
|
||||||
|
livedata@1.0.18
|
||||||
|
logging@1.1.20
|
||||||
|
meteor@1.9.3
|
||||||
|
meteor-base@1.4.0
|
||||||
|
minifier-css@1.5.1
|
||||||
|
minifier-js@2.6.0
|
||||||
|
minimongo@1.6.0
|
||||||
|
mobile-experience@1.1.0
|
||||||
|
mobile-status-bar@1.1.0
|
||||||
|
modern-browsers@0.1.5
|
||||||
|
modules@0.15.0
|
||||||
|
modules-runtime@0.12.0
|
||||||
|
mongo@1.10.0
|
||||||
|
mongo-decimal@0.1.1
|
||||||
|
mongo-dev-server@1.1.0
|
||||||
|
mongo-id@1.0.7
|
||||||
|
npm-mongo@3.7.1
|
||||||
|
ordered-dict@1.1.0
|
||||||
|
promise@0.11.2
|
||||||
|
random@1.2.0
|
||||||
|
react-meteor-data@2.1.1
|
||||||
|
reactive-var@1.0.11
|
||||||
|
reload@1.3.0
|
||||||
|
retry@1.1.0
|
||||||
|
routepolicy@1.1.0
|
||||||
|
shell-server@0.5.0
|
||||||
|
socket-stream-client@0.3.0
|
||||||
|
spacebars-compiler@1.1.3
|
||||||
|
standard-minifier-css@1.6.0
|
||||||
|
standard-minifier-js@2.6.0
|
||||||
|
static-html@1.2.2
|
||||||
|
templating-tools@1.1.2
|
||||||
|
tracker@1.2.0
|
||||||
|
typescript@3.7.6
|
||||||
|
underscore@1.0.10
|
||||||
|
webapp@1.9.1
|
||||||
|
webapp-hashing@1.0.9
|
||||||
4
client/main.css
Normal file
4
client/main.css
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
body {
|
||||||
|
padding: 10px;
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
7
client/main.html
Normal file
7
client/main.html
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<head>
|
||||||
|
<title>smart_garden_server</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="react-target"></div>
|
||||||
|
</body>
|
||||||
8
client/main.jsx
Normal file
8
client/main.jsx
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import { Meteor } from 'meteor/meteor';
|
||||||
|
import { render } from 'react-dom';
|
||||||
|
import { App } from '/imports/ui/App';
|
||||||
|
|
||||||
|
Meteor.startup(() => {
|
||||||
|
render(<App/>, document.getElementById('react-target'));
|
||||||
|
});
|
||||||
3
imports/api/links.js
Normal file
3
imports/api/links.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import { Mongo } from 'meteor/mongo';
|
||||||
|
|
||||||
|
export const LinksCollection = new Mongo.Collection('links');
|
||||||
11
imports/ui/App.jsx
Normal file
11
imports/ui/App.jsx
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import { Hello } from './Hello.jsx';
|
||||||
|
import { Info } from './Info.jsx';
|
||||||
|
|
||||||
|
export const App = () => (
|
||||||
|
<div>
|
||||||
|
<h1>Welcome to Meteor!</h1>
|
||||||
|
<Hello/>
|
||||||
|
<Info/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
16
imports/ui/Hello.jsx
Normal file
16
imports/ui/Hello.jsx
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import React, { useState } from 'react';
|
||||||
|
|
||||||
|
export const Hello = () => {
|
||||||
|
const [counter, setCounter] = useState(0);
|
||||||
|
|
||||||
|
const increment = () => {
|
||||||
|
setCounter(counter + 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<button onClick={increment}>Click Me</button>
|
||||||
|
<p>You've pressed the button {counter} times.</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
20
imports/ui/Info.jsx
Normal file
20
imports/ui/Info.jsx
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import { useTracker } from 'meteor/react-meteor-data';
|
||||||
|
import { LinksCollection } from '../api/links';
|
||||||
|
|
||||||
|
export const Info = () => {
|
||||||
|
const links = useTracker(() => {
|
||||||
|
return LinksCollection.find().fetch();
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h2>Learn Meteor!</h2>
|
||||||
|
<ul>{links.map(
|
||||||
|
link => <li key={link._id}>
|
||||||
|
<a href={link.url} target="_blank">{link.title}</a>
|
||||||
|
</li>
|
||||||
|
)}</ul>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
644
package-lock.json
generated
Normal file
644
package-lock.json
generated
Normal file
@ -0,0 +1,644 @@
|
|||||||
|
{
|
||||||
|
"name": "smart_garden_server",
|
||||||
|
"requires": true,
|
||||||
|
"lockfileVersion": 1,
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/runtime": {
|
||||||
|
"version": "7.10.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.4.tgz",
|
||||||
|
"integrity": "sha512-UpTN5yUJr9b4EX2CnGNWIvER7Ab83ibv0pcvvHc4UOdrBI5jb8bj+32cCwPX6xu0mt2daFNjYhoi+X7beH0RSw==",
|
||||||
|
"requires": {
|
||||||
|
"regenerator-runtime": "^0.13.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"js-tokens": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
|
||||||
|
},
|
||||||
|
"loose-envify": {
|
||||||
|
"version": "1.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
||||||
|
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
|
||||||
|
"requires": {
|
||||||
|
"js-tokens": "^3.0.0 || ^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"meteor-node-stubs": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-QJwyv23wyXD3uEMzk5Xr/y5ezoVlCbHvBbrgdkVadn84dmifLRbs0PtD6EeNw5NLIk+SQSfxld7IMdEsneGz5w==",
|
||||||
|
"requires": {
|
||||||
|
"assert": "^1.4.1",
|
||||||
|
"browserify-zlib": "^0.2.0",
|
||||||
|
"buffer": "^5.2.1",
|
||||||
|
"console-browserify": "^1.1.0",
|
||||||
|
"constants-browserify": "^1.0.0",
|
||||||
|
"crypto-browserify": "^3.12.0",
|
||||||
|
"domain-browser": "^1.2.0",
|
||||||
|
"events": "^3.0.0",
|
||||||
|
"https-browserify": "^1.0.0",
|
||||||
|
"os-browserify": "^0.3.0",
|
||||||
|
"path-browserify": "^1.0.0",
|
||||||
|
"process": "^0.11.10",
|
||||||
|
"punycode": "^2.1.1",
|
||||||
|
"querystring-es3": "^0.2.1",
|
||||||
|
"readable-stream": "^3.3.0",
|
||||||
|
"stream-browserify": "^2.0.2",
|
||||||
|
"stream-http": "^3.0.0",
|
||||||
|
"string_decoder": "^1.2.0",
|
||||||
|
"timers-browserify": "^2.0.10",
|
||||||
|
"tty-browserify": "0.0.1",
|
||||||
|
"url": "^0.11.0",
|
||||||
|
"util": "^0.11.1",
|
||||||
|
"vm-browserify": "^1.1.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"asn1.js": {
|
||||||
|
"version": "4.10.1",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"bn.js": "^4.0.0",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"minimalistic-assert": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"assert": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"util": "0.10.3"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"util": {
|
||||||
|
"version": "0.10.3",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"inherits": "2.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"base64-js": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"bn.js": {
|
||||||
|
"version": "4.11.8",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"brorand": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"browserify-aes": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"buffer-xor": "^1.0.3",
|
||||||
|
"cipher-base": "^1.0.0",
|
||||||
|
"create-hash": "^1.1.0",
|
||||||
|
"evp_bytestokey": "^1.0.3",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"safe-buffer": "^5.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"browserify-cipher": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"browserify-aes": "^1.0.4",
|
||||||
|
"browserify-des": "^1.0.0",
|
||||||
|
"evp_bytestokey": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"browserify-des": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"cipher-base": "^1.0.1",
|
||||||
|
"des.js": "^1.0.0",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"safe-buffer": "^5.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"browserify-rsa": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"bn.js": "^4.1.0",
|
||||||
|
"randombytes": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"browserify-sign": {
|
||||||
|
"version": "4.0.4",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"bn.js": "^4.1.1",
|
||||||
|
"browserify-rsa": "^4.0.0",
|
||||||
|
"create-hash": "^1.1.0",
|
||||||
|
"create-hmac": "^1.1.2",
|
||||||
|
"elliptic": "^6.0.0",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"parse-asn1": "^5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"browserify-zlib": {
|
||||||
|
"version": "0.2.0",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"pako": "~1.0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"buffer": {
|
||||||
|
"version": "5.2.1",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"base64-js": "^1.0.2",
|
||||||
|
"ieee754": "^1.1.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"buffer-xor": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"builtin-status-codes": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"cipher-base": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"safe-buffer": "^5.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"console-browserify": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"date-now": "^0.1.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"constants-browserify": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"core-util-is": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"create-ecdh": {
|
||||||
|
"version": "4.0.3",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"bn.js": "^4.1.0",
|
||||||
|
"elliptic": "^6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"create-hash": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"cipher-base": "^1.0.1",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"md5.js": "^1.3.4",
|
||||||
|
"ripemd160": "^2.0.1",
|
||||||
|
"sha.js": "^2.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"create-hmac": {
|
||||||
|
"version": "1.1.7",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"cipher-base": "^1.0.3",
|
||||||
|
"create-hash": "^1.1.0",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"ripemd160": "^2.0.0",
|
||||||
|
"safe-buffer": "^5.0.1",
|
||||||
|
"sha.js": "^2.4.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"crypto-browserify": {
|
||||||
|
"version": "3.12.0",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"browserify-cipher": "^1.0.0",
|
||||||
|
"browserify-sign": "^4.0.0",
|
||||||
|
"create-ecdh": "^4.0.0",
|
||||||
|
"create-hash": "^1.1.0",
|
||||||
|
"create-hmac": "^1.1.0",
|
||||||
|
"diffie-hellman": "^5.0.0",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"pbkdf2": "^3.0.3",
|
||||||
|
"public-encrypt": "^4.0.0",
|
||||||
|
"randombytes": "^2.0.0",
|
||||||
|
"randomfill": "^1.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"date-now": {
|
||||||
|
"version": "0.1.4",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"des.js": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"minimalistic-assert": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"diffie-hellman": {
|
||||||
|
"version": "5.0.3",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"bn.js": "^4.1.0",
|
||||||
|
"miller-rabin": "^4.0.0",
|
||||||
|
"randombytes": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"domain-browser": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"elliptic": {
|
||||||
|
"version": "6.4.1",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"bn.js": "^4.4.0",
|
||||||
|
"brorand": "^1.0.1",
|
||||||
|
"hash.js": "^1.0.0",
|
||||||
|
"hmac-drbg": "^1.0.0",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"minimalistic-assert": "^1.0.0",
|
||||||
|
"minimalistic-crypto-utils": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"events": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"evp_bytestokey": {
|
||||||
|
"version": "1.0.3",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"md5.js": "^1.3.4",
|
||||||
|
"safe-buffer": "^5.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hash-base": {
|
||||||
|
"version": "3.0.4",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"safe-buffer": "^5.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hash.js": {
|
||||||
|
"version": "1.1.7",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"minimalistic-assert": "^1.0.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"inherits": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"bundled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hmac-drbg": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"hash.js": "^1.0.3",
|
||||||
|
"minimalistic-assert": "^1.0.0",
|
||||||
|
"minimalistic-crypto-utils": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https-browserify": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"ieee754": {
|
||||||
|
"version": "1.1.13",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"inherits": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"isarray": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"md5.js": {
|
||||||
|
"version": "1.3.5",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"hash-base": "^3.0.0",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"safe-buffer": "^5.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"miller-rabin": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"bn.js": "^4.0.0",
|
||||||
|
"brorand": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"minimalistic-assert": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"minimalistic-crypto-utils": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"os-browserify": {
|
||||||
|
"version": "0.3.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"pako": {
|
||||||
|
"version": "1.0.10",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"parse-asn1": {
|
||||||
|
"version": "5.1.4",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"asn1.js": "^4.0.0",
|
||||||
|
"browserify-aes": "^1.0.0",
|
||||||
|
"create-hash": "^1.1.0",
|
||||||
|
"evp_bytestokey": "^1.0.0",
|
||||||
|
"pbkdf2": "^3.0.3",
|
||||||
|
"safe-buffer": "^5.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"path-browserify": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"pbkdf2": {
|
||||||
|
"version": "3.0.17",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"create-hash": "^1.1.2",
|
||||||
|
"create-hmac": "^1.1.4",
|
||||||
|
"ripemd160": "^2.0.1",
|
||||||
|
"safe-buffer": "^5.0.1",
|
||||||
|
"sha.js": "^2.4.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"process": {
|
||||||
|
"version": "0.11.10",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"process-nextick-args": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"public-encrypt": {
|
||||||
|
"version": "4.0.3",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"bn.js": "^4.1.0",
|
||||||
|
"browserify-rsa": "^4.0.0",
|
||||||
|
"create-hash": "^1.1.0",
|
||||||
|
"parse-asn1": "^5.0.0",
|
||||||
|
"randombytes": "^2.0.1",
|
||||||
|
"safe-buffer": "^5.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"punycode": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"querystring": {
|
||||||
|
"version": "0.2.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"querystring-es3": {
|
||||||
|
"version": "0.2.1",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"randombytes": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"safe-buffer": "^5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"randomfill": {
|
||||||
|
"version": "1.0.4",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"randombytes": "^2.0.5",
|
||||||
|
"safe-buffer": "^5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "3.3.0",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"string_decoder": "^1.1.1",
|
||||||
|
"util-deprecate": "^1.0.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"inherits": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"bundled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ripemd160": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"hash-base": "^3.0.0",
|
||||||
|
"inherits": "^2.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"safe-buffer": {
|
||||||
|
"version": "5.1.2",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"setimmediate": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"sha.js": {
|
||||||
|
"version": "2.4.11",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"safe-buffer": "^5.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stream-browserify": {
|
||||||
|
"version": "2.0.2",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"inherits": "~2.0.1",
|
||||||
|
"readable-stream": "^2.0.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "2.3.6",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"core-util-is": "~1.0.0",
|
||||||
|
"inherits": "~2.0.3",
|
||||||
|
"isarray": "~1.0.0",
|
||||||
|
"process-nextick-args": "~2.0.0",
|
||||||
|
"safe-buffer": "~5.1.1",
|
||||||
|
"string_decoder": "~1.1.1",
|
||||||
|
"util-deprecate": "~1.0.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"inherits": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"bundled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"string_decoder": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"safe-buffer": "~5.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stream-http": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"builtin-status-codes": "^3.0.0",
|
||||||
|
"inherits": "^2.0.1",
|
||||||
|
"readable-stream": "^3.0.6",
|
||||||
|
"xtend": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"string_decoder": {
|
||||||
|
"version": "1.2.0",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"safe-buffer": "~5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"timers-browserify": {
|
||||||
|
"version": "2.0.10",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"setimmediate": "^1.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tty-browserify": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"version": "0.11.0",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"punycode": "1.3.2",
|
||||||
|
"querystring": "0.2.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"punycode": {
|
||||||
|
"version": "1.3.2",
|
||||||
|
"bundled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"util": {
|
||||||
|
"version": "0.11.1",
|
||||||
|
"bundled": true,
|
||||||
|
"requires": {
|
||||||
|
"inherits": "2.0.3"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"inherits": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"bundled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"util-deprecate": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"vm-browserify": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"bundled": true
|
||||||
|
},
|
||||||
|
"xtend": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"bundled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"object-assign": {
|
||||||
|
"version": "4.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||||
|
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
|
||||||
|
},
|
||||||
|
"prop-types": {
|
||||||
|
"version": "15.7.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
|
||||||
|
"integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
|
||||||
|
"requires": {
|
||||||
|
"loose-envify": "^1.4.0",
|
||||||
|
"object-assign": "^4.1.1",
|
||||||
|
"react-is": "^16.8.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"react": {
|
||||||
|
"version": "16.13.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz",
|
||||||
|
"integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==",
|
||||||
|
"requires": {
|
||||||
|
"loose-envify": "^1.1.0",
|
||||||
|
"object-assign": "^4.1.1",
|
||||||
|
"prop-types": "^15.6.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"react-dom": {
|
||||||
|
"version": "16.13.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz",
|
||||||
|
"integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==",
|
||||||
|
"requires": {
|
||||||
|
"loose-envify": "^1.1.0",
|
||||||
|
"object-assign": "^4.1.1",
|
||||||
|
"prop-types": "^15.6.2",
|
||||||
|
"scheduler": "^0.19.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"react-is": {
|
||||||
|
"version": "16.13.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
||||||
|
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
|
||||||
|
},
|
||||||
|
"regenerator-runtime": {
|
||||||
|
"version": "0.13.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
|
||||||
|
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
|
||||||
|
},
|
||||||
|
"scheduler": {
|
||||||
|
"version": "0.19.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
|
||||||
|
"integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==",
|
||||||
|
"requires": {
|
||||||
|
"loose-envify": "^1.1.0",
|
||||||
|
"object-assign": "^4.1.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
23
package.json
Normal file
23
package.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "smart_garden_server",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"start": "meteor run",
|
||||||
|
"test": "meteor test --once --driver-package meteortesting:mocha",
|
||||||
|
"test-app": "TEST_WATCH=1 meteor test --full-app --driver-package meteortesting:mocha",
|
||||||
|
"visualize": "meteor --production --extra-packages bundle-visualizer"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/runtime": "^7.8.4",
|
||||||
|
"meteor-node-stubs": "^1.0.0",
|
||||||
|
"react": "^16.13.0",
|
||||||
|
"react-dom": "^16.13.0"
|
||||||
|
},
|
||||||
|
"meteor": {
|
||||||
|
"mainModule": {
|
||||||
|
"client": "client/main.jsx",
|
||||||
|
"server": "server/main.js"
|
||||||
|
},
|
||||||
|
"testModule": "tests/main.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
31
server/main.js
Normal file
31
server/main.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import { Meteor } from 'meteor/meteor';
|
||||||
|
import { LinksCollection } from '/imports/api/links';
|
||||||
|
|
||||||
|
function insertLink({ title, url }) {
|
||||||
|
LinksCollection.insert({title, url, createdAt: new Date()});
|
||||||
|
}
|
||||||
|
|
||||||
|
Meteor.startup(() => {
|
||||||
|
// If the Links collection is empty, add some data.
|
||||||
|
if (LinksCollection.find().count() === 0) {
|
||||||
|
insertLink({
|
||||||
|
title: 'Do the Tutorial',
|
||||||
|
url: 'https://www.meteor.com/tutorials/react/creating-an-app'
|
||||||
|
});
|
||||||
|
|
||||||
|
insertLink({
|
||||||
|
title: 'Follow the Guide',
|
||||||
|
url: 'http://guide.meteor.com'
|
||||||
|
});
|
||||||
|
|
||||||
|
insertLink({
|
||||||
|
title: 'Read the Docs',
|
||||||
|
url: 'https://docs.meteor.com'
|
||||||
|
});
|
||||||
|
|
||||||
|
insertLink({
|
||||||
|
title: 'Discussions',
|
||||||
|
url: 'https://forums.meteor.com'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
20
tests/main.js
Normal file
20
tests/main.js
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import assert from "assert";
|
||||||
|
|
||||||
|
describe("smart_garden_server", function () {
|
||||||
|
it("package.json has correct name", async function () {
|
||||||
|
const { name } = await import("../package.json");
|
||||||
|
assert.strictEqual(name, "smart_garden_server");
|
||||||
|
});
|
||||||
|
|
||||||
|
if (Meteor.isClient) {
|
||||||
|
it("client is not server", function () {
|
||||||
|
assert.strictEqual(Meteor.isServer, false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Meteor.isServer) {
|
||||||
|
it("server is not client", function () {
|
||||||
|
assert.strictEqual(Meteor.isClient, false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
Loading…
Reference in New Issue
Block a user