dongnelibrary 0.3.9 → 0.3.10

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.
@@ -0,0 +1,3 @@
1
+ [ 1255ms] [ERROR] Failed to load resource: net::ERR_NAME_NOT_RESOLVED @ https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL:0
2
+ [ 1475ms] Uncaught ReferenceError: proj4 is not defined
3
+ at <anonymous> (https://map.ngii.go.kr/openapi/wmts_ngiiMap_v6.4.3.js?apikey=956A18AC72966E2A0CABF30959636811:3:0)
@@ -0,0 +1 @@
1
+ [ 1343ms] [WARNING] cdn.tailwindcss.com should not be used in production. To use Tailwind CSS in production, install it as a PostCSS plugin or use the Tailwind CLI: https://tailwindcss.com/docs/installation @ https://cdn.tailwindcss.com/:63
@@ -0,0 +1 @@
1
+ [ 545ms] [WARNING] cdn.tailwindcss.com should not be used in production. To use Tailwind CSS in production, install it as a PostCSS plugin or use the Tailwind CLI: https://tailwindcss.com/docs/installation @ https://cdn.tailwindcss.com/:63
@@ -0,0 +1 @@
1
+ [ 541ms] [WARNING] cdn.tailwindcss.com should not be used in production. To use Tailwind CSS in production, install it as a PostCSS plugin or use the Tailwind CLI: https://tailwindcss.com/docs/installation @ https://cdn.tailwindcss.com/:63
package/API.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # DongneLibrary API Reference
2
2
 
3
- A JavaScript/TypeScript library for checking book availability across 160+ Korean public library branches in Gyeonggi Province (경기도).
3
+ A JavaScript/TypeScript library for checking book availability across 180+ Korean public library branches.
4
4
 
5
5
  ## Installation
6
6
 
@@ -192,7 +192,7 @@ Returns an array of all supported library branch names.
192
192
 
193
193
  #### Returns
194
194
 
195
- `string[]` - Array of library names (160+ branches)
195
+ `string[]` - Array of library names (180+ branches)
196
196
 
197
197
  #### Example
198
198
 
@@ -226,6 +226,47 @@ console.log(urls);
226
226
 
227
227
  ---
228
228
 
229
+ ### getAllModuleNames()
230
+
231
+ Returns an array of all library system module names.
232
+
233
+ #### Returns
234
+
235
+ `string[]` - Array of module names
236
+
237
+ #### Example
238
+
239
+ ```javascript
240
+ const modules = dongnelibrary.getAllModuleNames();
241
+ console.log(modules);
242
+ // ['경기교육통합도서관', '군포시도서관', '성남시도서관', ...]
243
+ ```
244
+
245
+ ---
246
+
247
+ ### isModuleName(name)
248
+
249
+ Checks if a given name is a library system module name.
250
+
251
+ #### Parameters
252
+
253
+ | Parameter | Type | Required | Description |
254
+ | --------- | -------- | -------- | ---------------------- |
255
+ | `name` | `string` | Yes | Name to check |
256
+
257
+ #### Returns
258
+
259
+ `boolean` - `true` if the name is a module name
260
+
261
+ #### Example
262
+
263
+ ```javascript
264
+ dongnelibrary.isModuleName("성남시도서관"); // true
265
+ dongnelibrary.isModuleName("판교도서관"); // false (branch name, not module name)
266
+ ```
267
+
268
+ ---
269
+
229
270
  ## Types
230
271
 
231
272
  ### SearchResult
@@ -293,8 +334,9 @@ type SearchCompleteCallback = (
293
334
  | `suwon` | 수원시도서관 | Suwon City |
294
335
  | `yjlib` | 여주시립도서관 | Yeoju City |
295
336
  | `yongin` | 용인시도서관 | Yongin City |
337
+ | `jeju` | 제주시도서관 | Jeju City |
296
338
 
297
- Use `getAllLibraryNames()` to see all 160+ individual branch names.
339
+ Use `getAllLibraryNames()` to see all 180+ individual branch names.
298
340
 
299
341
  ---
300
342
 
@@ -304,6 +346,9 @@ Use `getAllLibraryNames()` to see all 160+ individual branch names.
304
346
  # Interactive mode
305
347
  npx dongnelibrary -i
306
348
 
349
+ # Interactive mode (choose by library system)
350
+ npx dongnelibrary -m
351
+
307
352
  # Search specific library
308
353
  npx dongnelibrary -t "해리포터" -l "판교도서관"
309
354
 
@@ -320,7 +365,14 @@ See `dongnelibrary --help` for all options.
320
365
  The package includes TypeScript declarations. Import types directly:
321
366
 
322
367
  ```typescript
323
- import dongnelibrary, { SearchResult, SearchError, Book } from "dongnelibrary";
368
+ import dongnelibrary, {
369
+ SearchResult,
370
+ SearchError,
371
+ SearchOptionsMain,
372
+ SearchCallback,
373
+ SearchCompleteCallback,
374
+ Book,
375
+ } from "dongnelibrary";
324
376
  ```
325
377
 
326
378
  ---
package/README.md CHANGED
@@ -19,6 +19,7 @@
19
19
  npm run build
20
20
 
21
21
  node ./dist/cli.js -i
22
+ node ./dist/cli.js -m
22
23
  node ./dist/cli.js -a
23
24
  node ./dist/cli.js -t 별 -l 남양
24
25
  node ./dist/cli.js -t 별 -l 흥천,판교
@@ -31,6 +32,7 @@
31
32
 
32
33
  npm install dongnelibrary@latest -g
33
34
  dongnelibrary -i
35
+ dongnelibrary -m
34
36
  dongnelibrary -a
35
37
  dongnelibrary -t 별 -l 남양
36
38
  dongnelibrary -t 별 -l 흥천,판교
@@ -43,6 +45,7 @@
43
45
  ## Run with npx
44
46
 
45
47
  npx dongnelibrary -i
48
+ npx dongnelibrary -m
46
49
  npx dongnelibrary -a
47
50
  npx dongnelibrary -t 별 -l 남양
48
51
  npx dongnelibrary -t 별 -l 흥천,판교
@@ -59,6 +62,7 @@
59
62
  ### run examples
60
63
 
61
64
  docker run -it --rm ghcr.io/afrontend/dongnelibrary -i
65
+ docker run -it --rm ghcr.io/afrontend/dongnelibrary -m
62
66
  docker run --rm ghcr.io/afrontend/dongnelibrary -a
63
67
  docker run --rm ghcr.io/afrontend/dongnelibrary -t 별 -l 남양
64
68
  docker run --rm ghcr.io/afrontend/dongnelibrary -t 별 -l 흥천,판교
@@ -74,6 +78,7 @@
74
78
  ### run examples
75
79
 
76
80
  docker run -it dongnelibrary -i
81
+ docker run -it dongnelibrary -m
77
82
  docker run dongnelibrary -a
78
83
  docker run dongnelibrary -t 별 -l "남양"
79
84
  docker run dongnelibrary -t 별 -l "흥천,판교"
@@ -145,6 +150,7 @@ console.log(results.length + " 개의 도서관을 검색했습니다.");
145
150
  - [수원시도서관][suwon-url] (선경도서관,수원중앙도서관,창룡도서관,화서다산도서관,호매실도서관,서수원도서관,한림도서관,버드내도서관,북수원도서관,대추골도서관,일월도서관,광교홍재도서관,태장마루도서관,광교푸른숲도서관,매여울도서관,망포글빛도서관,슬기샘도서관,지혜샘어린이도서관,바른샘어린이도서관,한아름도서관,반달어린이도서관,사랑샘도서관,희망샘도서관)
146
151
  - [용인시도서관][yongin-url] (수지도서관,구갈희망누리도서관,구성도서관,기흥도서관,남사도서관,동백도서관,동천도서관,모현도서관,보라도서관,상현도서관,서농도서관,성복도서관,용인중앙도서관,양지해밀도서관,영덕도서관,이동꿈틀도서관,죽전도서관,청덕도서관,포곡도서관,흥덕도서관,기흥동행정복지센터스마트도서관,기흥역스마트도서관,동천동행정복지센터스마트도서관,마북동행정복지센터스마트도서관,보정동행정복지센터스마트도서관,상갈동행정복지센터스마트도서관,상하동행정복지센터스마트도서관,성복역스마트도서관,시청스마트도서관,신봉동행정복지센터스마트도서관,역북동행정복지센터스마트도서관,용인중앙시장역스마트도서관,원삼면스마트도서관,유방어린이공원스마트도서관,죽전역스마트도서관,고림다온작은도서관,남사맑은누리작은도서관,백암면작은도서관,상현1동작은도서관,상현2동작은도서관,이동천리작은도서관)
147
152
  - [여주시립도서관][yjlib-url] (여주도서관,세종도서관,점동도서관,여주기적의도서관,흥천도서관,금사도서관,대신도서관,산북작은도서관,북내작은도서관,여주역스마트도서관,이마트스마트도서관)
153
+ - [제주시도서관][jeju-url] (한라도서관,우당도서관,탐라도서관,제주시기적의도서관,애월도서관,조천읍도서관,한경도서관,삼매봉도서관,중앙도서관,동부도서관,서부도서관,서귀포기적의도서관,성산일출도서관,안덕산방도서관,표선도서관,꿈바당어린이도서관)
148
154
 
149
155
  ## 마무리
150
156
 
@@ -163,6 +169,7 @@ console.log(results.length + " 개의 도서관을 검색했습니다.");
163
169
  npm run suwon # 수원시 도서관
164
170
  npm run yjlib # 여주시 도서관
165
171
  npm run yongin # 용인시 도서관
172
+ npm run jeju # 제주시 도서관
166
173
 
167
174
  [dongnelibraryspa]: https://github.com/afrontend/dongnelibraryspa "AngularJS, Foundation을 사용한 Web UI"
168
175
  [npm-image]: https://img.shields.io/npm/v/dongnelibrary.svg
@@ -177,3 +184,4 @@ console.log(results.length + " 개의 도서관을 검색했습니다.");
177
184
  [suwon-url]: https://www.suwonlib.go.kr
178
185
  [yongin-url]: https://lib.yongin.go.kr
179
186
  [yjlib-url]: https://www.yjlib.go.kr
187
+ [jeju-url]: https://www.jeju.go.kr/
@@ -1,9 +1,38 @@
1
1
  import type { SearchCallback, SearchCompleteCallback, SearchOptionsMain, SearchResult } from "./types";
2
+ /**
3
+ * Get all available library names
4
+ * @returns Array of all library names
5
+ */
2
6
  export declare const getAllLibraryNames: () => string[];
7
+ /**
8
+ * Get all module names
9
+ * @returns Array of all module names
10
+ */
3
11
  export declare const getAllModuleNames: () => string[];
12
+ /**
13
+ * Get home URLs for all modules
14
+ * @returns Record mapping module names to their home URLs
15
+ */
4
16
  export declare const getModuleHomeUrls: () => Record<string, string>;
17
+ /**
18
+ * Check if a name corresponds to a known module
19
+ * @param name - Name to check
20
+ * @returns True if the name is a valid module name
21
+ */
5
22
  export declare const isModuleName: (name: string) => boolean;
23
+ /**
24
+ * Asynchronously search across multiple libraries
25
+ * @param opt - Search options including title and library names
26
+ * @param onResult - Callback for individual search results
27
+ * @returns Promise resolving to array of search results
28
+ */
6
29
  export declare const searchAsync: (opt: SearchOptionsMain, onResult?: SearchCallback) => Promise<SearchResult[]>;
30
+ /**
31
+ * Synchronous search wrapper that calls completion callback
32
+ * @param opt - Search options or null/undefined
33
+ * @param onResult - Callback for individual search results
34
+ * @param onComplete - Callback for final search results
35
+ */
7
36
  export declare const search: (opt: SearchOptionsMain | undefined | null, onResult?: SearchCallback, onComplete?: SearchCompleteCallback) => void;
8
37
  export type { SearchResult, SearchError, SearchOptionsMain, SearchCallback, SearchCompleteCallback, Book, } from "./types";
9
38
  //# sourceMappingURL=dongnelibrary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dongnelibrary.d.ts","sourceRoot":"","sources":["../src/dongnelibrary.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAKV,cAAc,EACd,sBAAsB,EAEtB,iBAAiB,EACjB,YAAY,EACb,MAAM,SAAS,CAAC;AAwCjB,eAAO,MAAM,kBAAkB,QAAO,MAAM,EACL,CAAC;AAExC,eAAO,MAAM,iBAAiB,QAAO,MAAM,EACD,CAAC;AAE3C,eAAO,MAAM,iBAAiB,QAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CACiB,CAAC;AAE5E,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,OACQ,CAAC;AA4FrD,eAAO,MAAM,WAAW,GACtB,KAAK,iBAAiB,EACtB,WAAW,cAAc,KACxB,OAAO,CAAC,YAAY,EAAE,CAkBxB,CAAC;AAEF,eAAO,MAAM,MAAM,GACjB,KAAK,iBAAiB,GAAG,SAAS,GAAG,IAAI,EACzC,WAAW,cAAc,EACzB,aAAa,sBAAsB,KAClC,IAMF,CAAC;AAGF,YAAY,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,IAAI,GACL,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"dongnelibrary.d.ts","sourceRoot":"","sources":["../src/dongnelibrary.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAKV,cAAc,EACd,sBAAsB,EAEtB,iBAAiB,EACjB,YAAY,EACb,MAAM,SAAS,CAAC;AAqDjB;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,EACH,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAO,MAAM,EACS,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CACgC,CAAC;AAE3F;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,OACkB,CAAC;AAwJ/D;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GACtB,KAAK,iBAAiB,EACtB,WAAW,cAAc,KACxB,OAAO,CAAC,YAAY,EAAE,CAkBxB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GACjB,KAAK,iBAAiB,GAAG,SAAS,GAAG,IAAI,EACzC,WAAW,cAAc,EACzB,aAAa,sBAAsB,KAClC,IAMF,CAAC;AAOF,YAAY,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,IAAI,GACL,MAAM,SAAS,CAAC"}
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ // =============================================================================
3
+ // IMPORTS
4
+ // =============================================================================
2
5
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
6
  if (k2 === undefined) k2 = k;
4
7
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -34,8 +37,10 @@ var __importStar = (this && this.__importStar) || (function () {
34
37
  })();
35
38
  Object.defineProperty(exports, "__esModule", { value: true });
36
39
  exports.search = exports.searchAsync = exports.isModuleName = exports.getModuleHomeUrls = exports.getAllModuleNames = exports.getAllLibraryNames = void 0;
40
+ // Local library modules
37
41
  const gg = __importStar(require("./localLibraryModule/gg"));
38
42
  const gunpo = __importStar(require("./localLibraryModule/gunpo"));
43
+ const jeju = __importStar(require("./localLibraryModule/jeju"));
39
44
  const hscity = __importStar(require("./localLibraryModule/hscity"));
40
45
  const osan = __importStar(require("./localLibraryModule/osan"));
41
46
  const snlib = __importStar(require("./localLibraryModule/snlib"));
@@ -43,11 +48,15 @@ const suwon = __importStar(require("./localLibraryModule/suwon"));
43
48
  const yjlib = __importStar(require("./localLibraryModule/yjlib"));
44
49
  const yongin = __importStar(require("./localLibraryModule/yongin"));
45
50
  // =============================================================================
46
- // Configuration
51
+ // CONFIGURATION
47
52
  // =============================================================================
53
+ /**
54
+ * List of all available library modules
55
+ */
48
56
  const LIBRARY_MODULES = [
49
57
  gg,
50
58
  gunpo,
59
+ jeju,
51
60
  hscity,
52
61
  osan,
53
62
  snlib,
@@ -55,7 +64,13 @@ const LIBRARY_MODULES = [
55
64
  yjlib,
56
65
  yongin,
57
66
  ];
67
+ /**
68
+ * Error object returned when an unknown library is requested
69
+ */
58
70
  const UNKNOWN_LIBRARY_ERROR = { msg: "Unknown library name" };
71
+ /**
72
+ * Default library entry for unknown/invalid library names
73
+ */
59
74
  const UNKNOWN_LIBRARY = {
60
75
  name: "Unknown",
61
76
  search: async (_opt, onResult) => {
@@ -64,28 +79,78 @@ const UNKNOWN_LIBRARY = {
64
79
  homeUrl: "",
65
80
  };
66
81
  // =============================================================================
67
- // Library Registry
82
+ // LIBRARY REGISTRY
68
83
  // =============================================================================
69
- const allLibraryList = LIBRARY_MODULES.flatMap((module) => module.getLibraryNames().map((name) => ({
84
+ /**
85
+ * Flatten all library names from modules into a single registry
86
+ */
87
+ const ALL_LIBRARY_LIST = LIBRARY_MODULES.flatMap((module) => module.getLibraryNames().map((name) => ({
70
88
  name,
71
89
  search: module.search,
72
90
  homeUrl: module.homeUrl,
73
91
  })));
74
- const getAllLibraryNames = () => allLibraryList.map((lib) => lib.name);
92
+ /**
93
+ * Get all available library names
94
+ * @returns Array of all library names
95
+ */
96
+ const getAllLibraryNames = () => ALL_LIBRARY_LIST.map((lib) => lib.name);
75
97
  exports.getAllLibraryNames = getAllLibraryNames;
76
- const getAllModuleNames = () => LIBRARY_MODULES.map((m) => m.moduleName);
98
+ /**
99
+ * Get all module names
100
+ * @returns Array of all module names
101
+ */
102
+ const getAllModuleNames = () => LIBRARY_MODULES.map((module) => module.moduleName);
77
103
  exports.getAllModuleNames = getAllModuleNames;
78
- const getModuleHomeUrls = () => Object.fromEntries(LIBRARY_MODULES.map((m) => [m.moduleName, m.homeUrl]));
104
+ /**
105
+ * Get home URLs for all modules
106
+ * @returns Record mapping module names to their home URLs
107
+ */
108
+ const getModuleHomeUrls = () => Object.fromEntries(LIBRARY_MODULES.map((module) => [module.moduleName, module.homeUrl]));
79
109
  exports.getModuleHomeUrls = getModuleHomeUrls;
80
- const isModuleName = (name) => LIBRARY_MODULES.some((m) => m.moduleName === name);
110
+ /**
111
+ * Check if a name corresponds to a known module
112
+ * @param name - Name to check
113
+ * @returns True if the name is a valid module name
114
+ */
115
+ const isModuleName = (name) => LIBRARY_MODULES.some((module) => module.moduleName === name);
81
116
  exports.isModuleName = isModuleName;
82
- const getLibraryNamesInModule = (moduleName) => LIBRARY_MODULES.find((m) => m.moduleName === moduleName)?.getLibraryNames() ??
117
+ /**
118
+ * Get all library names from a specific module
119
+ * @param moduleName - Name of the module to get libraries from
120
+ * @returns Array of library names in the specified module
121
+ */
122
+ const getLibraryNamesInModule = (moduleName) => LIBRARY_MODULES.find((module) => module.moduleName === moduleName)?.getLibraryNames() ??
83
123
  [];
84
- const getLibraryRegistryEntryByName = (libraryName) => allLibraryList.find((lib) => lib.name === libraryName) ?? UNKNOWN_LIBRARY;
85
- const completeLibraryName = (str) => (0, exports.getAllLibraryNames)().find((name) => name.includes(str)) ?? "";
86
- const isValidLibraryName = (libraryName) => allLibraryList.some((lib) => lib.name === libraryName) ||
87
- (0, exports.getAllModuleNames)().some((moduleName) => moduleName === libraryName);
124
+ /**
125
+ * Get a library registry entry by name
126
+ * @param libraryName - Name of the library to find
127
+ * @returns Library registry entry or unknown library if not found
128
+ */
129
+ const getLibraryRegistryEntryByName = (libraryName) => ALL_LIBRARY_LIST.find((lib) => lib.name === libraryName) ?? UNKNOWN_LIBRARY;
130
+ /**
131
+ * Complete a partial library name to full name
132
+ * @param str - Partial library name to complete
133
+ * @returns Full library name if found, otherwise empty string
134
+ */
135
+ const completeLibraryName = (str) => ALL_LIBRARY_LIST.find((lib) => lib.name.includes(str))?.name ?? "";
136
+ /**
137
+ * Validate if a library name is valid
138
+ * @param libraryName - Name to validate
139
+ * @returns True if the library name is valid (exists or is a module name)
140
+ */
141
+ const isValidLibraryName = (libraryName) => ALL_LIBRARY_LIST.some((lib) => lib.name === libraryName) ||
142
+ (0, exports.isModuleName)(libraryName);
143
+ /**
144
+ * Expand module names to their constituent library names
145
+ * @param libraryNameList - List of library names and/or module names
146
+ * @returns Expanded list with module names replaced by their constituent libraries
147
+ */
88
148
  const expandModuleNames = (libraryNameList) => libraryNameList.flatMap((name) => (0, exports.isModuleName)(name) ? getLibraryNamesInModule(name) : [name]);
149
+ /**
150
+ * Resolve library names to their actual names
151
+ * @param libraryName - Single library name or array of names
152
+ * @returns Array of resolved library names
153
+ */
89
154
  const resolveNameList = (libraryName) => {
90
155
  if (libraryName === "")
91
156
  return (0, exports.getAllLibraryNames)();
@@ -95,21 +160,48 @@ const resolveNameList = (libraryName) => {
95
160
  return getLibraryNamesInModule(libraryName);
96
161
  return [libraryName];
97
162
  };
163
+ /**
164
+ * Resolve library names to their registry entries
165
+ * @param libraryName - Single library name or array of names
166
+ * @returns Array of registry entries for the requested libraries
167
+ */
98
168
  const resolveLibraryRegistryEntry = (libraryName) => resolveNameList(libraryName)
99
169
  .map(completeLibraryName)
100
170
  .filter(isValidLibraryName)
101
171
  .map(getLibraryRegistryEntryByName);
102
172
  // =============================================================================
103
- // Book Result Helpers
173
+ // BOOK RESULT HELPERS
104
174
  // =============================================================================
175
+ /**
176
+ * Normalize book data to ensure consistent structure
177
+ * @param book - Book object with potentially missing fields
178
+ * @returns Normalized book object with all required fields
179
+ */
105
180
  const normalizeBook = ({ libraryName, title, exist, bookUrl }) => ({
106
181
  libraryName,
107
182
  title,
108
183
  exist,
109
184
  bookUrl,
110
185
  });
186
+ /**
187
+ * Sort books by availability (available books first)
188
+ * @param books - Array of books to sort
189
+ * @returns Sorted array with available books first
190
+ */
111
191
  const sortByAvailability = (books) => books.sort((a, b) => (a.exist === b.exist ? 0 : a.exist ? -1 : 1));
192
+ /**
193
+ * Process a list of books by normalizing and sorting them
194
+ * @param books - Array of book objects to process
195
+ * @returns Processed and sorted array of books
196
+ */
112
197
  const processBooklist = (books) => sortByAvailability(books.map(normalizeBook));
198
+ /**
199
+ * Perform a search on a single library
200
+ * @param lib - Library registry entry to search
201
+ * @param title - Search term
202
+ * @param signal - AbortSignal for cancellation support
203
+ * @returns Promise resolving to search result or error
204
+ */
113
205
  const searchLibrary = (lib, title, signal) => new Promise((resolve) => {
114
206
  lib.search({ title, libraryName: lib.name, signal }, (err, data) => {
115
207
  if (err) {
@@ -132,6 +224,12 @@ const searchLibrary = (lib, title, signal) => new Promise((resolve) => {
132
224
  });
133
225
  });
134
226
  });
227
+ /**
228
+ * Asynchronously search across multiple libraries
229
+ * @param opt - Search options including title and library names
230
+ * @param onResult - Callback for individual search results
231
+ * @returns Promise resolving to array of search results
232
+ */
135
233
  const searchAsync = (opt, onResult) => {
136
234
  const { title, libraryName, signal } = opt;
137
235
  const libraries = resolveLibraryRegistryEntry(libraryName);
@@ -149,6 +247,12 @@ const searchAsync = (opt, onResult) => {
149
247
  return Promise.all(promises).then((r) => r.filter((v) => v !== null));
150
248
  };
151
249
  exports.searchAsync = searchAsync;
250
+ /**
251
+ * Synchronous search wrapper that calls completion callback
252
+ * @param opt - Search options or null/undefined
253
+ * @param onResult - Callback for individual search results
254
+ * @param onComplete - Callback for final search results
255
+ */
152
256
  const search = (opt, onResult, onComplete) => {
153
257
  if (!opt || (!onResult && !onComplete)) {
154
258
  console.log("invalid search options");
@@ -157,6 +261,9 @@ const search = (opt, onResult, onComplete) => {
157
261
  (0, exports.searchAsync)(opt, onResult).then((results) => onComplete?.(null, results));
158
262
  };
159
263
  exports.search = search;
264
+ // =============================================================================
265
+ // API EXPORT
266
+ // =============================================================================
160
267
  ({
161
268
  getAllLibraryNames: exports.getAllLibraryNames,
162
269
  getAllModuleNames: exports.getAllModuleNames,
@@ -1 +1 @@
1
- {"version":3,"file":"dongnelibrary.js","sourceRoot":"","sources":["../src/dongnelibrary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dongnelibrary.js","sourceRoot":"","sources":["../src/dongnelibrary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { SearchOptions, SearchResult } from "../types";
2
+ export declare const moduleName = "\uC81C\uC8FC\uC2DC\uB3C4\uC11C\uAD00";
3
+ export declare const homeUrl = "https://www.jeju.go.kr/";
4
+ export declare const search: (opt: SearchOptions, callback?: import("../types").SearchCallback) => Promise<SearchResult | void>;
5
+ export declare function getLibraryNames(): string[];
6
+ //# sourceMappingURL=jeju.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jeju.d.ts","sourceRoot":"","sources":["../../src/localLibraryModule/jeju.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAIV,aAAa,EACb,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,UAAU,yCAAW,CAAC;AACnC,eAAO,MAAM,OAAO,4BAA4B,CAAC;AA8GjD,eAAO,MAAM,MAAM,oGAA+B,CAAC;AAEnD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.search = exports.homeUrl = exports.moduleName = void 0;
4
+ exports.getLibraryNames = getLibraryNames;
5
+ const util_1 = require("../util");
6
+ const http_1 = require("../http");
7
+ exports.moduleName = "제주시도서관";
8
+ exports.homeUrl = "https://www.jeju.go.kr/";
9
+ const libraryList = [
10
+ { code: "MJ", name: "한라도서관" },
11
+ { code: "MK", name: "우당도서관" },
12
+ { code: "ML", name: "탐라도서관" },
13
+ { code: "MM", name: "제주시기적의도서관" },
14
+ { code: "MP", name: "애월도서관" },
15
+ { code: "MN", name: "조천읍도서관" },
16
+ { code: "MQ", name: "한경도서관" },
17
+ { code: "MA", name: "삼매봉도서관" },
18
+ { code: "MB", name: "중앙도서관" },
19
+ { code: "MC", name: "동부도서관" },
20
+ { code: "MD", name: "서부도서관" },
21
+ { code: "ME", name: "서귀포기적의도서관" },
22
+ { code: "MH", name: "성산일출도서관" },
23
+ { code: "MF", name: "안덕산방도서관" },
24
+ { code: "MG", name: "표선도서관" },
25
+ { code: "XY", name: "꿈바당어린이도서관" },
26
+ ];
27
+ const getLibraryCode = (0, util_1.createLibraryCodeLookup)(libraryList);
28
+ async function fetchRentStat(recKey, signal) {
29
+ try {
30
+ const { statusCode, body } = await (0, http_1.get)("https://www.jeju.go.kr/tool/lib/rent-stat.jsp", { qs: { key: recKey }, signal });
31
+ if (statusCode !== 200)
32
+ return false;
33
+ const stat = JSON.parse(body);
34
+ return stat.total - stat.rent > 0;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ async function searchImpl(opt) {
41
+ const { title, libraryName, signal } = opt;
42
+ (0, util_1.validateSearchOptions)(opt);
43
+ const lcode = getLibraryCode(libraryName);
44
+ const qs = { q: title };
45
+ if (lcode) {
46
+ qs.lib = lcode;
47
+ }
48
+ const { statusCode, body } = await (0, http_1.get)("https://www.jeju.go.kr/tool/lib/search.jsp", { qs, signal });
49
+ if (statusCode !== 200) {
50
+ throw new Error(`HTTP ${statusCode}`);
51
+ }
52
+ const json = JSON.parse(body);
53
+ if (json.error) {
54
+ throw new Error("Search API returned an error");
55
+ }
56
+ const books = json.books ?? [];
57
+ const booklist = await Promise.all(books.map(async (book) => {
58
+ const exist = await fetchRentStat(book.recKey, signal);
59
+ return {
60
+ title: book.title,
61
+ exist,
62
+ libraryName: libraryList.find((l) => l.code === book.manageCode)?.name ?? libraryName,
63
+ bookUrl: `https://www.jeju.go.kr/lib/service/search/simple.htm?q=${encodeURIComponent(title)}`,
64
+ };
65
+ }));
66
+ return {
67
+ startPage: opt.startPage,
68
+ totalBookCount: books.length,
69
+ booklist,
70
+ };
71
+ }
72
+ exports.search = (0, util_1.wrapWithCallback)(searchImpl);
73
+ function getLibraryNames() {
74
+ return (0, util_1.getLibraryNames)(libraryList);
75
+ }
76
+ ({ moduleName: exports.moduleName, homeUrl: exports.homeUrl, search: exports.search, getLibraryNames });
77
+ //# sourceMappingURL=jeju.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jeju.js","sourceRoot":"","sources":["../../src/localLibraryModule/jeju.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dongnelibrary",
3
- "version": "0.3.9",
3
+ "version": "0.3.10",
4
4
  "description": "책을 빌릴 수 있는지 확인한다.",
5
5
  "engines": {
6
6
  "node": ">=22.22.0"