sdy
Showing 116 changed files with 4016 additions and 87 deletions
1 +*.xlsx
2 +.env
...\ No newline at end of file ...\ No newline at end of file
1 +# Capstone design
2 +
3 +1st semester capstone design project
4 +
5 +Subject : Making website in order to practice latest web technologies
6 +
7 +sub-subject : making chat site using JS
8 +
9 +# Schedule
10 +
11 +- 4/6 ~ 4/12
12 +- [x] Set development environment
13 +
14 + (tech : react.js, react hooks, styled-components, GraphQL, Prisma, Apollo, AWS, Docker)
15 +
16 +- 4/13 ~ 4/19
17 +- [x] login, sign up (using JWT, sendGrid), Create Docker-compose
18 +
19 +- 4/20 ~ 4/26
20 +- [ ] Find ID, PW
21 +
22 +- 4/27 ~ 5/3
23 +- [ ] Make chat room (using GraphQL's subscription)
24 +
25 +- 5/4 ~ 5/10
26 +- [ ] Mid-term exam, Debugging
27 +
28 +- 5/11 ~ 5/17
29 +- [ ] Plan chat category and make code
30 +
31 +- 5/18 ~ 5/24
32 +- [ ] Debugging for code created in 6th week's plan
33 +
34 +- 5/25 ~ 5/31
35 +- [ ] Plan a matching strategy for random chat
36 +
37 +- 6/1 ~ 6/7
38 +- [ ] Make a code based on the matching plan created in 8th week's plan
39 +
40 +- 6/8 ~ 6/14
41 +- [ ] Debugging for whole codes in our project
42 +
43 +- 6/15 ~ 6/21
44 +- [ ] Deploy project in AWS amplify
45 +
46 +- 6/22 ~ 6/26
47 +- [ ] Final exam, review project
1 +{
2 + "presets": ["@babel/preset-env"]
3 +}
1 +node_modules
...\ No newline at end of file ...\ No newline at end of file
1 +# node_modules
2 +node_modules
3 +
4 +.env
5 +
6 +note.txt
7 +linux.txt
...\ No newline at end of file ...\ No newline at end of file
1 +FROM node:12.16.2
2 +RUN npm i -g @prisma/cli
3 +
4 +RUN mkdir /app
5 +WORKDIR /app
6 +
7 +COPY package*.json ./
8 +COPY prisma ./prisma/
9 +
10 +RUN npm install && npx prisma generate
11 +
12 +CMD ["npm","start"]
13 +
14 +COPY . .
...\ No newline at end of file ...\ No newline at end of file
1 +# Capstone design
2 +
3 +1st semester capstone design project
4 +
5 +Subject : Making website in order to practice latest web technologies
6 +
7 +sub-subject : making chat site using JS
8 +
9 +# Schedule
10 +
11 +- 4/6 ~ 4/12
12 +- [x] Set development environment
13 +
14 + (tech : react.js, react hooks, styled-components, GraphQL, Prisma, Apollo, AWS, Docker)
15 +
16 +- 4/13 ~ 4/19
17 +- [x] login, sign up (using JWT, sendGrid), Create Docker-compose
18 +
19 +- 4/20 ~ 4/26
20 +- [ ] Find ID, PW
21 +
22 +- 4/27 ~ 5/3
23 +- [ ] Make chat room (using GraphQL's subscription)
24 +
25 +- 5/4 ~ 5/10
26 +- [ ] Mid-term exam, Debugging
27 +
28 +- 5/11 ~ 5/17
29 +- [ ] Plan chat category and make code
30 +
31 +- 5/18 ~ 5/24
32 +- [ ] Debugging for code created in 6th week's plan
33 +
34 +- 5/25 ~ 5/31
35 +- [ ] Plan a matching strategy for random chat
36 +
37 +- 6/1 ~ 6/7
38 +- [ ] Make a code based on the matching plan created in 8th week's plan
39 +
40 +- 6/8 ~ 6/14
41 +- [ ] Debugging for whole codes in our project
42 +
43 +- 6/15 ~ 6/21
44 +- [ ] Deploy project in AWS amplify
45 +
46 +- 6/22 ~ 6/26
47 +- [ ] Final exam, review project
1 +{
2 + "ext": "js graphql"
3 +}
This diff could not be displayed because it is too large.
1 +{
2 + "name": "capstone-back",
3 + "version": "1.0.0",
4 + "description": "1st semester capstone design project",
5 + "scripts": {
6 + "start": "nodemon --exec babel-node src/server.js",
7 + "prisma": "prisma2 studio --experimental"
8 + },
9 + "repository": {
10 + "type": "git",
11 + "url": "git+https://vel1024@bitbucket.org/vel1024/capstone2.git"
12 + },
13 + "author": "sdy, kms",
14 + "license": "ISC",
15 + "homepage": "https://bitbucket.org/vel1024/capstone2#readme",
16 + "dependencies": {
17 + "@prisma/client": "^2.0.0-beta.2",
18 + "bcryptjs": "^2.4.3",
19 + "dotenv": "^8.2.0",
20 + "graphql-tools": "^4.0.7",
21 + "graphql-yoga": "^1.18.3",
22 + "jsonwebtoken": "^8.5.1",
23 + "merge-graphql-schemas": "^1.7.7",
24 + "nodemailer": "^6.4.6",
25 + "nodemailer-sendgrid-transport": "^0.2.0",
26 + "twilio": "^3.42.2"
27 + },
28 + "devDependencies": {
29 + "@babel/core": "^7.9.0",
30 + "@babel/node": "^7.8.7",
31 + "@babel/preset-env": "^7.9.0",
32 + "@prisma/cli": "^2.0.0-beta.2",
33 + "morgan": "^1.10.0",
34 + "nodemon": "^2.0.2"
35 + }
36 +}
1 +FROM node:12.16.2
2 +RUN npm i -g @prisma/cli
3 +
4 +RUN mkdir /app
5 +WORKDIR /app
6 +
7 +COPY ./ ./prisma/
8 +
9 +CMD ["prisma", "studio", "--experimental"]
...\ No newline at end of file ...\ No newline at end of file
1 +# Migration `20200419160117-init`
2 +
3 +This migration has been generated by sdy at 4/19/2020, 4:01:17 PM.
4 +You can check out the [state of the schema](./schema.prisma) after the migration.
5 +
6 +## Database Steps
7 +
8 +```sql
9 +CREATE TABLE `chat_schema`.`User` (
10 + `avatarUrl` varchar(191) ,
11 + `bio` varchar(191) ,
12 + `createdAt` datetime DEFAULT CURRENT_TIMESTAMP ,
13 + `email` varchar(191) NOT NULL ,
14 + `id` int NOT NULL AUTO_INCREMENT,
15 + `loginSecret` varchar(191) ,
16 + `name` varchar(191) NOT NULL ,
17 + `password` varchar(191) NOT NULL ,
18 + PRIMARY KEY (`id`)
19 +)
20 +DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
21 +
22 +CREATE TABLE `chat_schema`.`Room` (
23 + `id` int NOT NULL AUTO_INCREMENT,
24 + PRIMARY KEY (`id`)
25 +)
26 +DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
27 +
28 +CREATE TABLE `chat_schema`.`Category` (
29 + `id` int NOT NULL AUTO_INCREMENT,
30 + `name` varchar(191) DEFAULT '' ,
31 + PRIMARY KEY (`id`)
32 +)
33 +DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
34 +
35 +CREATE TABLE `chat_schema`.`Message` (
36 + `id` int NOT NULL AUTO_INCREMENT,
37 + `senderId` int NOT NULL ,
38 + `text` varchar(191) DEFAULT '' ,
39 + PRIMARY KEY (`id`)
40 +)
41 +DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
42 +
43 +CREATE TABLE `chat_schema`.`_RoomToUser` (
44 + `A` int NOT NULL ,
45 + `B` int NOT NULL
46 +)
47 +DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
48 +
49 +CREATE TABLE `chat_schema`.`_CategoryToRoom` (
50 + `A` int NOT NULL ,
51 + `B` int NOT NULL
52 +)
53 +DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
54 +
55 +CREATE UNIQUE INDEX `User.email` ON `chat_schema`.`User`(`email`)
56 +
57 +CREATE UNIQUE INDEX `_RoomToUser_AB_unique` ON `chat_schema`.`_RoomToUser`(`A`,`B`)
58 +
59 +CREATE INDEX `_RoomToUser_B_index` ON `chat_schema`.`_RoomToUser`(`B`)
60 +
61 +CREATE UNIQUE INDEX `_CategoryToRoom_AB_unique` ON `chat_schema`.`_CategoryToRoom`(`A`,`B`)
62 +
63 +CREATE INDEX `_CategoryToRoom_B_index` ON `chat_schema`.`_CategoryToRoom`(`B`)
64 +
65 +ALTER TABLE `chat_schema`.`Message` ADD FOREIGN KEY (`senderId`) REFERENCES `chat_schema`.`User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
66 +
67 +ALTER TABLE `chat_schema`.`_RoomToUser` ADD FOREIGN KEY (`A`) REFERENCES `chat_schema`.`Room`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
68 +
69 +ALTER TABLE `chat_schema`.`_RoomToUser` ADD FOREIGN KEY (`B`) REFERENCES `chat_schema`.`User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
70 +
71 +ALTER TABLE `chat_schema`.`_CategoryToRoom` ADD FOREIGN KEY (`A`) REFERENCES `chat_schema`.`Category`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
72 +
73 +ALTER TABLE `chat_schema`.`_CategoryToRoom` ADD FOREIGN KEY (`B`) REFERENCES `chat_schema`.`Room`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
74 +
75 +DROP TABLE `chat_schema`.`_migration`;
76 +
77 +DROP TABLE `chat_schema`.`test`;
78 +```
79 +
80 +## Changes
81 +
82 +```diff
83 +diff --git schema.prisma schema.prisma
84 +migration ..20200419160117-init
85 +--- datamodel.dml
86 ++++ datamodel.dml
87 +@@ -1,0 +1,41 @@
88 ++generator client {
89 ++ provider = "prisma-client-js"
90 ++ binaryTargets = ["native", "debian-openssl-1.1.x"]
91 ++}
92 ++
93 ++datasource db {
94 ++ provider = "mysql"
95 ++ url = env("DATABASE_URL")
96 ++}
97 ++
98 ++model User {
99 ++ id Int @default(autoincrement()) @id
100 ++ avatarUrl String?
101 ++ email String @unique
102 ++ password String
103 ++ name String
104 ++ loginSecret String?
105 ++ bio String?
106 ++ rooms Room[] @relation(references: [id])
107 ++ messages Message[]
108 ++ createdAt DateTime? @default(now())
109 ++}
110 ++
111 ++model Room {
112 ++ id Int @default(autoincrement()) @id
113 ++ participants User[] @relation(references: [id])
114 ++ categories Category[] @relation(references: [id])
115 ++}
116 ++
117 ++model Category {
118 ++ id Int @default(autoincrement()) @id
119 ++ name String? @default("")
120 ++ rooms Room[] @relation(references: [id])
121 ++}
122 ++
123 ++model Message {
124 ++ id Int @default(autoincrement()) @id
125 ++ text String? @default("")
126 ++ sender User @relation(fields: [senderId], references: [id])
127 ++ senderId Int
128 ++}
129 +```
130 +
131 +
1 +generator client {
2 + provider = "prisma-client-js"
3 + binaryTargets = ["native", "debian-openssl-1.1.x"]
4 +}
5 +
6 +datasource db {
7 + provider = "mysql"
8 + url = "***"
9 +}
10 +
11 +model User {
12 + id Int @default(autoincrement()) @id
13 + avatarUrl String?
14 + email String @unique
15 + password String
16 + name String
17 + loginSecret String?
18 + bio String?
19 + rooms Room[] @relation(references: [id])
20 + messages Message[]
21 + createdAt DateTime? @default(now())
22 +}
23 +
24 +model Room {
25 + id Int @default(autoincrement()) @id
26 + participants User[] @relation(references: [id])
27 + categories Category[] @relation(references: [id])
28 +}
29 +
30 +model Category {
31 + id Int @default(autoincrement()) @id
32 + name String? @default("")
33 + rooms Room[] @relation(references: [id])
34 +}
35 +
36 +model Message {
37 + id Int @default(autoincrement()) @id
38 + text String? @default("")
39 + sender User @relation(fields: [senderId], references: [id])
40 + senderId Int
41 +}
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "version": "0.3.14-fixed",
3 + "steps": [
4 + {
5 + "tag": "CreateSource",
6 + "source": "db"
7 + },
8 + {
9 + "tag": "CreateArgument",
10 + "location": {
11 + "tag": "Source",
12 + "source": "db"
13 + },
14 + "argument": "provider",
15 + "value": "\"mysql\""
16 + },
17 + {
18 + "tag": "CreateArgument",
19 + "location": {
20 + "tag": "Source",
21 + "source": "db"
22 + },
23 + "argument": "url",
24 + "value": "env(\"DATABASE_URL\")"
25 + },
26 + {
27 + "tag": "CreateModel",
28 + "model": "User"
29 + },
30 + {
31 + "tag": "CreateField",
32 + "model": "User",
33 + "field": "id",
34 + "type": "Int",
35 + "arity": "Required"
36 + },
37 + {
38 + "tag": "CreateDirective",
39 + "location": {
40 + "path": {
41 + "tag": "Field",
42 + "model": "User",
43 + "field": "id"
44 + },
45 + "directive": "default"
46 + }
47 + },
48 + {
49 + "tag": "CreateArgument",
50 + "location": {
51 + "tag": "Directive",
52 + "path": {
53 + "tag": "Field",
54 + "model": "User",
55 + "field": "id"
56 + },
57 + "directive": "default"
58 + },
59 + "argument": "",
60 + "value": "autoincrement()"
61 + },
62 + {
63 + "tag": "CreateDirective",
64 + "location": {
65 + "path": {
66 + "tag": "Field",
67 + "model": "User",
68 + "field": "id"
69 + },
70 + "directive": "id"
71 + }
72 + },
73 + {
74 + "tag": "CreateField",
75 + "model": "User",
76 + "field": "avatarUrl",
77 + "type": "String",
78 + "arity": "Optional"
79 + },
80 + {
81 + "tag": "CreateField",
82 + "model": "User",
83 + "field": "email",
84 + "type": "String",
85 + "arity": "Required"
86 + },
87 + {
88 + "tag": "CreateDirective",
89 + "location": {
90 + "path": {
91 + "tag": "Field",
92 + "model": "User",
93 + "field": "email"
94 + },
95 + "directive": "unique"
96 + }
97 + },
98 + {
99 + "tag": "CreateField",
100 + "model": "User",
101 + "field": "password",
102 + "type": "String",
103 + "arity": "Required"
104 + },
105 + {
106 + "tag": "CreateField",
107 + "model": "User",
108 + "field": "name",
109 + "type": "String",
110 + "arity": "Required"
111 + },
112 + {
113 + "tag": "CreateField",
114 + "model": "User",
115 + "field": "loginSecret",
116 + "type": "String",
117 + "arity": "Optional"
118 + },
119 + {
120 + "tag": "CreateField",
121 + "model": "User",
122 + "field": "bio",
123 + "type": "String",
124 + "arity": "Optional"
125 + },
126 + {
127 + "tag": "CreateField",
128 + "model": "User",
129 + "field": "rooms",
130 + "type": "Room",
131 + "arity": "List"
132 + },
133 + {
134 + "tag": "CreateDirective",
135 + "location": {
136 + "path": {
137 + "tag": "Field",
138 + "model": "User",
139 + "field": "rooms"
140 + },
141 + "directive": "relation"
142 + }
143 + },
144 + {
145 + "tag": "CreateArgument",
146 + "location": {
147 + "tag": "Directive",
148 + "path": {
149 + "tag": "Field",
150 + "model": "User",
151 + "field": "rooms"
152 + },
153 + "directive": "relation"
154 + },
155 + "argument": "references",
156 + "value": "[id]"
157 + },
158 + {
159 + "tag": "CreateField",
160 + "model": "User",
161 + "field": "messages",
162 + "type": "Message",
163 + "arity": "List"
164 + },
165 + {
166 + "tag": "CreateField",
167 + "model": "User",
168 + "field": "createdAt",
169 + "type": "DateTime",
170 + "arity": "Optional"
171 + },
172 + {
173 + "tag": "CreateDirective",
174 + "location": {
175 + "path": {
176 + "tag": "Field",
177 + "model": "User",
178 + "field": "createdAt"
179 + },
180 + "directive": "default"
181 + }
182 + },
183 + {
184 + "tag": "CreateArgument",
185 + "location": {
186 + "tag": "Directive",
187 + "path": {
188 + "tag": "Field",
189 + "model": "User",
190 + "field": "createdAt"
191 + },
192 + "directive": "default"
193 + },
194 + "argument": "",
195 + "value": "now()"
196 + },
197 + {
198 + "tag": "CreateModel",
199 + "model": "Room"
200 + },
201 + {
202 + "tag": "CreateField",
203 + "model": "Room",
204 + "field": "id",
205 + "type": "Int",
206 + "arity": "Required"
207 + },
208 + {
209 + "tag": "CreateDirective",
210 + "location": {
211 + "path": {
212 + "tag": "Field",
213 + "model": "Room",
214 + "field": "id"
215 + },
216 + "directive": "default"
217 + }
218 + },
219 + {
220 + "tag": "CreateArgument",
221 + "location": {
222 + "tag": "Directive",
223 + "path": {
224 + "tag": "Field",
225 + "model": "Room",
226 + "field": "id"
227 + },
228 + "directive": "default"
229 + },
230 + "argument": "",
231 + "value": "autoincrement()"
232 + },
233 + {
234 + "tag": "CreateDirective",
235 + "location": {
236 + "path": {
237 + "tag": "Field",
238 + "model": "Room",
239 + "field": "id"
240 + },
241 + "directive": "id"
242 + }
243 + },
244 + {
245 + "tag": "CreateField",
246 + "model": "Room",
247 + "field": "participants",
248 + "type": "User",
249 + "arity": "List"
250 + },
251 + {
252 + "tag": "CreateDirective",
253 + "location": {
254 + "path": {
255 + "tag": "Field",
256 + "model": "Room",
257 + "field": "participants"
258 + },
259 + "directive": "relation"
260 + }
261 + },
262 + {
263 + "tag": "CreateArgument",
264 + "location": {
265 + "tag": "Directive",
266 + "path": {
267 + "tag": "Field",
268 + "model": "Room",
269 + "field": "participants"
270 + },
271 + "directive": "relation"
272 + },
273 + "argument": "references",
274 + "value": "[id]"
275 + },
276 + {
277 + "tag": "CreateField",
278 + "model": "Room",
279 + "field": "categories",
280 + "type": "Category",
281 + "arity": "List"
282 + },
283 + {
284 + "tag": "CreateDirective",
285 + "location": {
286 + "path": {
287 + "tag": "Field",
288 + "model": "Room",
289 + "field": "categories"
290 + },
291 + "directive": "relation"
292 + }
293 + },
294 + {
295 + "tag": "CreateArgument",
296 + "location": {
297 + "tag": "Directive",
298 + "path": {
299 + "tag": "Field",
300 + "model": "Room",
301 + "field": "categories"
302 + },
303 + "directive": "relation"
304 + },
305 + "argument": "references",
306 + "value": "[id]"
307 + },
308 + {
309 + "tag": "CreateModel",
310 + "model": "Category"
311 + },
312 + {
313 + "tag": "CreateField",
314 + "model": "Category",
315 + "field": "id",
316 + "type": "Int",
317 + "arity": "Required"
318 + },
319 + {
320 + "tag": "CreateDirective",
321 + "location": {
322 + "path": {
323 + "tag": "Field",
324 + "model": "Category",
325 + "field": "id"
326 + },
327 + "directive": "default"
328 + }
329 + },
330 + {
331 + "tag": "CreateArgument",
332 + "location": {
333 + "tag": "Directive",
334 + "path": {
335 + "tag": "Field",
336 + "model": "Category",
337 + "field": "id"
338 + },
339 + "directive": "default"
340 + },
341 + "argument": "",
342 + "value": "autoincrement()"
343 + },
344 + {
345 + "tag": "CreateDirective",
346 + "location": {
347 + "path": {
348 + "tag": "Field",
349 + "model": "Category",
350 + "field": "id"
351 + },
352 + "directive": "id"
353 + }
354 + },
355 + {
356 + "tag": "CreateField",
357 + "model": "Category",
358 + "field": "name",
359 + "type": "String",
360 + "arity": "Optional"
361 + },
362 + {
363 + "tag": "CreateDirective",
364 + "location": {
365 + "path": {
366 + "tag": "Field",
367 + "model": "Category",
368 + "field": "name"
369 + },
370 + "directive": "default"
371 + }
372 + },
373 + {
374 + "tag": "CreateArgument",
375 + "location": {
376 + "tag": "Directive",
377 + "path": {
378 + "tag": "Field",
379 + "model": "Category",
380 + "field": "name"
381 + },
382 + "directive": "default"
383 + },
384 + "argument": "",
385 + "value": "\"\""
386 + },
387 + {
388 + "tag": "CreateField",
389 + "model": "Category",
390 + "field": "rooms",
391 + "type": "Room",
392 + "arity": "List"
393 + },
394 + {
395 + "tag": "CreateDirective",
396 + "location": {
397 + "path": {
398 + "tag": "Field",
399 + "model": "Category",
400 + "field": "rooms"
401 + },
402 + "directive": "relation"
403 + }
404 + },
405 + {
406 + "tag": "CreateArgument",
407 + "location": {
408 + "tag": "Directive",
409 + "path": {
410 + "tag": "Field",
411 + "model": "Category",
412 + "field": "rooms"
413 + },
414 + "directive": "relation"
415 + },
416 + "argument": "references",
417 + "value": "[id]"
418 + },
419 + {
420 + "tag": "CreateModel",
421 + "model": "Message"
422 + },
423 + {
424 + "tag": "CreateField",
425 + "model": "Message",
426 + "field": "id",
427 + "type": "Int",
428 + "arity": "Required"
429 + },
430 + {
431 + "tag": "CreateDirective",
432 + "location": {
433 + "path": {
434 + "tag": "Field",
435 + "model": "Message",
436 + "field": "id"
437 + },
438 + "directive": "default"
439 + }
440 + },
441 + {
442 + "tag": "CreateArgument",
443 + "location": {
444 + "tag": "Directive",
445 + "path": {
446 + "tag": "Field",
447 + "model": "Message",
448 + "field": "id"
449 + },
450 + "directive": "default"
451 + },
452 + "argument": "",
453 + "value": "autoincrement()"
454 + },
455 + {
456 + "tag": "CreateDirective",
457 + "location": {
458 + "path": {
459 + "tag": "Field",
460 + "model": "Message",
461 + "field": "id"
462 + },
463 + "directive": "id"
464 + }
465 + },
466 + {
467 + "tag": "CreateField",
468 + "model": "Message",
469 + "field": "text",
470 + "type": "String",
471 + "arity": "Optional"
472 + },
473 + {
474 + "tag": "CreateDirective",
475 + "location": {
476 + "path": {
477 + "tag": "Field",
478 + "model": "Message",
479 + "field": "text"
480 + },
481 + "directive": "default"
482 + }
483 + },
484 + {
485 + "tag": "CreateArgument",
486 + "location": {
487 + "tag": "Directive",
488 + "path": {
489 + "tag": "Field",
490 + "model": "Message",
491 + "field": "text"
492 + },
493 + "directive": "default"
494 + },
495 + "argument": "",
496 + "value": "\"\""
497 + },
498 + {
499 + "tag": "CreateField",
500 + "model": "Message",
501 + "field": "sender",
502 + "type": "User",
503 + "arity": "Required"
504 + },
505 + {
506 + "tag": "CreateDirective",
507 + "location": {
508 + "path": {
509 + "tag": "Field",
510 + "model": "Message",
511 + "field": "sender"
512 + },
513 + "directive": "relation"
514 + }
515 + },
516 + {
517 + "tag": "CreateArgument",
518 + "location": {
519 + "tag": "Directive",
520 + "path": {
521 + "tag": "Field",
522 + "model": "Message",
523 + "field": "sender"
524 + },
525 + "directive": "relation"
526 + },
527 + "argument": "fields",
528 + "value": "[senderId]"
529 + },
530 + {
531 + "tag": "CreateArgument",
532 + "location": {
533 + "tag": "Directive",
534 + "path": {
535 + "tag": "Field",
536 + "model": "Message",
537 + "field": "sender"
538 + },
539 + "directive": "relation"
540 + },
541 + "argument": "references",
542 + "value": "[id]"
543 + },
544 + {
545 + "tag": "CreateField",
546 + "model": "Message",
547 + "field": "senderId",
548 + "type": "Int",
549 + "arity": "Required"
550 + }
551 + ]
552 +}
...\ No newline at end of file ...\ No newline at end of file
1 +# Migration `20200424124259-init`
2 +
3 +This migration has been generated by sdy at 4/24/2020, 12:42:59 PM.
4 +You can check out the [state of the schema](./schema.prisma) after the migration.
5 +
6 +## Database Steps
7 +
8 +```sql
9 +CREATE TABLE `chat_schema`.`User` (
10 + `avatarUrl` varchar(191) ,
11 + `bio` varchar(191) ,
12 + `createdAt` datetime DEFAULT CURRENT_TIMESTAMP ,
13 + `email` varchar(191) NOT NULL ,
14 + `emailSecret` varchar(191) ,
15 + `id` int NOT NULL AUTO_INCREMENT,
16 + `name` varchar(191) NOT NULL ,
17 + `password` varchar(191) NOT NULL ,
18 + `phoneNumber` int ,
19 + `phoneSecret` varchar(191) ,
20 + PRIMARY KEY (`id`)
21 +)
22 +DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
23 +
24 +CREATE TABLE `chat_schema`.`Room` (
25 + `id` int NOT NULL AUTO_INCREMENT,
26 + PRIMARY KEY (`id`)
27 +)
28 +DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
29 +
30 +CREATE TABLE `chat_schema`.`Category` (
31 + `id` int NOT NULL AUTO_INCREMENT,
32 + `name` varchar(191) DEFAULT '' ,
33 + PRIMARY KEY (`id`)
34 +)
35 +DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
36 +
37 +CREATE TABLE `chat_schema`.`Message` (
38 + `id` int NOT NULL AUTO_INCREMENT,
39 + `senderId` int NOT NULL ,
40 + `text` varchar(191) DEFAULT '' ,
41 + PRIMARY KEY (`id`)
42 +)
43 +DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
44 +
45 +CREATE TABLE `chat_schema`.`_RoomToUser` (
46 + `A` int NOT NULL ,
47 + `B` int NOT NULL
48 +)
49 +DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
50 +
51 +CREATE TABLE `chat_schema`.`_CategoryToRoom` (
52 + `A` int NOT NULL ,
53 + `B` int NOT NULL
54 +)
55 +DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
56 +
57 +CREATE UNIQUE INDEX `User.email` ON `chat_schema`.`User`(`email`)
58 +
59 +CREATE UNIQUE INDEX `_RoomToUser_AB_unique` ON `chat_schema`.`_RoomToUser`(`A`,`B`)
60 +
61 +CREATE INDEX `_RoomToUser_B_index` ON `chat_schema`.`_RoomToUser`(`B`)
62 +
63 +CREATE UNIQUE INDEX `_CategoryToRoom_AB_unique` ON `chat_schema`.`_CategoryToRoom`(`A`,`B`)
64 +
65 +CREATE INDEX `_CategoryToRoom_B_index` ON `chat_schema`.`_CategoryToRoom`(`B`)
66 +
67 +ALTER TABLE `chat_schema`.`Message` ADD FOREIGN KEY (`senderId`) REFERENCES `chat_schema`.`User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
68 +
69 +ALTER TABLE `chat_schema`.`_RoomToUser` ADD FOREIGN KEY (`A`) REFERENCES `chat_schema`.`Room`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
70 +
71 +ALTER TABLE `chat_schema`.`_RoomToUser` ADD FOREIGN KEY (`B`) REFERENCES `chat_schema`.`User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
72 +
73 +ALTER TABLE `chat_schema`.`_CategoryToRoom` ADD FOREIGN KEY (`A`) REFERENCES `chat_schema`.`Category`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
74 +
75 +ALTER TABLE `chat_schema`.`_CategoryToRoom` ADD FOREIGN KEY (`B`) REFERENCES `chat_schema`.`Room`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
76 +
77 +DROP TABLE `chat_schema`.`_categorytoroom`;
78 +
79 +DROP TABLE `chat_schema`.`_migration`;
80 +
81 +DROP TABLE `chat_schema`.`_roomtouser`;
82 +
83 +DROP TABLE `chat_schema`.`category`;
84 +
85 +DROP TABLE `chat_schema`.`message`;
86 +
87 +DROP TABLE `chat_schema`.`room`;
88 +
89 +DROP TABLE `chat_schema`.`test`;
90 +
91 +DROP TABLE `chat_schema`.`user`;
92 +```
93 +
94 +## Changes
95 +
96 +```diff
97 +diff --git schema.prisma schema.prisma
98 +migration 20200419160117-init..20200424124259-init
99 +--- datamodel.dml
100 ++++ datamodel.dml
101 +@@ -4,18 +4,20 @@
102 + }
103 + datasource db {
104 + provider = "mysql"
105 +- url = "***"
106 ++ url = env("DATABASE_URL")
107 + }
108 + model User {
109 + id Int @default(autoincrement()) @id
110 + avatarUrl String?
111 + email String @unique
112 + password String
113 + name String
114 +- loginSecret String?
115 ++ phoneNumber Int?
116 ++ emailSecret String?
117 ++ phoneSecret String?
118 + bio String?
119 + rooms Room[] @relation(references: [id])
120 + messages Message[]
121 + createdAt DateTime? @default(now())
122 +```
123 +
124 +
1 +generator client {
2 + provider = "prisma-client-js"
3 + binaryTargets = ["native", "debian-openssl-1.1.x"]
4 +}
5 +
6 +datasource db {
7 + provider = "mysql"
8 + url = "***"
9 +}
10 +
11 +model User {
12 + id Int @default(autoincrement()) @id
13 + avatarUrl String?
14 + email String @unique
15 + password String
16 + name String
17 + phoneNumber Int?
18 + emailSecret String?
19 + phoneSecret String?
20 + bio String?
21 + rooms Room[] @relation(references: [id])
22 + messages Message[]
23 + createdAt DateTime? @default(now())
24 +}
25 +
26 +model Room {
27 + id Int @default(autoincrement()) @id
28 + participants User[] @relation(references: [id])
29 + categories Category[] @relation(references: [id])
30 +}
31 +
32 +model Category {
33 + id Int @default(autoincrement()) @id
34 + name String? @default("")
35 + rooms Room[] @relation(references: [id])
36 +}
37 +
38 +model Message {
39 + id Int @default(autoincrement()) @id
40 + text String? @default("")
41 + sender User @relation(fields: [senderId], references: [id])
42 + senderId Int
43 +}
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "version": "0.3.14-fixed",
3 + "steps": [
4 + {
5 + "tag": "CreateField",
6 + "model": "User",
7 + "field": "phoneNumber",
8 + "type": "Int",
9 + "arity": "Optional"
10 + },
11 + {
12 + "tag": "CreateField",
13 + "model": "User",
14 + "field": "emailSecret",
15 + "type": "String",
16 + "arity": "Optional"
17 + },
18 + {
19 + "tag": "CreateField",
20 + "model": "User",
21 + "field": "phoneSecret",
22 + "type": "String",
23 + "arity": "Optional"
24 + },
25 + {
26 + "tag": "DeleteField",
27 + "model": "User",
28 + "field": "loginSecret"
29 + }
30 + ]
31 +}
...\ No newline at end of file ...\ No newline at end of file
1 +# IF THERE'S A GIT CONFLICT IN THIS FILE, DON'T SOLVE IT MANUALLY!
2 +# INSTEAD EXECUTE `prisma migrate fix`
3 +# Prisma Migrate lockfile v1
4 +# Read more about conflict resolution here: TODO
5 +
6 +20200419160117-init
7 +20200424124259-init
...\ No newline at end of file ...\ No newline at end of file
1 +generator client {
2 + provider = "prisma-client-js"
3 + binaryTargets = ["native", "debian-openssl-1.1.x"]
4 +}
5 +
6 +datasource db {
7 + provider = "mysql"
8 + url = env("DATABASE_URL")
9 +}
10 +
11 +model User {
12 + id Int @default(autoincrement()) @id
13 + avatarUrl String?
14 + email String @unique
15 + password String
16 + name String
17 + phoneNumber String? @unique
18 + emailSecret String?
19 + phoneSecret String?
20 + bio String?
21 + rooms Room[] @relation(references: [id])
22 + messages Message[]
23 + createdAt DateTime? @default(now())
24 +}
25 +
26 +model Room {
27 + id Int @default(autoincrement()) @id
28 + participants User[] @relation(references: [id])
29 + categories Category[] @relation(references: [id])
30 +}
31 +
32 +model Category {
33 + id Int @default(autoincrement()) @id
34 + name String? @default("")
35 + rooms Room[] @relation(references: [id])
36 +}
37 +
38 +model Message {
39 + id Int @default(autoincrement()) @id
40 + text String? @default("")
41 + sender User @relation(fields: [senderId], references: [id])
42 + senderId Int
43 +}
...\ No newline at end of file ...\ No newline at end of file
1 +type Mutation {
2 + addCategory(name: String): Category!
3 +}
1 +import { prisma } from "../../../utils";
2 +
3 +export default {
4 + Mutation: {
5 + addCategory: async (_, args) => {
6 + const { name } = args;
7 + },
8 + },
9 +};
1 +type Mutation {
2 + deleteCategory(id: String!): Boolean!
3 +}
1 +import { prisma } from "../../../utils";
2 +
3 +export default {
4 + Mutation: {
5 + deleteCategory: async (_, args) => {
6 + const { id } = args;
7 + },
8 + },
9 +};
1 +type Mutation {
2 + editCategory(id: String!): Category!
3 +}
1 +import { prisma } from "../../../utils";
2 +
3 +export default {
4 + Mutation: {
5 + editCategory: async (_, args) => {
6 + const { id } = args;
7 + },
8 + },
9 +};
1 +type Subscription {
2 + sendMessage(message: String!): Message!
3 +}
1 +import { prisma } from "../../../utils";
2 +
3 +export default {
4 + Subscription: {
5 + sendMessage: async (_, args) => {
6 + const { message } = args;
7 + },
8 + },
9 +};
1 +type Mutation {
2 + exitRoom(roomId: String!): Boolean!
3 +}
1 +import { prisma } from "../../../utils";
2 +
3 +export default {
4 + Mutation: {
5 + exitRoom: async (_, args) => {
6 + const { roomId } = args;
7 + },
8 + },
9 +};
1 +type Query {
2 + seeRoom(id: String!): Room!
3 +}
1 +import { prisma } from "../../../utils";
2 +
3 +export default {
4 + Query: {
5 + seeRoom: async (_, args) => {
6 + const { id } = args;
7 + },
8 + },
9 +};
1 +type Query {
2 + TestQL(text: String!): String!
3 +}
1 +export default {
2 + Query: {
3 + TestQL: async (_, args) => {
4 + const { text } = args;
5 + return text;
6 + },
7 + },
8 +};
1 +type Mutation {
2 + createAccount(
3 + name: String!
4 + email: String!
5 + password: String!
6 + bio: String
7 + avatarUrl: String
8 + ): AuthPayload!
9 +}
1 +import { prisma, generateToken } from "../../../utils";
2 +import bcrypt from "bcryptjs";
3 +
4 +export default {
5 + Mutation: {
6 + createAccount: async (_, args) => {
7 + const { name, password, email, bio = "", avatarUrl = "" } = args;
8 + const encryptPw = await bcrypt.hash(password, 10);
9 + const user = await prisma.user.create({
10 + data: {
11 + name,
12 + email,
13 + bio,
14 + avatarUrl,
15 + password: encryptPw,
16 + },
17 + });
18 + const token = generateToken(user.id);
19 + return { token, user };
20 + },
21 + },
22 +};
1 +type Mutation {
2 + editProfile(
3 + name: String
4 + email: String
5 + bio: String
6 + avatarUrl: String
7 + ): User!
8 +}
1 +import { prisma } from "../../../utils";
2 +
3 +export default {
4 + Mutation: {
5 + editProfile: async (_, args, { request }) => {},
6 + },
7 +};
1 +type Query {
2 + findEmail(phoneNumber: String!): User!
3 +}
1 +import { prisma, generateSecret } from "../../../utils";
2 +import twilio from "twilio";
3 +
4 +export default {
5 + Query: {
6 + findEmail: async (_, args) => {
7 + const { phoneNumber } = args;
8 + const accountSid = process.env.TWILIO_SID;
9 + const authToken = process.env.TWILIO_AUTH_TOKEN;
10 + const client = new twilio(accountSid, authToken);
11 + const randomWords = generateSecret();
12 + client.messages
13 + .create({
14 + body: `Please enter this word : ${randomWords}`,
15 + to: `${phoneNumber}`,
16 + from: "KhuChat",
17 + })
18 + .then((message) => console.log(message.sid));
19 +
20 + const user = await prisma.user.update({
21 + where: {
22 + phoneNumber,
23 + },
24 + data: {
25 + phoneSecret: randomWords,
26 + },
27 + });
28 + return user;
29 + },
30 + },
31 +};
1 +type Mutation {
2 + login(email: String!, password: String!): AuthPayload
3 +}
1 +import { prisma } from "../../../utils";
2 +import bcrypt from "bcryptjs";
3 +import jwt from "jsonwebtoken";
4 +
5 +export default {
6 + Mutation: {
7 + login: async (_, args) => {
8 + const { email, password } = args;
9 + const user = await prisma.user.findOne({
10 + where: {
11 + email,
12 + },
13 + });
14 + let vaild;
15 + if (user) {
16 + vaild = await bcrypt.compare(password, user.password);
17 + }
18 + if (!user || !vaild) {
19 + throw new Error("Not vaild email or password");
20 + }
21 + const token = jwt.sign({ id: user.id }, process.env.JWT_SECRET);
22 + return { token, user };
23 + },
24 + },
25 +};
1 +type Mutation {
2 + requestEmailSecret(email: String!): Boolean!
3 +}
1 +import { prisma, generateSecret, sendSecretMail } from "../../../utils";
2 +import bcrypt from "bcryptjs";
3 +
4 +export default {
5 + Mutation: {
6 + requestEmailSecret: async (_, args) => {
7 + const { email } = args;
8 + const emailSecret = generateSecret();
9 + const encryptSecret = await bcrypt.hash(emailSecret, 10);
10 + try {
11 + await sendSecretMail(email, emailSecret);
12 + await prisma.user.update({
13 + where: {
14 + email,
15 + },
16 + data: {
17 + emailSecret: encryptSecret,
18 + },
19 + });
20 + return true;
21 + } catch (error) {
22 + console.log(error);
23 + return false;
24 + }
25 + },
26 + },
27 +};
1 +type Mutation {
2 + resetPassword(
3 + secret: String!
4 + email: String!
5 + passwordOne: String!
6 + passwordTwo: String!
7 + ): User!
8 +}
1 +import { prisma } from "../../../utils";
2 +import bcrypt from "bcryptjs";
3 +
4 +export default {
5 + Mutation: {
6 + resetPassword: async (_, args) => {
7 + const { secret, email, passwordOne, passwordTwo } = args;
8 + const user = await prisma.user.findOne({
9 + where: {
10 + email,
11 + },
12 + });
13 + const encryptSecret = await bcrypt.hash(user.emailSecret, 10);
14 + if (encryptSecret !== secret) {
15 + throw new Error(
16 + "not vaild secret value!, input another value or resend email"
17 + );
18 + } else {
19 + if (passwordOne !== passwordTwo) {
20 + // For check new password is right, the two things must be same.
21 + throw new Error("the two password don't match each other, try again");
22 + } else {
23 + await prisma.user.update({
24 + where: {
25 + email,
26 + },
27 + data: {
28 + emailSecret: "",
29 + password: passwordOne,
30 + },
31 + });
32 + }
33 + return user;
34 + }
35 + },
36 + },
37 +};
1 +type Query {
2 + searchUser(name: String!): [User!]!
3 +}
1 +import { prisma } from "../../../utils";
2 +
3 +export default {
4 + Query: {
5 + searchUser: async (_, args) => {
6 + const { name } = args;
7 + const user = await prisma.user.findOne({});
8 + },
9 + },
10 +};
1 +type Query {
2 + seeProfile(id: String!): User!
3 +}
1 +import { prisma } from "../../../utils";
2 +
3 +export default {
4 + Query: {
5 + seeProfile: async (_, args) => {
6 + const { id } = args;
7 + },
8 + },
9 +};
1 +type User {
2 + id: ID!
3 + avatarUrl: String
4 + name: String
5 + email: String!
6 + password: String
7 + phoneNumber: String
8 + emailSecret: String
9 + phoneSecret: String
10 + bio: String
11 + rooms: [Room]
12 + createdAt: String
13 + messages: [Message]
14 +}
15 +
16 +type Room {
17 + id: ID!
18 + participants: [User]
19 + categories: [Category]
20 +}
21 +
22 +type Category {
23 + id: ID!
24 + name: String
25 + rooms: [Room]
26 +}
27 +
28 +type Message {
29 + id: ID!
30 + text: String
31 + sender: User
32 +}
33 +
34 +type AuthPayload {
35 + token: String
36 + user: User
37 +}
1 +import path from "path";
2 +import { makeExecutableSchema } from "graphql-tools";
3 +import { fileLoader, mergeResolvers, mergeTypes } from "merge-graphql-schemas";
4 +
5 +const allTypes = fileLoader(path.join(__dirname, "api/**/*.graphql"));
6 +const allResolvers = fileLoader(path.join(__dirname, "api/**/*.js"));
7 +
8 +const schema = makeExecutableSchema({
9 + typeDefs: mergeTypes(allTypes),
10 + resolvers: mergeResolvers(allResolvers),
11 +});
12 +
13 +export default schema;
1 +import dotenv from "dotenv";
2 +dotenv.config();
3 +import { GraphQLServer } from "graphql-yoga";
4 +import morgan from "morgan";
5 +import schema from "./schema";
6 +import { prisma } from "./utils";
7 +
8 +const PORT = process.env.PORT;
9 +
10 +const server = new GraphQLServer({
11 + schema,
12 + context: (request) => {
13 + return {
14 + ...request,
15 + prisma,
16 + };
17 + },
18 +});
19 +
20 +server.express.use(morgan("dev"));
21 +
22 +server.start(() => console.log(`server is running : http://localhost:${PORT}`));
1 +import { PrismaClient } from "@prisma/client";
2 +import { nouns, adjectives } from "./words";
3 +import jwt from "jsonwebtoken";
4 +import nodemailer from "nodemailer";
5 +import sgTransport from "nodemailer-sendgrid-transport";
6 +
7 +export const prisma = new PrismaClient();
8 +
9 +export const getUserId = (context) => {
10 + const Authorization = context.request.get("Authorization");
11 + if (Authorization) {
12 + const token = Authorization.replace("Bearer ", "");
13 + const { userId } = jwt.verify(token, process.env.JWT_SECRET);
14 + return userId;
15 + }
16 + throw new Error("There is no vaild user");
17 +};
18 +
19 +export const generateSecret = () => {
20 + const randomNumber = Math.floor(Math.random() * adjectives.length);
21 + return `${adjectives[randomNumber]} ${nouns[randomNumber]}`;
22 +};
23 +
24 +const sendEmail = (email) => {
25 + const options = {
26 + auth: {
27 + api_user: process.env.SENDGRID_USERNAME,
28 + api_password: process.env.SENDGRID_PASSWORD,
29 + },
30 + };
31 + const client = nodemailer.createTransport(sgTransport(options));
32 + return client.sendMail(email);
33 +};
34 +
35 +export const sendSecretMail = (address, emailSecret, value) => {
36 + const email = {
37 + from: "vel1024@khu.ac.kr",
38 + to: address,
39 + subject: `Authentication key for forgotten ${value}`,
40 + html: `Hello, This is khuchat, authentication key is <b>${emailSecret}</b>, copy and paste it, Thanks.`,
41 + };
42 + return sendEmail(email);
43 +};
44 +
45 +export const generateToken = (id) => jwt.sign({ id }, process.env.JWT_SECRET);
1 +export const adjectives = [
2 + "languid",
3 + "expensive",
4 + "careful",
5 + "feeble",
6 + "inconclusive",
7 + "damp",
8 + "obscene",
9 + "optimal",
10 + "learned",
11 + "measly",
12 + "silent",
13 + "absurd",
14 + "hypnotic",
15 + "smart",
16 + "horrible",
17 + "deep",
18 + "grotesque",
19 + "rigid",
20 + "sweltering",
21 + "quirky",
22 + "pointless",
23 + "spiffy",
24 + "cheap",
25 + "psychotic",
26 + "possible",
27 + "burly",
28 + "huge",
29 + "tranquil",
30 + "impolite",
31 + "clear",
32 + "groovy",
33 + "royal",
34 + "envious",
35 + "voracious",
36 + "substantial",
37 + "gusty",
38 + "absorbing",
39 + "wealthy",
40 + "fancy",
41 + "ultra",
42 + "giant",
43 + "harmonious",
44 + "nauseating",
45 + "literate",
46 + "friendly",
47 + "panicky",
48 + "utopian",
49 + "happy",
50 + "gaudy",
51 + "direful",
52 + "descriptive",
53 + "better",
54 + "ambiguous",
55 + "momentous",
56 + "obsequious",
57 + "secret",
58 + "clever",
59 + "far",
60 + "temporary",
61 + "unable",
62 + "normal",
63 + "imported",
64 + "three",
65 + "five",
66 + "petite",
67 + "natural",
68 + "early",
69 + "profuse",
70 + "flimsy",
71 + "bustling",
72 + "scrawny",
73 + "present",
74 + "gruesome",
75 + "cut",
76 + "fantastic",
77 + "grandiose",
78 + "second-hand",
79 + "noiseless",
80 + "craven",
81 + "grubby",
82 + "vengeful",
83 + "tiny",
84 + "wiry",
85 + "auspicious",
86 + "dull",
87 + "quiet",
88 + "terrific",
89 + "furry",
90 + "crooked",
91 + "wholesale",
92 + "panoramic",
93 + "forgetful",
94 + "gamy",
95 + "victorious",
96 + "special",
97 + "neighborly",
98 + "useful",
99 + "chubby",
100 + "probable",
101 + "abnormal",
102 +];
103 +
104 +export const nouns = [
105 + "rat",
106 + "start",
107 + "icicle",
108 + "hobbies",
109 + "books",
110 + "dress",
111 + "board",
112 + "scale",
113 + "cattle",
114 + "quince",
115 + "cabbage",
116 + "chance",
117 + "attack",
118 + "linen",
119 + "swing",
120 + "skin",
121 + "channel",
122 + "discovery",
123 + "window",
124 + "watch",
125 + "collar",
126 + "creature",
127 + "fall",
128 + "rod",
129 + "skirt",
130 + "trousers",
131 + "guitar",
132 + "pest",
133 + "middle",
134 + "holiday",
135 + "invention",
136 + "pump",
137 + "morning",
138 + "reaction",
139 + "wash",
140 + "cloth",
141 + "hydrant",
142 + "committee",
143 + "meeting",
144 + "star",
145 + "pigs",
146 + "bikes",
147 + "plant",
148 + "stomach",
149 + "transport",
150 + "hole",
151 + "library",
152 + "tank",
153 + "hands",
154 + "offer",
155 + "slip",
156 + "chicken",
157 + "sand",
158 + "wilderness",
159 + "sweater",
160 + "frogs",
161 + "basket",
162 + "flesh",
163 + "cook",
164 + "girl",
165 + "queen",
166 + "nut",
167 + "force",
168 + "laborer",
169 + "basin",
170 + "lumber",
171 + "mine",
172 + "mountain",
173 + "insect",
174 + "store",
175 + "experience",
176 + "credit",
177 + "meat",
178 + "taste",
179 + "iron",
180 + "regret",
181 + "sleep",
182 + "notebook",
183 + "powder",
184 + "fuel",
185 + "lace",
186 + "volleyball",
187 + "look",
188 + "ticket",
189 + "place",
190 + "digestion",
191 + "point",
192 + "crook",
193 + "train",
194 + "judge",
195 + "time",
196 + "truck",
197 + "record",
198 + "sheet",
199 + "join",
200 + "achiever",
201 + "spring",
202 + "death",
203 + "potato",
204 + "liquid",
205 +];
1 +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 +# yarn lockfile v1
3 +
4 +
5 +"@types/aws-lambda@8.10.13":
6 + version "8.10.13"
7 + resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.13.tgz#92cc06b1cc88b5d0b327d2671dcf3daea96923a5"
8 + integrity sha512-a1sC60Bqll4N2RYnd4+XuynrVd8LO+uZrgwCVaAER0ldMQ00LRM4iTjU2ulPoQF6P5bHZK5hL/6IF9088VJhUA==
9 +
10 +"@types/body-parser@*":
11 + version "1.19.0"
12 + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f"
13 + integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==
14 + dependencies:
15 + "@types/connect" "*"
16 + "@types/node" "*"
17 +
18 +"@types/connect@*":
19 + version "3.4.33"
20 + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546"
21 + integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==
22 + dependencies:
23 + "@types/node" "*"
24 +
25 +"@types/cors@^2.8.4":
26 + version "2.8.6"
27 + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.6.tgz#cfaab33c49c15b1ded32f235111ce9123009bd02"
28 + integrity sha512-invOmosX0DqbpA+cE2yoHGUlF/blyf7nB0OGYBBiH27crcVm5NmFaZkLP4Ta1hGaesckCi5lVLlydNJCxkTOSg==
29 + dependencies:
30 + "@types/express" "*"
31 +
32 +"@types/express-serve-static-core@*":
33 + version "4.17.3"
34 + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.3.tgz#dc8068ee3e354d7fba69feb86b3dfeee49b10f09"
35 + integrity sha512-sHEsvEzjqN+zLbqP+8OXTipc10yH1QLR+hnr5uw29gi9AhCAAAdri8ClNV7iMdrJrIzXIQtlkPvq8tJGhj3QJQ==
36 + dependencies:
37 + "@types/node" "*"
38 + "@types/range-parser" "*"
39 +
40 +"@types/express@*", "@types/express@^4.11.1":
41 + version "4.17.4"
42 + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.4.tgz#e78bf09f3f530889575f4da8a94cd45384520aac"
43 + integrity sha512-DO1L53rGqIDUEvOjJKmbMEQ5Z+BM2cIEPy/eV3En+s166Gz+FeuzRerxcab757u/U4v4XF4RYrZPmqKa+aY/2w==
44 + dependencies:
45 + "@types/body-parser" "*"
46 + "@types/express-serve-static-core" "*"
47 + "@types/qs" "*"
48 + "@types/serve-static" "*"
49 +
50 +"@types/graphql-deduplicator@^2.0.0":
51 + version "2.0.0"
52 + resolved "https://registry.yarnpkg.com/@types/graphql-deduplicator/-/graphql-deduplicator-2.0.0.tgz#9e577b8f3feb3d067b0ca756f4a1fb356d533922"
53 + integrity sha512-swUwj5hWF1yFzbUXStLJrUa0ksAt11B8+SwhsAjQAX0LYJ1LLioAyuDcJ9bovWbsNzIXJYXLvljSPQw8nR728w==
54 +
55 +"@types/graphql@^14.0.0":
56 + version "14.5.0"
57 + resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-14.5.0.tgz#a545fb3bc8013a3547cf2f07f5e13a33642b75d6"
58 + integrity sha512-MOkzsEp1Jk5bXuAsHsUi6BVv0zCO+7/2PTiZMXWDSsMXvNU6w/PLMQT2vHn8hy2i0JqojPz1Sz6rsFjHtsU0lA==
59 + dependencies:
60 + graphql "*"
61 +
62 +"@types/mime@*":
63 + version "2.0.1"
64 + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d"
65 + integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==
66 +
67 +"@types/node@*":
68 + version "13.11.0"
69 + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.11.0.tgz#390ea202539c61c8fa6ba4428b57e05bc36dc47b"
70 + integrity sha512-uM4mnmsIIPK/yeO+42F2RQhGUIs39K2RFmugcJANppXe6J1nvH87PvzPZYpza7Xhhs8Yn9yIAVdLZ84z61+0xQ==
71 +
72 +"@types/qs@*":
73 + version "6.9.1"
74 + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.1.tgz#937fab3194766256ee09fcd40b781740758617e7"
75 + integrity sha512-lhbQXx9HKZAPgBkISrBcmAcMpZsmpe/Cd/hY7LGZS5OfkySUBItnPZHgQPssWYUET8elF+yCFBbP1Q0RZPTdaw==
76 +
77 +"@types/range-parser@*":
78 + version "1.2.3"
79 + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
80 + integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
81 +
82 +"@types/serve-static@*":
83 + version "1.13.3"
84 + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1"
85 + integrity sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g==
86 + dependencies:
87 + "@types/express-serve-static-core" "*"
88 + "@types/mime" "*"
89 +
90 +"@types/zen-observable@^0.5.3":
91 + version "0.5.4"
92 + resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.5.4.tgz#b863a4191e525206819e008097ebf0fb2e3a1cdc"
93 + integrity sha512-sW6xN96wUak4tgc89d0tbTg7QDGYhGv5hvQIS6h4mRCd8h2btiZ80loPU8cyLwsBbA4ZeQt0FjvUhJ4rNhdsGg==
94 +
95 +"@wry/equality@^0.1.2":
96 + version "0.1.11"
97 + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790"
98 + integrity sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==
99 + dependencies:
100 + tslib "^1.9.3"
101 +
102 +accepts@~1.3.7:
103 + version "1.3.7"
104 + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
105 + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
106 + dependencies:
107 + mime-types "~2.1.24"
108 + negotiator "0.6.2"
109 +
110 +apollo-cache-control@^0.1.0:
111 + version "0.1.1"
112 + resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.1.1.tgz#173d14ceb3eb9e7cb53de7eb8b61bee6159d4171"
113 + integrity sha512-XJQs167e9u+e5ybSi51nGYr70NPBbswdvTEHtbtXbwkZ+n9t0SLPvUcoqceayOSwjK1XYOdU/EKPawNdb3rLQA==
114 + dependencies:
115 + graphql-extensions "^0.0.x"
116 +
117 +apollo-link@^1.2.3:
118 + version "1.2.13"
119 + resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.13.tgz#dff00fbf19dfcd90fddbc14b6a3f9a771acac6c4"
120 + integrity sha512-+iBMcYeevMm1JpYgwDEIDt/y0BB7VWyvlm/7x+TIPNLHCTCMgcEgDuW5kH86iQZWo0I7mNwQiTOz+/3ShPFmBw==
121 + dependencies:
122 + apollo-utilities "^1.3.0"
123 + ts-invariant "^0.4.0"
124 + tslib "^1.9.3"
125 + zen-observable-ts "^0.8.20"
126 +
127 +apollo-server-core@^1.3.6, apollo-server-core@^1.4.0:
128 + version "1.4.0"
129 + resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-1.4.0.tgz#4faff7f110bfdd6c3f47008302ae24140f94c592"
130 + integrity sha512-BP1Vh39krgEjkQxbjTdBURUjLHbFq1zeOChDJgaRsMxGtlhzuLWwwC6lLdPatN8jEPbeHq8Tndp9QZ3iQZOKKA==
131 + dependencies:
132 + apollo-cache-control "^0.1.0"
133 + apollo-tracing "^0.1.0"
134 + graphql-extensions "^0.0.x"
135 +
136 +apollo-server-express@^1.3.6:
137 + version "1.4.0"
138 + resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-1.4.0.tgz#7d7c58d6d6f9892b83fe575669093bb66738b125"
139 + integrity sha512-zkH00nxhLnJfO0HgnNPBTfZw8qI5ILaPZ5TecMCI9+Y9Ssr2b0bFr9pBRsXy9eudPhI+/O4yqegSUsnLdF/CPw==
140 + dependencies:
141 + apollo-server-core "^1.4.0"
142 + apollo-server-module-graphiql "^1.4.0"
143 +
144 +apollo-server-lambda@1.3.6:
145 + version "1.3.6"
146 + resolved "https://registry.yarnpkg.com/apollo-server-lambda/-/apollo-server-lambda-1.3.6.tgz#bdaac37f143c6798e40b8ae75580ba673cea260e"
147 + integrity sha1-varDfxQ8Z5jkC4rnVYC6ZzzqJg4=
148 + dependencies:
149 + apollo-server-core "^1.3.6"
150 + apollo-server-module-graphiql "^1.3.4"
151 +
152 +apollo-server-module-graphiql@^1.3.4, apollo-server-module-graphiql@^1.4.0:
153 + version "1.4.0"
154 + resolved "https://registry.yarnpkg.com/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.4.0.tgz#c559efa285578820709f1769bb85d3b3eed3d8ec"
155 + integrity sha512-GmkOcb5he2x5gat+TuiTvabnBf1m4jzdecal3XbXBh/Jg+kx4hcvO3TTDFQ9CuTprtzdcVyA11iqG7iOMOt7vA==
156 +
157 +apollo-tracing@^0.1.0:
158 + version "0.1.4"
159 + resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.1.4.tgz#5b8ae1b01526b160ee6e552a7f131923a9aedcc7"
160 + integrity sha512-Uv+1nh5AsNmC3m130i2u3IqbS+nrxyVV3KYimH5QKsdPjxxIQB3JAT+jJmpeDxBel8gDVstNmCh82QSLxLSIdQ==
161 + dependencies:
162 + graphql-extensions "~0.0.9"
163 +
164 +apollo-upload-server@^7.0.0:
165 + version "7.1.0"
166 + resolved "https://registry.yarnpkg.com/apollo-upload-server/-/apollo-upload-server-7.1.0.tgz#21e07b52252b3749b913468599813e13cfca805f"
167 + integrity sha512-cD9ReCeyurYwZyEDqJYb5TOc9dt8yhPzS+MtrY3iJdqw+pqiiyPngAvVXHjN+Ca7Lajvom4/AT/PBrYVDMM3Kw==
168 + dependencies:
169 + busboy "^0.2.14"
170 + fs-capacitor "^1.0.0"
171 + http-errors "^1.7.0"
172 + object-path "^0.11.4"
173 +
174 +apollo-utilities@^1.0.1, apollo-utilities@^1.3.0:
175 + version "1.3.3"
176 + resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.3.tgz#f1854715a7be80cd810bc3ac95df085815c0787c"
177 + integrity sha512-F14aX2R/fKNYMvhuP2t9GD9fggID7zp5I96MF5QeKYWDWTrkRdHRp4+SVfXUVN+cXOaB/IebfvRtzPf25CM0zw==
178 + dependencies:
179 + "@wry/equality" "^0.1.2"
180 + fast-json-stable-stringify "^2.0.0"
181 + ts-invariant "^0.4.0"
182 + tslib "^1.10.0"
183 +
184 +array-flatten@1.1.1:
185 + version "1.1.1"
186 + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
187 + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
188 +
189 +async-limiter@~1.0.0:
190 + version "1.0.1"
191 + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
192 + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
193 +
194 +backo2@^1.0.2:
195 + version "1.0.2"
196 + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
197 + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=
198 +
199 +body-parser-graphql@1.1.0:
200 + version "1.1.0"
201 + resolved "https://registry.yarnpkg.com/body-parser-graphql/-/body-parser-graphql-1.1.0.tgz#80a80353c7cb623562fd375750dfe018d75f0f7c"
202 + integrity sha512-bOBF4n1AnUjcY1SzLeibeIx4XOuYqEkjn/Lm4yKhnN6KedoXMv4hVqgcKHGRnxOMJP64tErqrQU+4cihhpbJXg==
203 + dependencies:
204 + body-parser "^1.18.2"
205 +
206 +body-parser@1.19.0, body-parser@^1.18.2:
207 + version "1.19.0"
208 + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
209 + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
210 + dependencies:
211 + bytes "3.1.0"
212 + content-type "~1.0.4"
213 + debug "2.6.9"
214 + depd "~1.1.2"
215 + http-errors "1.7.2"
216 + iconv-lite "0.4.24"
217 + on-finished "~2.3.0"
218 + qs "6.7.0"
219 + raw-body "2.4.0"
220 + type-is "~1.6.17"
221 +
222 +buffer-from@^1.0.0:
223 + version "1.1.1"
224 + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
225 + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
226 +
227 +busboy@^0.2.14:
228 + version "0.2.14"
229 + resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453"
230 + integrity sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=
231 + dependencies:
232 + dicer "0.2.5"
233 + readable-stream "1.1.x"
234 +
235 +busboy@^0.3.1:
236 + version "0.3.1"
237 + resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b"
238 + integrity sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==
239 + dependencies:
240 + dicer "0.3.0"
241 +
242 +bytes@3.1.0:
243 + version "3.1.0"
244 + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
245 + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
246 +
247 +content-disposition@0.5.3:
248 + version "0.5.3"
249 + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
250 + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
251 + dependencies:
252 + safe-buffer "5.1.2"
253 +
254 +content-type@~1.0.4:
255 + version "1.0.4"
256 + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
257 + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
258 +
259 +cookie-signature@1.0.6:
260 + version "1.0.6"
261 + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
262 + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
263 +
264 +cookie@0.4.0:
265 + version "0.4.0"
266 + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
267 + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
268 +
269 +core-js@^2.5.3:
270 + version "2.6.11"
271 + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
272 + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==
273 +
274 +core-util-is@~1.0.0:
275 + version "1.0.2"
276 + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
277 + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
278 +
279 +cors@^2.8.4:
280 + version "2.8.5"
281 + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
282 + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
283 + dependencies:
284 + object-assign "^4"
285 + vary "^1"
286 +
287 +debug@2.6.9:
288 + version "2.6.9"
289 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
290 + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
291 + dependencies:
292 + ms "2.0.0"
293 +
294 +depd@~1.1.2:
295 + version "1.1.2"
296 + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
297 + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
298 +
299 +deprecated-decorator@^0.1.6:
300 + version "0.1.6"
301 + resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37"
302 + integrity sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=
303 +
304 +destroy@~1.0.4:
305 + version "1.0.4"
306 + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
307 + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
308 +
309 +dicer@0.2.5:
310 + version "0.2.5"
311 + resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f"
312 + integrity sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=
313 + dependencies:
314 + readable-stream "1.1.x"
315 + streamsearch "0.1.2"
316 +
317 +dicer@0.3.0:
318 + version "0.3.0"
319 + resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.0.tgz#eacd98b3bfbf92e8ab5c2fdb71aaac44bb06b872"
320 + integrity sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==
321 + dependencies:
322 + streamsearch "0.1.2"
323 +
324 +ee-first@1.1.1:
325 + version "1.1.1"
326 + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
327 + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
328 +
329 +encodeurl@~1.0.2:
330 + version "1.0.2"
331 + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
332 + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
333 +
334 +escape-html@~1.0.3:
335 + version "1.0.3"
336 + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
337 + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
338 +
339 +etag@~1.8.1:
340 + version "1.8.1"
341 + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
342 + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
343 +
344 +eventemitter3@^3.1.0:
345 + version "3.1.2"
346 + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
347 + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
348 +
349 +express@^4.16.3:
350 + version "4.17.1"
351 + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
352 + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
353 + dependencies:
354 + accepts "~1.3.7"
355 + array-flatten "1.1.1"
356 + body-parser "1.19.0"
357 + content-disposition "0.5.3"
358 + content-type "~1.0.4"
359 + cookie "0.4.0"
360 + cookie-signature "1.0.6"
361 + debug "2.6.9"
362 + depd "~1.1.2"
363 + encodeurl "~1.0.2"
364 + escape-html "~1.0.3"
365 + etag "~1.8.1"
366 + finalhandler "~1.1.2"
367 + fresh "0.5.2"
368 + merge-descriptors "1.0.1"
369 + methods "~1.1.2"
370 + on-finished "~2.3.0"
371 + parseurl "~1.3.3"
372 + path-to-regexp "0.1.7"
373 + proxy-addr "~2.0.5"
374 + qs "6.7.0"
375 + range-parser "~1.2.1"
376 + safe-buffer "5.1.2"
377 + send "0.17.1"
378 + serve-static "1.14.1"
379 + setprototypeof "1.1.1"
380 + statuses "~1.5.0"
381 + type-is "~1.6.18"
382 + utils-merge "1.0.1"
383 + vary "~1.1.2"
384 +
385 +fast-json-stable-stringify@^2.0.0:
386 + version "2.1.0"
387 + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
388 + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
389 +
390 +finalhandler@~1.1.2:
391 + version "1.1.2"
392 + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
393 + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
394 + dependencies:
395 + debug "2.6.9"
396 + encodeurl "~1.0.2"
397 + escape-html "~1.0.3"
398 + on-finished "~2.3.0"
399 + parseurl "~1.3.3"
400 + statuses "~1.5.0"
401 + unpipe "~1.0.0"
402 +
403 +forwarded@~0.1.2:
404 + version "0.1.2"
405 + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
406 + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
407 +
408 +fresh@0.5.2:
409 + version "0.5.2"
410 + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
411 + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
412 +
413 +fs-capacitor@^1.0.0:
414 + version "1.0.1"
415 + resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-1.0.1.tgz#ff9dbfa14dfaf4472537720f19c3088ed9278df0"
416 + integrity sha512-XdZK0Q78WP29Vm3FGgJRhRhrBm51PagovzWtW2kJ3Q6cYJbGtZqWSGTSPwvtEkyjIirFd7b8Yes/dpOYjt4RRQ==
417 +
418 +fs-capacitor@^2.0.4:
419 + version "2.0.4"
420 + resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-2.0.4.tgz#5a22e72d40ae5078b4fe64fe4d08c0d3fc88ad3c"
421 + integrity sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA==
422 +
423 +graphql-deduplicator@^2.0.1:
424 + version "2.0.5"
425 + resolved "https://registry.yarnpkg.com/graphql-deduplicator/-/graphql-deduplicator-2.0.5.tgz#fab59d8a4f8127e010122784638cfc8afc815a9c"
426 + integrity sha512-09yOnKej64C32saDU+jsQvIxDeYBTzDWhUkqE84AlCB6LUYuUktfgubZkOS3VdoFiYwsi2EL5Vc0wqemS9M3lg==
427 +
428 +graphql-extensions@^0.0.x, graphql-extensions@~0.0.9:
429 + version "0.0.10"
430 + resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.0.10.tgz#34bdb2546d43f6a5bc89ab23c295ec0466c6843d"
431 + integrity sha512-TnQueqUDCYzOSrpQb3q1ngDSP2otJSF+9yNLrQGPzkMsvnQ+v6e2d5tl+B35D4y+XpmvVnAn4T3ZK28mkILveA==
432 + dependencies:
433 + core-js "^2.5.3"
434 + source-map-support "^0.5.1"
435 +
436 +graphql-import@^0.7.0:
437 + version "0.7.1"
438 + resolved "https://registry.yarnpkg.com/graphql-import/-/graphql-import-0.7.1.tgz#4add8d91a5f752d764b0a4a7a461fcd93136f223"
439 + integrity sha512-YpwpaPjRUVlw2SN3OPljpWbVRWAhMAyfSba5U47qGMOSsPLi2gYeJtngGpymjm9nk57RFWEpjqwh4+dpYuFAPw==
440 + dependencies:
441 + lodash "^4.17.4"
442 + resolve-from "^4.0.0"
443 +
444 +graphql-middleware@4.0.1:
445 + version "4.0.1"
446 + resolved "https://registry.yarnpkg.com/graphql-middleware/-/graphql-middleware-4.0.1.tgz#8c627b22cc046a47e9474a813cf9e0bd50fa0c4b"
447 + integrity sha512-r9r+pcHV4yZW7LAOcjQYTbNY6nR9SrLgpVZKbrtgXxpQW/MUc1N8q3PESciebvp5s0EEUgRchcRjUkyaArCIFw==
448 + dependencies:
449 + graphql-tools "^4.0.5"
450 +
451 +graphql-playground-html@1.6.12:
452 + version "1.6.12"
453 + resolved "https://registry.yarnpkg.com/graphql-playground-html/-/graphql-playground-html-1.6.12.tgz#8b3b34ab6013e2c877f0ceaae478fafc8ca91b85"
454 + integrity sha512-yOYFwwSMBL0MwufeL8bkrNDgRE7eF/kTHiwrqn9FiR9KLcNIl1xw9l9a+6yIRZM56JReQOHpbQFXTZn1IuSKRg==
455 +
456 +graphql-playground-middleware-express@1.7.11:
457 + version "1.7.11"
458 + resolved "https://registry.yarnpkg.com/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.11.tgz#bbffd784a37133bfa7165bdd8f429081dbf4bcf6"
459 + integrity sha512-sKItB4s3FxqlwCgXdMfwRAfssSoo31bcFsGAAg/HzaZLicY6CDlofKXP8G5iPDerB6NaoAcAaBLutLzl9sd4fQ==
460 + dependencies:
461 + graphql-playground-html "1.6.12"
462 +
463 +graphql-playground-middleware-lambda@1.7.12:
464 + version "1.7.12"
465 + resolved "https://registry.yarnpkg.com/graphql-playground-middleware-lambda/-/graphql-playground-middleware-lambda-1.7.12.tgz#1b06440a288dbcd53f935b43e5b9ca2738a06305"
466 + integrity sha512-fJ1Y0Ck5ctmfaQFoWv7vNnVP7We19P3miVmOT85YPrjpzbMYv0wPfxm4Zjt8nnqXr0KU9nGW53tz3K7/Lvzxtw==
467 + dependencies:
468 + graphql-playground-html "1.6.12"
469 +
470 +graphql-subscriptions@^0.5.8:
471 + version "0.5.8"
472 + resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-0.5.8.tgz#13a6143c546bce390404657dc73ca501def30aa7"
473 + integrity sha512-0CaZnXKBw2pwnIbvmVckby5Ge5e2ecmjofhYCdyeACbCly2j3WXDP/pl+s+Dqd2GQFC7y99NB+53jrt55CKxYQ==
474 + dependencies:
475 + iterall "^1.2.1"
476 +
477 +graphql-tools@^4.0.0, graphql-tools@^4.0.5:
478 + version "4.0.7"
479 + resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.7.tgz#743309b96cb657ff45b607ee0a07193cd987e43c"
480 + integrity sha512-rApl8sT8t/W1uQRcwzxMYyUBiCl/XicluApiDkNze5TX/GR0BSTQMjM2UcRGdTmkbsb1Eqq6afkyyeG/zMxZYQ==
481 + dependencies:
482 + apollo-link "^1.2.3"
483 + apollo-utilities "^1.0.1"
484 + deprecated-decorator "^0.1.6"
485 + iterall "^1.1.3"
486 + uuid "^3.1.0"
487 +
488 +graphql-upload@^8.0.0:
489 + version "8.1.0"
490 + resolved "https://registry.yarnpkg.com/graphql-upload/-/graphql-upload-8.1.0.tgz#6d0ab662db5677a68bfb1f2c870ab2544c14939a"
491 + integrity sha512-U2OiDI5VxYmzRKw0Z2dmfk0zkqMRaecH9Smh1U277gVgVe9Qn+18xqf4skwr4YJszGIh7iQDZ57+5ygOK9sM/Q==
492 + dependencies:
493 + busboy "^0.3.1"
494 + fs-capacitor "^2.0.4"
495 + http-errors "^1.7.3"
496 + object-path "^0.11.4"
497 +
498 +graphql-yoga@^1.18.3:
499 + version "1.18.3"
500 + resolved "https://registry.yarnpkg.com/graphql-yoga/-/graphql-yoga-1.18.3.tgz#047fa511dbef63cf6d6ea7c06a71202d37444844"
501 + integrity sha512-tR6JYbwLSBVu0Z8M7BIyt1PHhhexmRwneYM8Ru/g2pixrtsWbelBFAXU7bDPhXrqZ49Zxt2zLJ60x3bLNGo/bQ==
502 + dependencies:
503 + "@types/aws-lambda" "8.10.13"
504 + "@types/cors" "^2.8.4"
505 + "@types/express" "^4.11.1"
506 + "@types/graphql" "^14.0.0"
507 + "@types/graphql-deduplicator" "^2.0.0"
508 + "@types/zen-observable" "^0.5.3"
509 + apollo-server-express "^1.3.6"
510 + apollo-server-lambda "1.3.6"
511 + apollo-upload-server "^7.0.0"
512 + body-parser-graphql "1.1.0"
513 + cors "^2.8.4"
514 + express "^4.16.3"
515 + graphql "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0"
516 + graphql-deduplicator "^2.0.1"
517 + graphql-import "^0.7.0"
518 + graphql-middleware "4.0.1"
519 + graphql-playground-middleware-express "1.7.11"
520 + graphql-playground-middleware-lambda "1.7.12"
521 + graphql-subscriptions "^0.5.8"
522 + graphql-tools "^4.0.0"
523 + graphql-upload "^8.0.0"
524 + subscriptions-transport-ws "^0.9.8"
525 +
526 +graphql@*:
527 + version "15.0.0"
528 + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.0.0.tgz#042a5eb5e2506a2e2111ce41eb446a8e570b8be9"
529 + integrity sha512-ZyVO1xIF9F+4cxfkdhOJINM+51B06Friuv4M66W7HzUOeFd+vNzUn4vtswYINPi6sysjf1M2Ri/rwZALqgwbaQ==
530 +
531 +"graphql@^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0":
532 + version "14.6.0"
533 + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.6.0.tgz#57822297111e874ea12f5cd4419616930cd83e49"
534 + integrity sha512-VKzfvHEKybTKjQVpTFrA5yUq2S9ihcZvfJAtsDBBCuV6wauPu1xl/f9ehgVf0FcEJJs4vz6ysb/ZMkGigQZseg==
535 + dependencies:
536 + iterall "^1.2.2"
537 +
538 +http-errors@1.7.2:
539 + version "1.7.2"
540 + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
541 + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
542 + dependencies:
543 + depd "~1.1.2"
544 + inherits "2.0.3"
545 + setprototypeof "1.1.1"
546 + statuses ">= 1.5.0 < 2"
547 + toidentifier "1.0.0"
548 +
549 +http-errors@^1.7.0, http-errors@^1.7.3, http-errors@~1.7.2:
550 + version "1.7.3"
551 + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
552 + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
553 + dependencies:
554 + depd "~1.1.2"
555 + inherits "2.0.4"
556 + setprototypeof "1.1.1"
557 + statuses ">= 1.5.0 < 2"
558 + toidentifier "1.0.0"
559 +
560 +iconv-lite@0.4.24:
561 + version "0.4.24"
562 + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
563 + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
564 + dependencies:
565 + safer-buffer ">= 2.1.2 < 3"
566 +
567 +inherits@2.0.3:
568 + version "2.0.3"
569 + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
570 + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
571 +
572 +inherits@2.0.4, inherits@~2.0.1:
573 + version "2.0.4"
574 + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
575 + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
576 +
577 +ipaddr.js@1.9.1:
578 + version "1.9.1"
579 + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
580 + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
581 +
582 +isarray@0.0.1:
583 + version "0.0.1"
584 + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
585 + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
586 +
587 +iterall@^1.1.3, iterall@^1.2.1, iterall@^1.2.2:
588 + version "1.3.0"
589 + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea"
590 + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==
591 +
592 +lodash@^4.17.4:
593 + version "4.17.15"
594 + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
595 + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
596 +
597 +media-typer@0.3.0:
598 + version "0.3.0"
599 + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
600 + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
601 +
602 +merge-descriptors@1.0.1:
603 + version "1.0.1"
604 + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
605 + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
606 +
607 +methods@~1.1.2:
608 + version "1.1.2"
609 + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
610 + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
611 +
612 +mime-db@1.43.0:
613 + version "1.43.0"
614 + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58"
615 + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==
616 +
617 +mime-types@~2.1.24:
618 + version "2.1.26"
619 + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06"
620 + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==
621 + dependencies:
622 + mime-db "1.43.0"
623 +
624 +mime@1.6.0:
625 + version "1.6.0"
626 + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
627 + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
628 +
629 +ms@2.0.0:
630 + version "2.0.0"
631 + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
632 + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
633 +
634 +ms@2.1.1:
635 + version "2.1.1"
636 + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
637 + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
638 +
639 +negotiator@0.6.2:
640 + version "0.6.2"
641 + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
642 + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
643 +
644 +object-assign@^4:
645 + version "4.1.1"
646 + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
647 + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
648 +
649 +object-path@^0.11.4:
650 + version "0.11.4"
651 + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949"
652 + integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=
653 +
654 +on-finished@~2.3.0:
655 + version "2.3.0"
656 + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
657 + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
658 + dependencies:
659 + ee-first "1.1.1"
660 +
661 +parseurl@~1.3.3:
662 + version "1.3.3"
663 + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
664 + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
665 +
666 +path-to-regexp@0.1.7:
667 + version "0.1.7"
668 + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
669 + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
670 +
671 +proxy-addr@~2.0.5:
672 + version "2.0.6"
673 + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
674 + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
675 + dependencies:
676 + forwarded "~0.1.2"
677 + ipaddr.js "1.9.1"
678 +
679 +qs@6.7.0:
680 + version "6.7.0"
681 + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
682 + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
683 +
684 +range-parser@~1.2.1:
685 + version "1.2.1"
686 + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
687 + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
688 +
689 +raw-body@2.4.0:
690 + version "2.4.0"
691 + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
692 + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
693 + dependencies:
694 + bytes "3.1.0"
695 + http-errors "1.7.2"
696 + iconv-lite "0.4.24"
697 + unpipe "1.0.0"
698 +
699 +readable-stream@1.1.x:
700 + version "1.1.14"
701 + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
702 + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
703 + dependencies:
704 + core-util-is "~1.0.0"
705 + inherits "~2.0.1"
706 + isarray "0.0.1"
707 + string_decoder "~0.10.x"
708 +
709 +resolve-from@^4.0.0:
710 + version "4.0.0"
711 + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
712 + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
713 +
714 +safe-buffer@5.1.2:
715 + version "5.1.2"
716 + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
717 + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
718 +
719 +"safer-buffer@>= 2.1.2 < 3":
720 + version "2.1.2"
721 + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
722 + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
723 +
724 +send@0.17.1:
725 + version "0.17.1"
726 + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
727 + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
728 + dependencies:
729 + debug "2.6.9"
730 + depd "~1.1.2"
731 + destroy "~1.0.4"
732 + encodeurl "~1.0.2"
733 + escape-html "~1.0.3"
734 + etag "~1.8.1"
735 + fresh "0.5.2"
736 + http-errors "~1.7.2"
737 + mime "1.6.0"
738 + ms "2.1.1"
739 + on-finished "~2.3.0"
740 + range-parser "~1.2.1"
741 + statuses "~1.5.0"
742 +
743 +serve-static@1.14.1:
744 + version "1.14.1"
745 + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
746 + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
747 + dependencies:
748 + encodeurl "~1.0.2"
749 + escape-html "~1.0.3"
750 + parseurl "~1.3.3"
751 + send "0.17.1"
752 +
753 +setprototypeof@1.1.1:
754 + version "1.1.1"
755 + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
756 + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
757 +
758 +source-map-support@^0.5.1:
759 + version "0.5.16"
760 + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042"
761 + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==
762 + dependencies:
763 + buffer-from "^1.0.0"
764 + source-map "^0.6.0"
765 +
766 +source-map@^0.6.0:
767 + version "0.6.1"
768 + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
769 + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
770 +
771 +"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
772 + version "1.5.0"
773 + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
774 + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
775 +
776 +streamsearch@0.1.2:
777 + version "0.1.2"
778 + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a"
779 + integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=
780 +
781 +string_decoder@~0.10.x:
782 + version "0.10.31"
783 + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
784 + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
785 +
786 +subscriptions-transport-ws@^0.9.8:
787 + version "0.9.16"
788 + resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.16.tgz#90a422f0771d9c32069294c08608af2d47f596ec"
789 + integrity sha512-pQdoU7nC+EpStXnCfh/+ho0zE0Z+ma+i7xvj7bkXKb1dvYHSZxgRPaU6spRP+Bjzow67c/rRDoix5RT0uU9omw==
790 + dependencies:
791 + backo2 "^1.0.2"
792 + eventemitter3 "^3.1.0"
793 + iterall "^1.2.1"
794 + symbol-observable "^1.0.4"
795 + ws "^5.2.0"
796 +
797 +symbol-observable@^1.0.4:
798 + version "1.2.0"
799 + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
800 + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
801 +
802 +toidentifier@1.0.0:
803 + version "1.0.0"
804 + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
805 + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
806 +
807 +ts-invariant@^0.4.0:
808 + version "0.4.4"
809 + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86"
810 + integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==
811 + dependencies:
812 + tslib "^1.9.3"
813 +
814 +tslib@^1.10.0, tslib@^1.9.3:
815 + version "1.11.1"
816 + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35"
817 + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==
818 +
819 +type-is@~1.6.17, type-is@~1.6.18:
820 + version "1.6.18"
821 + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
822 + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
823 + dependencies:
824 + media-typer "0.3.0"
825 + mime-types "~2.1.24"
826 +
827 +unpipe@1.0.0, unpipe@~1.0.0:
828 + version "1.0.0"
829 + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
830 + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
831 +
832 +utils-merge@1.0.1:
833 + version "1.0.1"
834 + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
835 + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
836 +
837 +uuid@^3.1.0:
838 + version "3.4.0"
839 + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
840 + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
841 +
842 +vary@^1, vary@~1.1.2:
843 + version "1.1.2"
844 + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
845 + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
846 +
847 +ws@^5.2.0:
848 + version "5.2.2"
849 + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f"
850 + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==
851 + dependencies:
852 + async-limiter "~1.0.0"
853 +
854 +zen-observable-ts@^0.8.20:
855 + version "0.8.20"
856 + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.20.tgz#44091e335d3fcbc97f6497e63e7f57d5b516b163"
857 + integrity sha512-2rkjiPALhOtRaDX6pWyNqK1fnP5KkJJybYebopNSn6wDG1lxBoFs2+nwwXKoA6glHIrtwrfBBy6da0stkKtTAA==
858 + dependencies:
859 + tslib "^1.9.3"
860 + zen-observable "^0.8.0"
861 +
862 +zen-observable@^0.8.0:
863 + version "0.8.15"
864 + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15"
865 + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==
1 +version: "3.7"
2 +services:
3 + mysql:
4 + image: mysql:8.0.19
5 + container_name: mysql
6 + ports:
7 + - 3306:3306
8 + restart: always
9 + environment:
10 + MYSQL_DATABASE: prisma
11 + MYSQL_ROOT_PASSWORD: prisma
12 + volumes:
13 + - /var/lib/mysql
14 + prisma:
15 + links:
16 + - mysql
17 + depends_on:
18 + - mysql
19 + container_name: prisma
20 + ports:
21 + - "5555:5555"
22 + build:
23 + context: ./back/prisma
24 + dockerfile: Dockerfile
25 + environment:
26 + MYSQL_URL: ${MYSQL_URL}
27 + MYSQL_DATABASE: prisma
28 + MYSQL_ROOT_PASSWORD: prisma
29 + volumes:
30 + - /app/prisma
31 + backend:
32 + links:
33 + - mysql
34 + depends_on:
35 + - mysql
36 + container_name: backend
37 + ports:
38 + - "4000:4000"
39 + build:
40 + context: ./back
41 + dockerfile: Dockerfile
42 + environment:
43 + MYSQL_URL: ${MYSQL_URL}
44 + FRONTEND_URL: ${FRONTEND_URL}
45 + volumes:
46 + - ./back:/usr/src/app
47 + - ./back/node_modules:/usr/src/app/node_modules
48 + - ./back/prisma:/usr/src/app/prisma
49 + frontend:
50 + container_name: frontend
51 + ports:
52 + - "3000:3000"
53 + tty: "true"
54 + build:
55 + context: ./front
56 + dockerfile: Dockerfile
57 + command: npm start
58 + environment:
59 + - NODE_ENV=development
60 + - CHOKIDAR_USEPOLLING=true
61 + - BACKEND_URL=${BACKEND_URL}
62 + volumes:
63 + - ./front:/usr/src/app
1 +node_modules
...\ No newline at end of file ...\ No newline at end of file
1 +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 +
3 +# dependencies
4 +/node_modules
5 +/.pnp
6 +.pnp.js
7 +
8 +# testing
9 +/coverage
10 +
11 +# production
12 +/build
13 +
14 +# misc
15 +.DS_Store
16 +.env.local
17 +.env.development.local
18 +.env.test.local
19 +.env.production.local
20 +
21 +npm-debug.log*
22 +yarn-debug.log*
23 +yarn-error.log*
1 +FROM node:12.16.2
2 +
3 +RUN mkdir /app
4 +WORKDIR /app
5 +
6 +COPY package*.json ./
7 +
8 +RUN npm install
9 +
10 +COPY . .
...\ No newline at end of file ...\ No newline at end of file
1 +# Capstone design
2 +
3 +1st semester capstone design project
4 +
5 +Subject : Making website in order to practice web tech
6 +
7 +sub-subject : making chat site using JS
...\ No newline at end of file ...\ No newline at end of file
This diff could not be displayed because it is too large.
1 +{
2 + "name": "capstone-front",
3 + "version": "0.1.0",
4 + "private": true,
5 + "dependencies": {
6 + "@testing-library/jest-dom": "^4.2.4",
7 + "@testing-library/react": "^9.3.2",
8 + "@testing-library/user-event": "^7.1.2",
9 + "apollo-boost": "^0.4.7",
10 + "core-js": "^3.6.5",
11 + "graphql": "^15.0.0",
12 + "react": "^16.13.1",
13 + "react-apollo-hooks": "^0.5.0",
14 + "react-dom": "^16.13.1",
15 + "react-hooks": "^1.0.1",
16 + "react-router": "^5.1.2",
17 + "react-router-dom": "^5.1.2",
18 + "react-scripts": "3.4.1",
19 + "react-toastify": "^5.5.0",
20 + "styled-components": "^5.1.0",
21 + "styled-reset": "^4.1.3"
22 + },
23 + "scripts": {
24 + "start": "react-scripts start",
25 + "build": "react-scripts build",
26 + "test": "react-scripts test",
27 + "eject": "react-scripts eject"
28 + },
29 + "eslintConfig": {
30 + "extends": "react-app"
31 + },
32 + "browserslist": {
33 + "production": [
34 + ">0.2%",
35 + "not dead",
36 + "not op_mini all"
37 + ],
38 + "development": [
39 + "last 1 chrome version",
40 + "last 1 firefox version",
41 + "last 1 safari version"
42 + ]
43 + }
44 +}
No preview for this file type
1 +<!DOCTYPE html>
2 +<html lang="en">
3 + <head>
4 + <meta charset="utf-8" />
5 + <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
6 + <meta name="viewport" content="width=device-width, initial-scale=1" />
7 + <meta name="theme-color" content="#000000" />
8 + <meta
9 + name="description"
10 + content="Web site created using create-react-app"
11 + />
12 + <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
13 + <!--
14 + manifest.json provides metadata used when your web app is installed on a
15 + user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
16 + -->
17 + <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
18 + <!--
19 + Notice the use of %PUBLIC_URL% in the tags above.
20 + It will be replaced with the URL of the `public` folder during the build.
21 + Only files inside the `public` folder can be referenced from the HTML.
22 +
23 + Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
24 + work correctly both with client-side routing and a non-root public URL.
25 + Learn how to configure a non-root public URL by running `npm run build`.
26 + -->
27 + <title>React App</title>
28 + </head>
29 + <body>
30 + <noscript>You need to enable JavaScript to run this app.</noscript>
31 + <div id="root"></div>
32 + <!--
33 + This HTML file is a template.
34 + If you open it directly in the browser, you will see an empty page.
35 +
36 + You can add webfonts, meta tags, or analytics to this file.
37 + The build step will place the bundled scripts into the <body> tag.
38 +
39 + To begin the development, run `npm start` or `yarn start`.
40 + To create a production bundle, use `npm run build` or `yarn build`.
41 + -->
42 + </body>
43 +</html>
1 +{
2 + "short_name": "React App",
3 + "name": "Create React App Sample",
4 + "icons": [
5 + {
6 + "src": "favicon.ico",
7 + "sizes": "64x64 32x32 24x24 16x16",
8 + "type": "image/x-icon"
9 + },
10 + {
11 + "src": "logo192.png",
12 + "type": "image/png",
13 + "sizes": "192x192"
14 + },
15 + {
16 + "src": "logo512.png",
17 + "type": "image/png",
18 + "sizes": "512x512"
19 + }
20 + ],
21 + "start_url": ".",
22 + "display": "standalone",
23 + "theme_color": "#000000",
24 + "background_color": "#ffffff"
25 +}
1 +# https://www.robotstxt.org/robotstxt.html
2 +User-agent: *
3 +Disallow:
1 +import ApolloClient from "apollo-boost";
2 +import { defaults, resolvers } from "./ClientState";
3 +
4 +export default new ApolloClient({
5 + uri: "http://localhost:4000",
6 + clientState: {
7 + defaults,
8 + resolvers,
9 + },
10 +});
1 +export const defaults = {};
2 +
3 +export const resolvers = {};
1 +import React from "react";
2 +import GlobalStyles from "../Styles/GlobalStyles";
3 +import Header from "./Header";
4 +import Image from "./Image";
5 +import Grid from "./Grid";
6 +
7 +export default () => {
8 + return (
9 + <>
10 + <GlobalStyles />
11 + <Header />
12 + <Image />
13 + <Grid />
14 + </>
15 + );
16 +};
1 +import React from "react";
2 +import Styled from "styled-components";
3 +
4 +const Article = Styled.div`
5 + width: 70%;
6 + justify-content: center;
7 + align-items: center;
8 + text-align: center;
9 + margin-top: 10px;
10 + border-top: 1px solid black;
11 +`;
12 +
13 +export default () => {
14 + return (
15 + <Article>
16 + <h1>Article Title</h1>
17 + </Article>
18 + );
19 +};
1 +import React from "react";
2 +import Styled from "styled-components";
3 +import MenuList from "./MenuList";
4 +import Article from "./Article";
5 +
6 +const Grid = Styled.div`
7 + width: 100%;
8 + display: flex;
9 +`;
10 +
11 +export default () => {
12 + return (
13 + <Grid>
14 + <MenuList />
15 + <Article />
16 + </Grid>
17 + );
18 +};
1 +import React from "react";
2 +import Styled from "styled-components";
3 +
4 +const Header = Styled.div`
5 + width: 100%;
6 + display: flex;
7 + justify-content: center;
8 + margin: 10px 0px;
9 + font-size: 25px;
10 +`;
11 +
12 +export default () => {
13 + return (
14 + <Header>
15 + <h1>KHU Chatting service</h1>
16 + </Header>
17 + );
18 +};
1 +import React from "react";
2 +import Styled from "styled-components";
3 +
4 +const Image = Styled.div`
5 + width: 100%;
6 + margin: 20px 0px;
7 + display: flex;
8 + justify-content: center;
9 +`;
10 +
11 +export default () => {
12 + return (
13 + <Image>
14 + <img src="" alt="sample"></img>
15 + </Image>
16 + );
17 +};
1 +import React from "react";
2 +import Styled from "styled-components";
3 +
4 +const MenuBox = Styled.div`
5 + width: 30%;
6 + display: flex;
7 + justify-content: center;
8 + align-items: center;
9 + margin-top: 10px;
10 + border-top: 1px solid black;
11 + border-right: 1px solid black;
12 +`;
13 +
14 +const MenuList = Styled.ol`
15 +`;
16 +
17 +const MenuItem = Styled.li`
18 +`;
19 +
20 +const Link = Styled.a`
21 +`;
22 +
23 +export default () => {
24 + return (
25 + <MenuBox>
26 + <MenuList>
27 + <MenuItem>
28 + <Link href="">1. What is KHU Chat?</Link>
29 + </MenuItem>
30 + </MenuList>
31 + </MenuBox>
32 + );
33 +};
1 +export default {
2 + bgColor: "white",
3 +};
1 +import { createGlobalStyle } from "styled-components";
2 +import reset from "styled-reset";
3 +
4 +export default createGlobalStyle`
5 + ${reset}
6 + * {
7 + box-sizing: border-box;
8 + }
9 +`;
1 +import React from "react";
2 +import ReactDOM from "react-dom";
3 +import App from "./Components/App";
4 +import { ApolloProvider } from "react-apollo-hooks";
5 +import Client from "./Apollo/Client";
6 +
7 +ReactDOM.render(
8 + <ApolloProvider client={Client}>
9 + <App />
10 + </ApolloProvider>,
11 + document.getElementById("root")
12 +);
1 +
2 +var Email={
3 + checkEmail:function(self){
4 + var email=document.getElementById('eValidation').value;
5 + var regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
6 + if(regExp.test(email)){
7 + return true;
8 + }else if(email===""){
9 + focusFunction("#eValidation");
10 + alert("이메일을 입력해주세요!");
11 + return false;
12 + }
13 + else {
14 + alert("이메일 형식을 제대로 입력해주세요!");
15 + return false;
16 + }
17 + }
18 +}
19 +
20 +var Password={
21 + checkPassword:function(self){
22 + var fpassword=document.getElementById('fValidation').value;
23 + var spassword= document.getElementById('sValidation').value;
24 + if(fpassword==="" || spassword===""){
25 + alert("비밀번호를 입력해주세요!");
26 + return false;
27 + }else if(fpassword===spassword){
28 + return true;
29 + }else{
30 + alert("입력하신 비밀번호들이 다릅니다!");
31 + return false;
32 + }
33 + }
34 +}
35 +
36 +function checkValidation(self){
37 + if(Email.checkEmail() && Password.checkPassword() ){
38 + return true;
39 + }else return false;
40 +
41 +}
42 +
43 +function checkPasswordMatch() {
44 + var password = $("#fpassword").val();
45 + var confirmPassword = $("#spassword").val();
46 +
47 + if (password != confirmPassword)
48 + $("#message").html("비밀번호가 일치하지 않습니다.!");
49 + else
50 + $("#message").html("일치.");
51 +}
1 <!doctype html> 1 <!doctype html>
2 <html> 2 <html>
3 <head> 3 <head>
4 +<title>KHU KHU Chat</title>
5 +<meta charset="utf-8">
6 +<link rel="stylesheet" href="style/style.css">
7 +<style>
4 8
5 - <title>KHU Chat</title> 9 +</style>
6 - <meta charset="utf-8"> 10 +</head>
7 - <link rel="stylesheet" href="style/style.css"> 11 +<body>
8 - <script src="https://kit.fontawesome.com/6a5db0a2e0.js" crossorigin="anonymous"></script>
9 - <link rel="icon" href="https://kit.fontawesome.com/6a5db0a2e0.js" />
10 - <link href="https://fonts.googleapis.com/css2?family=Black+Han+Sans&display=swap" rel="stylesheet">
11 - <script src="JS/main.js"></script>
12 - </head>
13 - <body>
14 - <header role="banner">
15 - <nav class="khu-nav" role="navigation" aria-label="Primary navigation">
16 - <div class="khu-nav-row">
17 - <div class="khu-logo">
18 - <a id="khu-logo" data-clog-click="" data-clog-ui-element="link_home" href="main.html" aria-label="Khu-logo" data-qa="logo">
19 - <img src="img/Khu_Chat_Icon.svg" width="30px" hegiht="20px" alt="Khu Chat">
20 - </a>
21 -
22 - <a id="khu-logo-font" data-clog-click="" data-clog-ui-element="link_home" href="main.html" aria-label="Khu-logo-font" data-qa="logo">
23 - Khu Chat
24 - </a>
25 - </div>
26 - <div class ="khu-login" >
27 - <a data-clog-click="" data-clog-ui-element="link_home" href="main.html" aria-label="Khu-logo-font" data-qa="logo">
28 - Login
29 - </a>
30 - </div>
31 - <div class="khu-signin">
32 - <a data-clog-click="" data-clog-ui-element="link_home" href="main.html" aria-label="Khu-logo-font" data-qa="logo">
33 - Sign in
34 - </a>
35 - </div>
36 - <div class="khu-start-button">
37 - <button id="khu-start-button" onclick="" data-clog-click="" data-clog-ui-element="link_home" href="main.html" aria-label="Khu-start-button" data-qa="logo">
38 - Launch Chating
39 - </button>
40 - </div>
41 - </div>
42 -</nav>
43 12
44 <h1><a href="main.html" color:black>KHU Chatting service</a></h1> 13 <h1><a href="main.html" color:black>KHU Chatting service</a></h1>
45 <img src="image/welcome.jpg" class="image"> 14 <img src="image/welcome.jpg" class="image">
...@@ -47,11 +16,11 @@ ...@@ -47,11 +16,11 @@
47 <div id="grid"> 16 <div id="grid">
48 <div id="category"> 17 <div id="category">
49 <ol class="center"> 18 <ol class="center">
50 - <li><a class="dr-icon" href="service/whatiskhuchat.html" >What is KHU chat? </a></li> 19 + <li><a href="service/whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
51 - <li><a class="dr-icon" href="loginmain.html" >로그인</a></li> 20 + <li><a href="loginmain.html" class="saw">로그인</a></li>
52 - <li><a class="dr-icon" href="signinmain.html" >회원가입</a></li> 21 + <li><a href="signinmain.html" class="saw">회원가입</a></li>
53 - <li><a class="dr-icon" href="question.html" >문의사항</a></li> 22 + <li><a href="question.html" class="saw">문의사항</a></li>
54 - <li><a class="dr-icon" href="afterlogin.html" >로그인이후</a></li> 23 + <li><a href="afterlogin.html" class="saw">로그인이후</a></li>
55 </ol> 24 </ol>
56 </div> 25 </div>
57 <div id="article"> 26 <div id="article">
...@@ -77,5 +46,6 @@ ...@@ -77,5 +46,6 @@
77 </form> 46 </form>
78 </div> 47 </div>
79 </div> 48 </div>
49 +
80 </body> 50 </body>
81 </html> 51 </html>
......
1 +<!doctype html>
2 +<html>
3 +<head>
4 +<title>KHU KHU Chat</title>
5 +<meta charset="utf-8">
6 +
7 +<link rel="stylesheet" href="style.css">
8 +<script>
9 +function LinksSetColor(color){
10 + var alist=document.querySelectorAll('a');
11 + var i =0;
12 + while(i<alist.length)
13 + {
14 + alist[i].style.color=color;
15 + i+=1;
16 + }
17 +}
18 +var Body={
19 + setColor:function(color){
20 +
21 + }
22 +}
23 +function bodySetColor(color){
24 + document.querySelector('body').style.color= color;
25 +}
26 +function bodySetBackGruondColor(color){
27 + document.querySelector('body').style.backgroundColor= color;
28 +}
29 +function nightDayHandler(self){
30 + if(self.value==='night')
31 + {
32 + bodySetBackGruondColor('black')
33 + bodySetColor('white');
34 + self.value= 'day';
35 +
36 + setColor('powderblue');
37 +
38 + }else{
39 + bodySetBackGruondColor('white')
40 + bodySetColor('black');
41 + self.value= 'night';
42 +
43 + setColor('blue');
44 + }
45 + }
46 +</script>
47 +</head>
48 +<body>
49 +
50 + <h1><a href="main.html" color:black>KHU Chatting service</a></h1>
51 + <img src="image/signin.jpg" class="image">
52 +
53 +<!--refactoring and conditional statement -->
54 +
55 +
56 +<!-- about this grammer
57 +
58 + <input type="button" value="night" onclick="
59 + if(this.value==='night')
60 + {
61 + document.querySelector('body').style.backgroundColor= 'black';
62 + document.querySelector('body').style.color= 'white';
63 + this.value= 'day';
64 + }else{
65 + document.querySelector('body').style.backgroundColor= 'white';
66 + document.querySelector('body').style.color= 'black';
67 + this.value= 'night';
68 + }
69 + ">
70 + -->
71 +
72 +
73 +
74 +<!-- about array
75 + <script>
76 + var cowokers=["minsing","minsoft"];
77 + document.write(cowokers[0]);
78 + document.write(cowokers[1]);
79 + cowokers.push("ssssss")
80 + document.write(cowokers);
81 + </script>
82 +-->
83 +
84 +<!-- about Loop
85 +<ul>
86 + <script>
87 + var i=0;
88 + while(i<3)
89 + {
90 + document.write("<li>var</li>")
91 + i+=1;
92 + }
93 + </script>
94 +</ul>
95 +-->
96 +
97 +
98 +
99 +<!--Loop & Array
100 +<script>
101 + var cowokers=["minsung","leezche","minsoft","sdy"];
102 +</script>
103 +
104 +<script>
105 + var i=0;
106 + while( i< cowokers.length ){
107 + document.write('<li><a href="http://a.com/'+cowokers[i]+'">'+cowokers[i]+'</a></li>');
108 + i+=1;
109 + }
110 +</script>
111 +-->
112 +
113 +<!-- Loop apply
114 +var alist=document.querySelectorAll('a');
115 +var i =0;
116 +while(i<alist.length){
117 +console.log(alist[i]);
118 +i+=1;
119 +}
120 +-->
121 +
122 +<!-- button 1 usage array and Loop for chage style
123 + self를 통한 input의 객체 지정해주기
124 + 지정해주기전에는 전역객체를 가르키게 된다.
125 + -->
126 +<input id="night_day" type="button" value="night" onclick="
127 + nightDayHandler(this);
128 +">
129 +
130 +<!-- button2 making and using function -->
131 + <input id="night_day" type="button" value="night" onclick="
132 + nightDayHandler(this);
133 + ">
134 +
135 + <div id="grid">
136 + <ol>
137 + <li><a href="whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
138 + <li><a href="loginmain.html" class="saw">로그인</a></li>
139 + <li><a href="signinmain.html" class="saw">회원가입</a></li>
140 + <li><a href="question.html" class="saw">문의사항</a></li>
141 + <li><a href="afterlogin.html" class="saw">로그인이후</a></li>
142 + </ol>
143 + <div id="article">
144 + <h2>회원가입</h2>
145 + <div id="inputset">
146 + <form class="signinform" action="loginmain.html">
147 + <label for="email">Email:</label><br>
148 + <input type="text" name="email"><br>
149 +
150 + <label for="password">password:</label><br>
151 + <input type="password" name="password"><br>
152 +
153 + <label for="name">이름:</label><br>
154 + <input type="text" name="name"><br>
155 +
156 + <label for="age">나이:</label><br>
157 + <input type="text" name="age"><br><br>
158 +
159 + <label for="sex">성별:</label><br>
160 + <input type="radio" value="man" name="sex">남자<br>
161 + <input type="radio" value="woman" name="sex">여자<br><br>
162 +
163 + <label for="work">직업:</label><br>
164 + <input type="radio" value="nowork" name="work">무직<br>
165 + <input type="radio" value="Hstudent" name="work">중/고생<br>
166 + <input type="radio" value="Ustudent" name="work">대학생<br>
167 + <input type="radio" value="worker" name="work">직장인<br><br>
168 +
169 + <label for="interesting">관심사(중복선택가능):</label><br>
170 + <input type="checkbox" value="movie" name="interesting">영화<br>
171 + <input type="checkbox" value="song" name="interesting">노래<br>
172 + <input type="checkbox" value="study" name="interesting">공부<br>
173 + <input type="checkbox" value="coding" name="interesting">코딩<br><br>
174 +
175 + <input type="submit" value="회원가입신청">
176 + </form>
177 + </div>
178 +
179 +
180 + </div>
181 + </div>
182 +
183 +
184 +</body>
185 +</html>
1 +<!doctype html>
2 +<html>
3 + <head>
4 + <meta charset="utf-8">
5 + <title>KHU chat box model test</title>
6 + <style>
7 + h1,a {
8 + border:5px solid red;
9 + padding:5px;
10 + margin:20px;
11 + width:100px;
12 + }
13 +
14 + </style>
15 + </head>
16 + <body>
17 +
18 + <h1>Test</h1><br> This is <a href="index.html">test</a> site.
19 +
20 + </body>
21 +</html>
1 +var Links={
2 + SetColor:function(color){
3 + // var alist=document.querySelectorAll('a');
4 + // var i =0;
5 + // while(i<alist.length)
6 + // {
7 + // alist[i].style.color=color;
8 + // i+=1;
9 + // }
10 + // }
11 + $('a').css('color',color); //jquery 사용한 것.
12 + }
13 +}
14 +var Body = {
15 + SetColor:function(color){
16 + //document.querySelector('body').style.color= color;
17 + $('body').css('color',color);
18 +
19 + },
20 + SetBackGruondColor:function(color){
21 + //document.querySelector('body').style.backgroundColor= color;
22 + $('body').css('backgroundColor',color);
23 + }
24 +}
25 +
26 +function nightDayHandler(self){
27 + if(self.value==='night')
28 + {
29 + Body.SetBackGruondColor('black')
30 + Body.SetColor('white');
31 + self.value= 'day';
32 +
33 + Links.SetColor('powderblue');
34 +
35 + }else{
36 + Body.SetBackGruondColor('white')
37 + Body.SetColor('black');
38 + self.value= 'night';
39 +
40 + Links.SetColor('blue');
41 + }
42 + }
1 +<!DOCTYPE html>
2 +<html>
3 +<script src="../fetch-master/fetch.js"></script>
4 + <body>
5 + <input type="button" value="fetch" onclick="
6 +
7 + fetch('css').then(function(response){
8 + response.text().then(function(text){
9 + alert(text);
10 + })
11 + });
12 + ">
13 + </body>
14 +</html>
1 +<!doctype html>
2 +<html>
3 +<head>
4 + <title>WEB1 - Welcome</title>
5 + <meta charset="utf-8">
6 + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
7 + <script src="colors.js"></script>
8 + <script src="../fetch-master/fetch.js"></script>
9 +</head>
10 +<body>
11 + <h1><a href="#!welcome">WEB</a></h1>
12 + <h1><a href="index.html">WEB</a></h1>
13 + <h2><a href="welcome.html">Welcome</h2>
14 + <input id="night_day" type="button" value="night" onclick="
15 + nightDayHandler(this);
16 + ">
17 + <ol id="nav">
18 +
19 + </ol>
20 + <article>
21 + </article>
22 + <script>
23 + function fetchPage(name){
24 + fetch(name).then(function(response){
25 + response.text().then(function(text){
26 + document.querySelector('article').innerHTML=text;
27 + })
28 + });
29 + }
30 +
31 + if(location.hash){
32 + fetchPage(location.hash.substr(2));
33 + }else{
34 + fetchPage('welcome');
35 + }
36 + fetch('list').then(function(response){
37 + response.text().then(function(text){
38 + document.querySelector('#nav').innerHTML=text;
39 + })
40 + });
41 +
42 + </script>
43 +</body>
44 +</html>
1 +<!DOCTYPE html>
2 +<html>
3 + <head>
4 + <meta charset="utf-8">
5 + <title></title>
6 + <style>
7 + #grid{
8 + border-color: pink;
9 + display:grid;
10 + grid-template-columns: 150px 1fr;
11 + }
12 + div{
13 + border:5px solid gray;
14 + }
15 + </style>
16 + </head>
17 + <body>
18 + <div id="grid">
19 + <div>NAVIGATION</div>
20 + <div> ARTICLE</div>
21 + </div>
22 + <!-- div(무생무체와 같은 태그 의미가 없음,디자인 용도)
23 + 는 block element span은 inline element -->
24 + </body>
25 +</html>
1 +<!doctype html>
2 +<html>
3 +<head>
4 + <title>WEB - CSS</title>
5 + <meta charset="utf-8">
6 + <style>
7 + body{
8 + margin:0;
9 + }
10 + a {
11 + color:black;
12 + text-decoration: none;
13 + }
14 + h1 {
15 + font-size:45px;
16 + text-align: center;
17 + border-bottom:1px solid gray;
18 + margin:0;
19 + padding:20px;
20 + }
21 + ol{
22 + border-right:1px solid gray;
23 + width:100px;
24 + margin:0;
25 + padding:20px;
26 + }
27 + #grid{
28 + display: grid;
29 + grid-template-columns: 150px 1fr;
30 + }
31 + #grid ol{
32 + padding-left:33px;
33 + }
34 + #grid #article{
35 + padding-left:25px;
36 + }
37 + @media(max-width:800px){
38 + #grid{
39 + display: block;
40 + }
41 + ol{
42 + border-right:none;
43 + }
44 + h1 {
45 + border-bottom:none;
46 + }
47 + }
48 + </style>
49 +</head>
50 +<body>
51 + <h1><a href="index.html">WEB</a></h1>
52 + <div id="grid">
53 + <ol>
54 + <li><a href="1.html">HTML</a></li>
55 + <li><a href="2.html">CSS</a></li>
56 + <li><a href="3.html">JavaScript</a></li>
57 + </ol>
58 + <div id="article">
59 + <h2>CSS</h2>
60 + <p>
61 + Cascading Style Sheets (CSS) is a style sheet language used for describing the presentation of a document written in a markup language.[1] Although most often used to set the visual style of web pages and user interfaces written in HTML and XHTML, the language can be applied to any XML document, including plain XML, SVG and XUL, and is applicable to rendering in speech, or on other media. Along with HTML and JavaScript, CSS is a cornerstone technology used by most websites to create visually engaging webpages, user interfaces for web applications, and user interfaces for many mobile applications.
62 + </p>
63 + </div>
64 + </div>
65 + </body>
66 + </html>
1 +<!DOCTYPE html>
2 +<html>
3 + <head>
4 + <meta charset="utf-8">
5 + <title></title>
6 + </head>
7 + <body>
8 + <h1>how to make object</h1>
9 + <script>
10 + var coworkers = {
11 + "designer":"minsung",
12 + "programmer":"sdy"
13 + };
14 + document.write("programmer: "+coworkers.programmer+"<br>");
15 + document.write("designer: "+coworkers.designer+"<br>");
16 + coworkers.bookkeeper="duru";
17 + document.write("bookkeeper: "+coworkers.bookkeeper+"<br>");
18 + coworkers["data scientist"] ="taeho";
19 + document.write("data scientist: "+coworkers["data scientist"]+"<br>");
20 + </script>
21 +
22 + <h2>iterate</h2>
23 +
24 + <h2>property & method</h2>
25 + <script>
26 + coworker.showAll =function(){
27 + for(var key in this){
28 + document.write(key+' : ' +this[key]+'<br>');
29 + }
30 + }
31 + coworkers.showAll();
32 + </script>
33 + </body>
34 +</html>
1 +<!doctype html>
2 +<html>
3 +<head>
4 +<title>KHU KHU Chat</title>
5 +<meta charset="utf-8">
6 +<link rel="stylesheet" href="style.css">
7 +<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
8 +//color.js 앞에 jquery 써줘야함
9 +</script>
10 +
11 +<script src="colors.js"></script>
12 +</head>
13 +<body>
14 + <input id="night_day" type="button" value="night" onclick="
15 + nightDayHandler(this);
16 + ">
17 + <!-- button2 making and using function -->
18 + <input id="night_day" type="button" value="night" onclick="
19 + nightDayHandler(this);
20 + ">
21 +
22 + <div id="grid">
23 + <ol>
24 + <li><a href="whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
25 + <li><a href="loginmain.html" class="saw">로그인</a></li>
26 + <li><a href="signinmain.html" class="saw">회원가입</a></li>
27 + <li><a href="question.html" class="saw">문의사항</a></li>
28 + <li><a href="afterlogin.html" class="saw">로그인이후</a></li>
29 + </ol>
30 + <div id="article">
31 + <h2>회원가입</h2>
32 + <div id="inputset">
33 + <form class="signinform" action="loginmain.html">
34 + <label for="email">Email:</label><br>
35 + <input type="text" name="email"><br>
36 +
37 + <label for="password">password:</label><br>
38 + <input type="password" name="password"><br>
39 +
40 + <label for="name">이름:</label><br>
41 + <input type="text" name="name"><br>
42 +
43 + <label for="age">나이:</label><br>
44 + <input type="text" name="age"><br><br>
45 +
46 + <label for="sex">성별:</label><br>
47 + <input type="radio" value="man" name="sex">남자<br>
48 + <input type="radio" value="woman" name="sex">여자<br><br>
49 +
50 + <label for="work">직업:</label><br>
51 + <input type="radio" value="nowork" name="work">무직<br>
52 + <input type="radio" value="Hstudent" name="work">중/고생<br>
53 + <input type="radio" value="Ustudent" name="work">대학생<br>
54 + <input type="radio" value="worker" name="work">직장인<br><br>
55 +
56 + <label for="interesting">관심사(중복선택가능):</label><br>
57 + <input type="checkbox" value="movie" name="interesting">영화<br>
58 + <input type="checkbox" value="song" name="interesting">노래<br>
59 + <input type="checkbox" value="study" name="interesting">공부<br>
60 + <input type="checkbox" value="coding" name="interesting">코딩<br><br>
61 +
62 + <input type="submit" value="회원가입신청">
63 + </form>
64 + </div>
65 +
66 +
67 + </div>
68 + </div>
69 +
70 +
71 + </body>
72 + </html>
...@@ -12,11 +12,11 @@ ...@@ -12,11 +12,11 @@
12 <div class="media" id="grid"> 12 <div class="media" id="grid">
13 <div id="category"> 13 <div id="category">
14 <ol class="center"> 14 <ol class="center">
15 - <li><a class="dr-icon" href="service/whatiskhuchat.html">What is KHU chat? </a></li> 15 + <li><a href="service/whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
16 - <li><a class="dr-icon"href="loginmain.html" >로그인</a></li> 16 + <li><a href="loginmain.html" class="saw">로그인</a></li>
17 - <li><a class="dr-icon" href="signinmain.html">회원가입</a></li> 17 + <li><a href="signinmain.html" class="saw">회원가입</a></li>
18 - <li><a class="dr-icon"href="question.html" >문의사항</a></li> 18 + <li><a href="question.html" class="saw">문의사항</a></li>
19 - <li><a class="dr-icon"href="afterlogin.html" >로그인이후</a></li> 19 + <li><a href="afterlogin.html" class="saw">로그인이후</a></li>
20 </ol> 20 </ol>
21 </div> 21 </div>
22 <div id="article"> 22 <div id="article">
......
...@@ -4,37 +4,38 @@ ...@@ -4,37 +4,38 @@
4 <title>KHU KHU Chat</title> 4 <title>KHU KHU Chat</title>
5 <meta charset="utf-8"> 5 <meta charset="utf-8">
6 <link rel="stylesheet" href="style/style.css"> 6 <link rel="stylesheet" href="style/style.css">
7 -<style>
8 7
9 -</style>
10 </head> 8 </head>
11 <body> 9 <body>
12 10
13 <h1><a href="main.html" color:black>KHU Chatting service</a></h1> 11 <h1><a href="main.html" color:black>KHU Chatting service</a></h1>
14 <img src="image/main2.jpg" class="image"> 12 <img src="image/main2.jpg" class="image">
15 13
16 - <div id="grid"> 14 +<div id="grid">
17 - <ol> 15 + <div id="category">
18 - <li><a href="whatiskhuchat.html" class="saw">What is KHU chat? </a></li> 16 + <ol class="center">
17 + <li><a href="service/whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
19 <li><a href="loginmain.html" class="saw">로그인</a></li> 18 <li><a href="loginmain.html" class="saw">로그인</a></li>
20 <li><a href="signinmain.html" class="saw">회원가입</a></li> 19 <li><a href="signinmain.html" class="saw">회원가입</a></li>
21 <li><a href="question.html" class="saw">문의사항</a></li> 20 <li><a href="question.html" class="saw">문의사항</a></li>
21 + <li><a href="afterlogin.html" class="saw">로그인이후</a></li>
22 </ol> 22 </ol>
23 - <div id="article">
24 - <h2>로그인 </h2>
25 - <form class="formlogin" action="member.html" id="login">
26 - <label for="email">mail:</label><br>
27 - <input type="text" id="Email" name="email"><br>
28 - <label for="password">password:</label><br>
29 - <input type="password" id="password" name="password"><br><br>
30 - <input type="submit" value="로그인"><br>
31 - </form>
32 - <form class="formlogin" action="signinmain.html" id="signin">
33 - <input type="submit" value="회원가입">
34 -
35 - </form>
36 -
37 </div> 23 </div>
24 + <article>
25 +
26 + </article>
27 + <div id="article">
28 + <h2><a href=https://www.helpshift.com/glossary/chat-service/
29 + title="what is chat service">chat service란 무엇인가?</a></h2>
30 + <p>This is chating application which chats with your frineds, coworkers and anyone do you want <br>
31 + so enjoy it out sevice.
32 + </p>
33 + <h2><a href=service/whatiskhuchat.html title="what is KHU chat">
34 + 1.What is KHU chat ?</a></h2>
35 + <p>
36 + KHU chat service는 무엇인가요?
37 + </p>
38 </div> 38 </div>
39 +</div>
39 </body> 40 </body>
40 </html> 41 </html>
......
...@@ -13,11 +13,11 @@ ...@@ -13,11 +13,11 @@
13 <div id="grid"> 13 <div id="grid">
14 <div id="category"> 14 <div id="category">
15 <ol class="center"> 15 <ol class="center">
16 - <li><a class="dr-icon" href="service/whatiskhuchat.html" >What is KHU chat? </a></li> 16 + <li><a href="service/whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
17 - <li><a class="dr-icon" href="loginmain.html">로그인</a></li> 17 + <li><a href="loginmain.html" class="saw">로그인</a></li>
18 - <li><a class="dr-icon" href="signinmain.html" >회원가입</a></li> 18 + <li><a href="signinmain.html" class="saw">회원가입</a></li>
19 - <li><a class="dr-icon" href="question.html" >문의사항</a></li> 19 + <li><a href="question.html" class="saw">문의사항</a></li>
20 - <li><a class="dr-icon" href="afterlogin.html" >로그인이후</a></li> 20 + <li><a href="afterlogin.html" class="saw">로그인이후</a></li>
21 </ol> 21 </ol>
22 </div> 22 </div>
23 <div id="article"> 23 <div id="article">
......
1 +<!doctype html>
2 +<html>
3 +<head>
4 +<title>KHU KHU Chat</title>
5 +<meta charset="utf-8">
6 +<link rel="stylesheet" href="../style/style.css">
7 +</head>
8 +<body>
9 +
10 + <h1><a href="../main.html" color:black>KHU Chatting service</a></h1>
11 + <img src="../image/main2.jpg" class="image">
12 +<div id="grid">
13 + <div id="category">
14 + <ol>
15 + <li><a href="whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
16 + <li><a href="../loginmain.html" class="saw">로그인</a></li>
17 + <li><a href="../signinmain.html" class="saw">회원가입</a></li>
18 + <li><a href="../signinmain.html" class="saw">문의사항</a></li>
19 + <li><a href="../afterlogin.html" class="saw">로그인이후</a></li>
20 + </ol>
21 + </div>
22 + <div id="article">
23 + <h2>KHU chat service란?</a></h2>
24 + <p>we have random chat service and
25 + you can talk with freinds who have your interestings.
26 + </p>
27 + <h3>KHU chat의 장점은?</a></h3>
28 + <p>
29 + what difference.
30 + </p>
31 + <h3>KHU chat의 차별성은?</a></h3>
32 + <p>
33 + what difference.
34 + </p>
35 +
36 + </div>
37 +</div>
38 +
39 +</body>
40 +</html>
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
10 </script> 10 </script>
11 <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"> 11 <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js">
12 </script> 12 </script>
13 - 13 +<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
14 <script type="text/javascript"> 14 <script type="text/javascript">
15 $(document).ready(function () { 15 $(document).ready(function () {
16 $('#eValidation').keyup(function () { 16 $('#eValidation').keyup(function () {
...@@ -38,6 +38,9 @@ $('#fValidation, #sValidation').on('keyup', function () { ...@@ -38,6 +38,9 @@ $('#fValidation, #sValidation').on('keyup', function () {
38 38
39 }); 39 });
40 }); 40 });
41 +
42 +
43 +
41 </script> 44 </script>
42 45
43 </head> 46 </head>
...@@ -48,11 +51,11 @@ $('#fValidation, #sValidation').on('keyup', function () { ...@@ -48,11 +51,11 @@ $('#fValidation, #sValidation').on('keyup', function () {
48 <div class="media" id="grid"> 51 <div class="media" id="grid">
49 <div id="category"> 52 <div id="category">
50 <ol class="center"> 53 <ol class="center">
51 - <li><a class="dr-icon" href="service/whatiskhuchat.html" >What is KHU chat? </a></li> 54 + <li><a href="service/whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
52 - <li><a class="dr-icon" href="loginmain.html" >로그인</a></li> 55 + <li><a href="loginmain.html" class="saw">로그인</a></li>
53 - <li><a class="dr-icon" href="signinmain.html" >회원가입</a></li> 56 + <li><a href="signinmain.html" class="saw">회원가입</a></li>
54 - <li><a class="dr-icon" href="question.html" >문의사항</a></li> 57 + <li><a href="question.html" class="saw">문의사항</a></li>
55 - <li><a class="dr-icon" href="afterlogin.html" >로그인이후</a></li> 58 + <li><a href="afterlogin.html" class="saw">로그인이후</a></li>
56 </ol> 59 </ol>
57 </div> 60 </div>
58 <div id="article"> 61 <div id="article">
......
1 +<style>
2 + title{
3 +
4 + }
5 + body
6 + {
7 + margin:0;
8 + }
9 + h1
10 + {
11 + text-align:center;
12 + color:"black";
13 + margin:0;
14 + padding:20px
15 + }
16 + a
17 + {
18 + color:"black";
19 + text-decoration: none;
20 + }
21 + ol
22 + {
23 +
24 + width:150px;
25 + margin:50px;
26 + padding:20px;
27 +
28 + }
29 + .inputset{
30 + margin-bottom: 20px;
31 +
32 +
33 + }
34 + .image
35 + {
36 + display: block;
37 + margin-left: auto;
38 + margin-right: auto;
39 + width: 50%;
40 + margin-bottom:10px;
41 +
42 + }
43 + .saw
44 + {
45 + color: black;
46 + text-decoration: none;
47 + }
48 +
49 + #grid
50 + {
51 + display: grid;
52 + grid-template-columns: 250px 1fr;
53 + border-top:1px solid gray;
54 +
55 + }
56 + #grid ol
57 + {
58 + padding-left: 40px;
59 + margin:0;
60 + font-size: 15px;
61 + }
62 + #grid li
63 + {
64 + padding-top: 10px;
65 + padding-bottom: 10px;
66 + font-size:15px;
67 + }
68 + #grid #article
69 + {
70 + padding-top: 10px;
71 + padding-bottom: 10px;
72 + padding-left: 130px;
73 + border-left:1px solid gray;
74 + /*grid안에 #article */
75 + }
76 +
77 + @media (min-width:300px) and (max-width:700px){
78 + #grid
79 + {
80 + display: block;
81 + }
82 + h1
83 + {
84 + text-align:center;
85 + color:"black";
86 + margin:0;
87 + padding:20px
88 + }
89 + ol
90 + {
91 + border-right:none;
92 + margin-left:35px;
93 + padding-left:60px;
94 + }
95 + #grid #category
96 + {
97 + border-bottom: 1px solid gray;
98 +
99 + }
100 +
101 + #grid ol
102 + {
103 + padding-left: 40px;
104 + margin:0;
105 + font-size: 15px;
106 +
107 + }
108 + #grid li
109 + {
110 + padding-top: 10px;
111 + padding-bottom: 10px;
112 + font-size:15px;
113 +
114 + }
115 + #grid #article
116 + {
117 + padding-top: 10px;
118 + padding-bottom: 10px;
119 + padding-left: 20px;
120 + display: inline-block;
121 + /*grid안에 #article */
122 + }
123 + }
124 +
125 + @media (min-width:700px) and (max-width:1024px){
126 +
127 + #grid
128 + {
129 + display: block;
130 + }
131 + h1
132 + {
133 + text-align:center;
134 + color:"black";
135 + margin:0;
136 + padding:20px
137 + }
138 + ol
139 + {
140 + border-right:none;
141 + margin-left:35px;
142 + padding-left:60px;
143 + display: inline-block;
144 + }
145 + #grid #category
146 + {
147 + border-bottom: 1px solid gray;
148 + text-align: center;
149 + list-style-position: inside;
150 + }
151 +
152 + #grid ol
153 + {
154 + padding-left: 40px;
155 + margin:0;
156 + font-size: 15px;
157 +
158 + }
159 + #grid li
160 + {
161 + padding-top: 10px;
162 + padding-bottom: 10px;
163 + font-size:15px;
164 + }
165 + #grid #article
166 + {
167 + padding-top: 10px;
168 + padding-bottom: 10px;
169 + padding-left: 20px;
170 + text-align: center;
171 + /*grid안에 #article */
172 + }
173 +
174 + }
175 +</style>
1 +# Capstone design
2 +
3 +# function을 만들어서 html 페이지 입력 받아오기
4 +
5 +#html 이름을 수정할때마다 메인페이지의 모든 이름을 수정해야해서 까다롭다
This diff could not be displayed because it is too large.
1 +{
2 + "name": "capstone",
3 + "version": "1.0.0",
4 + "description": "",
5 + "scripts": {
6 + "start": "docker-compose up",
7 + "build": "docker-compose build",
8 + "stop": "docker-compose down",
9 + "clean": "docker system prune -af",
10 + "clean:volumes": "docker volume prune -f",
11 + "seed": "docker exec -it prisma npm run seed",
12 + "reset:db": "docker-compose rm -fv mysql"
13 + },
14 + "author": {
15 + "name": "sdy, kms",
16 + "email": "vel1024@khu.ac.kr"
17 + },
18 + "license": "ISC"
19 +}
...@@ -24,6 +24,7 @@ export default withRouter(({ location }) => { ...@@ -24,6 +24,7 @@ export default withRouter(({ location }) => {
24 const { data: getRoom } = useQuery(GET_ROOM_BY_NAME, { 24 const { data: getRoom } = useQuery(GET_ROOM_BY_NAME, {
25 variables: { roomName }, 25 variables: { roomName },
26 }); 26 });
27 +
27 if (getRoom !== undefined) { 28 if (getRoom !== undefined) {
28 const { 29 const {
29 getRoomByName: { id: roomId }, 30 getRoomByName: { id: roomId },
......
...@@ -3,15 +3,8 @@ import React from 'react'; ...@@ -3,15 +3,8 @@ import React from 'react';
3 3
4 const GlobalGrid = styled.div` 4 const GlobalGrid = styled.div`
5 display: grid; 5 display: grid;
6 - grid-template-colums:auto; 6 + justify-content: space-between;
7 - grid-gap:5px; 7 + grid-template-columns: 150px 150px;
8 - border-radius: 40px;
9 - border: none;
10 - outline: 5px;
11 - text-align: left;
12 - background-color: #ebebeb;
13 - opacity: 0.5;
14 - font-size: 20px;
15 `; 8 `;
16 const Profile_Grid = styled.div` 9 const Profile_Grid = styled.div`
17 display: flex; 10 display: flex;
......
1 +From a40d1b331ec5be474cabb81596b282629cc58ae8 Mon Sep 17 00:00:00 2001
2 +From: MinsoftK <55948211+MinsoftK@users.noreply.github.com>
3 +Date: Thu, 23 Apr 2020 21:56:20 +0900
4 +Subject: [PATCH] make folder for classifing JS, CSS files and correct
5 + directory
6 +
7 +---
8 + front/web/{ => JS}/validation.js | 1 -
9 + front/web/afterlogin.html | 4 ++--
10 + front/web/loginmain.html | 4 ++--
11 + front/web/main.html | 6 +++---
12 + front/web/question.html | 4 ++--
13 + front/web/{ => service}/whatiskhuchat.html | 0
14 + front/web/signinmain.html | 6 +++---
15 + front/web/{ => style}/style.css | 0
16 + front/web/test.md | 4 +++-
17 + 9 files changed, 15 insertions(+), 14 deletions(-)
18 + rename front/web/{ => JS}/validation.js (99%)
19 + rename front/web/{ => service}/whatiskhuchat.html (100%)
20 + rename front/web/{ => style}/style.css (100%)
21 +
22 +diff --git a/front/web/validation.js b/front/web/JS/validation.js
23 +similarity index 99%
24 +rename from front/web/validation.js
25 +rename to front/web/JS/validation.js
26 +index 0e5bc9a..b5fd4c0 100644
27 +--- a/front/web/validation.js
28 ++++ b/front/web/JS/validation.js
29 +@@ -32,7 +32,6 @@ var Password={
30 + }
31 +
32 + function checkValidation(self){
33 +-
34 + if(Email.checkEmail() && Password.checkPassword() ){
35 + return true;
36 + }else return false;
37 +diff --git a/front/web/afterlogin.html b/front/web/afterlogin.html
38 +index 3d5960f..78f9399 100644
39 +--- a/front/web/afterlogin.html
40 ++++ b/front/web/afterlogin.html
41 +@@ -3,7 +3,7 @@
42 + <head>
43 + <title>KHU KHU Chat</title>
44 + <meta charset="utf-8">
45 +-<link rel="stylesheet" href="style.css">
46 ++<link rel="stylesheet" href="style/style.css">
47 + <style>
48 +
49 + </style>
50 +@@ -16,7 +16,7 @@
51 + <div id="grid">
52 + <div id="category">
53 + <ol class="center">
54 +- <li><a href="whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
55 ++ <li><a href="service/whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
56 + <li><a href="loginmain.html" class="saw">로그인</a></li>
57 + <li><a href="signinmain.html" class="saw">회원가입</a></li>
58 + <li><a href="question.html" class="saw">문의사항</a></li>
59 +diff --git a/front/web/loginmain.html b/front/web/loginmain.html
60 +index 174986f..4b32b5c 100644
61 +--- a/front/web/loginmain.html
62 ++++ b/front/web/loginmain.html
63 +@@ -3,7 +3,7 @@
64 + <head>
65 + <title>KHU KHU Chat</title>
66 + <meta charset="utf-8">
67 +-<link rel="stylesheet" href="style.css">
68 ++<link rel="stylesheet" href="style/style.css">
69 + </head>
70 + <body>
71 +
72 +@@ -12,7 +12,7 @@
73 + <div class="media" id="grid">
74 + <div id="category">
75 + <ol class="center">
76 +- <li><a href="whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
77 ++ <li><a href="service/whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
78 + <li><a href="loginmain.html" class="saw">로그인</a></li>
79 + <li><a href="signinmain.html" class="saw">회원가입</a></li>
80 + <li><a href="question.html" class="saw">문의사항</a></li>
81 +diff --git a/front/web/main.html b/front/web/main.html
82 +index 773db1a..955c56b 100644
83 +--- a/front/web/main.html
84 ++++ b/front/web/main.html
85 +@@ -3,8 +3,8 @@
86 + <head>
87 + <title>KHU KHU Chat</title>
88 + <meta charset="utf-8">
89 +-<link rel="stylesheet" href="style.css">
90 +-<script src="validation.js"></script>
91 ++<link rel="stylesheet" href="style/style.css">
92 ++
93 + </head>
94 + <body>
95 +
96 +@@ -14,7 +14,7 @@
97 + <div id="grid">
98 + <div id="category">
99 + <ol class="center">
100 +- <li><a href="whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
101 ++ <li><a href="service/whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
102 + <li><a href="loginmain.html" class="saw">로그인</a></li>
103 + <li><a href="signinmain.html" class="saw">회원가입</a></li>
104 + <li><a href="question.html" class="saw">문의사항</a></li>
105 +diff --git a/front/web/question.html b/front/web/question.html
106 +index 07e5875..5051160 100644
107 +--- a/front/web/question.html
108 ++++ b/front/web/question.html
109 +@@ -3,7 +3,7 @@
110 + <head>
111 + <title>KHU KHU Chat</title>
112 + <meta charset="utf-8">
113 +-<link rel="stylesheet" href="style.css">
114 ++<link rel="stylesheet" href="style/style.css">
115 + </head>
116 + <body>
117 +
118 +@@ -13,7 +13,7 @@
119 + <div id="grid">
120 + <div id="category">
121 + <ol class="center">
122 +- <li><a href="whatiskhuchat.html" class="saw">What is KHU chat?</a></li>
123 ++ <li><a href="service/whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
124 + <li><a href="loginmain.html" class="saw">로그인</a></li>
125 + <li><a href="signinmain.html" class="saw">회원가입</a></li>
126 + <li><a href="question.html" class="saw">문의사항</a></li>
127 +diff --git a/front/web/whatiskhuchat.html b/front/web/service/whatiskhuchat.html
128 +similarity index 100%
129 +rename from front/web/whatiskhuchat.html
130 +rename to front/web/service/whatiskhuchat.html
131 +diff --git a/front/web/signinmain.html b/front/web/signinmain.html
132 +index 03a12ed..34a15aa 100644
133 +--- a/front/web/signinmain.html
134 ++++ b/front/web/signinmain.html
135 +@@ -3,8 +3,8 @@
136 + <head>
137 + <title>KHU KHU Chat</title>
138 + <meta charset="utf-8">
139 +-<link rel="stylesheet" href="style.css">
140 +-<script src="validation.js"></script>
141 ++<link rel="stylesheet" href="style/style.css">
142 ++<script src="JS/validation.js"></script>
143 +
144 + </head>
145 + <body>
146 +@@ -14,7 +14,7 @@
147 + <div class="media" id="grid">
148 + <div id="category">
149 + <ol class="center">
150 +- <li><a href="whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
151 ++ <li><a href="service/whatiskhuchat.html" class="saw">What is KHU chat? </a></li>
152 + <li><a href="loginmain.html" class="saw">로그인</a></li>
153 + <li><a href="signinmain.html" class="saw">회원가입</a></li>
154 + <li><a href="question.html" class="saw">문의사항</a></li>
155 +diff --git a/front/web/style.css b/front/web/style/style.css
156 +similarity index 100%
157 +rename from front/web/style.css
158 +rename to front/web/style/style.css
159 +diff --git a/front/web/test.md b/front/web/test.md
160 +index 9447ef6..2fa325f 100644
161 +--- a/front/web/test.md
162 ++++ b/front/web/test.md
163 +@@ -1,3 +1,5 @@
164 + # Capstone design
165 +
166 +-test
167 ++# function을 만들어서 html 페이지 입력 받아오기
168 ++
169 ++#html 이름을 수정할때마다 메인페이지의 모든 이름을 수정해야해서 까다롭다
170 +--
171 +2.26.0.windows.1
172 +