bananass
Version:
Baekjoon Framework for JavaScript.🍌
124 lines (101 loc) • 3.96 kB
JavaScript
/**
* @fileoverview This file declares constants used throughout the `bananass` package.
*/
// --------------------------------------------------------------------------------
// Import
// --------------------------------------------------------------------------------
import { createRequire } from 'node:module';
// --------------------------------------------------------------------------------
// Typedefs
// --------------------------------------------------------------------------------
/**
* @import { Problem } from "./types/index.js"
*/
// --------------------------------------------------------------------------------
// Declaration
// --------------------------------------------------------------------------------
/** @type {{ description: string, homepage: string, name: 'bananass', version: string }} */
const { description, homepage, name, version } = createRequire(import.meta.url)(
'../../package.json',
);
// --------------------------------------------------------------------------------
// Export
// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
// #region Number
/** @satisfies {number} */
export const BAEKJOON_PROBLEM_NUMBER_MIN = 1_000;
// #endregion Number
// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
// #region String
/** @satisfies {string} */
export const PKG_DESCRIPTION = description;
/** @satisfies {string} */
export const PKG_NAME = name;
/** @satisfies {string} */
export const PKG_VERSION = version;
/** @satisfies {string} */
export const PKG_AUTHOR = '루밀LuMir';
/** @satisfies {string} */
export const URL_HOMEPAGE = homepage;
/** @satisfies {string} */
export const URL_NPM = 'https://www.npmjs.com';
/** @satisfies {string} */
export const URL_GITHUB_REPO = 'https://github.com/lumirlumir/npm-bananass';
/** @satisfies {string} */
export const URL_GITHUB_ISSUES = `${URL_GITHUB_REPO}/issues`;
/** @satisfies {string} */
export const URL_GITHUB_DISCUSSIONS = `${URL_GITHUB_REPO}/discussions`;
/** @satisfies {string} */
export const URL_BOJ_MAIN = 'https://www.acmicpc.net';
/** @param {Problem} problem */
export const URL_BOJ_PROBLEM = problem => `${URL_BOJ_MAIN}/problem/${problem}`;
/** @satisfies {string} */
export const DEFAULT_ENTRY_DIR_NAME = name;
/** @satisfies {`.${name}`} */
export const DEFAULT_OUT_DIR_NAME = `.${name}`;
/** @satisfies {string} */
export const DEFAULT_OUT_FILE_EXTENSION = '.cjs';
/** @satisfies {string} */
export const NODE_VERSION_BAEKJOON = '16.13.1';
/** @satisfies {string} */
export const NODE_VERSION_CODEFORCES = '15.8.0';
/** @satisfies {string} */
export const WEBPACK_BANNER = `
/**
* This file was generated using the Baekjoon Framework for JavaScript 'Bananass🍌'
*
* Bananass Homepage: ${URL_HOMEPAGE}
* Bananass GitHub Repository: ${URL_GITHUB_REPO}
*
* Released under the MIT License
* Copyright © 2024-${new Date().getFullYear()} ${PKG_AUTHOR}(lumirlumir)
*
* DO NOT DELETE THIS COMMENT
*/
`.trim();
// #endregion String
// --------------------------------------------------------------------------------
// --------------------------------------------------------------------------------
// #region Array
export const BANANASS_PKG_NAMES = /** @type {const} */ ([
'bananass',
'bananass-utils-console',
'create-bananass',
'eslint-config-bananass',
'prettier-config-bananass',
]);
export const SUPPORTED_SOLUTION_FILE_EXTENSIONS = /** @type {const} */ ([
'.js',
'.mjs',
'.cjs',
'.ts',
'.mts',
'.cts',
]);
export const SUPPORTED_CONFIG_FILE_NAMES = SUPPORTED_SOLUTION_FILE_EXTENSIONS.map(
ext => /** @type {const} */ (`${PKG_NAME}.config${ext}`),
);
// #endregion Array
// --------------------------------------------------------------------------------