|
1 | 1 | import { Meta, MetaProvider, Title } from '@solidjs/meta';
|
2 | 2 | import { Router } from '@solidjs/router';
|
3 | 3 | import { render } from 'solid-js/web';
|
| 4 | +import { ReferenceTypeParser } from 'typedoc-json-parser'; |
4 | 5 | import { App } from './App';
|
5 | 6 | import './assets/css/main.css';
|
6 | 7 |
|
| 8 | +const references: Record<string, string> = { |
| 9 | + // MDN |
| 10 | + BigInt64Array: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt64Array', |
| 11 | + Blob: 'https://developer.mozilla.org/en-US/docs/Web/API/Blob', |
| 12 | + Date: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date', |
| 13 | + Error: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error', |
| 14 | + Float32Array: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array', |
| 15 | + Float64Array: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float64Array', |
| 16 | + Function: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function', |
| 17 | + Int16Array: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int16Array', |
| 18 | + Int32Array: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array', |
| 19 | + Int8Array: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int8Array', |
| 20 | + Iterable: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_iterable_protocol', |
| 21 | + Iterator: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_iterator_protocol', |
| 22 | + Map: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map', |
| 23 | + Promise: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise', |
| 24 | + RegExp: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp', |
| 25 | + Response: 'https://developer.mozilla.org/en-US/docs/Web/API/Response', |
| 26 | + Set: 'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set', |
| 27 | + URL: 'https://developer.mozilla.org/en-US/docs/Web/API/URL', |
| 28 | + |
| 29 | + // Node.js |
| 30 | + 'global.Buffer': 'https://nodejs.org/api/buffer.html', |
| 31 | + EventEmitter: 'https://nodejs.org/api/events.html#events_class_eventemitter', |
| 32 | + 'global.NodeJS.EventEmitter': 'https://nodejs.org/api/events.html#events_class_eventemitter', |
| 33 | + 'EventEmitter.captureRejectionSymbol': 'https://nodejs.org/api/events.html#eventscapturerejectionsymbol', |
| 34 | + 'EventEmitter.errorMonitor': 'https://nodejs.org/api/events.html#eventserrormonitor', |
| 35 | + NodeEventTarget: 'https://nodejs.org/api/events.html#class-nodeeventtarget', |
| 36 | + PathLike: 'https://nodejs.org/api/path.html#path_pathlike', |
| 37 | + 'global.NodeJS.Timeout': 'https://nodejs.org/api/timers.html#timers_class_timeout', |
| 38 | + 'global.NodeJS.Timer': 'https://nodejs.org/api/timers.html#timers_class_timeout', |
| 39 | + 'internal.Stream': 'https://nodejs.org/api/stream.html#stream_class_stream', |
| 40 | + |
| 41 | + // TypeScript |
| 42 | + Exclude: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#excludeuniontype-excludedmembers', |
| 43 | + InstanceType: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#instancetype', |
| 44 | + Omit: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#omittype-keys', |
| 45 | + Partial: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype', |
| 46 | + Readonly: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#readonlytype', |
| 47 | + Record: 'https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type' |
| 48 | +}; |
| 49 | + |
| 50 | +const unknownReferences: Set<string> = new Set([ |
| 51 | + // 'typescript' |
| 52 | + 'ArrayLike', |
| 53 | + 'AsyncIterableIterator', |
| 54 | + 'ClassDecorator', |
| 55 | + 'DOMEventTarget', |
| 56 | + 'InspectOptionsStylized', |
| 57 | + 'IterableIterator', |
| 58 | + 'IteratorResult', |
| 59 | + 'MapConstructor', |
| 60 | + 'MethodDecorator', |
| 61 | + 'PropertyKey', |
| 62 | + 'ObjectConstructor', |
| 63 | + 'ReadonlyMap' |
| 64 | +]); |
| 65 | + |
| 66 | +ReferenceTypeParser.formatToString = (options): string => { |
| 67 | + const { parser, project } = options; |
| 68 | + const typeArguments = parser.typeArguments.length > 0 ? `<${parser.typeArguments.map((type) => type.toString()).join(', ')}>` : ''; |
| 69 | + |
| 70 | + for (const [ref, url] of Object.entries(references)) { |
| 71 | + if (ref === parser.name) return `<a href="${url}">${parser.name}</a>${typeArguments}`; |
| 72 | + } |
| 73 | + |
| 74 | + if (!unknownReferences.has(parser.name)) console.warn(`'[WARN]' Unable to find parser for ${parser.name} (${parser.id ?? parser.packageName})`); |
| 75 | + |
| 76 | + return `[${parser.name}](${parser.id ?? parser.packageName})${typeArguments}`; |
| 77 | +}; |
| 78 | + |
7 | 79 | const Main = () => (
|
8 | 80 | <MetaProvider>
|
9 | 81 | <Title>JOSH | Home</Title>
|
|
0 commit comments