├── .gitattributes ├── .gitignore ├── .yarn └── releases │ └── yarn-3.2.1.cjs ├── .yarnrc.yml ├── LICENSE ├── README.md ├── package.json ├── src ├── context.ts ├── error.ts ├── impl │ ├── reporter │ │ ├── console.ts │ │ └── logflare.ts │ └── search │ │ └── juso.go.kr.ts ├── reporter.ts ├── search.ts └── worker.ts ├── tsconfig.json ├── wrangler.toml └── yarn.lock /.gitattributes: -------------------------------------------------------------------------------- 1 | /.yarn/** linguist-vendored 2 | /.yarn/releases/* binary 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /dist/ 2 | /node_modules/ 3 | 4 | .pnp.* 5 | .yarn/* 6 | !.yarn/patches 7 | !.yarn/plugins 8 | !.yarn/releases 9 | !.yarn/sdks 10 | !.yarn/versions 11 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | 3 | yarnPath: .yarn/releases/yarn-3.2.1.cjs 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Danggeun Market Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Juso @ Edge ⚡ 2 | 3 | ## ⚠️ 사용 주의 4 | 5 | 캐시되지 않은 대부분의 요청이 타임아웃 에러(408)와 함께 실패하고 있습니다. Cloudflare Workers에서 사용하는 대부분의 IP가 차단되고 있는 것으로 보입니다. Cloudflare Workers는 IP를 특정할 수 없어 방화벽 등록 요청에도 어려움을 겪고 있습니다. 혹시 이와 같은 서비스가 필요한 경우 IP를 특정하기 쉬운 서버에 포팅해서 사용하시길 권장드립니다. 6 | 7 | 아마 Cloudflare Magic NAT 베타 서비스 신청해서 완화할 수 있을 것 같습니다. ([#1](https://github.com/daangn/juso-edge/issues/1)) 8 | 9 | ------- 10 | 11 | Reliable edge proxy to the [Juso API](https://www.juso.go.kr/addrlink/devAddrLinkRequestGuide.do?menu=roadApi) 12 | 13 | - Global CDN powered by Cloudflare 14 | - HTTP/2 & HTTP/3 enabled 15 | - Constant & Fast response time 16 | - Cache-first 17 | 18 | ## Usage 19 | 20 | e.g. Request URL for `신논현` is [`https://juso-edge.karrot.workers.dev/search/신논현`](https://juso-edge.karrot.workers.dev/search/신논현) 21 | 22 | ```http 23 | GET "https://juso-edge.karrot.workers.dev/search/%EC%8B%A0%EB%85%BC%ED%98%84" 24 | ``` 25 | 26 | See [CodeSandbox](https://codesandbox.io/s/juso-react-ki87i) demo 27 | 28 | ### Options 29 | 30 | | Param | Format | Description | Default Value | 31 | | :-------- | :------------- | :--------------------------------------- | ---------------: | 32 | | `page` | Integer (> 0) | number of page | `"1"` | 33 | | `perPage` | Integer (>= 0) | max item count per page | `"10"` | 34 | | `proxy` | Boolean | opt-out all downstream cache behavior | `"false"` | 35 | 36 | ### Response 37 | 38 | ```ts 39 | type Response = { 40 | hasNext: boolean, 41 | 42 | items: { 43 | /** 44 | * 도로명 주소 45 | */ 46 | address: string, 47 | 48 | /** 49 | * 도로명 주소 (영문) 50 | */ 51 | enAddress: string, 52 | 53 | /** 54 | * 지번 주소 55 | */ 56 | jibunAddress: string, 57 | 58 | /** 59 | * 우편번호 60 | */ 61 | zipCode: string, 62 | }[], 63 | } 64 | ``` 65 | 66 | ### LICENSE 67 | 68 | MIT 69 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "juso-edge", 3 | "private": true, 4 | "license": "MIT", 5 | "scripts": { 6 | "dev": "wrangler dev", 7 | "publish": "wrangler publish" 8 | }, 9 | "dependencies": { 10 | "workers-logger": "^0.2.0", 11 | "worktop": "next" 12 | }, 13 | "devDependencies": { 14 | "@cloudflare/workers-types": "^3.13.0", 15 | "@types/node": "^18.0.0", 16 | "typescript": "^4.7.3", 17 | "wrangler": "^2.1.11" 18 | }, 19 | "packageManager": "yarn@3.2.1" 20 | } 21 | -------------------------------------------------------------------------------- /src/context.ts: -------------------------------------------------------------------------------- 1 | import type { Context as WorktopContext } from 'worktop'; 2 | import type { KV } from 'worktop/cfw.kv'; 3 | import type { Context as ReporterContext } from './reporter'; 4 | 5 | export interface Context extends WorktopContext, ReporterContext { 6 | bindings: { 7 | DEBUG?: string; 8 | 9 | INDEX: KV.Namespace; 10 | 11 | /** 12 | * 도로명주소 API Confirm Key 13 | * 14 | * @see https://www.juso.go.kr/addrlink/devAddrLinkRequestWrite.do?returnFn=write&cntcMenu=URL 15 | * 16 | * wrangler secret 커맨드로 관리합니다. 17 | * 18 | * @See https://developers.cloudflare.com/workers/cli-wrangler/commands#secret 19 | */ 20 | JUSO_CONFIRM_KEY: string; 21 | 22 | USE_LOGFLARE: string; 23 | LOGFLARE_SOURCE?: string; 24 | LOGFLARE_API_KEY?: string; 25 | }; 26 | } 27 | -------------------------------------------------------------------------------- /src/error.ts: -------------------------------------------------------------------------------- 1 | export type ErrorMetadata = { 2 | by: string, 3 | code: string, 4 | message: string, 5 | resolution?: string, 6 | }; 7 | 8 | function metadataToString(metadata: ErrorMetadata) { 9 | return [ 10 | `${metadata.by}(${metadata.code}): ${metadata.message}`, 11 | metadata.resolution, 12 | ].filter(Boolean).join(' '); 13 | } 14 | 15 | export class InvalidArgumentsError extends Error { 16 | constructor(metadata: ErrorMetadata) { 17 | super(metadataToString(metadata)); 18 | } 19 | } 20 | 21 | export class UnauthorizedError extends Error { 22 | constructor(metadata: ErrorMetadata) { 23 | super(metadataToString(metadata)); 24 | } 25 | } 26 | 27 | export class ServiceError extends Error { 28 | constructor(metadata: ErrorMetadata) { 29 | super(metadataToString(metadata)); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/impl/reporter/console.ts: -------------------------------------------------------------------------------- 1 | import type { Reporter } from 'workers-logger'; 2 | 3 | export const makeReporter = (): Reporter => { 4 | return (events, _context) => { 5 | for (const log of events) { 6 | switch (log.level) { 7 | case 'log': 8 | console.log('[log] ' + log.message); 9 | break; 10 | case 'info': 11 | console.info('[info] ' + log.message); 12 | break; 13 | case 'warn': 14 | console.warn('[warn] ' + log.message); 15 | break; 16 | case 'debug': 17 | console.debug('[debug] ' + log.message); 18 | break; 19 | 20 | case 'fatal': 21 | case 'error': 22 | console.error('[error] ' + log.message); 23 | console.error(JSON.stringify(log.error)); 24 | return; 25 | } 26 | if (log.extra.length > 0) { 27 | console.log(JSON.stringify(log.extra)); 28 | } 29 | } 30 | }; 31 | }; 32 | -------------------------------------------------------------------------------- /src/impl/reporter/logflare.ts: -------------------------------------------------------------------------------- 1 | import type { Reporter } from 'workers-logger'; 2 | import { format } from 'workers-logger'; 3 | 4 | type Config = { 5 | debug?: boolean, 6 | source: string, 7 | apiKey: string, 8 | }; 9 | 10 | export const makeReporter = ({ 11 | debug = false, 12 | source, 13 | apiKey, 14 | }: Config): Reporter => { 15 | const logflareReport: Reporter = (events, { req, res }) => { 16 | const url = new URL(req.url); 17 | 18 | const metadata = { 19 | method: req.method, 20 | pathname: url.pathname, 21 | headers: Object.fromEntries(req.headers), 22 | response: { 23 | status: res.status, 24 | headers: Object.fromEntries(res.headers), 25 | }, 26 | log: events 27 | .filter(log => debug || log.level !== 'debug') 28 | .map(log => ({ 29 | level: log.level, 30 | message: format(log.message, ...log.extra), 31 | })), 32 | }; 33 | 34 | // prettier-ignore 35 | const message = `${req.headers.get('cf-connecting-ip')} (${req.headers.get('cf-ray')}) ${req.method} ${req.url} ${res.status}`; 36 | 37 | return fetch('https://api.logflare.app/logs', { 38 | method: 'POST', 39 | headers: { 40 | 'X-API-KEY': apiKey, 41 | 'Content-Type': 'application/json', 42 | }, 43 | body: JSON.stringify({ 44 | source, 45 | log_entry: message, 46 | metadata, 47 | }), 48 | }); 49 | }; 50 | 51 | return logflareReport; 52 | }; 53 | 54 | -------------------------------------------------------------------------------- /src/impl/search/juso.go.kr.ts: -------------------------------------------------------------------------------- 1 | import type { KV } from 'worktop/cfw.kv'; 2 | 3 | import type { ReporterTracker } from '../../reporter'; 4 | import type { Search, SearchParameters, SearchResult } from '../../search'; 5 | import type { ErrorMetadata } from '../../error'; 6 | import { InvalidArgumentsError, UnauthorizedError, ServiceError } from '../../error'; 7 | 8 | const API_ENDPOINT = 'https://www.juso.go.kr/addrlink/addrLinkApi.do'; 9 | 10 | // Fixed size for indexing 11 | const PER_PAGE = 20; 12 | 13 | const UPSTREAM_TIMEOUT = 3 * 1000; 14 | 15 | type Config = { 16 | reporter: ReporterTracker, 17 | confirmKey: string, 18 | namespace: KV.Namespace, 19 | cacheFirst?: boolean, 20 | }; 21 | 22 | export const makeSearch = ({ 23 | reporter, 24 | confirmKey, 25 | namespace, 26 | cacheFirst = true, 27 | }: Config): Search => { 28 | async function* search({ 29 | keyword, 30 | offset = 0, 31 | }: SearchParameters): AsyncGenerator { 32 | let page = offset / PER_PAGE + 1 | 0; 33 | let iterCount = offset; 34 | 35 | // eager validations 36 | if (!keyword) { 37 | throw new InvalidArgumentsError(errors['E0005']); 38 | } 39 | if (keyword.length < 2) { 40 | throw new InvalidArgumentsError(errors['E0008']); 41 | } 42 | if (keyword.length > 80) { 43 | throw new InvalidArgumentsError(errors['E0010']); 44 | } 45 | if (!/[a-zA-Zㄱ-ㅎ가-힣]/.test(keyword)) { 46 | throw new InvalidArgumentsError(errors['E0012']); 47 | } 48 | if (/[\%\=\>\<\[\]]/.test(keyword)) { 49 | throw new InvalidArgumentsError(errors['E0013']); 50 | } 51 | 52 | reporter.debug(`Start iteration from ${offset}`); 53 | while (true) { 54 | reporter.debug(`iteration %i`, iterCount - offset); 55 | 56 | let result: JusoSearchResult | null = null; 57 | 58 | const cacheKey = `juso:${keyword}:${page}:result`; 59 | if (cacheFirst) { 60 | const cache = await namespace.get(cacheKey, { type: 'json' }); 61 | if (cache) { 62 | reporter.log(`Cache hit: ${cacheKey}`); 63 | result = cache; 64 | } 65 | } else { 66 | reporter.log('Ignore cache'); 67 | } 68 | 69 | if (!result) { 70 | const url = new URL(API_ENDPOINT); 71 | url.searchParams.set('confmKey', confirmKey); 72 | url.searchParams.set('resultType', 'json'); 73 | url.searchParams.set('countPerPage', PER_PAGE.toString()); 74 | url.searchParams.set('currentPage', page.toString()); 75 | url.searchParams.set('keyword', keyword); 76 | 77 | const timeoutController = new AbortController(); 78 | // @ts-ignore 79 | setTimeout(() => timeoutController.abort(), UPSTREAM_TIMEOUT); 80 | 81 | reporter.info('Send request to the Juso API'); 82 | reporter.debug('URL: %s', url.toString()); 83 | const response = await fetch(url.toString(), { 84 | signal: timeoutController.signal, 85 | }); 86 | 87 | if (!response.ok) { 88 | throw new Error( 89 | `Unexpected error response from upstream, status: ${response.status}, text: ${response.statusText}`, 90 | ); 91 | } 92 | 93 | const body = await response.json() as JusoSearchResult; 94 | 95 | await namespace.put( 96 | cacheKey, 97 | JSON.stringify(body), 98 | { expirationTtl: 60 * 60 * 24 * 30 }, 99 | ); 100 | reporter.log(`Cache written: ${cacheKey}`); 101 | 102 | result = body; 103 | } 104 | 105 | const { results: response } = result; 106 | 107 | if (!response.juso) { 108 | const errorCode = response.common.errorCode; 109 | const error = errors[errorCode]; 110 | switch (errorCode) { 111 | case '-999': 112 | throw new ServiceError(error); 113 | case 'E0001': 114 | throw new UnauthorizedError(error); 115 | case 'E0005': 116 | case 'E0006': 117 | case 'E0008': 118 | case 'E0009': 119 | case 'E0010': 120 | case 'E0011': 121 | case 'E0012': 122 | case 'E0013': 123 | throw new InvalidArgumentsError(error); 124 | case 'E0014': 125 | throw new UnauthorizedError(error); 126 | case 'E0015': 127 | throw new ServiceError(error); 128 | default: 129 | throw new ServiceError(errors['-999']); 130 | } 131 | } 132 | 133 | for (const juso of response.juso) { 134 | iterCount += 1; 135 | yield { 136 | address: juso.roadAddrPart1, 137 | enAddress: juso.engAddr, 138 | jibunAddress: juso.jibunAddr, 139 | zipCode: juso.zipNo, 140 | }; 141 | reporter.debug(`juso %i %o`, iterCount, juso); 142 | } 143 | 144 | const totalCount = +response.common.totalCount; 145 | const maxPage = Math.ceil(totalCount / PER_PAGE); 146 | 147 | if (iterCount >= totalCount) { 148 | break; 149 | } 150 | 151 | if (page++ >= maxPage) { 152 | break; 153 | } 154 | } 155 | reporter.debug('End iteration'); 156 | } 157 | 158 | return search; 159 | }; 160 | 161 | /** 162 | * @see https://www.juso.go.kr/addrlink/devAddrLinkRequestGuide.do?menu=roadApi 163 | */ 164 | type JusoSearchResult = { 165 | results: { 166 | common: { 167 | totalCount: string, 168 | currentPage: string, 169 | countPerPage: string, 170 | errorCode: string, 171 | errorMessage: string, 172 | }, 173 | 174 | juso: null | Array<{ 175 | 176 | /** 177 | * 전체 도로명 주소 178 | */ 179 | roadAddr: string, 180 | 181 | /** 182 | * 도로명주소(참고항목 제외) 183 | */ 184 | roadAddrPart1: string, 185 | 186 | /** 187 | * 도로명주소 참고항목 188 | */ 189 | roadAddrPart2: string, 190 | 191 | /** 192 | * 지번주소 193 | */ 194 | jibunAddr: string, 195 | 196 | /** 197 | * 도로명주소(영문) 198 | */ 199 | engAddr: string, 200 | 201 | /** 202 | * 우편번호 203 | */ 204 | zipNo: string, 205 | 206 | /** 207 | * 행정구역코드 208 | */ 209 | admCd: string, 210 | 211 | /** 212 | * 도로명코드 213 | */ 214 | rnMgtSn: string, 215 | 216 | /** 217 | * 건물관리번호 218 | */ 219 | bdMgtSn: string, 220 | 221 | /** 222 | * 상세건물명 223 | */ 224 | detBdNmList: string, 225 | 226 | /** 227 | * 건물명 228 | */ 229 | bdNm: string, 230 | 231 | /** 232 | * 공동주택여부 (0: 비공동주택, 1: 공동주택) 233 | */ 234 | bdKdcd: '0' | '1', 235 | 236 | /** 237 | * 시도명 238 | */ 239 | siNm: string, 240 | 241 | /** 242 | * 시군구명 243 | */ 244 | sggNm: string, 245 | 246 | /** 247 | * 읍면동명 248 | */ 249 | emdNm: string, 250 | 251 | /** 252 | * 법정리명 253 | */ 254 | liNm: string, 255 | 256 | /** 257 | * 도로명 258 | */ 259 | rn: string, 260 | 261 | /** 262 | * 지하여부 (0: 지상, 1: 지하) 263 | */ 264 | udrtYn: '0' | '1', 265 | 266 | /** 267 | * 건물본번 268 | */ 269 | buildMnnm: string, 270 | 271 | /** 272 | * 건물부번 273 | */ 274 | buildSlno: string, 275 | 276 | /** 277 | * 산여부 (0: 대지, 1: 산) 278 | */ 279 | mtYn: string, 280 | 281 | /** 282 | * 지번본번(번지) 283 | */ 284 | lnbrMnnm: string, 285 | 286 | /** 287 | * 지번부번(호) 288 | */ 289 | lnbrSlno: string, 290 | 291 | /** 292 | * 읍면동일련번호 293 | */ 294 | emdNo: string, 295 | 296 | /** 297 | * 변동이력여부 (0: 현행주소정보, 1: 요청변수의 keyword가 변동된 주소 정보에서 검색된 정보) 298 | */ 299 | hstryYn?: '0' | '1', 300 | 301 | /** 302 | * 관련지번 303 | */ 304 | relJibun?: string, 305 | 306 | /** 307 | * 관할주민센터 308 | */ 309 | hemdNm?: string, 310 | }>, 311 | }, 312 | }; 313 | 314 | const errors: Record = { 315 | '-999': { 316 | by: 'juso.go.kr', 317 | code: '-999', 318 | message: '시스템 에러', 319 | resolution: '도로명주소 도움센터로 문의하시기 바랍니다.', 320 | }, 321 | 'E0001': { 322 | by: 'juso.go.kr', 323 | code: 'E0001', 324 | message: '승인되지 않은 KEY 입니다.', 325 | resolution: '정확한 승인키를 입력하세요.(팝업API 승인키 사용불가)', 326 | }, 327 | 'E0005': { 328 | by: 'juso.go.kr', 329 | code: 'E0005', 330 | message: '검색어가 입력되지 않았습니다.', 331 | resolution: '도로명주소 도움센터로 문의하시기 바랍니다.', 332 | }, 333 | 'E0006': { 334 | by: 'juso.go.kr', 335 | code: 'E0006', 336 | message: '주소를 상세히 입력해주시기 바랍니다.', 337 | resolution: '시도명으로는 검색이 불가합니다.', 338 | }, 339 | 'E0008': { 340 | by: 'juso.go.kr', 341 | code: 'E0008', 342 | message: '검색어는 두 글자 이상 입력되어야 합니다.', 343 | resolution: '한 글자만으로는 검색이 불가합니다.', 344 | }, 345 | 'E0009': { 346 | by: 'juso.go.kr', 347 | code: 'E0009', 348 | message: '검색어는 문자와 숫자 같이 입력되어야 합니다.', 349 | resolution: '숫자만으로는 검색이 불가합니다.', 350 | }, 351 | 'E0010': { 352 | by: 'juso.go.kr', 353 | code: 'E0010', 354 | message: '검색어가 너무 깁니다. (한글 40자, 영문, 숫자 80자 이하)', 355 | resolution: '80글자를 초과한 검색어는 검색이 불가합니다.', 356 | }, 357 | 'E0011': { 358 | by: 'juso.go.kr', 359 | code: 'E0011', 360 | message: '검색어에 너무 긴 숫자가 포함되어 있습니다. (숫자 10자 이하)', 361 | resolution: '10자리를 초과하는 숫자가 포함된 검색어는 검색이 불가합니다.', 362 | }, 363 | 'E0012': { 364 | by: 'juso.go.kr', 365 | code: 'E0012', 366 | message: '특수문자+숫자만으로는 검색이 불가능 합니다.', 367 | resolution: '특수문자와 숫자만으로 이루어진 검색어는 검색이 불가합니다.', 368 | }, 369 | 'E0013': { 370 | by: 'juso.go.kr', 371 | code: 'E0013', 372 | message: 'SQL 예약어 또는 특수문자( %,=,>,<,[,] )는 검색이 불가능 합니다.', 373 | resolution: 'SQL 예약어 또는 특수문자를 제거 후 검색합니다.', 374 | }, 375 | 'E0014': { 376 | by: 'juso.go.kr', 377 | code: 'E0014', 378 | message: '개발승인키 기간이 만료되어 서비스를 이용하실 수 없습니다.', 379 | resolution: '개발승인키를 다시 발급받아 API 서비스를 호출합니다.', 380 | }, 381 | 'E0015': { 382 | by: 'juso.go.kr', 383 | code: 'E0015', 384 | message: '검색 범위를 초과하였습니다.', 385 | resolution: '검색결과가 9천건이 초과하는 검색은 불가합니다.', 386 | }, 387 | }; 388 | -------------------------------------------------------------------------------- /src/reporter.ts: -------------------------------------------------------------------------------- 1 | import type { Handler, Context as WorktopContext } from 'worktop'; 2 | import type { Reporter, Tracker } from 'workers-logger'; 3 | import { enable, track as trackReporter } from 'workers-logger'; 4 | 5 | export type { Reporter, Tracker as ReporterTracker }; 6 | 7 | export interface Context extends WorktopContext { 8 | reporter: Tracker, 9 | } 10 | 11 | export const track = (reporter: Reporter, name: string): Handler => { 12 | enable('*'); 13 | return (request, context) => { 14 | const trackedReporter = trackReporter(request, name, reporter); 15 | context.reporter = trackedReporter; 16 | context.defer(res => { 17 | context.waitUntil(trackedReporter.report(res)); 18 | }); 19 | }; 20 | }; 21 | -------------------------------------------------------------------------------- /src/search.ts: -------------------------------------------------------------------------------- 1 | export type SearchParameters = { 2 | keyword: string, 3 | offset?: number, 4 | }; 5 | 6 | export type SearchResult = { 7 | address: string, 8 | enAddress: string, 9 | jibunAddress: string, 10 | zipCode: string, 11 | }; 12 | 13 | export type Search = (params: SearchParameters) => AsyncGenerator; 14 | -------------------------------------------------------------------------------- /src/worker.ts: -------------------------------------------------------------------------------- 1 | import { Router, compose } from 'worktop'; 2 | import { reply } from 'worktop/response'; 3 | import * as CORS from 'worktop/cors'; 4 | import { start } from 'worktop/cfw'; 5 | import * as Cache from 'worktop/cfw.cache'; 6 | 7 | import type { Context } from './context'; 8 | import { 9 | InvalidArgumentsError, 10 | UnauthorizedError, 11 | ServiceError, 12 | } from './error'; 13 | 14 | import type { SearchResult } from './search'; 15 | import { makeSearch } from './impl/search/juso.go.kr'; 16 | 17 | import * as Reporter from './reporter'; 18 | import { makeReporter as makeConsoleReporter } from './impl/reporter/console'; 19 | import { makeReporter as makeLogflareReporter } from './impl/reporter/logflare'; 20 | 21 | const API = new Router(); 22 | 23 | API.prepare = compose( 24 | Cache.sync(), 25 | CORS.preflight(), 26 | function (request, context) { 27 | const useLogflare = Boolean( 28 | context.bindings.USE_LOGFLARE === 'true' && 29 | context.bindings.LOGFLARE_SOURCE && 30 | context.bindings.LOGFLARE_API_KEY 31 | ); 32 | const reporter = useLogflare 33 | ? makeLogflareReporter({ 34 | debug: context.bindings.DEBUG === 'true', 35 | source: context.bindings.LOGFLARE_SOURCE!, 36 | apiKey: context.bindings.LOGFLARE_API_KEY!, 37 | }) 38 | : makeConsoleReporter(); 39 | 40 | const handler = Reporter.track(reporter, 'juso-edge'); 41 | return handler(request, context); 42 | }, 43 | ); 44 | 45 | API.add('GET', '/search/:keyword', async (_req, context) => { 46 | const keyword = decodeURIComponent(context.params.keyword); 47 | const { searchParams } = context.url; 48 | const page = parseInt(searchParams.get('page') as string) || 1; 49 | const perPage = parseInt(searchParams.get('perPage') as string) || 10; 50 | const proxy = searchParams.get('proxy') === 'true'; 51 | const cacheFirst = !proxy; 52 | 53 | context.reporter.log( 54 | 'Searching for params %o', 55 | { keyword, page, perPage, proxy }, 56 | ); 57 | 58 | const headers: HeadersInit = {}; 59 | 60 | if (page < 0) { 61 | return reply(400, { message: 'page must be greater than zero' }); 62 | } 63 | 64 | // TODO: allow unlimited pagination with jsonl stream 65 | const maxPerPage = 100; 66 | if (perPage > maxPerPage) { 67 | return reply(400, { message: `perPage must be less than ${maxPerPage}` }); 68 | } 69 | 70 | const search = makeSearch({ 71 | reporter: context.reporter, 72 | confirmKey: context.bindings.JUSO_CONFIRM_KEY, 73 | namespace: context.bindings.INDEX, 74 | cacheFirst, 75 | }); 76 | 77 | try { 78 | const items: SearchResult[] = []; 79 | const offset = (page - 1) * perPage; 80 | const queryKeyword = keyword.replaceAll(' ', ''); 81 | context.reporter.log(`Query ${perPage} results from page ${page} for "${queryKeyword}"`); 82 | 83 | for await (const item of search({ keyword: queryKeyword, offset })) { 84 | items.push(item); 85 | if (items.length === perPage + 1) { 86 | break; 87 | } 88 | } 89 | 90 | if (cacheFirst) { 91 | headers['Cache-Control'] = `public, max-age=${60 * 60 * 24}`; 92 | } else { 93 | headers['Cache-Control'] = `public, must-revalidate`; 94 | } 95 | 96 | return reply(200, { 97 | hasNext: items.length > perPage, 98 | items: items.slice(0, perPage), 99 | }, headers); 100 | 101 | } catch (error: any) { 102 | if (error instanceof InvalidArgumentsError) { 103 | context.reporter.info(error.message); 104 | return reply(400, { message: error.message }); 105 | } else if (error instanceof UnauthorizedError) { 106 | context.reporter.info(error.message); 107 | return reply(401, { message: error.message }); 108 | } else if (error instanceof ServiceError) { 109 | context.reporter.info(error.message); 110 | return reply(502, { message: error.message }); 111 | } else if (error.name === 'AbortError') { 112 | context.reporter.error(error); 113 | return reply(408, { message: 'Request Timeout' }, { 'Connection': 'close' }); 114 | } else { 115 | context.reporter.error(error); 116 | return reply(500, { message: 'Internal Server Error' }); 117 | } 118 | } 119 | }); 120 | 121 | export default start(API.run); 122 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["DOM.Iterable", "WebWorker", "ESNext"], 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "strict": true, 7 | "esModuleInterop": true, 8 | "downlevelIteration": true, 9 | "isolatedModules": true 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /wrangler.toml: -------------------------------------------------------------------------------- 1 | name = 'juso-edge' 2 | main = 'src/worker.ts' 3 | compatibility_date = '2022-10-12' 4 | compatibility_flags = [ 5 | 'url_standard', 6 | ] 7 | workers_dev = true 8 | 9 | [[kv_namespaces]] 10 | binding = 'INDEX' 11 | id = '0f9a0b3bcd504555b91373dca18fec94' 12 | preview_id = '148ed37fafe24dce984d659acf035b89' 13 | 14 | [vars] 15 | USE_LOGFLARE = true 16 | LOGFLARE_SOURCE = '1be10ca3-1885-4d6a-8892-d17cf9a2353b' 17 | 18 | # [secrets] 19 | # JUSO_CONFIRM_KEY 20 | # LOGFLARE_API_KEY 21 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # This file is generated by running "yarn install" inside your project. 2 | # Manual changes might be lost - proceed with caution! 3 | 4 | __metadata: 5 | version: 6 6 | cacheKey: 8 7 | 8 | "@cloudflare/kv-asset-handler@npm:^0.2.0": 9 | version: 0.2.0 10 | resolution: "@cloudflare/kv-asset-handler@npm:0.2.0" 11 | dependencies: 12 | mime: ^3.0.0 13 | checksum: bc6a02a9c80be6de90e46454ef4de09301e68726eaa4835de0e30216e50fffcc5612274a17dfb455916cf3418f0cb25fefd2b561a9d2282f4cc10d40527f0acb 14 | languageName: node 15 | linkType: hard 16 | 17 | "@cloudflare/workers-types@npm:^3.13.0": 18 | version: 3.13.0 19 | resolution: "@cloudflare/workers-types@npm:3.13.0" 20 | checksum: bd4b8c354f7bfed4cc24407d86ff4a686a1076a8637f5a483a0b107ccda6094cecdb70a5eb5308401014f82838fd796885d60832d1e3671bacf5d3ff5760585b 21 | languageName: node 22 | linkType: hard 23 | 24 | "@esbuild-plugins/node-globals-polyfill@npm:^0.1.1": 25 | version: 0.1.1 26 | resolution: "@esbuild-plugins/node-globals-polyfill@npm:0.1.1" 27 | peerDependencies: 28 | esbuild: "*" 29 | checksum: 68a41e2c377724e9cd46ca344ad219d289cc41a8b273d0d89bbc82bd90025b067b28234a865d8862a3f38c2a028ca4c93138dfca4e1e75e617efc314156c1ce0 30 | languageName: node 31 | linkType: hard 32 | 33 | "@esbuild-plugins/node-modules-polyfill@npm:^0.1.4": 34 | version: 0.1.4 35 | resolution: "@esbuild-plugins/node-modules-polyfill@npm:0.1.4" 36 | dependencies: 37 | escape-string-regexp: ^4.0.0 38 | rollup-plugin-node-polyfills: ^0.2.1 39 | peerDependencies: 40 | esbuild: "*" 41 | checksum: 39ff2a816139d71ebfbb78914c024565b6026da3146776aa10d27ee1330938ce78c7b2aad11c2d7768c7675d0942d1d1690dabfe60fa79e07dbb31cfbe396cec 42 | languageName: node 43 | linkType: hard 44 | 45 | "@gar/promisify@npm:^1.1.3": 46 | version: 1.1.3 47 | resolution: "@gar/promisify@npm:1.1.3" 48 | checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 49 | languageName: node 50 | linkType: hard 51 | 52 | "@iarna/toml@npm:^2.2.5": 53 | version: 2.2.5 54 | resolution: "@iarna/toml@npm:2.2.5" 55 | checksum: b63b2b2c4fd67969a6291543ada0303d45593801ee744b60f5390f183c03d9192bc67a217abb24be945158f1935f02840d9ffff40c0142aa171b5d3b6b6a3ea5 56 | languageName: node 57 | linkType: hard 58 | 59 | "@miniflare/cache@npm:2.9.0": 60 | version: 2.9.0 61 | resolution: "@miniflare/cache@npm:2.9.0" 62 | dependencies: 63 | "@miniflare/core": 2.9.0 64 | "@miniflare/shared": 2.9.0 65 | http-cache-semantics: ^4.1.0 66 | undici: 5.9.1 67 | checksum: 191dffc3480504fb2aad05ec0bf235c792fd63c31e98681df14824183bc4e0ccfd9804143b8d6ee58e5ff3f75c98f633bba5fb83cb97ebe7041640800d1565be 68 | languageName: node 69 | linkType: hard 70 | 71 | "@miniflare/cli-parser@npm:2.9.0": 72 | version: 2.9.0 73 | resolution: "@miniflare/cli-parser@npm:2.9.0" 74 | dependencies: 75 | "@miniflare/shared": 2.9.0 76 | kleur: ^4.1.4 77 | checksum: 27cb3f1269fff10fce1780a5af795ef37f37e7d87881086d2a7428311cfd6d1b3579c5932465a32bdbf9bd9941a06250863bf3da160df9801ec3c49faefa5dea 78 | languageName: node 79 | linkType: hard 80 | 81 | "@miniflare/core@npm:2.9.0": 82 | version: 2.9.0 83 | resolution: "@miniflare/core@npm:2.9.0" 84 | dependencies: 85 | "@iarna/toml": ^2.2.5 86 | "@miniflare/queues": 2.9.0 87 | "@miniflare/shared": 2.9.0 88 | "@miniflare/watcher": 2.9.0 89 | busboy: ^1.6.0 90 | dotenv: ^10.0.0 91 | kleur: ^4.1.4 92 | set-cookie-parser: ^2.4.8 93 | undici: 5.9.1 94 | urlpattern-polyfill: ^4.0.3 95 | checksum: 289222743e5e23d42a8418a786b1e4e611c742a65b250eb030b0d1b8f4d3e208d61b168bb668efdb5c9d477315c456ab5198d7126c5137ceb3efbcdf016204d4 96 | languageName: node 97 | linkType: hard 98 | 99 | "@miniflare/d1@npm:2.9.0": 100 | version: 2.9.0 101 | resolution: "@miniflare/d1@npm:2.9.0" 102 | dependencies: 103 | "@miniflare/core": 2.9.0 104 | "@miniflare/shared": 2.9.0 105 | checksum: d519af77bcf210dc14c21bdf36eb43201d55e829f3d1a0b45707c9c810fbb5b87020f75706a9709f9a9ac3150ba50ecd435a3f4c3e7782f965894261d4f7a867 106 | languageName: node 107 | linkType: hard 108 | 109 | "@miniflare/durable-objects@npm:2.9.0": 110 | version: 2.9.0 111 | resolution: "@miniflare/durable-objects@npm:2.9.0" 112 | dependencies: 113 | "@miniflare/core": 2.9.0 114 | "@miniflare/shared": 2.9.0 115 | "@miniflare/storage-memory": 2.9.0 116 | undici: 5.9.1 117 | checksum: e6daaa15f9db143d874cd686561fa20678b33d54fe58121ba714680c471c6e147aa5a51025d5879db120df7b997b394d3cad41447376d38bfcdde2be0021596f 118 | languageName: node 119 | linkType: hard 120 | 121 | "@miniflare/html-rewriter@npm:2.9.0": 122 | version: 2.9.0 123 | resolution: "@miniflare/html-rewriter@npm:2.9.0" 124 | dependencies: 125 | "@miniflare/core": 2.9.0 126 | "@miniflare/shared": 2.9.0 127 | html-rewriter-wasm: ^0.4.1 128 | undici: 5.9.1 129 | checksum: 06c9897e993a4ec18c5e0cea3890dca43fb416e96f5b3603a4354e769d43e79ff1cdde770d04cbb3c33040f4117a9022232e13272406f86583016a032670e201 130 | languageName: node 131 | linkType: hard 132 | 133 | "@miniflare/http-server@npm:2.9.0": 134 | version: 2.9.0 135 | resolution: "@miniflare/http-server@npm:2.9.0" 136 | dependencies: 137 | "@miniflare/core": 2.9.0 138 | "@miniflare/shared": 2.9.0 139 | "@miniflare/web-sockets": 2.9.0 140 | kleur: ^4.1.4 141 | selfsigned: ^2.0.0 142 | undici: 5.9.1 143 | ws: ^8.2.2 144 | youch: ^2.2.2 145 | checksum: 36484257ea51724326689872d6b1ea7baffed1c51b97309ca002daee2d98639c11655d975ea58c38c4570628c7658051567af7025ceff32cb4ff4008f56cb840 146 | languageName: node 147 | linkType: hard 148 | 149 | "@miniflare/kv@npm:2.9.0": 150 | version: 2.9.0 151 | resolution: "@miniflare/kv@npm:2.9.0" 152 | dependencies: 153 | "@miniflare/shared": 2.9.0 154 | checksum: 467e5335e16f3f1f6407402b6d30e7293d322ea0189178b6e653857c273632a18dad058e06743fd94cf72f798bae1596f2c8587941076043b70fe089d55d4184 155 | languageName: node 156 | linkType: hard 157 | 158 | "@miniflare/queues@npm:2.9.0": 159 | version: 2.9.0 160 | resolution: "@miniflare/queues@npm:2.9.0" 161 | dependencies: 162 | "@miniflare/shared": 2.9.0 163 | checksum: a14f430bc01d74160e6ca2d7ef81572f37d578faba13af223bee945e6b48f52b3296e15f958940ede2f79b7255e46c3c06136d61d3775914c181fbb5fcdbdb6c 164 | languageName: node 165 | linkType: hard 166 | 167 | "@miniflare/r2@npm:2.9.0": 168 | version: 2.9.0 169 | resolution: "@miniflare/r2@npm:2.9.0" 170 | dependencies: 171 | "@miniflare/shared": 2.9.0 172 | undici: 5.9.1 173 | checksum: a0299db414415312efb8d2c47ff63c2cbd40423cb61b00e23653fe1dbaa22b71b1982fadfa857fcb8d04d081d9a3678f6687a5b019212137ac5ec004363ca02d 174 | languageName: node 175 | linkType: hard 176 | 177 | "@miniflare/runner-vm@npm:2.9.0": 178 | version: 2.9.0 179 | resolution: "@miniflare/runner-vm@npm:2.9.0" 180 | dependencies: 181 | "@miniflare/shared": 2.9.0 182 | checksum: 4e5f2f6c9b3e4c1569f329e5ed63f53be3dac0644285c4a6d6b6451ec924115f021aeb2494dccafc5410cb0b0fa7a794dd414f5fcbab402845008c35114c7c64 183 | languageName: node 184 | linkType: hard 185 | 186 | "@miniflare/scheduler@npm:2.9.0": 187 | version: 2.9.0 188 | resolution: "@miniflare/scheduler@npm:2.9.0" 189 | dependencies: 190 | "@miniflare/core": 2.9.0 191 | "@miniflare/shared": 2.9.0 192 | cron-schedule: ^3.0.4 193 | checksum: 307728e7498c216ccdf4f8b36ea752ba28cf71987fa3dd0045a49ca6a105e6c5e2c7b865183f0a89cc9e9ff2d56646db82f9048ef3ead4c1d64ffcc108aec6fd 194 | languageName: node 195 | linkType: hard 196 | 197 | "@miniflare/shared@npm:2.9.0": 198 | version: 2.9.0 199 | resolution: "@miniflare/shared@npm:2.9.0" 200 | dependencies: 201 | "@types/better-sqlite3": ^7.6.0 202 | kleur: ^4.1.4 203 | npx-import: ^1.1.3 204 | picomatch: ^2.3.1 205 | checksum: 91bbf81c914c23d70be7e27bcd9cba31f4f45699d0551eda1ea1a510f04766d2dc1e7ebc3c13da064251faf0c17225c58aad186f25529922b757b1750bb8fe62 206 | languageName: node 207 | linkType: hard 208 | 209 | "@miniflare/sites@npm:2.9.0": 210 | version: 2.9.0 211 | resolution: "@miniflare/sites@npm:2.9.0" 212 | dependencies: 213 | "@miniflare/kv": 2.9.0 214 | "@miniflare/shared": 2.9.0 215 | "@miniflare/storage-file": 2.9.0 216 | checksum: 9fbebe066535266e687a65b9824f3c12627bcc433960fbce4034e318c65a6e2c68d09d373a4713931e4d5aed11d160330ab41b7a99cfe5837d4868f0ff8c13aa 217 | languageName: node 218 | linkType: hard 219 | 220 | "@miniflare/storage-file@npm:2.9.0": 221 | version: 2.9.0 222 | resolution: "@miniflare/storage-file@npm:2.9.0" 223 | dependencies: 224 | "@miniflare/shared": 2.9.0 225 | "@miniflare/storage-memory": 2.9.0 226 | checksum: c03a819c9be837ea995041803ec23c0f5d3c59b85da704b55c7814fde3701251cdbcf8be76ce49a6c5faf1dd8397abedca21654bf44402c1c12004aff28f92fb 227 | languageName: node 228 | linkType: hard 229 | 230 | "@miniflare/storage-memory@npm:2.9.0": 231 | version: 2.9.0 232 | resolution: "@miniflare/storage-memory@npm:2.9.0" 233 | dependencies: 234 | "@miniflare/shared": 2.9.0 235 | checksum: 67fc22c587b5e3a463130e547316117c4884be2c31bc297f56b9c043083046f71103bce31037b99b6b1ad6f6d93e43c38728c9904dcb3558f88d67fa42c01151 236 | languageName: node 237 | linkType: hard 238 | 239 | "@miniflare/watcher@npm:2.9.0": 240 | version: 2.9.0 241 | resolution: "@miniflare/watcher@npm:2.9.0" 242 | dependencies: 243 | "@miniflare/shared": 2.9.0 244 | checksum: 3994814523e1590005bb665772ec3db44605626e9623fd362f647581e8eb056ac925a8bb061d17b3906b9857924612ddf3ede3531a182af651cdfcbe596d762d 245 | languageName: node 246 | linkType: hard 247 | 248 | "@miniflare/web-sockets@npm:2.9.0": 249 | version: 2.9.0 250 | resolution: "@miniflare/web-sockets@npm:2.9.0" 251 | dependencies: 252 | "@miniflare/core": 2.9.0 253 | "@miniflare/shared": 2.9.0 254 | undici: 5.9.1 255 | ws: ^8.2.2 256 | checksum: 927f9d0be92c15eb94108e2d1881b71f23814068e3150ea88c93432223317dadaf611838e502e25944aaf29ad399a3735fac50075fdce28693837db35c2d867e 257 | languageName: node 258 | linkType: hard 259 | 260 | "@npmcli/fs@npm:^2.1.0": 261 | version: 2.1.2 262 | resolution: "@npmcli/fs@npm:2.1.2" 263 | dependencies: 264 | "@gar/promisify": ^1.1.3 265 | semver: ^7.3.5 266 | checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 267 | languageName: node 268 | linkType: hard 269 | 270 | "@npmcli/move-file@npm:^2.0.0": 271 | version: 2.0.1 272 | resolution: "@npmcli/move-file@npm:2.0.1" 273 | dependencies: 274 | mkdirp: ^1.0.4 275 | rimraf: ^3.0.2 276 | checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 277 | languageName: node 278 | linkType: hard 279 | 280 | "@tootallnate/once@npm:2": 281 | version: 2.0.0 282 | resolution: "@tootallnate/once@npm:2.0.0" 283 | checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 284 | languageName: node 285 | linkType: hard 286 | 287 | "@types/better-sqlite3@npm:^7.6.0": 288 | version: 7.6.2 289 | resolution: "@types/better-sqlite3@npm:7.6.2" 290 | dependencies: 291 | "@types/node": "*" 292 | checksum: 554a9f6bda9ccd5cb503d45f08586f64d09907838cde55f5077337f2cc50b0a13875b1e0e59047dc5da2955132e11eb6459faabc2775ef3ae1248bbb697fdc77 293 | languageName: node 294 | linkType: hard 295 | 296 | "@types/node@npm:*": 297 | version: 18.8.5 298 | resolution: "@types/node@npm:18.8.5" 299 | checksum: f7d896f54743178e64c534c6da16f582505acf18904ecd0ee8541cb4bc1d429ba514e7ecfd5145221b71adbd6ae1ff72df082f667e56d056fcd1a719df948e08 300 | languageName: node 301 | linkType: hard 302 | 303 | "@types/node@npm:^18.0.0": 304 | version: 18.0.0 305 | resolution: "@types/node@npm:18.0.0" 306 | checksum: aab2b325727a2599f6d25ebe0dedf58c40fb66a51ce4ca9c0226ceb70fcda2d3afccdca29db5942eb48b158ee8585a274a1e3750c718bbd5399d7f41d62dfdcc 307 | languageName: node 308 | linkType: hard 309 | 310 | "@types/stack-trace@npm:0.0.29": 311 | version: 0.0.29 312 | resolution: "@types/stack-trace@npm:0.0.29" 313 | checksum: 2dcfdf8f10e250a76e43efe6d3e05a463b4e22ca290dbb423ec14fa21f57f94ef0cc8ba19ed3394c448218d9ddd9f7cd9adea131fb6572aa2d484b1cf7f043aa 314 | languageName: node 315 | linkType: hard 316 | 317 | "abbrev@npm:^1.0.0": 318 | version: 1.1.1 319 | resolution: "abbrev@npm:1.1.1" 320 | checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 321 | languageName: node 322 | linkType: hard 323 | 324 | "agent-base@npm:6, agent-base@npm:^6.0.2": 325 | version: 6.0.2 326 | resolution: "agent-base@npm:6.0.2" 327 | dependencies: 328 | debug: 4 329 | checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d 330 | languageName: node 331 | linkType: hard 332 | 333 | "agentkeepalive@npm:^4.2.1": 334 | version: 4.2.1 335 | resolution: "agentkeepalive@npm:4.2.1" 336 | dependencies: 337 | debug: ^4.1.0 338 | depd: ^1.1.2 339 | humanize-ms: ^1.2.1 340 | checksum: 39cb49ed8cf217fd6da058a92828a0a84e0b74c35550f82ee0a10e1ee403c4b78ade7948be2279b188b7a7303f5d396ea2738b134731e464bf28de00a4f72a18 341 | languageName: node 342 | linkType: hard 343 | 344 | "aggregate-error@npm:^3.0.0": 345 | version: 3.1.0 346 | resolution: "aggregate-error@npm:3.1.0" 347 | dependencies: 348 | clean-stack: ^2.0.0 349 | indent-string: ^4.0.0 350 | checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 351 | languageName: node 352 | linkType: hard 353 | 354 | "ansi-regex@npm:^5.0.1": 355 | version: 5.0.1 356 | resolution: "ansi-regex@npm:5.0.1" 357 | checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b 358 | languageName: node 359 | linkType: hard 360 | 361 | "anymatch@npm:~3.1.2": 362 | version: 3.1.2 363 | resolution: "anymatch@npm:3.1.2" 364 | dependencies: 365 | normalize-path: ^3.0.0 366 | picomatch: ^2.0.4 367 | checksum: 985163db2292fac9e5a1e072bf99f1b5baccf196e4de25a0b0b81865ebddeb3b3eb4480734ef0a2ac8c002845396b91aa89121f5b84f93981a4658164a9ec6e9 368 | languageName: node 369 | linkType: hard 370 | 371 | "aproba@npm:^1.0.3 || ^2.0.0": 372 | version: 2.0.0 373 | resolution: "aproba@npm:2.0.0" 374 | checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 375 | languageName: node 376 | linkType: hard 377 | 378 | "are-we-there-yet@npm:^3.0.0": 379 | version: 3.0.1 380 | resolution: "are-we-there-yet@npm:3.0.1" 381 | dependencies: 382 | delegates: ^1.0.0 383 | readable-stream: ^3.6.0 384 | checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 385 | languageName: node 386 | linkType: hard 387 | 388 | "balanced-match@npm:^1.0.0": 389 | version: 1.0.2 390 | resolution: "balanced-match@npm:1.0.2" 391 | checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 392 | languageName: node 393 | linkType: hard 394 | 395 | "binary-extensions@npm:^2.0.0": 396 | version: 2.2.0 397 | resolution: "binary-extensions@npm:2.2.0" 398 | checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 399 | languageName: node 400 | linkType: hard 401 | 402 | "blake3-wasm@npm:^2.1.5": 403 | version: 2.1.5 404 | resolution: "blake3-wasm@npm:2.1.5" 405 | checksum: 5088e929c722b52b9c28701c1760ab850a963692056a417b894c943030e3267f12138ae6409e79069b8d7d0401a411426147e8d812b65a49e303fa432af18871 406 | languageName: node 407 | linkType: hard 408 | 409 | "brace-expansion@npm:^1.1.7": 410 | version: 1.1.11 411 | resolution: "brace-expansion@npm:1.1.11" 412 | dependencies: 413 | balanced-match: ^1.0.0 414 | concat-map: 0.0.1 415 | checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 416 | languageName: node 417 | linkType: hard 418 | 419 | "brace-expansion@npm:^2.0.1": 420 | version: 2.0.1 421 | resolution: "brace-expansion@npm:2.0.1" 422 | dependencies: 423 | balanced-match: ^1.0.0 424 | checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 425 | languageName: node 426 | linkType: hard 427 | 428 | "braces@npm:~3.0.2": 429 | version: 3.0.2 430 | resolution: "braces@npm:3.0.2" 431 | dependencies: 432 | fill-range: ^7.0.1 433 | checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 434 | languageName: node 435 | linkType: hard 436 | 437 | "buffer-from@npm:^1.0.0": 438 | version: 1.1.2 439 | resolution: "buffer-from@npm:1.1.2" 440 | checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb 441 | languageName: node 442 | linkType: hard 443 | 444 | "builtins@npm:^5.0.0": 445 | version: 5.0.1 446 | resolution: "builtins@npm:5.0.1" 447 | dependencies: 448 | semver: ^7.0.0 449 | checksum: 66d204657fe36522822a95b288943ad11b58f5eaede235b11d8c4edaa28ce4800087d44a2681524c340494aadb120a0068011acabe99d30e8f11a7d826d83515 450 | languageName: node 451 | linkType: hard 452 | 453 | "busboy@npm:^1.6.0": 454 | version: 1.6.0 455 | resolution: "busboy@npm:1.6.0" 456 | dependencies: 457 | streamsearch: ^1.1.0 458 | checksum: 32801e2c0164e12106bf236291a00795c3c4e4b709ae02132883fe8478ba2ae23743b11c5735a0aae8afe65ac4b6ca4568b91f0d9fed1fdbc32ede824a73746e 459 | languageName: node 460 | linkType: hard 461 | 462 | "cacache@npm:^16.1.0": 463 | version: 16.1.3 464 | resolution: "cacache@npm:16.1.3" 465 | dependencies: 466 | "@npmcli/fs": ^2.1.0 467 | "@npmcli/move-file": ^2.0.0 468 | chownr: ^2.0.0 469 | fs-minipass: ^2.1.0 470 | glob: ^8.0.1 471 | infer-owner: ^1.0.4 472 | lru-cache: ^7.7.1 473 | minipass: ^3.1.6 474 | minipass-collect: ^1.0.2 475 | minipass-flush: ^1.0.5 476 | minipass-pipeline: ^1.2.4 477 | mkdirp: ^1.0.4 478 | p-map: ^4.0.0 479 | promise-inflight: ^1.0.1 480 | rimraf: ^3.0.2 481 | ssri: ^9.0.0 482 | tar: ^6.1.11 483 | unique-filename: ^2.0.0 484 | checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 485 | languageName: node 486 | linkType: hard 487 | 488 | "chokidar@npm:^3.5.3": 489 | version: 3.5.3 490 | resolution: "chokidar@npm:3.5.3" 491 | dependencies: 492 | anymatch: ~3.1.2 493 | braces: ~3.0.2 494 | fsevents: ~2.3.2 495 | glob-parent: ~5.1.2 496 | is-binary-path: ~2.1.0 497 | is-glob: ~4.0.1 498 | normalize-path: ~3.0.0 499 | readdirp: ~3.6.0 500 | dependenciesMeta: 501 | fsevents: 502 | optional: true 503 | checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c 504 | languageName: node 505 | linkType: hard 506 | 507 | "chownr@npm:^2.0.0": 508 | version: 2.0.0 509 | resolution: "chownr@npm:2.0.0" 510 | checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f 511 | languageName: node 512 | linkType: hard 513 | 514 | "clean-stack@npm:^2.0.0": 515 | version: 2.2.0 516 | resolution: "clean-stack@npm:2.2.0" 517 | checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 518 | languageName: node 519 | linkType: hard 520 | 521 | "color-support@npm:^1.1.3": 522 | version: 1.1.3 523 | resolution: "color-support@npm:1.1.3" 524 | bin: 525 | color-support: bin.js 526 | checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b 527 | languageName: node 528 | linkType: hard 529 | 530 | "concat-map@npm:0.0.1": 531 | version: 0.0.1 532 | resolution: "concat-map@npm:0.0.1" 533 | checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af 534 | languageName: node 535 | linkType: hard 536 | 537 | "console-control-strings@npm:^1.1.0": 538 | version: 1.1.0 539 | resolution: "console-control-strings@npm:1.1.0" 540 | checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed 541 | languageName: node 542 | linkType: hard 543 | 544 | "cookie@npm:^0.4.1": 545 | version: 0.4.2 546 | resolution: "cookie@npm:0.4.2" 547 | checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b 548 | languageName: node 549 | linkType: hard 550 | 551 | "cron-schedule@npm:^3.0.4": 552 | version: 3.0.6 553 | resolution: "cron-schedule@npm:3.0.6" 554 | checksum: 5f6bee86397f5098602588d7acda799c474452145bf1e767319a54e8827e02224585dd231c9e39fd66ffb308def775bf5581ebb1065b12a8e2c2fe91884d44d8 555 | languageName: node 556 | linkType: hard 557 | 558 | "cross-spawn@npm:^7.0.3": 559 | version: 7.0.3 560 | resolution: "cross-spawn@npm:7.0.3" 561 | dependencies: 562 | path-key: ^3.1.0 563 | shebang-command: ^2.0.0 564 | which: ^2.0.1 565 | checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 566 | languageName: node 567 | linkType: hard 568 | 569 | "debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.3.3": 570 | version: 4.3.4 571 | resolution: "debug@npm:4.3.4" 572 | dependencies: 573 | ms: 2.1.2 574 | peerDependenciesMeta: 575 | supports-color: 576 | optional: true 577 | checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 578 | languageName: node 579 | linkType: hard 580 | 581 | "delegates@npm:^1.0.0": 582 | version: 1.0.0 583 | resolution: "delegates@npm:1.0.0" 584 | checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd 585 | languageName: node 586 | linkType: hard 587 | 588 | "depd@npm:^1.1.2": 589 | version: 1.1.2 590 | resolution: "depd@npm:1.1.2" 591 | checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 592 | languageName: node 593 | linkType: hard 594 | 595 | "diary@npm:^0.3.0": 596 | version: 0.3.0 597 | resolution: "diary@npm:0.3.0" 598 | checksum: 865355df6ca958f31979d08bd689cb0b9646765c638f4435a1548a0b002b925b4585ce4a506ab50c7d71e7079f9c397dc8aa3a5dfdea20fe225ab992bbbfc0ba 599 | languageName: node 600 | linkType: hard 601 | 602 | "dotenv@npm:^10.0.0": 603 | version: 10.0.0 604 | resolution: "dotenv@npm:10.0.0" 605 | checksum: f412c5fe8c24fbe313d302d2500e247ba8a1946492db405a4de4d30dd0eb186a88a43f13c958c5a7de303938949c4231c56994f97d05c4bc1f22478d631b4005 606 | languageName: node 607 | linkType: hard 608 | 609 | "emoji-regex@npm:^8.0.0": 610 | version: 8.0.0 611 | resolution: "emoji-regex@npm:8.0.0" 612 | checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 613 | languageName: node 614 | linkType: hard 615 | 616 | "encoding@npm:^0.1.13": 617 | version: 0.1.13 618 | resolution: "encoding@npm:0.1.13" 619 | dependencies: 620 | iconv-lite: ^0.6.2 621 | checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f 622 | languageName: node 623 | linkType: hard 624 | 625 | "env-paths@npm:^2.2.0": 626 | version: 2.2.1 627 | resolution: "env-paths@npm:2.2.1" 628 | checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e 629 | languageName: node 630 | linkType: hard 631 | 632 | "err-code@npm:^2.0.2": 633 | version: 2.0.3 634 | resolution: "err-code@npm:2.0.3" 635 | checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 636 | languageName: node 637 | linkType: hard 638 | 639 | "esbuild-android-64@npm:0.14.51": 640 | version: 0.14.51 641 | resolution: "esbuild-android-64@npm:0.14.51" 642 | conditions: os=android & cpu=x64 643 | languageName: node 644 | linkType: hard 645 | 646 | "esbuild-android-arm64@npm:0.14.51": 647 | version: 0.14.51 648 | resolution: "esbuild-android-arm64@npm:0.14.51" 649 | conditions: os=android & cpu=arm64 650 | languageName: node 651 | linkType: hard 652 | 653 | "esbuild-darwin-64@npm:0.14.51": 654 | version: 0.14.51 655 | resolution: "esbuild-darwin-64@npm:0.14.51" 656 | conditions: os=darwin & cpu=x64 657 | languageName: node 658 | linkType: hard 659 | 660 | "esbuild-darwin-arm64@npm:0.14.51": 661 | version: 0.14.51 662 | resolution: "esbuild-darwin-arm64@npm:0.14.51" 663 | conditions: os=darwin & cpu=arm64 664 | languageName: node 665 | linkType: hard 666 | 667 | "esbuild-freebsd-64@npm:0.14.51": 668 | version: 0.14.51 669 | resolution: "esbuild-freebsd-64@npm:0.14.51" 670 | conditions: os=freebsd & cpu=x64 671 | languageName: node 672 | linkType: hard 673 | 674 | "esbuild-freebsd-arm64@npm:0.14.51": 675 | version: 0.14.51 676 | resolution: "esbuild-freebsd-arm64@npm:0.14.51" 677 | conditions: os=freebsd & cpu=arm64 678 | languageName: node 679 | linkType: hard 680 | 681 | "esbuild-linux-32@npm:0.14.51": 682 | version: 0.14.51 683 | resolution: "esbuild-linux-32@npm:0.14.51" 684 | conditions: os=linux & cpu=ia32 685 | languageName: node 686 | linkType: hard 687 | 688 | "esbuild-linux-64@npm:0.14.51": 689 | version: 0.14.51 690 | resolution: "esbuild-linux-64@npm:0.14.51" 691 | conditions: os=linux & cpu=x64 692 | languageName: node 693 | linkType: hard 694 | 695 | "esbuild-linux-arm64@npm:0.14.51": 696 | version: 0.14.51 697 | resolution: "esbuild-linux-arm64@npm:0.14.51" 698 | conditions: os=linux & cpu=arm64 699 | languageName: node 700 | linkType: hard 701 | 702 | "esbuild-linux-arm@npm:0.14.51": 703 | version: 0.14.51 704 | resolution: "esbuild-linux-arm@npm:0.14.51" 705 | conditions: os=linux & cpu=arm 706 | languageName: node 707 | linkType: hard 708 | 709 | "esbuild-linux-mips64le@npm:0.14.51": 710 | version: 0.14.51 711 | resolution: "esbuild-linux-mips64le@npm:0.14.51" 712 | conditions: os=linux & cpu=mips64el 713 | languageName: node 714 | linkType: hard 715 | 716 | "esbuild-linux-ppc64le@npm:0.14.51": 717 | version: 0.14.51 718 | resolution: "esbuild-linux-ppc64le@npm:0.14.51" 719 | conditions: os=linux & cpu=ppc64 720 | languageName: node 721 | linkType: hard 722 | 723 | "esbuild-linux-riscv64@npm:0.14.51": 724 | version: 0.14.51 725 | resolution: "esbuild-linux-riscv64@npm:0.14.51" 726 | conditions: os=linux & cpu=riscv64 727 | languageName: node 728 | linkType: hard 729 | 730 | "esbuild-linux-s390x@npm:0.14.51": 731 | version: 0.14.51 732 | resolution: "esbuild-linux-s390x@npm:0.14.51" 733 | conditions: os=linux & cpu=s390x 734 | languageName: node 735 | linkType: hard 736 | 737 | "esbuild-netbsd-64@npm:0.14.51": 738 | version: 0.14.51 739 | resolution: "esbuild-netbsd-64@npm:0.14.51" 740 | conditions: os=netbsd & cpu=x64 741 | languageName: node 742 | linkType: hard 743 | 744 | "esbuild-openbsd-64@npm:0.14.51": 745 | version: 0.14.51 746 | resolution: "esbuild-openbsd-64@npm:0.14.51" 747 | conditions: os=openbsd & cpu=x64 748 | languageName: node 749 | linkType: hard 750 | 751 | "esbuild-sunos-64@npm:0.14.51": 752 | version: 0.14.51 753 | resolution: "esbuild-sunos-64@npm:0.14.51" 754 | conditions: os=sunos & cpu=x64 755 | languageName: node 756 | linkType: hard 757 | 758 | "esbuild-windows-32@npm:0.14.51": 759 | version: 0.14.51 760 | resolution: "esbuild-windows-32@npm:0.14.51" 761 | conditions: os=win32 & cpu=ia32 762 | languageName: node 763 | linkType: hard 764 | 765 | "esbuild-windows-64@npm:0.14.51": 766 | version: 0.14.51 767 | resolution: "esbuild-windows-64@npm:0.14.51" 768 | conditions: os=win32 & cpu=x64 769 | languageName: node 770 | linkType: hard 771 | 772 | "esbuild-windows-arm64@npm:0.14.51": 773 | version: 0.14.51 774 | resolution: "esbuild-windows-arm64@npm:0.14.51" 775 | conditions: os=win32 & cpu=arm64 776 | languageName: node 777 | linkType: hard 778 | 779 | "esbuild@npm:0.14.51": 780 | version: 0.14.51 781 | resolution: "esbuild@npm:0.14.51" 782 | dependencies: 783 | esbuild-android-64: 0.14.51 784 | esbuild-android-arm64: 0.14.51 785 | esbuild-darwin-64: 0.14.51 786 | esbuild-darwin-arm64: 0.14.51 787 | esbuild-freebsd-64: 0.14.51 788 | esbuild-freebsd-arm64: 0.14.51 789 | esbuild-linux-32: 0.14.51 790 | esbuild-linux-64: 0.14.51 791 | esbuild-linux-arm: 0.14.51 792 | esbuild-linux-arm64: 0.14.51 793 | esbuild-linux-mips64le: 0.14.51 794 | esbuild-linux-ppc64le: 0.14.51 795 | esbuild-linux-riscv64: 0.14.51 796 | esbuild-linux-s390x: 0.14.51 797 | esbuild-netbsd-64: 0.14.51 798 | esbuild-openbsd-64: 0.14.51 799 | esbuild-sunos-64: 0.14.51 800 | esbuild-windows-32: 0.14.51 801 | esbuild-windows-64: 0.14.51 802 | esbuild-windows-arm64: 0.14.51 803 | dependenciesMeta: 804 | esbuild-android-64: 805 | optional: true 806 | esbuild-android-arm64: 807 | optional: true 808 | esbuild-darwin-64: 809 | optional: true 810 | esbuild-darwin-arm64: 811 | optional: true 812 | esbuild-freebsd-64: 813 | optional: true 814 | esbuild-freebsd-arm64: 815 | optional: true 816 | esbuild-linux-32: 817 | optional: true 818 | esbuild-linux-64: 819 | optional: true 820 | esbuild-linux-arm: 821 | optional: true 822 | esbuild-linux-arm64: 823 | optional: true 824 | esbuild-linux-mips64le: 825 | optional: true 826 | esbuild-linux-ppc64le: 827 | optional: true 828 | esbuild-linux-riscv64: 829 | optional: true 830 | esbuild-linux-s390x: 831 | optional: true 832 | esbuild-netbsd-64: 833 | optional: true 834 | esbuild-openbsd-64: 835 | optional: true 836 | esbuild-sunos-64: 837 | optional: true 838 | esbuild-windows-32: 839 | optional: true 840 | esbuild-windows-64: 841 | optional: true 842 | esbuild-windows-arm64: 843 | optional: true 844 | bin: 845 | esbuild: bin/esbuild 846 | checksum: 0fa8a52dd1dc7b231f7b02448aae5ee71ff2fe26ee67f6c97945a6dd128806be6eb2c73be7b49c7b25f831d646edd3da245faf31ede136f4aa0934abd7206e4b 847 | languageName: node 848 | linkType: hard 849 | 850 | "escape-string-regexp@npm:^4.0.0": 851 | version: 4.0.0 852 | resolution: "escape-string-regexp@npm:4.0.0" 853 | checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 854 | languageName: node 855 | linkType: hard 856 | 857 | "estree-walker@npm:^0.6.1": 858 | version: 0.6.1 859 | resolution: "estree-walker@npm:0.6.1" 860 | checksum: 9d6f82a4921f11eec18f8089fb3cce6e53bcf45a8e545c42a2674d02d055fb30f25f90495f8be60803df6c39680c80dcee7f944526867eb7aa1fc9254883b23d 861 | languageName: node 862 | linkType: hard 863 | 864 | "execa@npm:^6.1.0": 865 | version: 6.1.0 866 | resolution: "execa@npm:6.1.0" 867 | dependencies: 868 | cross-spawn: ^7.0.3 869 | get-stream: ^6.0.1 870 | human-signals: ^3.0.1 871 | is-stream: ^3.0.0 872 | merge-stream: ^2.0.0 873 | npm-run-path: ^5.1.0 874 | onetime: ^6.0.0 875 | signal-exit: ^3.0.7 876 | strip-final-newline: ^3.0.0 877 | checksum: 1a4af799839134f5c72eb63d525b87304c1114a63aa71676c91d57ccef2e26f2f53e14c11384ab11c4ec479be1efa83d11c8190e00040355c2c5c3364327fa8e 878 | languageName: node 879 | linkType: hard 880 | 881 | "fill-range@npm:^7.0.1": 882 | version: 7.0.1 883 | resolution: "fill-range@npm:7.0.1" 884 | dependencies: 885 | to-regex-range: ^5.0.1 886 | checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 887 | languageName: node 888 | linkType: hard 889 | 890 | "fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": 891 | version: 2.1.0 892 | resolution: "fs-minipass@npm:2.1.0" 893 | dependencies: 894 | minipass: ^3.0.0 895 | checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 896 | languageName: node 897 | linkType: hard 898 | 899 | "fs.realpath@npm:^1.0.0": 900 | version: 1.0.0 901 | resolution: "fs.realpath@npm:1.0.0" 902 | checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 903 | languageName: node 904 | linkType: hard 905 | 906 | "fsevents@npm:~2.3.2": 907 | version: 2.3.2 908 | resolution: "fsevents@npm:2.3.2" 909 | dependencies: 910 | node-gyp: latest 911 | checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f 912 | conditions: os=darwin 913 | languageName: node 914 | linkType: hard 915 | 916 | "fsevents@patch:fsevents@~2.3.2#~builtin": 917 | version: 2.3.2 918 | resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" 919 | dependencies: 920 | node-gyp: latest 921 | conditions: os=darwin 922 | languageName: node 923 | linkType: hard 924 | 925 | "gauge@npm:^4.0.3": 926 | version: 4.0.4 927 | resolution: "gauge@npm:4.0.4" 928 | dependencies: 929 | aproba: ^1.0.3 || ^2.0.0 930 | color-support: ^1.1.3 931 | console-control-strings: ^1.1.0 932 | has-unicode: ^2.0.1 933 | signal-exit: ^3.0.7 934 | string-width: ^4.2.3 935 | strip-ansi: ^6.0.1 936 | wide-align: ^1.1.5 937 | checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d 938 | languageName: node 939 | linkType: hard 940 | 941 | "get-stream@npm:^6.0.1": 942 | version: 6.0.1 943 | resolution: "get-stream@npm:6.0.1" 944 | checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad 945 | languageName: node 946 | linkType: hard 947 | 948 | "glob-parent@npm:~5.1.2": 949 | version: 5.1.2 950 | resolution: "glob-parent@npm:5.1.2" 951 | dependencies: 952 | is-glob: ^4.0.1 953 | checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e 954 | languageName: node 955 | linkType: hard 956 | 957 | "glob@npm:^7.1.3, glob@npm:^7.1.4": 958 | version: 7.2.3 959 | resolution: "glob@npm:7.2.3" 960 | dependencies: 961 | fs.realpath: ^1.0.0 962 | inflight: ^1.0.4 963 | inherits: 2 964 | minimatch: ^3.1.1 965 | once: ^1.3.0 966 | path-is-absolute: ^1.0.0 967 | checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 968 | languageName: node 969 | linkType: hard 970 | 971 | "glob@npm:^8.0.1": 972 | version: 8.0.3 973 | resolution: "glob@npm:8.0.3" 974 | dependencies: 975 | fs.realpath: ^1.0.0 976 | inflight: ^1.0.4 977 | inherits: 2 978 | minimatch: ^5.0.1 979 | once: ^1.3.0 980 | checksum: 50bcdea19d8e79d8de5f460b1939ffc2b3299eac28deb502093fdca22a78efebc03e66bf54f0abc3d3d07d8134d19a32850288b7440d77e072aa55f9d33b18c5 981 | languageName: node 982 | linkType: hard 983 | 984 | "graceful-fs@npm:^4.2.6": 985 | version: 4.2.10 986 | resolution: "graceful-fs@npm:4.2.10" 987 | checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da 988 | languageName: node 989 | linkType: hard 990 | 991 | "has-unicode@npm:^2.0.1": 992 | version: 2.0.1 993 | resolution: "has-unicode@npm:2.0.1" 994 | checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 995 | languageName: node 996 | linkType: hard 997 | 998 | "html-rewriter-wasm@npm:^0.4.1": 999 | version: 0.4.1 1000 | resolution: "html-rewriter-wasm@npm:0.4.1" 1001 | checksum: e97f76e0f9e2bfb187ffae1c93da4da20a82469e270f96d8d5d8b7f410cdfcce5b3ecb917558cc865fd50b6a2d71a4e8504a66b4ae1b9c6a5e9182a1c6f01ce4 1002 | languageName: node 1003 | linkType: hard 1004 | 1005 | "http-cache-semantics@npm:^4.1.0": 1006 | version: 4.1.0 1007 | resolution: "http-cache-semantics@npm:4.1.0" 1008 | checksum: 974de94a81c5474be07f269f9fd8383e92ebb5a448208223bfb39e172a9dbc26feff250192ecc23b9593b3f92098e010406b0f24bd4d588d631f80214648ed42 1009 | languageName: node 1010 | linkType: hard 1011 | 1012 | "http-proxy-agent@npm:^5.0.0": 1013 | version: 5.0.0 1014 | resolution: "http-proxy-agent@npm:5.0.0" 1015 | dependencies: 1016 | "@tootallnate/once": 2 1017 | agent-base: 6 1018 | debug: 4 1019 | checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 1020 | languageName: node 1021 | linkType: hard 1022 | 1023 | "https-proxy-agent@npm:^5.0.0": 1024 | version: 5.0.1 1025 | resolution: "https-proxy-agent@npm:5.0.1" 1026 | dependencies: 1027 | agent-base: 6 1028 | debug: 4 1029 | checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 1030 | languageName: node 1031 | linkType: hard 1032 | 1033 | "human-signals@npm:^3.0.1": 1034 | version: 3.0.1 1035 | resolution: "human-signals@npm:3.0.1" 1036 | checksum: f252a7769c8094a5c9dc6772816bdb417b188820b04c8b42d0fc468e03a0ba905b1dd07afabe9385cc83504af1ccc2b985cd1e4aeeeb8e0029896c5af2e6f354 1037 | languageName: node 1038 | linkType: hard 1039 | 1040 | "humanize-ms@npm:^1.2.1": 1041 | version: 1.2.1 1042 | resolution: "humanize-ms@npm:1.2.1" 1043 | dependencies: 1044 | ms: ^2.0.0 1045 | checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 1046 | languageName: node 1047 | linkType: hard 1048 | 1049 | "iconv-lite@npm:^0.6.2": 1050 | version: 0.6.3 1051 | resolution: "iconv-lite@npm:0.6.3" 1052 | dependencies: 1053 | safer-buffer: ">= 2.1.2 < 3.0.0" 1054 | checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf 1055 | languageName: node 1056 | linkType: hard 1057 | 1058 | "imurmurhash@npm:^0.1.4": 1059 | version: 0.1.4 1060 | resolution: "imurmurhash@npm:0.1.4" 1061 | checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 1062 | languageName: node 1063 | linkType: hard 1064 | 1065 | "indent-string@npm:^4.0.0": 1066 | version: 4.0.0 1067 | resolution: "indent-string@npm:4.0.0" 1068 | checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 1069 | languageName: node 1070 | linkType: hard 1071 | 1072 | "infer-owner@npm:^1.0.4": 1073 | version: 1.0.4 1074 | resolution: "infer-owner@npm:1.0.4" 1075 | checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 1076 | languageName: node 1077 | linkType: hard 1078 | 1079 | "inflight@npm:^1.0.4": 1080 | version: 1.0.6 1081 | resolution: "inflight@npm:1.0.6" 1082 | dependencies: 1083 | once: ^1.3.0 1084 | wrappy: 1 1085 | checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd 1086 | languageName: node 1087 | linkType: hard 1088 | 1089 | "inherits@npm:2, inherits@npm:^2.0.3": 1090 | version: 2.0.4 1091 | resolution: "inherits@npm:2.0.4" 1092 | checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 1093 | languageName: node 1094 | linkType: hard 1095 | 1096 | "ip@npm:^2.0.0": 1097 | version: 2.0.0 1098 | resolution: "ip@npm:2.0.0" 1099 | checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 1100 | languageName: node 1101 | linkType: hard 1102 | 1103 | "is-binary-path@npm:~2.1.0": 1104 | version: 2.1.0 1105 | resolution: "is-binary-path@npm:2.1.0" 1106 | dependencies: 1107 | binary-extensions: ^2.0.0 1108 | checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c 1109 | languageName: node 1110 | linkType: hard 1111 | 1112 | "is-extglob@npm:^2.1.1": 1113 | version: 2.1.1 1114 | resolution: "is-extglob@npm:2.1.1" 1115 | checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 1116 | languageName: node 1117 | linkType: hard 1118 | 1119 | "is-fullwidth-code-point@npm:^3.0.0": 1120 | version: 3.0.0 1121 | resolution: "is-fullwidth-code-point@npm:3.0.0" 1122 | checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 1123 | languageName: node 1124 | linkType: hard 1125 | 1126 | "is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": 1127 | version: 4.0.3 1128 | resolution: "is-glob@npm:4.0.3" 1129 | dependencies: 1130 | is-extglob: ^2.1.1 1131 | checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 1132 | languageName: node 1133 | linkType: hard 1134 | 1135 | "is-lambda@npm:^1.0.1": 1136 | version: 1.0.1 1137 | resolution: "is-lambda@npm:1.0.1" 1138 | checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 1139 | languageName: node 1140 | linkType: hard 1141 | 1142 | "is-number@npm:^7.0.0": 1143 | version: 7.0.0 1144 | resolution: "is-number@npm:7.0.0" 1145 | checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a 1146 | languageName: node 1147 | linkType: hard 1148 | 1149 | "is-stream@npm:^3.0.0": 1150 | version: 3.0.0 1151 | resolution: "is-stream@npm:3.0.0" 1152 | checksum: 172093fe99119ffd07611ab6d1bcccfe8bc4aa80d864b15f43e63e54b7abc71e779acd69afdb854c4e2a67fdc16ae710e370eda40088d1cfc956a50ed82d8f16 1153 | languageName: node 1154 | linkType: hard 1155 | 1156 | "isexe@npm:^2.0.0": 1157 | version: 2.0.0 1158 | resolution: "isexe@npm:2.0.0" 1159 | checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 1160 | languageName: node 1161 | linkType: hard 1162 | 1163 | "juso-edge@workspace:.": 1164 | version: 0.0.0-use.local 1165 | resolution: "juso-edge@workspace:." 1166 | dependencies: 1167 | "@cloudflare/workers-types": ^3.13.0 1168 | "@types/node": ^18.0.0 1169 | typescript: ^4.7.3 1170 | workers-logger: ^0.2.0 1171 | worktop: next 1172 | wrangler: ^2.1.11 1173 | languageName: unknown 1174 | linkType: soft 1175 | 1176 | "kleur@npm:^4.1.4": 1177 | version: 4.1.5 1178 | resolution: "kleur@npm:4.1.5" 1179 | checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 1180 | languageName: node 1181 | linkType: hard 1182 | 1183 | "lru-cache@npm:^6.0.0": 1184 | version: 6.0.0 1185 | resolution: "lru-cache@npm:6.0.0" 1186 | dependencies: 1187 | yallist: ^4.0.0 1188 | checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 1189 | languageName: node 1190 | linkType: hard 1191 | 1192 | "lru-cache@npm:^7.7.1": 1193 | version: 7.14.0 1194 | resolution: "lru-cache@npm:7.14.0" 1195 | checksum: efdd329f2c1bb790b71d497c6c59272e6bc2d7dd060ba55fc136becd3dd31fc8346edb446275504d94cb60d3c8385dbf5267b79b23789e409b2bdf302d13f0d7 1196 | languageName: node 1197 | linkType: hard 1198 | 1199 | "magic-string@npm:^0.25.3": 1200 | version: 0.25.9 1201 | resolution: "magic-string@npm:0.25.9" 1202 | dependencies: 1203 | sourcemap-codec: ^1.4.8 1204 | checksum: 9a0e55a15c7303fc360f9572a71cffba1f61451bc92c5602b1206c9d17f492403bf96f946dfce7483e66822d6b74607262e24392e87b0ac27b786e69a40e9b1a 1205 | languageName: node 1206 | linkType: hard 1207 | 1208 | "make-fetch-happen@npm:^10.0.3": 1209 | version: 10.2.1 1210 | resolution: "make-fetch-happen@npm:10.2.1" 1211 | dependencies: 1212 | agentkeepalive: ^4.2.1 1213 | cacache: ^16.1.0 1214 | http-cache-semantics: ^4.1.0 1215 | http-proxy-agent: ^5.0.0 1216 | https-proxy-agent: ^5.0.0 1217 | is-lambda: ^1.0.1 1218 | lru-cache: ^7.7.1 1219 | minipass: ^3.1.6 1220 | minipass-collect: ^1.0.2 1221 | minipass-fetch: ^2.0.3 1222 | minipass-flush: ^1.0.5 1223 | minipass-pipeline: ^1.2.4 1224 | negotiator: ^0.6.3 1225 | promise-retry: ^2.0.1 1226 | socks-proxy-agent: ^7.0.0 1227 | ssri: ^9.0.0 1228 | checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c 1229 | languageName: node 1230 | linkType: hard 1231 | 1232 | "merge-stream@npm:^2.0.0": 1233 | version: 2.0.0 1234 | resolution: "merge-stream@npm:2.0.0" 1235 | checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 1236 | languageName: node 1237 | linkType: hard 1238 | 1239 | "mime@npm:^3.0.0": 1240 | version: 3.0.0 1241 | resolution: "mime@npm:3.0.0" 1242 | bin: 1243 | mime: cli.js 1244 | checksum: f43f9b7bfa64534e6b05bd6062961681aeb406a5b53673b53b683f27fcc4e739989941836a355eef831f4478923651ecc739f4a5f6e20a76487b432bfd4db928 1245 | languageName: node 1246 | linkType: hard 1247 | 1248 | "mimic-fn@npm:^4.0.0": 1249 | version: 4.0.0 1250 | resolution: "mimic-fn@npm:4.0.0" 1251 | checksum: 995dcece15ee29aa16e188de6633d43a3db4611bcf93620e7e62109ec41c79c0f34277165b8ce5e361205049766e371851264c21ac64ca35499acb5421c2ba56 1252 | languageName: node 1253 | linkType: hard 1254 | 1255 | "miniflare@npm:2.9.0": 1256 | version: 2.9.0 1257 | resolution: "miniflare@npm:2.9.0" 1258 | dependencies: 1259 | "@miniflare/cache": 2.9.0 1260 | "@miniflare/cli-parser": 2.9.0 1261 | "@miniflare/core": 2.9.0 1262 | "@miniflare/d1": 2.9.0 1263 | "@miniflare/durable-objects": 2.9.0 1264 | "@miniflare/html-rewriter": 2.9.0 1265 | "@miniflare/http-server": 2.9.0 1266 | "@miniflare/kv": 2.9.0 1267 | "@miniflare/queues": 2.9.0 1268 | "@miniflare/r2": 2.9.0 1269 | "@miniflare/runner-vm": 2.9.0 1270 | "@miniflare/scheduler": 2.9.0 1271 | "@miniflare/shared": 2.9.0 1272 | "@miniflare/sites": 2.9.0 1273 | "@miniflare/storage-file": 2.9.0 1274 | "@miniflare/storage-memory": 2.9.0 1275 | "@miniflare/web-sockets": 2.9.0 1276 | kleur: ^4.1.4 1277 | semiver: ^1.1.0 1278 | source-map-support: ^0.5.20 1279 | undici: 5.9.1 1280 | peerDependencies: 1281 | "@miniflare/storage-redis": 2.9.0 1282 | cron-schedule: ^3.0.4 1283 | ioredis: ^4.27.9 1284 | peerDependenciesMeta: 1285 | "@miniflare/storage-redis": 1286 | optional: true 1287 | cron-schedule: 1288 | optional: true 1289 | ioredis: 1290 | optional: true 1291 | bin: 1292 | miniflare: bootstrap.js 1293 | checksum: a3b37eb85cbb6a05e01ff48dc8d019bcf48840a8a0c193210956fd2cd1dd14888a1aafd1091af7904bb547c7525c988cf5a6528c6e8dc799e57938dbdc8530d7 1294 | languageName: node 1295 | linkType: hard 1296 | 1297 | "minimatch@npm:^3.1.1": 1298 | version: 3.1.2 1299 | resolution: "minimatch@npm:3.1.2" 1300 | dependencies: 1301 | brace-expansion: ^1.1.7 1302 | checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a 1303 | languageName: node 1304 | linkType: hard 1305 | 1306 | "minimatch@npm:^5.0.1": 1307 | version: 5.1.0 1308 | resolution: "minimatch@npm:5.1.0" 1309 | dependencies: 1310 | brace-expansion: ^2.0.1 1311 | checksum: 15ce53d31a06361e8b7a629501b5c75491bc2b59712d53e802b1987121d91b433d73fcc5be92974fde66b2b51d8fb28d75a9ae900d249feb792bb1ba2a4f0a90 1312 | languageName: node 1313 | linkType: hard 1314 | 1315 | "minipass-collect@npm:^1.0.2": 1316 | version: 1.0.2 1317 | resolution: "minipass-collect@npm:1.0.2" 1318 | dependencies: 1319 | minipass: ^3.0.0 1320 | checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 1321 | languageName: node 1322 | linkType: hard 1323 | 1324 | "minipass-fetch@npm:^2.0.3": 1325 | version: 2.1.2 1326 | resolution: "minipass-fetch@npm:2.1.2" 1327 | dependencies: 1328 | encoding: ^0.1.13 1329 | minipass: ^3.1.6 1330 | minipass-sized: ^1.0.3 1331 | minizlib: ^2.1.2 1332 | dependenciesMeta: 1333 | encoding: 1334 | optional: true 1335 | checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 1336 | languageName: node 1337 | linkType: hard 1338 | 1339 | "minipass-flush@npm:^1.0.5": 1340 | version: 1.0.5 1341 | resolution: "minipass-flush@npm:1.0.5" 1342 | dependencies: 1343 | minipass: ^3.0.0 1344 | checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf 1345 | languageName: node 1346 | linkType: hard 1347 | 1348 | "minipass-pipeline@npm:^1.2.4": 1349 | version: 1.2.4 1350 | resolution: "minipass-pipeline@npm:1.2.4" 1351 | dependencies: 1352 | minipass: ^3.0.0 1353 | checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b 1354 | languageName: node 1355 | linkType: hard 1356 | 1357 | "minipass-sized@npm:^1.0.3": 1358 | version: 1.0.3 1359 | resolution: "minipass-sized@npm:1.0.3" 1360 | dependencies: 1361 | minipass: ^3.0.0 1362 | checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 1363 | languageName: node 1364 | linkType: hard 1365 | 1366 | "minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": 1367 | version: 3.3.5 1368 | resolution: "minipass@npm:3.3.5" 1369 | dependencies: 1370 | yallist: ^4.0.0 1371 | checksum: f89f02bcaa0e0e4bb4c44ec796008e69fbca62db0aba6ead1bc57d25bdaefdf42102130f4f9ecb7d9c6b6cd35ff7b0c7b97d001d3435da8e629fb68af3aea57e 1372 | languageName: node 1373 | linkType: hard 1374 | 1375 | "minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": 1376 | version: 2.1.2 1377 | resolution: "minizlib@npm:2.1.2" 1378 | dependencies: 1379 | minipass: ^3.0.0 1380 | yallist: ^4.0.0 1381 | checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 1382 | languageName: node 1383 | linkType: hard 1384 | 1385 | "mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": 1386 | version: 1.0.4 1387 | resolution: "mkdirp@npm:1.0.4" 1388 | bin: 1389 | mkdirp: bin/cmd.js 1390 | checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f 1391 | languageName: node 1392 | linkType: hard 1393 | 1394 | "mrmime@npm:^1.0.0": 1395 | version: 1.0.1 1396 | resolution: "mrmime@npm:1.0.1" 1397 | checksum: cc979da44bbbffebaa8eaf7a45117e851f2d4cb46a3ada6ceb78130466a04c15a0de9a9ce1c8b8ba6f6e1b8618866b1352992bf1757d241c0ddca558b9f28a77 1398 | languageName: node 1399 | linkType: hard 1400 | 1401 | "ms@npm:2.1.2": 1402 | version: 2.1.2 1403 | resolution: "ms@npm:2.1.2" 1404 | checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f 1405 | languageName: node 1406 | linkType: hard 1407 | 1408 | "ms@npm:^2.0.0": 1409 | version: 2.1.3 1410 | resolution: "ms@npm:2.1.3" 1411 | checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d 1412 | languageName: node 1413 | linkType: hard 1414 | 1415 | "mustache@npm:^4.2.0": 1416 | version: 4.2.0 1417 | resolution: "mustache@npm:4.2.0" 1418 | bin: 1419 | mustache: bin/mustache 1420 | checksum: 928fcb63e3aa44a562bfe9b59ba202cccbe40a46da50be6f0dd831b495be1dd7e38ca4657f0ecab2c1a89dc7bccba0885eab7ee7c1b215830da765758c7e0506 1421 | languageName: node 1422 | linkType: hard 1423 | 1424 | "nanoid@npm:^3.3.3": 1425 | version: 3.3.4 1426 | resolution: "nanoid@npm:3.3.4" 1427 | bin: 1428 | nanoid: bin/nanoid.cjs 1429 | checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c 1430 | languageName: node 1431 | linkType: hard 1432 | 1433 | "negotiator@npm:^0.6.3": 1434 | version: 0.6.3 1435 | resolution: "negotiator@npm:0.6.3" 1436 | checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 1437 | languageName: node 1438 | linkType: hard 1439 | 1440 | "node-forge@npm:^1": 1441 | version: 1.3.1 1442 | resolution: "node-forge@npm:1.3.1" 1443 | checksum: 08fb072d3d670599c89a1704b3e9c649ff1b998256737f0e06fbd1a5bf41cae4457ccaee32d95052d80bbafd9ffe01284e078c8071f0267dc9744e51c5ed42a9 1444 | languageName: node 1445 | linkType: hard 1446 | 1447 | "node-gyp@npm:latest": 1448 | version: 9.3.0 1449 | resolution: "node-gyp@npm:9.3.0" 1450 | dependencies: 1451 | env-paths: ^2.2.0 1452 | glob: ^7.1.4 1453 | graceful-fs: ^4.2.6 1454 | make-fetch-happen: ^10.0.3 1455 | nopt: ^6.0.0 1456 | npmlog: ^6.0.0 1457 | rimraf: ^3.0.2 1458 | semver: ^7.3.5 1459 | tar: ^6.1.2 1460 | which: ^2.0.2 1461 | bin: 1462 | node-gyp: bin/node-gyp.js 1463 | checksum: 589ddd3ed967724ef425f9624bfa47cf73022640ab3eba6d556e92cdc4ddef33b63fce3a467c93b995a3f61df92eafd3c3d1e8dbe4a2c00c383334487dea99c3 1464 | languageName: node 1465 | linkType: hard 1466 | 1467 | "nopt@npm:^6.0.0": 1468 | version: 6.0.0 1469 | resolution: "nopt@npm:6.0.0" 1470 | dependencies: 1471 | abbrev: ^1.0.0 1472 | bin: 1473 | nopt: bin/nopt.js 1474 | checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac 1475 | languageName: node 1476 | linkType: hard 1477 | 1478 | "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": 1479 | version: 3.0.0 1480 | resolution: "normalize-path@npm:3.0.0" 1481 | checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 1482 | languageName: node 1483 | linkType: hard 1484 | 1485 | "npm-run-path@npm:^5.1.0": 1486 | version: 5.1.0 1487 | resolution: "npm-run-path@npm:5.1.0" 1488 | dependencies: 1489 | path-key: ^4.0.0 1490 | checksum: dc184eb5ec239d6a2b990b43236845332ef12f4e0beaa9701de724aa797fe40b6bbd0157fb7639d24d3ab13f5d5cf22d223a19c6300846b8126f335f788bee66 1491 | languageName: node 1492 | linkType: hard 1493 | 1494 | "npmlog@npm:^6.0.0": 1495 | version: 6.0.2 1496 | resolution: "npmlog@npm:6.0.2" 1497 | dependencies: 1498 | are-we-there-yet: ^3.0.0 1499 | console-control-strings: ^1.1.0 1500 | gauge: ^4.0.3 1501 | set-blocking: ^2.0.0 1502 | checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a 1503 | languageName: node 1504 | linkType: hard 1505 | 1506 | "npx-import@npm:^1.1.3": 1507 | version: 1.1.3 1508 | resolution: "npx-import@npm:1.1.3" 1509 | dependencies: 1510 | execa: ^6.1.0 1511 | parse-package-name: ^1.0.0 1512 | semver: ^7.3.7 1513 | validate-npm-package-name: ^4.0.0 1514 | checksum: 6ec83cf757012f56af3d7852013f520ba667dc19da9d535ca5893232178bfb15c51cb63d8bddbb0e7e46cecea164a3da8e175677d55aaf6724a6c7315e8b9c42 1515 | languageName: node 1516 | linkType: hard 1517 | 1518 | "once@npm:^1.3.0": 1519 | version: 1.4.0 1520 | resolution: "once@npm:1.4.0" 1521 | dependencies: 1522 | wrappy: 1 1523 | checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 1524 | languageName: node 1525 | linkType: hard 1526 | 1527 | "onetime@npm:^6.0.0": 1528 | version: 6.0.0 1529 | resolution: "onetime@npm:6.0.0" 1530 | dependencies: 1531 | mimic-fn: ^4.0.0 1532 | checksum: 0846ce78e440841335d4e9182ef69d5762e9f38aa7499b19f42ea1c4cd40f0b4446094c455c713f9adac3f4ae86f613bb5e30c99e52652764d06a89f709b3788 1533 | languageName: node 1534 | linkType: hard 1535 | 1536 | "p-map@npm:^4.0.0": 1537 | version: 4.0.0 1538 | resolution: "p-map@npm:4.0.0" 1539 | dependencies: 1540 | aggregate-error: ^3.0.0 1541 | checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c 1542 | languageName: node 1543 | linkType: hard 1544 | 1545 | "parse-package-name@npm:^1.0.0": 1546 | version: 1.0.0 1547 | resolution: "parse-package-name@npm:1.0.0" 1548 | checksum: dfbfa8ce7a1f84340a59b2b5dd7d64f2de49a8cbd22621714d5042b7cce436e726b081e400e66341a1d27f1dd50c5c55c48be308e03415b567dc6a1d71314168 1549 | languageName: node 1550 | linkType: hard 1551 | 1552 | "path-is-absolute@npm:^1.0.0": 1553 | version: 1.0.1 1554 | resolution: "path-is-absolute@npm:1.0.1" 1555 | checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 1556 | languageName: node 1557 | linkType: hard 1558 | 1559 | "path-key@npm:^3.1.0": 1560 | version: 3.1.1 1561 | resolution: "path-key@npm:3.1.1" 1562 | checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 1563 | languageName: node 1564 | linkType: hard 1565 | 1566 | "path-key@npm:^4.0.0": 1567 | version: 4.0.0 1568 | resolution: "path-key@npm:4.0.0" 1569 | checksum: 8e6c314ae6d16b83e93032c61020129f6f4484590a777eed709c4a01b50e498822b00f76ceaf94bc64dbd90b327df56ceadce27da3d83393790f1219e07721d7 1570 | languageName: node 1571 | linkType: hard 1572 | 1573 | "path-to-regexp@npm:^6.2.0": 1574 | version: 6.2.1 1575 | resolution: "path-to-regexp@npm:6.2.1" 1576 | checksum: f0227af8284ea13300f4293ba111e3635142f976d4197f14d5ad1f124aebd9118783dd2e5f1fe16f7273743cc3dbeddfb7493f237bb27c10fdae07020cc9b698 1577 | languageName: node 1578 | linkType: hard 1579 | 1580 | "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": 1581 | version: 2.3.1 1582 | resolution: "picomatch@npm:2.3.1" 1583 | checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf 1584 | languageName: node 1585 | linkType: hard 1586 | 1587 | "promise-inflight@npm:^1.0.1": 1588 | version: 1.0.1 1589 | resolution: "promise-inflight@npm:1.0.1" 1590 | checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 1591 | languageName: node 1592 | linkType: hard 1593 | 1594 | "promise-retry@npm:^2.0.1": 1595 | version: 2.0.1 1596 | resolution: "promise-retry@npm:2.0.1" 1597 | dependencies: 1598 | err-code: ^2.0.2 1599 | retry: ^0.12.0 1600 | checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 1601 | languageName: node 1602 | linkType: hard 1603 | 1604 | "readable-stream@npm:^3.6.0": 1605 | version: 3.6.0 1606 | resolution: "readable-stream@npm:3.6.0" 1607 | dependencies: 1608 | inherits: ^2.0.3 1609 | string_decoder: ^1.1.1 1610 | util-deprecate: ^1.0.1 1611 | checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 1612 | languageName: node 1613 | linkType: hard 1614 | 1615 | "readdirp@npm:~3.6.0": 1616 | version: 3.6.0 1617 | resolution: "readdirp@npm:3.6.0" 1618 | dependencies: 1619 | picomatch: ^2.2.1 1620 | checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 1621 | languageName: node 1622 | linkType: hard 1623 | 1624 | "regexparam@npm:^2.0.0": 1625 | version: 2.0.0 1626 | resolution: "regexparam@npm:2.0.0" 1627 | checksum: 8db9559041b5f5304fd224b5c87b33f12bbb97e07292e7f573a57d73690c0f2e3e2a956fefe6169527b5585d7d0828b8aecedcf61ce5fae40530185ebcae3031 1628 | languageName: node 1629 | linkType: hard 1630 | 1631 | "retry@npm:^0.12.0": 1632 | version: 0.12.0 1633 | resolution: "retry@npm:0.12.0" 1634 | checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c 1635 | languageName: node 1636 | linkType: hard 1637 | 1638 | "rimraf@npm:^3.0.2": 1639 | version: 3.0.2 1640 | resolution: "rimraf@npm:3.0.2" 1641 | dependencies: 1642 | glob: ^7.1.3 1643 | bin: 1644 | rimraf: bin.js 1645 | checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 1646 | languageName: node 1647 | linkType: hard 1648 | 1649 | "rollup-plugin-inject@npm:^3.0.0": 1650 | version: 3.0.2 1651 | resolution: "rollup-plugin-inject@npm:3.0.2" 1652 | dependencies: 1653 | estree-walker: ^0.6.1 1654 | magic-string: ^0.25.3 1655 | rollup-pluginutils: ^2.8.1 1656 | checksum: a014972c80fe34b8c8154056fa2533a8440066a31de831e3793fc21b15d108d92c22d8f7f472397bd5783d7c5e04d8cbf112fb72c5a26e997726e4eb090edad1 1657 | languageName: node 1658 | linkType: hard 1659 | 1660 | "rollup-plugin-node-polyfills@npm:^0.2.1": 1661 | version: 0.2.1 1662 | resolution: "rollup-plugin-node-polyfills@npm:0.2.1" 1663 | dependencies: 1664 | rollup-plugin-inject: ^3.0.0 1665 | checksum: e84645212c443aca3cfae2ba69f01c6d8c5c250f0bf651416b69a4572b60aae9da7cdd687de3ab9b903f7a1ab96b06b71f0c4927d1b02a37485360d2b563937b 1666 | languageName: node 1667 | linkType: hard 1668 | 1669 | "rollup-pluginutils@npm:^2.8.1": 1670 | version: 2.8.2 1671 | resolution: "rollup-pluginutils@npm:2.8.2" 1672 | dependencies: 1673 | estree-walker: ^0.6.1 1674 | checksum: 339fdf866d8f4ff6e408fa274c0525412f7edb01dc46b5ccda51f575b7e0d20ad72965773376fb5db95a77a7fcfcab97bf841ec08dbadf5d6b08af02b7a2cf5e 1675 | languageName: node 1676 | linkType: hard 1677 | 1678 | "safe-buffer@npm:~5.2.0": 1679 | version: 5.2.1 1680 | resolution: "safe-buffer@npm:5.2.1" 1681 | checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 1682 | languageName: node 1683 | linkType: hard 1684 | 1685 | "safer-buffer@npm:>= 2.1.2 < 3.0.0": 1686 | version: 2.1.2 1687 | resolution: "safer-buffer@npm:2.1.2" 1688 | checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 1689 | languageName: node 1690 | linkType: hard 1691 | 1692 | "selfsigned@npm:^2.0.0, selfsigned@npm:^2.0.1": 1693 | version: 2.1.1 1694 | resolution: "selfsigned@npm:2.1.1" 1695 | dependencies: 1696 | node-forge: ^1 1697 | checksum: aa9ce2150a54838978d5c0aee54d7ebe77649a32e4e690eb91775f71fdff773874a4fbafd0ac73d8ec3b702ff8a395c604df4f8e8868528f36fd6c15076fb43a 1698 | languageName: node 1699 | linkType: hard 1700 | 1701 | "semiver@npm:^1.1.0": 1702 | version: 1.1.0 1703 | resolution: "semiver@npm:1.1.0" 1704 | checksum: 87e78c4fca6e082fed8905266341524b952a6d917397ca7e4feba469459e4165015fb25c0cd5b214f30ac4588e227e7c5b56ce91fd053893738d8a44a761ddb3 1705 | languageName: node 1706 | linkType: hard 1707 | 1708 | "semver@npm:^7.0.0, semver@npm:^7.3.5, semver@npm:^7.3.7": 1709 | version: 7.3.8 1710 | resolution: "semver@npm:7.3.8" 1711 | dependencies: 1712 | lru-cache: ^6.0.0 1713 | bin: 1714 | semver: bin/semver.js 1715 | checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 1716 | languageName: node 1717 | linkType: hard 1718 | 1719 | "set-blocking@npm:^2.0.0": 1720 | version: 2.0.0 1721 | resolution: "set-blocking@npm:2.0.0" 1722 | checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 1723 | languageName: node 1724 | linkType: hard 1725 | 1726 | "set-cookie-parser@npm:^2.4.8": 1727 | version: 2.5.1 1728 | resolution: "set-cookie-parser@npm:2.5.1" 1729 | checksum: b99c37f976e68ae6eb7c758bf2bbce1e60bb54e3eccedaa25f2da45b77b9cab58d90674cf9edd7aead6fbeac6308f2eb48713320a47ca120d0e838d0194513b6 1730 | languageName: node 1731 | linkType: hard 1732 | 1733 | "shebang-command@npm:^2.0.0": 1734 | version: 2.0.0 1735 | resolution: "shebang-command@npm:2.0.0" 1736 | dependencies: 1737 | shebang-regex: ^3.0.0 1738 | checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa 1739 | languageName: node 1740 | linkType: hard 1741 | 1742 | "shebang-regex@npm:^3.0.0": 1743 | version: 3.0.0 1744 | resolution: "shebang-regex@npm:3.0.0" 1745 | checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 1746 | languageName: node 1747 | linkType: hard 1748 | 1749 | "signal-exit@npm:^3.0.7": 1750 | version: 3.0.7 1751 | resolution: "signal-exit@npm:3.0.7" 1752 | checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 1753 | languageName: node 1754 | linkType: hard 1755 | 1756 | "smart-buffer@npm:^4.2.0": 1757 | version: 4.2.0 1758 | resolution: "smart-buffer@npm:4.2.0" 1759 | checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b 1760 | languageName: node 1761 | linkType: hard 1762 | 1763 | "socks-proxy-agent@npm:^7.0.0": 1764 | version: 7.0.0 1765 | resolution: "socks-proxy-agent@npm:7.0.0" 1766 | dependencies: 1767 | agent-base: ^6.0.2 1768 | debug: ^4.3.3 1769 | socks: ^2.6.2 1770 | checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 1771 | languageName: node 1772 | linkType: hard 1773 | 1774 | "socks@npm:^2.6.2": 1775 | version: 2.7.1 1776 | resolution: "socks@npm:2.7.1" 1777 | dependencies: 1778 | ip: ^2.0.0 1779 | smart-buffer: ^4.2.0 1780 | checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 1781 | languageName: node 1782 | linkType: hard 1783 | 1784 | "source-map-support@npm:^0.5.20": 1785 | version: 0.5.21 1786 | resolution: "source-map-support@npm:0.5.21" 1787 | dependencies: 1788 | buffer-from: ^1.0.0 1789 | source-map: ^0.6.0 1790 | checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 1791 | languageName: node 1792 | linkType: hard 1793 | 1794 | "source-map@npm:^0.6.0": 1795 | version: 0.6.1 1796 | resolution: "source-map@npm:0.6.1" 1797 | checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 1798 | languageName: node 1799 | linkType: hard 1800 | 1801 | "source-map@npm:^0.7.4": 1802 | version: 0.7.4 1803 | resolution: "source-map@npm:0.7.4" 1804 | checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 1805 | languageName: node 1806 | linkType: hard 1807 | 1808 | "sourcemap-codec@npm:^1.4.8": 1809 | version: 1.4.8 1810 | resolution: "sourcemap-codec@npm:1.4.8" 1811 | checksum: b57981c05611afef31605732b598ccf65124a9fcb03b833532659ac4d29ac0f7bfacbc0d6c5a28a03e84c7510e7e556d758d0bb57786e214660016fb94279316 1812 | languageName: node 1813 | linkType: hard 1814 | 1815 | "ssri@npm:^9.0.0": 1816 | version: 9.0.1 1817 | resolution: "ssri@npm:9.0.1" 1818 | dependencies: 1819 | minipass: ^3.1.1 1820 | checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb 1821 | languageName: node 1822 | linkType: hard 1823 | 1824 | "stack-trace@npm:0.0.10": 1825 | version: 0.0.10 1826 | resolution: "stack-trace@npm:0.0.10" 1827 | checksum: 473036ad32f8c00e889613153d6454f9be0536d430eb2358ca51cad6b95cea08a3cc33cc0e34de66b0dad221582b08ed2e61ef8e13f4087ab690f388362d6610 1828 | languageName: node 1829 | linkType: hard 1830 | 1831 | "streamsearch@npm:^1.1.0": 1832 | version: 1.1.0 1833 | resolution: "streamsearch@npm:1.1.0" 1834 | checksum: 1cce16cea8405d7a233d32ca5e00a00169cc0e19fbc02aa839959985f267335d435c07f96e5e0edd0eadc6d39c98d5435fb5bbbdefc62c41834eadc5622ad942 1835 | languageName: node 1836 | linkType: hard 1837 | 1838 | "string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.2.3": 1839 | version: 4.2.3 1840 | resolution: "string-width@npm:4.2.3" 1841 | dependencies: 1842 | emoji-regex: ^8.0.0 1843 | is-fullwidth-code-point: ^3.0.0 1844 | strip-ansi: ^6.0.1 1845 | checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb 1846 | languageName: node 1847 | linkType: hard 1848 | 1849 | "string_decoder@npm:^1.1.1": 1850 | version: 1.3.0 1851 | resolution: "string_decoder@npm:1.3.0" 1852 | dependencies: 1853 | safe-buffer: ~5.2.0 1854 | checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 1855 | languageName: node 1856 | linkType: hard 1857 | 1858 | "strip-ansi@npm:^6.0.1": 1859 | version: 6.0.1 1860 | resolution: "strip-ansi@npm:6.0.1" 1861 | dependencies: 1862 | ansi-regex: ^5.0.1 1863 | checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c 1864 | languageName: node 1865 | linkType: hard 1866 | 1867 | "strip-final-newline@npm:^3.0.0": 1868 | version: 3.0.0 1869 | resolution: "strip-final-newline@npm:3.0.0" 1870 | checksum: 23ee263adfa2070cd0f23d1ac14e2ed2f000c9b44229aec9c799f1367ec001478469560abefd00c5c99ee6f0b31c137d53ec6029c53e9f32a93804e18c201050 1871 | languageName: node 1872 | linkType: hard 1873 | 1874 | "tar@npm:^6.1.11, tar@npm:^6.1.2": 1875 | version: 6.1.11 1876 | resolution: "tar@npm:6.1.11" 1877 | dependencies: 1878 | chownr: ^2.0.0 1879 | fs-minipass: ^2.0.0 1880 | minipass: ^3.0.0 1881 | minizlib: ^2.1.1 1882 | mkdirp: ^1.0.3 1883 | yallist: ^4.0.0 1884 | checksum: a04c07bb9e2d8f46776517d4618f2406fb977a74d914ad98b264fc3db0fe8224da5bec11e5f8902c5b9bcb8ace22d95fbe3c7b36b8593b7dfc8391a25898f32f 1885 | languageName: node 1886 | linkType: hard 1887 | 1888 | "to-regex-range@npm:^5.0.1": 1889 | version: 5.0.1 1890 | resolution: "to-regex-range@npm:5.0.1" 1891 | dependencies: 1892 | is-number: ^7.0.0 1893 | checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed 1894 | languageName: node 1895 | linkType: hard 1896 | 1897 | "typescript@npm:^4.7.3": 1898 | version: 4.7.3 1899 | resolution: "typescript@npm:4.7.3" 1900 | bin: 1901 | tsc: bin/tsc 1902 | tsserver: bin/tsserver 1903 | checksum: fd13a1ce53790a36bb8350e1f5e5e384b5f6cb9b0635114a6d01d49cb99916abdcfbc13c7521cdae2f2d3f6d8bc4a8ae7625edf645a04ee940588cd5e7597b2f 1904 | languageName: node 1905 | linkType: hard 1906 | 1907 | "typescript@patch:typescript@^4.7.3#~builtin": 1908 | version: 4.7.3 1909 | resolution: "typescript@patch:typescript@npm%3A4.7.3#~builtin::version=4.7.3&hash=7ad353" 1910 | bin: 1911 | tsc: bin/tsc 1912 | tsserver: bin/tsserver 1913 | checksum: 137d18a77f52254a284960b16ab53d0619f57b69b5d585804b8413f798a1175ce3e774fb95e6a101868577aafe357d8fcfc9171f0dc9fc0c210e9ae59d107cc0 1914 | languageName: node 1915 | linkType: hard 1916 | 1917 | "undici@npm:5.9.1": 1918 | version: 5.9.1 1919 | resolution: "undici@npm:5.9.1" 1920 | checksum: 8acabbac8e18943ff822574f831d03d65e697e66ef486a679763f7778f37b28980caf7097ededf4017b58c099809e8efd8509a6688f60638360fb86ef47a59df 1921 | languageName: node 1922 | linkType: hard 1923 | 1924 | "unique-filename@npm:^2.0.0": 1925 | version: 2.0.1 1926 | resolution: "unique-filename@npm:2.0.1" 1927 | dependencies: 1928 | unique-slug: ^3.0.0 1929 | checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f 1930 | languageName: node 1931 | linkType: hard 1932 | 1933 | "unique-slug@npm:^3.0.0": 1934 | version: 3.0.0 1935 | resolution: "unique-slug@npm:3.0.0" 1936 | dependencies: 1937 | imurmurhash: ^0.1.4 1938 | checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c 1939 | languageName: node 1940 | linkType: hard 1941 | 1942 | "urlpattern-polyfill@npm:^4.0.3": 1943 | version: 4.0.3 1944 | resolution: "urlpattern-polyfill@npm:4.0.3" 1945 | checksum: 96ac2aea49a7b17a9ff41b2ccccdaf5e58a18c33c494cf663bea853c1ac2e70fd26a147b33b83ff7c6b77f9e34ee48409d21dbc1f2a2ad5cd9509cf3d5cb148e 1946 | languageName: node 1947 | linkType: hard 1948 | 1949 | "util-deprecate@npm:^1.0.1": 1950 | version: 1.0.2 1951 | resolution: "util-deprecate@npm:1.0.2" 1952 | checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 1953 | languageName: node 1954 | linkType: hard 1955 | 1956 | "validate-npm-package-name@npm:^4.0.0": 1957 | version: 4.0.0 1958 | resolution: "validate-npm-package-name@npm:4.0.0" 1959 | dependencies: 1960 | builtins: ^5.0.0 1961 | checksum: a32fd537bad17fcb59cfd58ae95a414d443866020d448ec3b22e8d40550cb585026582a57efbe1f132b882eea4da8ac38ee35f7be0dd72988a3cb55d305a20c1 1962 | languageName: node 1963 | linkType: hard 1964 | 1965 | "which@npm:^2.0.1, which@npm:^2.0.2": 1966 | version: 2.0.2 1967 | resolution: "which@npm:2.0.2" 1968 | dependencies: 1969 | isexe: ^2.0.0 1970 | bin: 1971 | node-which: ./bin/node-which 1972 | checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 1973 | languageName: node 1974 | linkType: hard 1975 | 1976 | "wide-align@npm:^1.1.5": 1977 | version: 1.1.5 1978 | resolution: "wide-align@npm:1.1.5" 1979 | dependencies: 1980 | string-width: ^1.0.2 || 2 || 3 || 4 1981 | checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 1982 | languageName: node 1983 | linkType: hard 1984 | 1985 | "workers-logger@npm:^0.2.0": 1986 | version: 0.2.0 1987 | resolution: "workers-logger@npm:0.2.0" 1988 | dependencies: 1989 | diary: ^0.3.0 1990 | checksum: df50bba99a5d026a57a46534ab36b3d462fad85ca778b36a9672e9ad0a06fd908a762f05135766731b4599c031ebbf20ccc6440306fb6f71ff42fa4b495fefe3 1991 | languageName: node 1992 | linkType: hard 1993 | 1994 | "worktop@npm:next": 1995 | version: 0.8.0-next.14 1996 | resolution: "worktop@npm:0.8.0-next.14" 1997 | dependencies: 1998 | mrmime: ^1.0.0 1999 | regexparam: ^2.0.0 2000 | checksum: a52ce8df2d4c32602b685813a53c833243fb18a6bf5bf750d4b28dcba5848181b6a08ecb21a165e886d3e36aea7073b701f6f73cabd513372cec1b95ced3bd9f 2001 | languageName: node 2002 | linkType: hard 2003 | 2004 | "wrangler@npm:^2.1.11": 2005 | version: 2.1.11 2006 | resolution: "wrangler@npm:2.1.11" 2007 | dependencies: 2008 | "@cloudflare/kv-asset-handler": ^0.2.0 2009 | "@esbuild-plugins/node-globals-polyfill": ^0.1.1 2010 | "@esbuild-plugins/node-modules-polyfill": ^0.1.4 2011 | "@miniflare/core": 2.9.0 2012 | "@miniflare/d1": 2.9.0 2013 | "@miniflare/durable-objects": 2.9.0 2014 | blake3-wasm: ^2.1.5 2015 | chokidar: ^3.5.3 2016 | esbuild: 0.14.51 2017 | fsevents: ~2.3.2 2018 | miniflare: 2.9.0 2019 | nanoid: ^3.3.3 2020 | path-to-regexp: ^6.2.0 2021 | selfsigned: ^2.0.1 2022 | source-map: ^0.7.4 2023 | xxhash-wasm: ^1.0.1 2024 | dependenciesMeta: 2025 | fsevents: 2026 | optional: true 2027 | bin: 2028 | wrangler: bin/wrangler.js 2029 | wrangler2: bin/wrangler.js 2030 | checksum: 5564557551c965b0b90dbf55c42f33209283e0d7b00f5d1cc7210227b4db8cf43f72590e80e0fe84a28b14831f7ca3399ef2eebecc9bd9422ef9c14a2f0e5634 2031 | languageName: node 2032 | linkType: hard 2033 | 2034 | "wrappy@npm:1": 2035 | version: 1.0.2 2036 | resolution: "wrappy@npm:1.0.2" 2037 | checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 2038 | languageName: node 2039 | linkType: hard 2040 | 2041 | "ws@npm:^8.2.2": 2042 | version: 8.9.0 2043 | resolution: "ws@npm:8.9.0" 2044 | peerDependencies: 2045 | bufferutil: ^4.0.1 2046 | utf-8-validate: ^5.0.2 2047 | peerDependenciesMeta: 2048 | bufferutil: 2049 | optional: true 2050 | utf-8-validate: 2051 | optional: true 2052 | checksum: 23aa0f021b2eb65c108ec4c3e08c0d81ba01f82b500432dfe327fd6be36079c1d81fdb0eac6464d2a0eb49904d34a9ab8c59619d673fa07b8346f83aeb0cbf12 2053 | languageName: node 2054 | linkType: hard 2055 | 2056 | "xxhash-wasm@npm:^1.0.1": 2057 | version: 1.0.1 2058 | resolution: "xxhash-wasm@npm:1.0.1" 2059 | checksum: beb7677772724508c6ffde7924c0c8b3b879337d1d1598563af09e87befc6a335015bec0fa41873cc27d4745f32dea19d20f9c606ea71d29e1c949e8a13d5c24 2060 | languageName: node 2061 | linkType: hard 2062 | 2063 | "yallist@npm:^4.0.0": 2064 | version: 4.0.0 2065 | resolution: "yallist@npm:4.0.0" 2066 | checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 2067 | languageName: node 2068 | linkType: hard 2069 | 2070 | "youch@npm:^2.2.2": 2071 | version: 2.2.2 2072 | resolution: "youch@npm:2.2.2" 2073 | dependencies: 2074 | "@types/stack-trace": 0.0.29 2075 | cookie: ^0.4.1 2076 | mustache: ^4.2.0 2077 | stack-trace: 0.0.10 2078 | checksum: e81644ad9469a26949a85cb2e1a3f9c9faf11daa67a265e9ad0361942b2c06cf02ee1dc8c85d74fe7ad25d35bbc2fee34717a54c5a0b8eeb82dc9276d139906b 2079 | languageName: node 2080 | linkType: hard 2081 | --------------------------------------------------------------------------------