Skip to content

Commit

Permalink
Use import.meta.dirname & import.meta.filename
Browse files Browse the repository at this point in the history
  • Loading branch information
LitoMore committed Apr 26, 2024
1 parent 32e8072 commit 30ef968
Show file tree
Hide file tree
Showing 13 changed files with 28 additions and 80 deletions.
2 changes: 1 addition & 1 deletion .xo-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
"svglint.config.mjs",
"svgo.config.mjs"
],
"nodeVersion": ">=18"
"nodeVersion": ">=20.11"
}
]
}
4 changes: 1 addition & 3 deletions scripts/build/clean.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,8 @@
import fs from 'node:fs/promises';
import path from 'node:path';
import process from 'node:process';
import {getDirnameFromImportMeta} from '../../sdk.mjs';

const __dirname = getDirnameFromImportMeta(import.meta.url);
const rootDirectory = path.resolve(__dirname, '..', '..');
const rootDirectory = path.resolve(import.meta.dirname, '..', '..');
const files = ['index.js', 'index.mjs', 'index.d.ts', 'sdk.js'];

const fileExists = (fpath) =>
Expand Down
7 changes: 2 additions & 5 deletions scripts/build/package.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,24 @@ import util from 'node:util';
import {transform as esbuildTransform} from 'esbuild';
import {
collator,
getDirnameFromImportMeta,
getIconSlug,
getIconsData,
slugToVariableName,
svgToPath,
titleToHtmlFriendly,
} from '../../sdk.mjs';

const __dirname = getDirnameFromImportMeta(import.meta.url);

const UTF8 = 'utf8';

const rootDirectory = path.resolve(__dirname, '..', '..');
const rootDirectory = path.resolve(import.meta.dirname, '..', '..');
const iconsDirectory = path.resolve(rootDirectory, 'icons');
const indexJsFile = path.resolve(rootDirectory, 'index.js');
const indexMjsFile = path.resolve(rootDirectory, 'index.mjs');
const sdkJsFile = path.resolve(rootDirectory, 'sdk.js');
const sdkMjsFile = path.resolve(rootDirectory, 'sdk.mjs');
const indexDtsFile = path.resolve(rootDirectory, 'index.d.ts');

