parse-comcigan 1.0.0 → 1.1.1

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 CHANGED
@@ -124,6 +124,14 @@ import Comcigan from 'parse-comcigan';
124
124
 
125
125
  ## 업데이트 로그
126
126
 
127
+ ### 1.1.1
128
+
129
+ - 외부에서 tsconfig가 제대로 인식되지 않는 버그 수정
130
+
131
+ ### 1.1.0
132
+
133
+ - 타입 import 가능하게
134
+
127
135
  ### 1.0.0
128
136
 
129
137
  - 갈아엎기
@@ -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":";;;;;;;;;AAAA,OAAO,aAAa,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,KAAK,CAAC,QAAQ,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;AAE3C,SAAS,SAAS,CAAC,GAAQ;IACvB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACnE,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IAClB,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,QAAQ;IACzB,YACW,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;QAGf,UAAK,GAAsB,EAAE,CAAC;IAFlC,CAAC;IAIL;;;;;OAKG;IACI,MAAM,CAAO,MAAM,CAAC,KAAa;;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;iBAClD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACnE,IAAI,CAAC,EAAE,CAAC,CAAC;YAEd,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAS,oCAAoC,GAAG,KAAK,CAAC,CAAC;YAChF,MAAM,GAAG,GAAsB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5F,OAAO,GAAG,CAAC,IAAI;iBACV,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;iBACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACP,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBACZ,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBACd,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;aACW,CAAA,CAAC,CAAC;QACrC,CAAC;KAAA;IAEa,QAAQ,CAAC,KAAc;;YACjC,MAAM,GAAG,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;YAElD,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAS,+BAA+B,KAAK,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,aAAa,CAAC,yCAAyC,CAAC,CAAC;YAChG,MAAM,GAAG,GAAoB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1F,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC1B,CAAC;KAAA;IAED;;;;OAIG;IACU,UAAU;;YACnB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAE3B,OAAO;gBACH,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,MAAM,EAAE;gBAC9D,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC5B,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBACzB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC/B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAA0B;iBAClD,CAAC,CAAC;gBACH,MAAM,EAAE,IAAI,CAAC,IAAI;aACS,CAAC;QACnC,CAAC;KAAA;IAED;;;;;OAKG;IACU,SAAS,CAAC,OAItB;;;YACG,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;YAC1C,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,aAAa,CAAC,mCAAmC,CAAC,CAAC;YACtF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,CAAC,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAsB,EAAE,CAAC;YAEvC,gBAAgB;YAChB,gBAAgB;YAChB,aAAa;YACb,YAAY;YAEZ,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAA4B,EAAE,CAAC;gBAE7C,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC;oBACnC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC9D,IAAI,GAAG,KAAK,CAAC,CAAC;wBAAE,SAAS;oBAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;oBACzD,MAAM,kBAAkB,GAAG,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,CAAC;oBAEvE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAA,MAAA,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAG,KAAK,CAAC,0CAAG,QAAQ,CAAC,0CAAG,GAAG,CAAC,0CAAG,IAAI,CAAC,CAAC,CAAC;oBACzE,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;wBAChB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBACzC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBAEzC,QAAQ,CAAC,IAAI,CAAC;4BACV,OAAO;4BACP,OAAO;4BACP,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAE,SAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;4BACjF,UAAU,EAAE,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gCACvE,SAAS,EAAE,UAAU;gCACrB,SAAS,EAAE,UAAU;6BACxB;yBACJ,CAAC,CAAC;wBACH,SAAS;oBACb,CAAC;oBAED,QAAQ,CAAC,IAAI,CAAC;wBACV,OAAO;wBACP,OAAO;wBACP,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;qBAC1D,CAAC,CAAC;gBACP,CAAC;gBAED,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG;oBAChB,OAAO,EAAE,QAAQ,CAAC,MAAM;oBACxB,OAAO,EAAE,QAAQ;iBACpB,CAAC;YACN,CAAC;YAED,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;CACJ"}
package/dist/index.d.ts CHANGED
@@ -1,43 +1,3 @@
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
- }
1
+ import Comcigan from "./class.js";
2
+ export default Comcigan;
3
+ export type * from './types/index.d.ts';
package/dist/index.js CHANGED
@@ -1,140 +1,3 @@
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
- }
1
+ import Comcigan from "./class.js";
2
+ export default Comcigan;
140
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,75 @@
1
+ export type ComciganSchool = {
2
+ /** 지역 */
3
+ "region": string;
4
+ /** 이름 */
5
+ "name": string;
6
+ /** 코드 */
7
+ "code": number;
8
+ };
9
+ export type ComciganSearchRaw = {
10
+ "학교검색": [number, string, string, number][];
11
+ };
12
+ export type ComciganTimetableItem = {
13
+ /** 과목 */
14
+ "subject": string;
15
+ /** 교사 */
16
+ "teacher": string;
17
+ /** 특별실 */
18
+ "classRoom"?: string;
19
+ /** 원래 시간표 */
20
+ "original"?: Omit<ComciganTimetableItem, "original" | "classRoom">;
21
+ };
22
+ export type ComciganTimetable = {
23
+ /** 총 교시 수 */
24
+ "total": number;
25
+ /** 시간표 아이템 */
26
+ "items": ComciganTimetableItem[];
27
+ }[];
28
+ export type ComciganSchoolInfo = {
29
+ /** 일과시간 */
30
+ "times": {
31
+ /** 교시 */
32
+ "number": number;
33
+ /** 시:분 */
34
+ "start": `${number}:${number}`;
35
+ }[];
36
+ /** 학년 마다 학급 수 */
37
+ "classes": number[];
38
+ /** 시간표 변경 날짜 */
39
+ "changedAt": Date;
40
+ /** 학교 코드 */
41
+ "code": number;
42
+ };
43
+ export interface ComciganRawData {
44
+ "교사수": number;
45
+ "학급수": number[];
46
+ "요일별시수": number[][];
47
+ "전일제": number[];
48
+ "버젼": string;
49
+ "동시수업수": number;
50
+ "담임": number[][];
51
+ "가상학급수": number[];
52
+ "전체학년": number[];
53
+ "특별실수": number;
54
+ "열람제한일": string;
55
+ "학기시작일자": string;
56
+ "학교명": string;
57
+ "지역명": string;
58
+ "학년도": number;
59
+ "분리": number;
60
+ "강의실": number;
61
+ "소규모학급": number;
62
+ "변경알림": number;
63
+ "시작일": string;
64
+ "일과시간": string[];
65
+ "일자자료": [number, string][];
66
+ "오늘r": number;
67
+ "자료147": any;
68
+ "자료244": string;
69
+ "자료245": any;
70
+ "자료446": string[];
71
+ "자료481": any;
72
+ "자료492": any;
73
+ "자료542": any;
74
+ "동시그룹": (number | number[])[];
75
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-comcigan",
3
- "version": "1.0.0",
3
+ "version": "1.1.1",
4
4
  "description": "컴시간 알리미에서 시간표를 가져오는 라이브러리입니다.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -15,6 +15,10 @@
15
15
  "watch": "tsc --watch",
16
16
  "test": "npm run pack && node \"test.js\""
17
17
  },
18
+ "exports": {
19
+ "types": "./src/types/index.d.ts",
20
+ "default": "./dist/index.js"
21
+ },
18
22
  "devDependencies": {
19
23
  "@types/node": "^22.19.20",
20
24
  "nodemon": "^3.1.14",
package/tsconfig.json CHANGED
@@ -21,7 +21,8 @@
21
21
  "./node_modules/@types"
22
22
  ]
23
23
  },
24
- "include": [
25
- "src/**/*"
24
+ "exclude": [
25
+ "./test.ts",
26
+ "./dist/*/**"
26
27
  ]
27
28
  }
package/test.ts DELETED
@@ -1,9 +0,0 @@
1
- import Comcigan from './dist/index.js';
2
-
3
- (async () => {
4
- // 컴시간 인스턴스 생성
5
- const comci = new Comcigan(41896);
6
-
7
- // 시간표 조회
8
- console.log(await comci.schoolInfo());
9
- })();