parse-comcigan 0.3.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -97
- package/bun.lock +175 -0
- package/dist/class.d.ts +43 -0
- package/dist/class.js +140 -0
- package/dist/class.js.map +1 -0
- package/dist/error.d.ts +4 -0
- package/dist/error.js +7 -0
- package/dist/error.js.map +1 -0
- package/dist/index.d.ts +3 -142
- package/dist/index.js +2 -218
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +75 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +11 -5
- package/test.ts +11 -0
- package/tsconfig.json +4 -3
- package/dist/cache.d.ts +0 -8
- package/dist/cache.js +0 -32
- package/dist/cache.js.map +0 -1
- package/src/cache.ts +0 -32
- package/src/index.ts +0 -341
- package/src/types/index.d.ts +0 -45
package/README.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# parse-comcigan
|
|
2
2
|
|
|
3
3
|
컴시간을 파싱하는 라이브러리입니다.
|
|
4
|
-
안드로이드 컴시간알리미 앱에서 파싱합니다.
|
|
5
4
|
아직 학생 시간표밖에 지원하지 않습니다.
|
|
6
5
|
|
|
7
6
|
## 경고
|
|
@@ -13,136 +12,125 @@
|
|
|
13
12
|
|
|
14
13
|
```npm install parse-comcigan```
|
|
15
14
|
|
|
16
|
-
##
|
|
15
|
+
## 사용법
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
## 1. 학교 검색하기
|
|
19
18
|
|
|
20
|
-
Comcigan
|
|
21
|
-
인스턴스를 생성할 때 옵션을 지정할 수 있습니다.
|
|
19
|
+
학교를 검색하려면 먼저 `Comcigan` 클래스를 가져오신 후, `search` 메서드를 호출하시면 됩니다.
|
|
22
20
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
21
|
+
반환:
|
|
22
|
+
|이름|타입|설명|
|
|
23
|
+
|-|-|-|
|
|
24
|
+
|code|number|학교 코드|
|
|
25
|
+
|region|string|지역|
|
|
26
|
+
|name|string|이름|
|
|
27
|
+
의 배열
|
|
28
|
+
|
|
29
|
+
### 예시 코드
|
|
29
30
|
|
|
30
31
|
```typescript
|
|
32
|
+
// Comcigan 가져오기
|
|
31
33
|
import Comcigan from 'parse-comcigan';
|
|
32
34
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"doNotThrow": false, // false일때, status가 4 또는 5로 시작하면 throw 됩니다.
|
|
36
|
-
"debug": (msg) => console.log(msg) // 모듈에서 디버그 메시지를 보내면 콘솔에 출력합니다.
|
|
37
|
-
});
|
|
38
|
-
```
|
|
35
|
+
// 학교 검색
|
|
36
|
+
const schools = await Comcigan.search("서울");
|
|
39
37
|
|
|
40
|
-
|
|
38
|
+
for (const school of schools) {
|
|
39
|
+
console.log();
|
|
40
|
+
console.log(`코드: ${school.code}`);
|
|
41
|
+
console.log(`이름: ${school.name}`);
|
|
42
|
+
console.log(`지역: ${school.region}`);
|
|
43
|
+
}
|
|
44
|
+
```
|
|
41
45
|
|
|
42
|
-
|
|
46
|
+
## 2. 컴시간 인스턴스 생성하기
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
당연하지만 컴시간을 사용하는 학교만 검색됩니다.
|
|
48
|
+
컴시간 인스턴스를 생성해 학교의 여러 정보를 가져올 수 있습니다.
|
|
49
|
+
`new Comcigan(code)`로 컴시간 인스턴스를 생성할 수 있습니다.
|
|
47
50
|
|
|
48
|
-
|
|
49
|
-
|------|------|------|-----------|
|
|
50
|
-
|query|string|Yes|검색어|
|
|
51
|
+
### 예시 코드
|
|
51
52
|
|
|
52
53
|
```typescript
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
});
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
다음을 Promise 형태로 리턴합니다.
|
|
54
|
+
import Comcigan from 'parse-comcigan';
|
|
55
|
+
import readline from 'readline';
|
|
59
56
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|code|number|학교 코드|
|
|
57
|
+
const rl = readline.createInterface({
|
|
58
|
+
"input": process.stdin,
|
|
59
|
+
"output": process.stdout
|
|
60
|
+
});
|
|
65
61
|
|
|
66
|
-
|
|
62
|
+
(async () => {
|
|
63
|
+
// 검색어 입력
|
|
64
|
+
const answer = await new Promise<string>(r => rl.question("학교 이름을 입력해주세요: ", r));
|
|
65
|
+
rl.close();
|
|
66
|
+
|
|
67
|
+
// 학교 검색하기
|
|
68
|
+
const school = (await Comcigan.search(answer))[0];
|
|
69
|
+
|
|
70
|
+
console.log(`검색된 학교:`);
|
|
71
|
+
console.log(`- 이름: ${school.name}`);
|
|
72
|
+
console.log(`- 지역: ${school.region}`);
|
|
73
|
+
console.log();
|
|
74
|
+
|
|
75
|
+
// 컴시간 인스턴스 생성
|
|
76
|
+
const comci = new Comcigan(school.code);
|
|
77
|
+
|
|
78
|
+
// 시간표 조회
|
|
79
|
+
console.log(await comci.timetable({
|
|
80
|
+
"grade": 1,
|
|
81
|
+
"classNum": 6
|
|
82
|
+
}));
|
|
83
|
+
})();
|
|
84
|
+
```
|
|
67
85
|
|
|
68
|
-
|
|
86
|
+
## 3. 시간표 가져오기
|
|
69
87
|
|
|
70
|
-
시간표를
|
|
88
|
+
위에서 생성한 컴시간 인스턴스로 학교의 시간표를 조회할 수 있습니다.
|
|
71
89
|
|
|
72
|
-
|
|
73
|
-
|------|------|------|-----------|
|
|
74
|
-
|options|[GetTimetableOptions](#gettimetableoptions)|Yes|옵션|
|
|
90
|
+
### 예시 코드
|
|
75
91
|
|
|
76
92
|
```typescript
|
|
77
|
-
|
|
78
|
-
"schoolCode": 96211,
|
|
79
|
-
"criteria": "period",
|
|
80
|
-
"grade": 3,
|
|
81
|
-
"classN": 5,
|
|
82
|
-
"without8th": false,
|
|
83
|
-
"nextWeek": true // 다음 주 시간표 가져오기 (등록된 일자가 1개이면 이번 주 시간표를 가져옵니다.)
|
|
84
|
-
}).then(data => {
|
|
85
|
-
console.log(data.timetable[0][7]); // [요일][교시] 다음주 월요일 8교시
|
|
86
|
-
});
|
|
87
|
-
comci.GetTimetable({
|
|
88
|
-
"schoolCode": 96211,
|
|
89
|
-
"criteria": "weekday",
|
|
90
|
-
"grade": 3,
|
|
91
|
-
"classN": 5,
|
|
92
|
-
"without8th": true
|
|
93
|
-
}).then(data => {
|
|
94
|
-
console.log(data.timetable[4][0]); // [교시][요일] 월요일 5교시
|
|
95
|
-
});
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
다음을 Promise 형태로 리턴합니다.
|
|
93
|
+
import Comcigan from 'parse-comcigan';
|
|
99
94
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|changed|string|수정된 날짜 시간|
|
|
104
|
-
|timetable|[ComciganTimetableObject](#comcigantimetableobject)[][]|시간표|
|
|
95
|
+
(async () => {
|
|
96
|
+
// 컴시간 인스턴스 생성
|
|
97
|
+
const comci = new Comcigan(24966);
|
|
105
98
|
|
|
106
|
-
|
|
99
|
+
// 시간표 조회
|
|
100
|
+
console.log(await comci.timetable({
|
|
101
|
+
"grade": 1,
|
|
102
|
+
"classNum": 6
|
|
103
|
+
}));
|
|
104
|
+
})();
|
|
105
|
+
```
|
|
107
106
|
|
|
108
|
-
|
|
107
|
+
## 4. 학교 정보 가져오기
|
|
109
108
|
|
|
110
|
-
|
|
109
|
+
위에서 생성한 컴시간 인스턴스로 학교의 여러 정보를 가져올 수 있습니다.
|
|
111
110
|
|
|
112
|
-
|
|
113
|
-
|------|------|------|-----------|
|
|
114
|
-
|schoolCode|number|Yes|학교 코드|
|
|
111
|
+
### 예시 코드
|
|
115
112
|
|
|
116
113
|
```typescript
|
|
117
|
-
|
|
118
|
-
console.log(data[0]); // 1-1
|
|
119
|
-
});
|
|
120
|
-
```
|
|
114
|
+
import Comcigan from 'parse-comcigan';
|
|
121
115
|
|
|
122
|
-
|
|
116
|
+
(async () => {
|
|
117
|
+
// 컴시간 인스턴스 생성
|
|
118
|
+
const comci = new Comcigan(24966);
|
|
123
119
|
|
|
124
|
-
|
|
120
|
+
// 학교 정보 조회
|
|
121
|
+
console.log(await comci.schoolInfo());
|
|
122
|
+
})();
|
|
123
|
+
```
|
|
125
124
|
|
|
126
|
-
|
|
125
|
+
## 업데이트 로그
|
|
127
126
|
|
|
128
|
-
|
|
129
|
-
|-----|----|-----|-----|
|
|
130
|
-
|subject|string|과목|Yes|
|
|
131
|
-
|changed|string|교사|Yes|
|
|
132
|
-
|original|여기서 original만 빠진 오브젝트|원래 시간표|No|
|
|
127
|
+
### 1.1.0
|
|
133
128
|
|
|
134
|
-
|
|
129
|
+
- 타입 import 가능하게
|
|
135
130
|
|
|
136
|
-
|
|
137
|
-
|------|------|------|-----------|
|
|
138
|
-
|schoolCode|number|Yes|학교 코드|
|
|
139
|
-
|criteria|"weekday" or "period"|Yes|리스트 반환을 어떻게 할지 여부입니다.|
|
|
140
|
-
|grade|number|Yes|학년|
|
|
141
|
-
|classN|number|Yes|반|
|
|
142
|
-
|without8th|boolean|No|8교시를 빼고 리턴할지에 대한 여부입니다.|
|
|
143
|
-
|nextWeek|boolean|No|다음 주 시간표를 반환할지에 대한 여부입니다.|
|
|
131
|
+
### 1.0.0
|
|
144
132
|
|
|
145
|
-
|
|
133
|
+
- 갈아엎기
|
|
146
134
|
|
|
147
135
|
### 0.3.0
|
|
148
136
|
|
package/bun.lock
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 1,
|
|
3
|
+
"configVersion": 0,
|
|
4
|
+
"workspaces": {
|
|
5
|
+
"": {
|
|
6
|
+
"name": "parse-comcigan",
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"axios": "^1.17.0",
|
|
9
|
+
"dayjs": "^1.11.21",
|
|
10
|
+
"iconv-lite": "^0.6.3",
|
|
11
|
+
},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"@types/node": "^22.19.20",
|
|
14
|
+
"nodemon": "^3.1.14",
|
|
15
|
+
"ts-node": "^10.9.2",
|
|
16
|
+
"typescript": "^5.9.3",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
"packages": {
|
|
21
|
+
"@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="],
|
|
22
|
+
|
|
23
|
+
"@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
|
|
24
|
+
|
|
25
|
+
"@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="],
|
|
26
|
+
|
|
27
|
+
"@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="],
|
|
28
|
+
|
|
29
|
+
"@tsconfig/node10": ["@tsconfig/node10@1.0.11", "", {}, "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw=="],
|
|
30
|
+
|
|
31
|
+
"@tsconfig/node12": ["@tsconfig/node12@1.0.11", "", {}, "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="],
|
|
32
|
+
|
|
33
|
+
"@tsconfig/node14": ["@tsconfig/node14@1.0.3", "", {}, "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="],
|
|
34
|
+
|
|
35
|
+
"@tsconfig/node16": ["@tsconfig/node16@1.0.4", "", {}, "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA=="],
|
|
36
|
+
|
|
37
|
+
"@types/node": ["@types/node@22.19.20", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-6tELRwSDYWW9EdZhbeZmYGZ1/7Djkt+Ah3/ScEYT9cDord7UJzasR/4D3VONg9tQI5CDp+/CZC1AXj2pCFOvpw=="],
|
|
38
|
+
|
|
39
|
+
"acorn": ["acorn@8.14.1", "", { "bin": "bin/acorn" }, "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg=="],
|
|
40
|
+
|
|
41
|
+
"acorn-walk": ["acorn-walk@8.3.4", "", { "dependencies": { "acorn": "^8.11.0" } }, "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g=="],
|
|
42
|
+
|
|
43
|
+
"agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="],
|
|
44
|
+
|
|
45
|
+
"anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="],
|
|
46
|
+
|
|
47
|
+
"arg": ["arg@4.1.3", "", {}, "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="],
|
|
48
|
+
|
|
49
|
+
"asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="],
|
|
50
|
+
|
|
51
|
+
"axios": ["axios@1.17.0", "", { "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw=="],
|
|
52
|
+
|
|
53
|
+
"balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
|
|
54
|
+
|
|
55
|
+
"binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="],
|
|
56
|
+
|
|
57
|
+
"brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="],
|
|
58
|
+
|
|
59
|
+
"braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
|
|
60
|
+
|
|
61
|
+
"call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
|
|
62
|
+
|
|
63
|
+
"chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="],
|
|
64
|
+
|
|
65
|
+
"combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],
|
|
66
|
+
|
|
67
|
+
"create-require": ["create-require@1.1.1", "", {}, "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="],
|
|
68
|
+
|
|
69
|
+
"dayjs": ["dayjs@1.11.21", "", {}, "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA=="],
|
|
70
|
+
|
|
71
|
+
"debug": ["debug@4.4.0", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA=="],
|
|
72
|
+
|
|
73
|
+
"delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="],
|
|
74
|
+
|
|
75
|
+
"diff": ["diff@4.0.2", "", {}, "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="],
|
|
76
|
+
|
|
77
|
+
"dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
|
|
78
|
+
|
|
79
|
+
"es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
|
|
80
|
+
|
|
81
|
+
"es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
|
|
82
|
+
|
|
83
|
+
"es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],
|
|
84
|
+
|
|
85
|
+
"es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="],
|
|
86
|
+
|
|
87
|
+
"fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
|
|
88
|
+
|
|
89
|
+
"follow-redirects": ["follow-redirects@1.16.0", "", {}, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="],
|
|
90
|
+
|
|
91
|
+
"form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="],
|
|
92
|
+
|
|
93
|
+
"fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
|
|
94
|
+
|
|
95
|
+
"function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
|
|
96
|
+
|
|
97
|
+
"get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
|
|
98
|
+
|
|
99
|
+
"get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
|
|
100
|
+
|
|
101
|
+
"glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
|
|
102
|
+
|
|
103
|
+
"gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
|
|
104
|
+
|
|
105
|
+
"has-flag": ["has-flag@3.0.0", "", {}, "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="],
|
|
106
|
+
|
|
107
|
+
"has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
|
|
108
|
+
|
|
109
|
+
"has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="],
|
|
110
|
+
|
|
111
|
+
"hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
|
|
112
|
+
|
|
113
|
+
"https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="],
|
|
114
|
+
|
|
115
|
+
"iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="],
|
|
116
|
+
|
|
117
|
+
"ignore-by-default": ["ignore-by-default@1.0.1", "", {}, "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA=="],
|
|
118
|
+
|
|
119
|
+
"is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="],
|
|
120
|
+
|
|
121
|
+
"is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
|
|
122
|
+
|
|
123
|
+
"is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
|
|
124
|
+
|
|
125
|
+
"is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
|
|
126
|
+
|
|
127
|
+
"make-error": ["make-error@1.3.6", "", {}, "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="],
|
|
128
|
+
|
|
129
|
+
"math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
|
|
130
|
+
|
|
131
|
+
"mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
|
|
132
|
+
|
|
133
|
+
"mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
|
|
134
|
+
|
|
135
|
+
"minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="],
|
|
136
|
+
|
|
137
|
+
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
|
138
|
+
|
|
139
|
+
"nodemon": ["nodemon@3.1.14", "", { "dependencies": { "chokidar": "^3.5.2", "debug": "^4", "ignore-by-default": "^1.0.1", "minimatch": "^10.2.1", "pstree.remy": "^1.1.8", "semver": "^7.5.3", "simple-update-notifier": "^2.0.0", "supports-color": "^5.5.0", "touch": "^3.1.0", "undefsafe": "^2.0.5" }, "bin": { "nodemon": "bin/nodemon.js" } }, "sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw=="],
|
|
140
|
+
|
|
141
|
+
"normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="],
|
|
142
|
+
|
|
143
|
+
"picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
|
|
144
|
+
|
|
145
|
+
"proxy-from-env": ["proxy-from-env@2.1.0", "", {}, "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="],
|
|
146
|
+
|
|
147
|
+
"pstree.remy": ["pstree.remy@1.1.8", "", {}, "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w=="],
|
|
148
|
+
|
|
149
|
+
"readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="],
|
|
150
|
+
|
|
151
|
+
"safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="],
|
|
152
|
+
|
|
153
|
+
"semver": ["semver@7.7.1", "", { "bin": "bin/semver.js" }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="],
|
|
154
|
+
|
|
155
|
+
"simple-update-notifier": ["simple-update-notifier@2.0.0", "", { "dependencies": { "semver": "^7.5.3" } }, "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w=="],
|
|
156
|
+
|
|
157
|
+
"supports-color": ["supports-color@5.5.0", "", { "dependencies": { "has-flag": "^3.0.0" } }, "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="],
|
|
158
|
+
|
|
159
|
+
"to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
|
|
160
|
+
|
|
161
|
+
"touch": ["touch@3.1.1", "", { "bin": { "nodetouch": "bin/nodetouch.js" } }, "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA=="],
|
|
162
|
+
|
|
163
|
+
"ts-node": ["ts-node@10.9.2", "", { "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", "@tsconfig/node16": "^1.0.2", "acorn": "^8.4.1", "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "peerDependencies": { "@swc/core": ">=1.2.50", "@swc/wasm": ">=1.2.50", "@types/node": "*", "typescript": ">=2.7" }, "optionalPeers": ["@swc/core", "@swc/wasm"], "bin": { "ts-node": "dist/bin.js", "ts-node-cwd": "dist/bin-cwd.js", "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js", "ts-script": "dist/bin-script-deprecated.js" } }, "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ=="],
|
|
164
|
+
|
|
165
|
+
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
|
|
166
|
+
|
|
167
|
+
"undefsafe": ["undefsafe@2.0.5", "", {}, "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA=="],
|
|
168
|
+
|
|
169
|
+
"undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
|
|
170
|
+
|
|
171
|
+
"v8-compile-cache-lib": ["v8-compile-cache-lib@3.0.1", "", {}, "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="],
|
|
172
|
+
|
|
173
|
+
"yn": ["yn@3.1.1", "", {}, "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="],
|
|
174
|
+
}
|
|
175
|
+
}
|
package/dist/class.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ComciganTimetable } from "./types/index.js";
|
|
2
|
+
export default class Comcigan {
|
|
3
|
+
code: number;
|
|
4
|
+
constructor(code: number);
|
|
5
|
+
private _data;
|
|
6
|
+
/**
|
|
7
|
+
* 학교를 검색합니다.
|
|
8
|
+
*
|
|
9
|
+
* @param query 검색어
|
|
10
|
+
* @returns 검색 결과
|
|
11
|
+
*/
|
|
12
|
+
static search(query: string): Promise<{
|
|
13
|
+
code: number;
|
|
14
|
+
region: string;
|
|
15
|
+
name: string;
|
|
16
|
+
}[]>;
|
|
17
|
+
private _getdata;
|
|
18
|
+
/**
|
|
19
|
+
* 학교의 정보를 가져옵니다.
|
|
20
|
+
*
|
|
21
|
+
* @returns 학교의 정보
|
|
22
|
+
*/
|
|
23
|
+
schoolInfo(): Promise<{
|
|
24
|
+
changedAt: Date;
|
|
25
|
+
classes: number[];
|
|
26
|
+
times: {
|
|
27
|
+
number: number;
|
|
28
|
+
start: `${number}:${number}`;
|
|
29
|
+
}[];
|
|
30
|
+
code: number;
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* 시간표를 조회합니다.
|
|
34
|
+
*
|
|
35
|
+
* @param options 시간표 옵션
|
|
36
|
+
* @returns 시간표
|
|
37
|
+
*/
|
|
38
|
+
timetable(options: {
|
|
39
|
+
"grade": number;
|
|
40
|
+
"classNum": number;
|
|
41
|
+
"week"?: number;
|
|
42
|
+
}): Promise<ComciganTimetable>;
|
|
43
|
+
}
|
package/dist/class.js
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import ComciganError from "./error.js";
|
|
11
|
+
import axios from "axios";
|
|
12
|
+
import iconv from "iconv-lite";
|
|
13
|
+
import dayjs from "dayjs";
|
|
14
|
+
axios.defaults.validateStatus = () => true;
|
|
15
|
+
function splitData(dat) {
|
|
16
|
+
const d = String(dat).match(/\d{1,3}(?=(\d{3})+(?!\d))|\d{1,3}$/g);
|
|
17
|
+
if (!d)
|
|
18
|
+
return -1;
|
|
19
|
+
return d.reverse().map(Number);
|
|
20
|
+
}
|
|
21
|
+
export default class Comcigan {
|
|
22
|
+
constructor(code) {
|
|
23
|
+
this.code = code;
|
|
24
|
+
this._data = [];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 학교를 검색합니다.
|
|
28
|
+
*
|
|
29
|
+
* @param query 검색어
|
|
30
|
+
* @returns 검색 결과
|
|
31
|
+
*/
|
|
32
|
+
static search(query) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const euckr = Array.from(iconv.encode(query, "euc-kr"))
|
|
35
|
+
.map(byte => '%' + byte.toString(16).toUpperCase().padStart(2, '0'))
|
|
36
|
+
.join('');
|
|
37
|
+
const r = yield axios.get("http://comci.net:4082/36179?17384l" + euckr);
|
|
38
|
+
const obj = JSON.parse(r.data.substring(0, r.data.lastIndexOf("}") + 1));
|
|
39
|
+
return obj.학교검색
|
|
40
|
+
.filter(v => v[3] !== 0)
|
|
41
|
+
.map(v => ({
|
|
42
|
+
"code": v[3],
|
|
43
|
+
"region": v[1],
|
|
44
|
+
"name": v[2]
|
|
45
|
+
}));
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
_getdata(index) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
const idx = index !== null && index !== void 0 ? index : 1;
|
|
51
|
+
if (this._data[idx])
|
|
52
|
+
return this._data[idx];
|
|
53
|
+
const route = btoa(`73629_${this.code}_0_${idx}`);
|
|
54
|
+
const r = yield axios.get(`http://comci.net:4082/36179?${route}`);
|
|
55
|
+
if (r.data.startsWith("{}"))
|
|
56
|
+
throw new ComciganError(`학교 정보를 가져오는데 실패했어요. 학교 코드가 올바른지 확인해주세요.`);
|
|
57
|
+
const obj = JSON.parse(r.data.substring(0, r.data.lastIndexOf("}") + 1));
|
|
58
|
+
this._data[idx] = obj;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 학교의 정보를 가져옵니다.
|
|
63
|
+
*
|
|
64
|
+
* @returns 학교의 정보
|
|
65
|
+
*/
|
|
66
|
+
schoolInfo() {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
yield this._getdata();
|
|
69
|
+
const data = this._data[1];
|
|
70
|
+
return {
|
|
71
|
+
"changedAt": dayjs(data.자료244, "YYYY-MM-DD HH:mm:ss").toDate(),
|
|
72
|
+
"classes": data.학급수.slice(1),
|
|
73
|
+
"times": data.일과시간.map(v => ({
|
|
74
|
+
"number": Number(v.slice(0, 1)),
|
|
75
|
+
"start": v.slice(2, 7),
|
|
76
|
+
})),
|
|
77
|
+
"code": this.code
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 시간표를 조회합니다.
|
|
83
|
+
*
|
|
84
|
+
* @param options 시간표 옵션
|
|
85
|
+
* @returns 시간표
|
|
86
|
+
*/
|
|
87
|
+
timetable(options) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
var _a, _b, _c, _d;
|
|
90
|
+
const { grade, classNum, week } = options;
|
|
91
|
+
if (!grade || !classNum)
|
|
92
|
+
throw new ComciganError("학년 (grade), 반 (classNum)을 제공해주세요.");
|
|
93
|
+
yield this._getdata(week);
|
|
94
|
+
const data = this._data[week !== null && week !== void 0 ? week : 1];
|
|
95
|
+
const toReturn = [];
|
|
96
|
+
// 자료481: 현재 데이터
|
|
97
|
+
// 자료147: 원본 데이터
|
|
98
|
+
// 자료446: 선생님
|
|
99
|
+
// 자료492: 과목
|
|
100
|
+
for (let day = 1; day <= 5; day++) {
|
|
101
|
+
const dayItems = [];
|
|
102
|
+
for (let time = 1; time <= 8; time++) {
|
|
103
|
+
const now = splitData(data.자료481[grade][classNum][day][time]);
|
|
104
|
+
if (now === -1)
|
|
105
|
+
continue;
|
|
106
|
+
const subject = data.자료492[now[1]];
|
|
107
|
+
const teacher = data.자료446[now[0]];
|
|
108
|
+
const classRoom = data.자료245[grade][classNum][day][time];
|
|
109
|
+
const classRoomAvailable = classRoom !== undefined && classRoom !== "";
|
|
110
|
+
const origin = splitData((_d = (_c = (_b = (_a = data.자료147) === null || _a === void 0 ? void 0 : _a[grade]) === null || _b === void 0 ? void 0 : _b[classNum]) === null || _c === void 0 ? void 0 : _c[day]) === null || _d === void 0 ? void 0 : _d[time]);
|
|
111
|
+
if (origin !== -1) {
|
|
112
|
+
const newSubject = data.자료492[origin[1]];
|
|
113
|
+
const newTeacher = data.자료446[origin[0]];
|
|
114
|
+
dayItems.push({
|
|
115
|
+
subject,
|
|
116
|
+
teacher,
|
|
117
|
+
"classRoom": classRoomAvailable ? classRoom.split("_")[1] : undefined,
|
|
118
|
+
"original": newSubject === subject && newTeacher === teacher ? undefined : {
|
|
119
|
+
"subject": newSubject,
|
|
120
|
+
"teacher": newTeacher
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
dayItems.push({
|
|
126
|
+
subject,
|
|
127
|
+
teacher,
|
|
128
|
+
"classRoom": classRoomAvailable ? classRoom : undefined
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
toReturn[day - 1] = {
|
|
132
|
+
"total": dayItems.length,
|
|
133
|
+
"items": dayItems
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return toReturn;
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"class.js","sourceRoot":"","sources":["../src/class.ts"],"names":[],"mappings":"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"}
|
package/dist/error.d.ts
ADDED
package/dist/error.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,KAAK;IAC5C,YACW,OAAe;QACtB,KAAK,CAAC,OAAO,CAAC,CAAC;QADR,YAAO,GAAP,OAAO,CAAQ;IACN,CAAC;CAGxB"}
|