const templatesDirectory = path.resolve(__dirname, 'templates');
const templatesDirectory = path.resolve(import.meta.dirname, 'templates');
const iconObjectTemplateFile = path.resolve(
templatesDirectory,
'icon-object.js.template',
Expand Down
5 changes: 1 addition & 4 deletions scripts/release/reformat-markdown.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,10 @@
import {readFile, writeFile} from 'node:fs/promises';
import path from 'node:path';
import process from 'node:process';
import {getDirnameFromImportMeta} from '../../sdk.mjs';

const LINKS_BRANCH = process.argv[2] || 'develop';

const __dirname = getDirnameFromImportMeta(import.meta.url);

const rootDirectory = path.resolve(__dirname, '..', '..');
const rootDirectory = path.resolve(import.meta.dirname, '..', '..');
const readmeFile = path.resolve(rootDirectory, 'README.md');
const disclaimerFile = path.resolve(rootDirectory, 'DISCLAIMER.md');

Expand Down
5 changes: 1 addition & 4 deletions scripts/release/update-cdn-urls.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,8 @@
import fs from 'node:fs/promises';
import path from 'node:path';
import process from 'node:process';
import {getDirnameFromImportMeta} from '../../sdk.mjs';

const __dirname = getDirnameFromImportMeta(import.meta.url);

const rootDirectory = path.resolve(__dirname, '..', '..');
const rootDirectory = path.resolve(import.meta.dirname, '..', '..');
const packageJsonFile = path.resolve(rootDirectory, 'package.json');
const readmeFile = path.resolve(rootDirectory, 'README.md');

Expand Down
4 changes: 1 addition & 3 deletions scripts/release/update-sdk-ts-defs.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,8 @@ import {execSync} from 'node:child_process';
import fs from 'node:fs/promises';
import path from 'node:path';
import process from 'node:process';
import {getDirnameFromImportMeta} from '../../sdk.mjs';

const __dirname = getDirnameFromImportMeta(import.meta.url);
const rootDirectory = path.resolve(__dirname, '..', '..');
const rootDirectory = path.resolve(import.meta.dirname, '..', '..');

const sdkTs = path.resolve(rootDirectory, 'sdk.d.ts');
const sdkMts = path.resolve(rootDirectory, 'sdk.d.mts');
Expand Down
8 changes: 2 additions & 6 deletions scripts/release/update-slugs-table.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,14 @@

import fs from 'node:fs/promises';
import path from 'node:path';
import {fileURLToPath} from 'node:url';
import {getIconSlug, getIconsData} from '../../sdk.mjs';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const rootDirectory = path.resolve(__dirname, '..', '..');
const rootDirectory = path.resolve(import.meta.dirname, '..', '..');
const slugsFile = path.resolve(rootDirectory, 'slugs.md');

let content = `<!--
This file is automatically generated. If you want to change something, please
update the script at '${path.relative(rootDirectory, __filename)}'.
update the script at '${path.relative(rootDirectory, import.meta.filename)}'.
-->
# Simple Icons slugs
Expand Down
5 changes: 2 additions & 3 deletions scripts/release/update-svgs-count.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,12 @@
import fs from 'node:fs/promises';
import path from 'node:path';
import process from 'node:process';
import {getDirnameFromImportMeta, getIconsData} from '../../sdk.mjs';
import {getIconsData} from '../../sdk.mjs';

const regexMatcher = /Over\s(\d+)\s/;
const updateRange = 100;

const __dirname = getDirnameFromImportMeta(import.meta.url);
const rootDirectory = path.resolve(__dirname, '..', '..');
const rootDirectory = path.resolve(import.meta.dirname, '..', '..');
const readmeFile = path.resolve(rootDirectory, 'README.md');

const readmeContent = await fs.readFile(readmeFile, 'utf8');
Expand Down
8 changes: 3 additions & 5 deletions scripts/utils.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import fs from 'node:fs/promises';
import path from 'node:path';
import {getDirnameFromImportMeta, getIconDataPath} from '../sdk.mjs';

const __dirname = getDirnameFromImportMeta(import.meta.url);
import {getIconDataPath} from '../sdk.mjs';

/**
* Get JSON schema data.
* @param {String} rootDirectory Path to the root directory of the project.
*/
export const getJsonSchemaData = async (
rootDirectory = path.resolve(__dirname, '..'),
rootDirectory = path.resolve(import.meta.dirname, '..'),
) => {
const jsonSchemaPath = path.resolve(rootDirectory, '.jsonschema.json');
const jsonSchemaString = await fs.readFile(jsonSchemaPath, 'utf8');
Expand All @@ -23,7 +21,7 @@ export const getJsonSchemaData = async (
*/
export const writeIconsData = async (
iconsData,
rootDirectory = path.resolve(__dirname, '..'),
rootDirectory = path.resolve(import.meta.dirname, '..'),
) => {
await fs.writeFile(
getIconDataPath(rootDirectory),
Expand Down
1 change: 0 additions & 1 deletion sdk.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ export type IconData = {

export const URL_REGEX: RegExp;
export const SVG_PATH_REGEX: RegExp;
export function getDirnameFromImportMeta(importMetaUrl: string): string;
export function getIconSlug(icon: IconData): string;
export function svgToPath(svg: string): string;
export function titleToSlug(title: string): string;
Expand Down
27 changes: 4 additions & 23 deletions sdk.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

import fs from 'node:fs/promises';
import path from 'node:path';
import {fileURLToPath} from 'node:url';

/**
* @typedef {import("./sdk").ThirdPartyExtension} ThirdPartyExtension
Expand Down Expand Up @@ -43,15 +42,6 @@ export const URL_REGEX = /^https:\/\/[^\s"']+$/;
*/
export const SVG_PATH_REGEX = /^m[-mzlhvcsqtae\d,. ]+$/i;

/**
* Get the directory name where this file is located from `import.meta.url`,
* equivalent to the `__dirname` global variable in CommonJS.
* @param {String} importMetaUrl import.meta.url
* @returns {String} Directory name in which this file is located
*/
export const getDirnameFromImportMeta = (importMetaUrl) =>
path.dirname(fileURLToPath(importMetaUrl));

/**
* Get the slug/filename for an icon.
* @param {IconData} icon The icon data as it appears in *_data/simple-icons.json*
Expand Down Expand Up @@ -129,9 +119,7 @@ export const htmlFriendlyToTitle = (htmlFriendlyTitle) =>
* @param {String} rootDirectory Path to the root directory of the project
* @returns {String} Path of *_data/simple-icons.json*
*/
export const getIconDataPath = (
rootDirectory = getDirnameFromImportMeta(import.meta.url),
) => {
export const getIconDataPath = (rootDirectory = import.meta.dirname) => {
return path.resolve(rootDirectory, '_data', 'simple-icons.json');
};

Expand All @@ -140,9 +128,7 @@ export const getIconDataPath = (
* @param {String} rootDirectory Path to the root directory of the project
* @returns {String} Content of *_data/simple-icons.json*
*/
export const getIconsDataString = (
rootDirectory = getDirnameFromImportMeta(import.meta.url),
) => {
export const getIconsDataString = (rootDirectory = import.meta.dirname) => {
return fs.readFile(getIconDataPath(rootDirectory), 'utf8');
};

Expand All @@ -151,9 +137,7 @@ export const getIconsDataString = (
* @param {String} rootDirectory Path to the root directory of the project
* @returns {IconData[]} Icons data as array from *_data/simple-icons.json*
*/
export const getIconsData = async (
rootDirectory = getDirnameFromImportMeta(import.meta.url),
) => {
export const getIconsData = async (rootDirectory = import.meta.dirname) => {
const fileContents = await getIconsDataString(rootDirectory);
return JSON.parse(fileContents).icons;
};
Expand Down Expand Up @@ -190,10 +174,7 @@ export const normalizeColor = (text) => {
* @returns {Promise<ThirdPartyExtension[]>} Information about third party extensions
*/
export const getThirdPartyExtensions = async (
readmePath = path.join(
getDirnameFromImportMeta(import.meta.url),
'README.md',
),
readmePath = path.join(import.meta.dirname, 'README.md'),
) =>
normalizeNewlines(await fs.readFile(readmePath, 'utf8'))
.split('## Third-Party Extensions\n\n')[1]
Expand Down
19 changes: 8 additions & 11 deletions svglint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,19 @@ import process from 'node:process';
import svgPathBbox from 'svg-path-bbox';
import parsePath from 'svg-path-segments';
import svgpath from 'svgpath';
import {
SVG_PATH_REGEX,
collator,
getDirnameFromImportMeta,
htmlFriendlyToTitle,
} from './sdk.mjs';

const __dirname = getDirnameFromImportMeta(import.meta.url);
const dataFile = path.join(__dirname, '_data', 'simple-icons.json');
import {SVG_PATH_REGEX, collator, htmlFriendlyToTitle} from './sdk.mjs';

const dataFile = path.join(import.meta.dirname, '_data', 'simple-icons.json');
const htmlNamedEntitiesFile = path.join(
__dirname,
import.meta.dirname,
'node_modules',
'named-html-entities-json',
'index.json',
);
const svglintIgnoredFile = path.join(__dirname, '.svglint-ignored.json');
const svglintIgnoredFile = path.join(
import.meta.dirname,
'.svglint-ignored.json',
);

const data = JSON.parse(await fs.readFile(dataFile, 'utf8'));
const htmlNamedEntities = JSON.parse(
Expand Down
13 changes: 2 additions & 11 deletions tests/test-icon.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,9 @@ import {strict as assert} from 'node:assert';
import fs from 'node:fs/promises';
import path from 'node:path';
import {describe, it} from 'mocha';
import {
SVG_PATH_REGEX,
URL_REGEX,
getDirnameFromImportMeta,
titleToSlug,
} from '../sdk.mjs';
import {SVG_PATH_REGEX, URL_REGEX, titleToSlug} from '../sdk.mjs';

const iconsDirectory = path.resolve(
getDirnameFromImportMeta(import.meta.url),
'..',
'icons',
);
const iconsDirectory = path.resolve(import.meta.dirname, '..', 'icons');

/**
* @typedef {import('..').SimpleIcon} SimpleIcon
Expand Down

0 comments on commit 30ef968

Please sign in to comment.