notherbase-fs 1.2.11 → 1.2.14

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.
@@ -1,7 +1,7 @@
1
1
  module.exports = {
2
2
  chat: require("./chat"),
3
3
  item: require("./item"),
4
- portfolio: require("./portfolio/portfolio-controller.js"),
4
+ pages: require("./pages.js"),
5
5
  user: require("./user"),
6
6
  authCheck: require("./authCheck"),
7
7
  contact: require("./contact"),
@@ -29,73 +29,76 @@ router.get("/", async function(req, res) {
29
29
  router.post("/", async function(req, res) {
30
30
  if (connectionSuccess) {
31
31
  try {
32
- if (req.session.currentUser) {
33
- let foundInventory = await inventory.findOne({user: req.session.currentUser}).populate("items.item");
34
-
35
- let holding = false;
36
-
37
- for (let j = 0; j < foundInventory.items.length; j++) {
38
- if (foundInventory.items[j].item._id.equals(req.body.change.item)) {
39
- holding = true;
40
-
41
- if (foundInventory.items[j].amount >= -Math.floor(req.body.change.amount)) {
42
- foundInventory.items[j].amount += Math.floor(req.body.change.amount);
43
-
44
- if (foundInventory.items[j].amount === 0) {
45
- let itemToEmpty = foundInventory.items[j].item._id;
46
-
47
- foundInventory.items.splice(j, 1);
48
- await foundInventory.save();
32
+ if (req.body.item && req.body.amount) {
33
+ if (req.session.currentUser) {
34
+ let foundInventory = await inventory.findOne({user: req.session.currentUser}).populate("items.item");
49
35
 
50
- res.status(200).send({
51
- item: {
52
- _id: itemToEmpty
53
- },
54
- amount: 0
55
- });
36
+ let holding = false;
37
+
38
+ for (let j = 0; j < foundInventory.items.length; j++) {
39
+ if (foundInventory.items[j].item._id.equals(req.body.item)) {
40
+ holding = true;
41
+
42
+ if (foundInventory.items[j].amount >= -Math.floor(req.body.amount)) {
43
+ foundInventory.items[j].amount += Math.floor(req.body.amount);
44
+
45
+ if (foundInventory.items[j].amount === 0) {
46
+ let itemToEmpty = foundInventory.items[j].item._id;
47
+
48
+ foundInventory.items.splice(j, 1);
49
+ await foundInventory.save();
50
+
51
+ res.status(200).send({
52
+ item: itemToEmpty,
53
+ amount: 0
54
+ });
55
+ }
56
+ else {
57
+ await foundInventory.save();
58
+
59
+ res.status(200).send(foundInventory.items[j]);
60
+ }
56
61
  }
57
62
  else {
58
- await foundInventory.save();
59
-
60
- res.status(200).send(foundInventory.items[j]);
63
+ console.log("subtract from too few", req.change);
64
+ res.status(304).send(
65
+ `Unable to remove ${req.body.amount} ${req.body.item}
66
+ from inventory because the inventory has only ${foundInventory.items[j].amount}.`
67
+ );
61
68
  }
69
+
70
+ break;
71
+ }
72
+ }
73
+
74
+ if (!holding) {
75
+ if (req.body.amount > 0) {
76
+ foundInventory.items.push({
77
+ item: req.body.item,
78
+ amount: req.body.amount
79
+ });
80
+
81
+ await foundInventory.save();
82
+
83
+ await inventory.populate(foundInventory, "items.item");
84
+
85
+ res.status(200).send(foundInventory.items[foundInventory.items.length - 1]);
62
86
  }
63
87
  else {
64
- console.log("subtract from too few", req.body.change);
88
+ console.log("subtract from none", req.body);
65
89
  res.status(304).send(
66
- `Unable to remove ${req.body.change.amount} ${req.body.change.item}
67
- from inventory because the inventory has only ${foundInventory.items[j].amount}.`
90
+ `Unable to remove ${req.body.amount} ${req.body.item}
91
+ from inventory because the inventory has none.`
68
92
  );
69
93
  }
70
-
71
- break;
72
- }
94
+ };
95
+ }
96
+ else {
97
+ res.status(401).send("User not logged in!");
73
98
  }
74
-
75
- if (!holding) {
76
- if (req.body.change.amount > 0) {
77
- foundInventory.items.push({
78
- item: req.body.change.item,
79
- amount: req.body.change.amount
80
- });
81
-
82
- await foundInventory.save();
83
-
84
- await inventory.populate(foundInventory, "items.item");
85
-
86
- res.status(200).send(foundInventory.items[foundInventory.items.length - 1]);
87
- }
88
- else {
89
- console.log("subtract from none", req.body.change);
90
- res.status(304).send(
91
- `Unable to remove ${req.body.change.amount} ${req.body.change.item}
92
- from inventory because the inventory has none.`
93
- );
94
- }
95
- };
96
99
  }
97
100
  else {
98
- res.status(401).send("User not logged in!");
101
+ res.status(400).send("Check input!");
99
102
  }
100
103
  }
101
104
  catch(err) {
@@ -0,0 +1,18 @@
1
+ const express = require("express");
2
+ const router = express.Router();
3
+ const fs = require('fs');
4
+
5
+ module.exports = function name(path)
6
+ {
7
+ let files = fs.readdirSync(path);
8
+
9
+ files.forEach(file => {
10
+ file = file.slice(0, -4);
11
+
12
+ router.get(`/${file}`, function(req, res) {
13
+ res.render(`${path}/${file}.ejs`);
14
+ });
15
+ });
16
+
17
+ return router;
18
+ }
@@ -1,4 +1,4 @@
1
- const { user, inventory, connectionSuccess } = require("../models");
1
+ const { user, inventory, connectionSuccess, item } = require("../models");
2
2
  const path = require('path');
3
3
 
4
4
  let router = require("express").Router();
package/index.js CHANGED
@@ -8,13 +8,15 @@ module.exports = {
8
8
  },
9
9
  data: db,
10
10
  chat: null,
11
- start: function start(world) {
11
+ start: function start(world, pagesPath) {
12
12
  let theFront = require("./controllers/the-front");
13
13
  let explorer = require("./controllers/explorer");
14
14
 
15
15
  explorer.complete(world.explorer);
16
16
  theFront.complete(world.theFront);
17
17
 
18
- require("./server")(theFront.router, explorer.router, db.connectionSuccess);
18
+ let pagesRouter = require("./controllers/pages")(pagesPath);
19
+
20
+ require("./server")(theFront.router, explorer.router, pagesRouter, db.connectionSuccess);
19
21
  }
20
22
  }
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "notherbase-fs",
3
- "version": "1.2.11",
3
+ "version": "1.2.14",
4
4
  "description": "Functions to help make developing for NotherBase easier.",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
- "test": "nodemon test.js",
7
+ "test": "nodemon test/test-index.js",
8
8
  "gmail-auth": "node gmail-auth.js",
9
9
  "gmail-token": "node gmail-token.js"
10
10
  },
package/server.js CHANGED
@@ -1,6 +1,6 @@
1
1
  let started = false;
2
2
 
3
- module.exports = function start(frontRouter, exploreRouter, dbConnected) {
3
+ module.exports = function start(frontRouter, exploreRouter, pagesRouter, dbConnected) {
4
4
  if (!started) {
5
5
  // Setup for Express
6
6
  const express = require("express");
@@ -57,8 +57,6 @@ module.exports = function start(frontRouter, exploreRouter, dbConnected) {
57
57
 
58
58
  app.use("/user", controllers.user);
59
59
 
60
- app.use("/portfolio", controllers.portfolio);
61
-
62
60
  app.use("/chat", controllers.chat(io));
63
61
 
64
62
  app.use("/contact", controllers.contact);
@@ -70,6 +68,8 @@ module.exports = function start(frontRouter, exploreRouter, dbConnected) {
70
68
  app.use("/item", controllers.item);
71
69
 
72
70
  app.use("/the-front", frontRouter);
71
+
72
+ app.use("/", pagesRouter);
73
73
 
74
74
  app.use("/", controllers.authCheck, exploreRouter);
75
75
 
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Document</title>
8
+ </head>
9
+ <body>
10
+ Test hahahahahah
11
+ </body>
12
+ </html>
@@ -1,3 +1,4 @@
1
+ const path = require('path');
1
2
  const notherbase = require("../index");
2
3
 
3
4
  const world = {
@@ -54,10 +55,12 @@ const world = {
54
55
  details: [
55
56
  {
56
57
  name: "",
57
- options: {}
58
+ options: {
59
+ requiredItems: ["Gold Coin"]
60
+ }
58
61
  }
59
62
  ]
60
63
  }
61
64
  };
62
65
 
63
- notherbase.start(world);
66
+ notherbase.start(world, path.resolve(__dirname, "pages"));
@@ -2,6 +2,8 @@
2
2
  Welcome to The Front.
3
3
  </p>
4
4
 
5
+ <button onclick="addGold()">Gold</button>
6
+
5
7
  <hr>
6
8
 
7
9
  <h3>Register Account</h3>
@@ -144,4 +146,8 @@
144
146
  }
145
147
  }
146
148
  });
149
+
150
+ let addGold = function addGold(params) {
151
+ playerInventory.change(itemIDs[0], 2);
152
+ }
147
153
  </script>
package/views/head.ejs CHANGED
@@ -5,7 +5,6 @@
5
5
  <title><%= siteTitle %></title>
6
6
  <meta name="viewport" content="width=device-width,initial-scale=1.0">
7
7
  <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
8
-
9
8
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
10
  <!-- 'Roboto Condensed', sans-serif; -->
@@ -38,8 +38,13 @@
38
38
  setInterval(this.update, this.updateCooldown);
39
39
  }
40
40
 
41
- async change(change) {
42
- await $.post("/inventory", { change: change }, (data, status) => {
41
+ async change(itemID, amount) {
42
+ let change = {
43
+ item: itemID,
44
+ amount: amount
45
+ }
46
+
47
+ await $.post("/inventory", change, (data, status) => {
43
48
  if (status === "success") {
44
49
  let holding = false;
45
50
 
@@ -52,7 +57,7 @@
52
57
  }
53
58
  }
54
59
 
55
- if (!holding && data.amount > 0) {
60
+ if (!holding && data.amount > 0 && data.item) {
56
61
  this.items.push(data);
57
62
  }
58
63
 
@@ -1,10 +0,0 @@
1
- const express = require("express");
2
- const router = express.Router();
3
-
4
- router.get("/", function(req, res) {
5
- res.render(`${__dirname}/views/index`, {
6
- siteTitle: "Wyatt's Portfolio"
7
- });
8
- });
9
-
10
- module.exports = router;
@@ -1,468 +0,0 @@
1
- :root {
2
- --textColor: rgb(247, 247, 247);
3
- --altTextColor: rgb(20, 20, 20);
4
- --bgColor: rgb(31, 31, 31);
5
- --bgColorLight: rgb(79, 79, 79);
6
- --focusColor: rgb(222, 139, 37);
7
- --shadowColor: rgb(0, 0, 0);
8
- --extreme-dark: #2e2e2e;
9
- --very-dark: #3e3e3e;
10
- --dark: #505050;
11
- --light: #F7FFE0;
12
- --yellow: #D59C00;
13
- --brown: #704E2E;
14
- --green: #709176;
15
- --blue: #00487C;
16
- --game-size: 500px;
17
- }
18
-
19
- * {
20
- color: var(--textColor);
21
- box-sizing: border-box;
22
- margin: 0;
23
- padding: 0;
24
- font-family: 'Chakra Petch', sans-serif;
25
- }
26
-
27
- .invisible {
28
- display: none;
29
- }
30
-
31
- a {
32
- font-weight: bold;
33
- }
34
-
35
- h4 a {
36
- margin-right: 20px;
37
- }
38
-
39
- hr {
40
- border: none;
41
- border-bottom: 2px solid var(--shadowColor);
42
- margin: 5px 20px;
43
- }
44
-
45
- hr.light {
46
- border-bottom: 2px solid var(--textColor);
47
- }
48
-
49
- body {
50
- background-color: var(--bgColorLight);
51
- width: 100%;
52
- }
53
-
54
- header {
55
- height: 100vh;
56
- width: 100%;
57
- position: relative;
58
- box-shadow: 0 10px 25px var(--shadowColor);
59
- background-color: var(--bgColor);
60
- }
61
-
62
- .portrait {
63
- height: 100%;
64
- width: 70%;
65
- position: absolute;
66
- right: 0;
67
- background-image: url("/img/fancy-me.jpg");
68
- background-size: cover;
69
- background-position-x: center;
70
- background-repeat: no-repeat;
71
- z-index: 0;
72
- }
73
-
74
- .portrait-fade {
75
- width: 100%;
76
- height: 100%;
77
- }
78
-
79
- header h2 {
80
- position: absolute;
81
- left: 100px;
82
- top: 35%;
83
- font-size: 50px;
84
- background-color: var(--bgColor);
85
- padding: 10px;
86
- border-radius: 5px;
87
- }
88
-
89
- header h3 {
90
- position: absolute;
91
- left: 100px;
92
- top: calc(35% + 75px);
93
- font-size: 30px;
94
- background-color: var(--bgColor);
95
- padding: 10px;
96
- border-radius: 5px;
97
- }
98
-
99
- .external-links {
100
- position: absolute;
101
- left: 100px;
102
- top: calc(35% + 125px);
103
- font-size: 50px;
104
- background-color: var(--bgColor);
105
- width: 110px;
106
- height: 65px;
107
- display: flex;
108
- justify-content: space-evenly;
109
- align-items: center;
110
- padding: 5px;
111
- border-radius: 5px;
112
- }
113
-
114
- header a {
115
- width: 50px;
116
- height: 100%;
117
- margin: 5px;
118
- }
119
-
120
- header i:hover {
121
- cursor: pointer;
122
- color: var(--focusColor);
123
- }
124
-
125
- nav {
126
- height: 50px;
127
- width: 100%;
128
- background-color: var(--focusColor);
129
- padding: 10px;
130
- display: flex;
131
- justify-content: space-between;
132
- align-items: center;
133
- position: fixed;
134
- left: 0;
135
- top: 0;
136
- transition: all .2s ease;
137
- z-index: 99;
138
- border-bottom: 1px solid var(--bgColorLight);
139
- }
140
-
141
- nav * {
142
- color: var(--altTextColor);
143
- }
144
-
145
- nav i {
146
- font-size: 30px;
147
- }
148
-
149
- .nav-closed {
150
- top: -50px;
151
- transition: all .2s ease;
152
- }
153
-
154
- main {
155
- width: 100%;
156
- overflow: hidden;
157
- }
158
-
159
- main img {
160
- width: 100%;
161
- height: auto;
162
- border-radius: 5px;
163
- }
164
-
165
- section {
166
- width: 100%;
167
- padding: 100px 10px;
168
- display: flex;
169
- justify-content: center;
170
- align-items: center;
171
- }
172
-
173
- section h3 {
174
- margin: 20px;
175
- font-size: 25px;
176
- }
177
-
178
- section h4 {
179
- margin: 5px 20px;
180
- font-size: 18px;
181
- }
182
-
183
- section h4 i {
184
- margin: 5px 5px;
185
- }
186
-
187
- section p {
188
- margin: 20px;
189
- }
190
-
191
- section img {
192
- width: 50%;
193
- height: auto;
194
- }
195
-
196
- section iframe {
197
- width: 50%;
198
- height: 700px;
199
- border: none;
200
- }
201
-
202
- .text {
203
- width: 600px;
204
- height: 100%;
205
- padding: 5px;
206
- }
207
-
208
- #notherbase-fs {
209
- background-color: var(--extreme-dark);
210
- padding: 10px;
211
- border: 5% solid var(--bgColor);
212
- border-radius: 0% 0% 50px 50px;
213
- }
214
-
215
- #notherbase-fs img {
216
- width: 20%;
217
- }
218
-
219
- #cpd {
220
- background-color: var(--focusColor);
221
- flex-direction: row-reverse;
222
- }
223
-
224
- #cpd * {
225
- color: var(--altTextColor);
226
- }
227
-
228
- #tamago-watch {
229
- background-color: var(--bgColor);
230
- }
231
-
232
- #won-ventures {
233
- background-color: var(--focusColor);
234
- flex-direction: row-reverse;
235
- }
236
-
237
- #won-ventures * {
238
- color: var(--altTextColor);
239
- }
240
-
241
- #wayfarer {
242
- background-color: var(--bgColor);
243
- }
244
-
245
- /* tamago watch styles */
246
- .watch {
247
- width: var(--game-size);
248
- min-height: 100;
249
- image-rendering: pixelated;
250
- position: relative;
251
- }
252
-
253
- .watch * {
254
- image-rendering: pixelated;
255
- }
256
-
257
- .cartridge {
258
- position: absolute;
259
- left: 5%;
260
- top: 30%;
261
- background-image: url("/img/cartridge.png");
262
- background-size: cover;
263
- transition: ease-out .15s;
264
- z-index: 0;
265
- width: 90%;
266
- height: 90%;
267
- }
268
-
269
- .cartridge:hover {
270
- top: 40%;
271
- }
272
-
273
- .name {
274
- background-color: #70917600;
275
- position: absolute;
276
- top: 73%;
277
- left: 32%;
278
- width: 280px;
279
- height: 80px;
280
- transform: rotate(29deg);
281
- text-align: center;
282
- font-size: 50px;
283
- border: none;
284
- cursor: pointer;
285
- }
286
-
287
- .console {
288
- width: 100%;
289
- }
290
-
291
- .screen {
292
- position: absolute;
293
- top: 6%;
294
- left: 6.25%;
295
- width: 87.5%;
296
- height: 55%;
297
- display: initial;
298
- }
299
-
300
- .bloom {
301
- box-shadow: 0px 0px 10px #fff6d759, inset 0px 0px 10px #fff6d759;
302
- }
303
-
304
- .pet {
305
- position: absolute;
306
- top: 0%;
307
- left: 10%;
308
- width: 25%;
309
- display: none;
310
- }
311
-
312
- #p1 {
313
- top: auto;
314
- bottom: 10%;
315
- left: 40%;
316
- }
317
-
318
- #p2 {
319
- top: 0%;
320
- left: auto;
321
- right: 10%;
322
- }
323
-
324
- .food {
325
- position: absolute;
326
- right: 0;
327
- bottom: 20%;
328
- width: 25%;
329
- display: none;
330
- }
331
-
332
- .music {
333
- position: absolute;
334
- bottom: 20%;
335
- left: 2%;
336
- width: 25%;
337
- display: none;
338
- }
339
-
340
- .detached-right {
341
- float: right;
342
- }
343
-
344
- .dark {
345
- filter: brightness(.5);
346
- }
347
-
348
- .hud {
349
- position: absolute;
350
- bottom: 5%;
351
- left: 5%;
352
- width: 90%;
353
- height: 32%;
354
- }
355
-
356
- .clock-hand {
357
- position: absolute;
358
- top: 12.5%;
359
- left: 4.10%;
360
- height: 80%;
361
- width: 25%;
362
- }
363
-
364
- .status {
365
- position: absolute;
366
- top: 10%;
367
- right: 27.75%;
368
- height: 16%;
369
- width: 29%;
370
- display: grid;
371
- grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
372
- grid-template-rows: 1fr;
373
- }
374
-
375
- #s1 {
376
- top: 45%;
377
- }
378
-
379
- #s2 {
380
- top: 78%;
381
- }
382
-
383
- .point {
384
- border: 1px solid var(--dark);
385
- background-color: var(--yellow);
386
- display: none;
387
- }
388
-
389
- .button {
390
- background-color: rgba(0, 0, 0, 0);
391
- background-image: url("/img/button_brown.png");
392
- background-size: 100%;
393
- background-repeat: no-repeat;
394
- cursor: pointer;
395
- border: none;
396
- position: absolute;
397
- top: 6%;
398
- right: 5%;
399
- height: 25%;
400
- width: 20%;
401
- }
402
-
403
- .button:active {
404
- background-image: url("/img/button_brown_down.png");
405
- }
406
-
407
- #b1 {
408
- background-image: url("/img/button_blue.png");
409
- top: 40%;
410
- }
411
-
412
- #b1:active {
413
- background-image: url("/img/button_blue_down.png");
414
- }
415
-
416
- #b2 {
417
- background-image: url("/img/button_green.png");
418
- top: 75%;
419
- }
420
-
421
- #b2:active {
422
- background-image: url("/img/button_green_down.png");
423
- }
424
-
425
- @media only screen and (max-width: 900px) {
426
- .portrait {
427
- width: 100%;
428
- height: 100vh;
429
- }
430
-
431
- header h2 {
432
- left: 35px;
433
- font-size: 30px;
434
- top: 65%;
435
- }
436
-
437
- header h3 {
438
- left: 35px;
439
- font-size: 25px;
440
- top: calc(65% + 50px);
441
- }
442
-
443
- .external-links {
444
- left: 35px;
445
- font-size: 30px;
446
- top: calc(65% + 95px);
447
- height: 45px;
448
- width: 75px;
449
- }
450
-
451
- section {
452
- flex-wrap: wrap;
453
- padding: 40px 10px;
454
- }
455
-
456
- #cpd, #won-ventures {
457
- flex-direction: row;
458
- }
459
-
460
- .text, section img, section iframe {
461
- width: 100%;
462
- padding: 5px;
463
- }
464
-
465
- .watch {
466
- width: 100%;
467
- }
468
- }
package/test.js DELETED
@@ -1 +0,0 @@
1
- require("./test/test-index");