diff --git a/.gitignore b/.gitignore index e9207f1..04d8aee 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# outdated generated js files +src/utils/**/*.js +src/utils/**/*.js.map + # vscode test web .vscode-test-web /out diff --git a/src/downloader/http_headers.ts b/src/downloader/http_headers.ts index 8108ae8..66297d5 100644 --- a/src/downloader/http_headers.ts +++ b/src/downloader/http_headers.ts @@ -1,6 +1,6 @@ import { URL } from "url"; import { Cheerio, Element } from "cheerio"; -import { cacheDir, manifestFiles, ManifestItemType } from "../utils/config"; +import { cacheDir, manifestFiles } from "../utils/config"; import { httpHeadersWikiURLs } from "./config_url"; import { bold, @@ -12,6 +12,7 @@ import { JsonFileWriter, SimpleHttpCache, } from "../utils/crawler-utils"; +import { ManifestItemType } from "../types-manifest"; main().catch((error) => console.error(error.stack)); async function main() { diff --git a/src/downloader/lua_openresty.ts b/src/downloader/lua_openresty.ts index 1655e38..b9ed80e 100755 --- a/src/downloader/lua_openresty.ts +++ b/src/downloader/lua_openresty.ts @@ -2,9 +2,10 @@ import type { AnyNode, BasicAcceptedElems, CheerioAPI } from "cheerio"; import { nginxLuaDocsBaseURL, luaRestyDocsURLs, nginxLuaModuleURLs } from "./config_url"; -import { manifestFiles, ManifestItemType, detailsFile, luaSnippetFile, cacheDir } from "../utils/config"; +import { manifestFiles, detailsFile, luaSnippetFile, cacheDir } from "../utils/config"; import { JsonFileWriter, SimpleHttpCache, writeJSON, getText, loadHtml, print } from "../utils/crawler-utils"; import type { SnippetItem } from "../extension/types"; +import { ManifestItemType } from "../types-manifest"; const manifestStreams = { lua: new JsonFileWriter(manifestFiles.lua), diff --git a/src/downloader/nginx_directives.ts b/src/downloader/nginx_directives.ts index 7205da3..c76924e 100755 --- a/src/downloader/nginx_directives.ts +++ b/src/downloader/nginx_directives.ts @@ -1,6 +1,7 @@ #!/usr/bin/env node -import { ManifestItemType, cacheDir, detailsFile, manifestFiles } from "../utils/config"; +import { ManifestItemType } from "../types-manifest"; +import { cacheDir, detailsFile, manifestFiles } from "../utils/config"; import { JsonFileWriter, resolveURL, diff --git a/src/types-manifest.ts b/src/types-manifest.ts new file mode 100644 index 0000000..5be73f8 --- /dev/null +++ b/src/types-manifest.ts @@ -0,0 +1,100 @@ +export const enum ManifestItemType { + ModuleNames = 1, + Directive = 2, + Variable = 3, + DirectiveDetails = 4, + VariableDetails = 5, + HttpReqHeader = 6, + HttpResHeader = 7, +} + +export type ManifestItemForModuleNames = [ + type: ManifestItemType.ModuleNames, + /** @example "ngx_http_access_module" */ + ...moduleNames: string[] +]; + +export type ManifestItemForDirective = [ + type: ManifestItemType.Directive, + /** @example "accept_mutex" */ + directiveName: string, + /** @example ["on | off"] */ + signature: string[], + /** @example "accept_mutex off;" */ + def: string, + /** @example ["events"] */ + contexts: string[], + /** The index of its module name */ + moduleIndex: number, + /** @example "1.9.11" */ + since: null | string, + /** A uri to this directive's docs */ + link: string, + completionItemPatch: null | { insert: string } +]; + +export type ManifestItemForVariable = [ + type: ManifestItemType.Variable, + varName: `$${string}`, + desc: string, + /** The index of its module name */ + moduleIndex: number, + /** @example "1.9.11" */ + since: null | string, + /** A uri to this directive's docs */ + link: string, + completionItemPatch: null | { insert: string } +]; + +export type ManifestItemForDirectiveDetails = [ + type: ManifestItemType.DirectiveDetails, + name: string, + markdown: string, + html: string, + nites: string, + table: string +]; +export type ManifestItemForVariableDetails = [ + // + type: ManifestItemType.VariableDetails, + docs: string +]; + +export type ManifestItemForHttpReqHeader = [ + // + type: ManifestItemType.HttpReqHeader, + name: string, + description: string, + example: string, + standard: string | null, +]; +export type ManifestItemForHttpResHeader = [ + // + type: ManifestItemType.HttpResHeader, + name: string, + description: string, + example: string, + standard: string | null, +]; + +export function isManifestItemForModuleNames(row: unknown[]): row is ManifestItemForModuleNames { + return row && row[0] === ManifestItemType.ModuleNames; +} +export function isManifestItemForDirective(row: unknown[]): row is ManifestItemForDirective { + return row && row[0] === ManifestItemType.Directive; +} +export function isManifestItemForVariable(row: unknown[]): row is ManifestItemForVariable { + return row && row[0] === ManifestItemType.Variable; +} +export function isManifestItemForDirectiveDetails(row: unknown[]): row is ManifestItemForDirectiveDetails { + return row && row[0] === ManifestItemType.DirectiveDetails; +} +export function isManifestItemForVariableDetails(row: unknown[]): row is ManifestItemForVariableDetails { + return row && row[0] === ManifestItemType.VariableDetails; +} +export function isManifestItemForHttpReqHeader(row: unknown[]): row is ManifestItemForHttpReqHeader { + return row && row[0] === ManifestItemType.HttpReqHeader; +} +export function isManifestItemForHttpResHeader(row: unknown[]): row is ManifestItemForHttpResHeader { + return row && row[0] === ManifestItemType.HttpResHeader; +} diff --git a/src/utils/.gitignore b/src/utils/.gitignore deleted file mode 100644 index 4e57eef..0000000 --- a/src/utils/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.js -*.js.map diff --git a/src/utils/README.md b/src/utils/README.md deleted file mode 100644 index 741df9d..0000000 --- a/src/utils/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Utils - -``` bash -yarn run build:utils -``` diff --git a/src/utils/config.ts b/src/utils/config.ts index 695bd17..f12a464 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -1,15 +1,5 @@ import { resolve } from "path"; -export const enum ManifestItemType { - ModuleNames = 1, - Directive = 2, - Variable = 3, - DirectiveDetails = 4, - VariableDetails = 5, - HttpReqHeader = 6, - HttpResHeader = 7, -} - export const projectDir = resolve(__dirname, '../..'); export const cacheDir = resolve(projectDir, 'cache') export const syntaxesDir = resolve(projectDir, 'src/syntax/references'); diff --git a/src/utils/terminal-colors.ts b/src/utils/terminal-colors.ts deleted file mode 100644 index b0cdf7e..0000000 --- a/src/utils/terminal-colors.ts +++ /dev/null @@ -1,7 +0,0 @@ -// this utility is used for remvoing chalk from the dependency list -export const bold = (str: unknown) => `\x1b[1m${str}\x1b[22m`; -export const blue = (str: unknown) => `\x1b[34m${str}\x1b[39m`; -export const cyan = (str: unknown) => `\x1b[36m${str}\x1b[39m`; -export const green = (str: unknown) => `\x1b[32m${str}\x1b[39m`; -export const yellow = (str: unknown) => `\x1b[33m${str}\x1b[39m`; -export const red = (str: unknown) => `\x1b[31m${str}\x1b[39m`;