diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..81ed306
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+node_modules/
+.cache/
+*~
+.meteor/
+
+
diff --git a/client/main.html b/client/main.html
new file mode 100644
index 0000000..9e1f4ac
--- /dev/null
+++ b/client/main.html
@@ -0,0 +1,7 @@
+
+ FirstProject
+
+
+
+
+
diff --git a/client/main.js b/client/main.js
new file mode 100644
index 0000000..665c6aa
--- /dev/null
+++ b/client/main.js
@@ -0,0 +1,12 @@
+import Vue from 'vue'
+
+import '../imports/ui/plugins'
+
+import App from '../imports/ui/App.vue'
+
+Meteor.startup(() => {
+ new Vue({
+ el: '#app',
+ ...App,
+ })
+})
diff --git a/imports/api/collections/Links.js b/imports/api/collections/Links.js
new file mode 100644
index 0000000..de6a43c
--- /dev/null
+++ b/imports/api/collections/Links.js
@@ -0,0 +1,3 @@
+import { Mongo } from 'meteor/mongo';
+
+export default new Mongo.Collection('links');
diff --git a/imports/api/collections/Links.tests.js b/imports/api/collections/Links.tests.js
new file mode 100644
index 0000000..ce17851
--- /dev/null
+++ b/imports/api/collections/Links.tests.js
@@ -0,0 +1,24 @@
+// Tests for the behavior of the links collection
+//
+// https://guide.meteor.com/testing.html
+
+import { Meteor } from 'meteor/meteor';
+import { assert } from 'chai';
+import Links from './Links.js';
+
+if (Meteor.isServer) {
+ describe('links collection', function () {
+ it('insert correctly', function () {
+ const linkId = Links.insert({
+ title: 'meteor homepage',
+ url: 'https://www.meteor.com',
+ });
+ const added = Links.find({ _id: linkId });
+ const collectionName = added._getCollectionName();
+ const count = added.count();
+
+ assert.equal(collectionName, 'links');
+ assert.equal(count, 1);
+ });
+ });
+}
diff --git a/imports/api/fixtures.js b/imports/api/fixtures.js
new file mode 100644
index 0000000..f629f5c
--- /dev/null
+++ b/imports/api/fixtures.js
@@ -0,0 +1,32 @@
+import { Meteor } from 'meteor/meteor';
+import Links from './collections/Links.js';
+
+Meteor.startup(() => {
+ // if the Links collection is empty
+ if (Links.find().count() === 0) {
+ const data = [
+ {
+ title: 'Do the Tutorial',
+ url: 'https://www.meteor.com/try',
+ createdAt: new Date(),
+ },
+ {
+ title: 'Follow the Guide',
+ url: 'http://guide.meteor.com',
+ createdAt: new Date(),
+ },
+ {
+ title: 'Read the Docs',
+ url: 'https://docs.meteor.com',
+ createdAt: new Date(),
+ },
+ {
+ title: 'Discussions',
+ url: 'https://forums.meteor.com',
+ createdAt: new Date(),
+ },
+ ];
+
+ data.forEach(link => Links.insert(link));
+ }
+});
diff --git a/imports/api/methods/createLink.js b/imports/api/methods/createLink.js
new file mode 100644
index 0000000..876f710
--- /dev/null
+++ b/imports/api/methods/createLink.js
@@ -0,0 +1,16 @@
+import { Meteor } from 'meteor/meteor';
+import { check } from 'meteor/check';
+import Links from '../collections/Links.js';
+
+Meteor.methods({
+ 'createLink'(title, url) {
+ check(url, String);
+ check(title, String);
+
+ return Links.insert({
+ url,
+ title,
+ createdAt: new Date(),
+ });
+ },
+});
diff --git a/imports/api/methods/createLink.tests.js b/imports/api/methods/createLink.tests.js
new file mode 100644
index 0000000..d899a73
--- /dev/null
+++ b/imports/api/methods/createLink.tests.js
@@ -0,0 +1,20 @@
+import { Meteor } from 'meteor/meteor';
+import { assert } from 'chai';
+import Links from '../collections/Links.js';
+import './methods.js';
+
+if (Meteor.isServer) {
+ describe('method: createLink', function () {
+ beforeEach(function () {
+ Links.remove({});
+ });
+
+ it('can add a new link', function () {
+ const addLink = Meteor.server.method_handlers['createLink'];
+
+ addLink.apply({}, ['meteor.com', 'https://www.meteor.com']);
+
+ assert.equal(Links.find().count(), 1);
+ });
+ });
+}
diff --git a/imports/api/methods/index.js b/imports/api/methods/index.js
new file mode 100644
index 0000000..c52403a
--- /dev/null
+++ b/imports/api/methods/index.js
@@ -0,0 +1 @@
+import './createLink'
diff --git a/imports/api/publications/index.js b/imports/api/publications/index.js
new file mode 100644
index 0000000..d161b58
--- /dev/null
+++ b/imports/api/publications/index.js
@@ -0,0 +1 @@
+import './links'
diff --git a/imports/api/publications/links.js b/imports/api/publications/links.js
new file mode 100644
index 0000000..f085d75
--- /dev/null
+++ b/imports/api/publications/links.js
@@ -0,0 +1,6 @@
+import { Meteor } from 'meteor/meteor';
+import Links from '../collections/Links.js';
+
+Meteor.publish('links', function () {
+ return Links.find();
+});
diff --git a/imports/api/publications/links.tests.js b/imports/api/publications/links.tests.js
new file mode 100644
index 0000000..37f337c
--- /dev/null
+++ b/imports/api/publications/links.tests.js
@@ -0,0 +1,22 @@
+import { assert } from 'chai'
+import { PublicationCollector } from 'meteor/johanbrook:publication-collector'
+import Links from '../collections/Links.js'
+import './publications.js'
+
+describe('Publish links', function () {
+ beforeEach(function () {
+ Links.remove({})
+ Links.insert({
+ title: 'meteor homepage',
+ url: 'https://www.meteor.com'
+ })
+ })
+
+ it('sends all links', function (done) {
+ const collector = new PublicationCollector()
+ collector.collect('links', (collections) => {
+ assert.equal(collections.links.length, 1)
+ done()
+ })
+ })
+})
diff --git a/imports/ui/App.vue b/imports/ui/App.vue
new file mode 100644
index 0000000..e126098
--- /dev/null
+++ b/imports/ui/App.vue
@@ -0,0 +1,26 @@
+
+
+
Welcome to Meteor!
+
+
+
+
+
+
+
+
diff --git a/imports/ui/components/Hello.vue b/imports/ui/components/Hello.vue
new file mode 100644
index 0000000..64947eb
--- /dev/null
+++ b/imports/ui/components/Hello.vue
@@ -0,0 +1,27 @@
+
+
+
+
You've pressed the button {{counter}} times.
+
+
+
+
+
+
diff --git a/imports/ui/components/Info.vue b/imports/ui/components/Info.vue
new file mode 100644
index 0000000..376d605
--- /dev/null
+++ b/imports/ui/components/Info.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
diff --git a/imports/ui/plugins.js b/imports/ui/plugins.js
new file mode 100644
index 0000000..eb976c9
--- /dev/null
+++ b/imports/ui/plugins.js
@@ -0,0 +1,4 @@
+import Vue from 'vue'
+import VueMeteorTracker from 'vue-meteor-tracker'
+
+Vue.use(VueMeteorTracker)
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..f5fffe6
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,667 @@
+{
+ "name": "FirstProject",
+ "requires": true,
+ "lockfileVersion": 1,
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.14.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz",
+ "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "lodash.omit": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
+ "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA="
+ },
+ "meteor-node-stubs": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-1.0.3.tgz",
+ "integrity": "sha512-JQwIWPfM/Oa2x1Ycwn1Q0wVVQ8b0bOLv+qs4RR/D12b5dPktLlPCRhMzWzRPncZVJtfsnKKBgPLdFmJYUqAwHg==",
+ "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",
+ "elliptic": "^6.5.4",
+ "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": "5.4.1",
+ "bundled": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "safer-buffer": "^2.1.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "bundled": true
+ }
+ }
+ },
+ "assert": {
+ "version": "1.5.0",
+ "bundled": true,
+ "requires": {
+ "object-assign": "^4.1.1",
+ "util": "0.10.3"
+ },
+ "dependencies": {
+ "util": {
+ "version": "0.10.3",
+ "bundled": true,
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.5.1",
+ "bundled": true
+ },
+ "bn.js": {
+ "version": "5.2.0",
+ "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.1.0",
+ "bundled": true,
+ "requires": {
+ "bn.js": "^5.0.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.2.1",
+ "bundled": true,
+ "requires": {
+ "bn.js": "^5.1.1",
+ "browserify-rsa": "^4.0.1",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "elliptic": "^6.5.3",
+ "inherits": "^2.0.4",
+ "parse-asn1": "^5.1.5",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.4",
+ "bundled": true
+ }
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "bundled": true,
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "buffer": {
+ "version": "5.7.1",
+ "bundled": true,
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "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.2.0",
+ "bundled": true
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "bundled": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true
+ },
+ "create-ecdh": {
+ "version": "4.0.4",
+ "bundled": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.5.3"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "bundled": true
+ }
+ }
+ },
+ "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"
+ }
+ },
+ "des.js": {
+ "version": "1.0.1",
+ "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"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "bundled": true
+ }
+ }
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "bundled": true
+ },
+ "elliptic": {
+ "version": "6.5.4",
+ "bundled": true,
+ "requires": {
+ "bn.js": "^4.11.9",
+ "brorand": "^1.1.0",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.1",
+ "inherits": "^2.0.4",
+ "minimalistic-assert": "^1.0.1",
+ "minimalistic-crypto-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "bundled": true
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "bundled": true
+ }
+ }
+ },
+ "events": {
+ "version": "3.3.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.1.0",
+ "bundled": true,
+ "requires": {
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.4",
+ "bundled": true
+ }
+ }
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "bundled": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.4",
+ "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.2.1",
+ "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"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "bundled": true
+ }
+ }
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "bundled": true
+ },
+ "pako": {
+ "version": "1.0.11",
+ "bundled": true
+ },
+ "parse-asn1": {
+ "version": "5.1.6",
+ "bundled": true,
+ "requires": {
+ "asn1.js": "^5.2.0",
+ "browserify-aes": "^1.0.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "path-browserify": {
+ "version": "1.0.1",
+ "bundled": true
+ },
+ "pbkdf2": {
+ "version": "3.1.1",
+ "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.1",
+ "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"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "bundled": true
+ }
+ }
+ },
+ "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.6.0",
+ "bundled": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.4",
+ "bundled": true
+ }
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "bundled": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "bundled": true
+ },
+ "safer-buffer": {
+ "version": "2.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.7",
+ "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.4",
+ "bundled": true
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "stream-http": {
+ "version": "3.1.1",
+ "bundled": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "xtend": "^4.0.2"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.4",
+ "bundled": true
+ }
+ }
+ },
+ "string_decoder": {
+ "version": "1.3.0",
+ "bundled": true,
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "timers-browserify": {
+ "version": "2.0.12",
+ "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.2",
+ "bundled": true
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "bundled": true
+ }
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.7",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
+ "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
+ },
+ "vue": {
+ "version": "2.6.14",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz",
+ "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ=="
+ },
+ "vue-meteor-tracker": {
+ "version": "2.0.0-beta.5",
+ "resolved": "https://registry.npmjs.org/vue-meteor-tracker/-/vue-meteor-tracker-2.0.0-beta.5.tgz",
+ "integrity": "sha512-egEEqAeKoy7moc4mdb/yM4+UDxk7yOAiIAW8gFz8umtAEYr7Ll8B1wLC0gtoY4IDUU8bCo0UzQjWvfXDMfl7YA==",
+ "requires": {
+ "lodash.omit": "^4.5.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..acbf850
--- /dev/null
+++ b/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "FirstProject",
+ "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.11.2",
+ "meteor-node-stubs": "^1.0.1",
+ "vue": "^2.6.12",
+ "vue-meteor-tracker": "^2.0.0-beta.5"
+ },
+ "meteor": {
+ "mainModule": {
+ "client": "client/main.js",
+ "server": "server/main.js"
+ },
+ "testModule": "tests/main.js"
+ }
+}
diff --git a/server/main.js b/server/main.js
new file mode 100644
index 0000000..4295061
--- /dev/null
+++ b/server/main.js
@@ -0,0 +1,3 @@
+import '../imports/api/fixtures'
+import '../imports/api/methods'
+import '../imports/api/publications'
diff --git a/tests/main.js b/tests/main.js
new file mode 100644
index 0000000..6d2a32e
--- /dev/null
+++ b/tests/main.js
@@ -0,0 +1,20 @@
+import assert from "assert";
+
+describe("skel", function () {
+ it("package.json has correct name", async function () {
+ const { name } = await import("../package.json");
+ assert.strictEqual(name, "skel");
+ });
+
+ 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);
+ });
+ }
+});