diff --git a/.prettierrc.json b/.prettierrc.json index 4dee17d..f500c61 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,5 +1,6 @@ { "tabWidth": 2, + "printWidth": 120, "semi": false, "useTabs": false, "singleQuote": true, diff --git a/.vscode/settings.json b/.vscode/settings.json index 1c689cd..ef9209a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -40,15 +40,7 @@ "CHANGELOG.md", "{LICENSE,LICENSE.*}" ], - "todo-tree.general.tags": [ - "LOCK", - "BUG", - "FIX", - "TODO", - "BOOKMARK", - "NOTE", - "///" - ], + "todo-tree.general.tags": ["LOCK", "BUG", "FIX", "TODO", "BOOKMARK", "NOTE", "///"], "todo-tree.general.tagGroups": { "FIX": ["FIXME", "FIXIT"] }, diff --git a/cli/docs.js b/cli/docs.js index 2e18b5c..314ca04 100644 --- a/cli/docs.js +++ b/cli/docs.js @@ -8,9 +8,6 @@ const app = await Application.bootstrapWithPlugins() const project = await app.convert() // التحقق مما إذا تم تحويل المشروع بنجاح -if (project) - await app.generateDocs( - project, - 'docs' - ) // إذا تم تحويل المشروع، يتم توليد الوثائق في مجلد 'docs' +if (project) await app.generateDocs(project, 'docs') +// إذا تم تحويل المشروع، يتم توليد الوثائق في مجلد 'docs' else console.error('No project found') // إذا لم يتم العثور على المشروع، يتم طباعة رسالة خطأ diff --git a/cli/func/clean.js b/cli/func/clean.js index c172263..6ab0056 100644 --- a/cli/func/clean.js +++ b/cli/func/clean.js @@ -18,8 +18,7 @@ export async function cleanFolder(path) { const newFiles = new Map() // تنظيف كل ملف وتخزينه في الخريطة - for (let i = 0; i < filePaths.length; i++) - newFiles.set(filePaths[i], cleanFile(filesData[i])) + for (let i = 0; i < filePaths.length; i++) newFiles.set(filePaths[i], cleanFile(filesData[i])) return newFiles } @@ -35,14 +34,8 @@ export function cleanFile(data) { // استبدال الأنماط غير المرغوب فيها بأنماط جديدة data = data - .replace( - /\.\.\.([_a-zA-Z0-9]+): (([_a-zA-Z0-9]+)(\[[_a-zA-Z0-9]*\])?)\[\]/g, - '...$1: $2' - ) - .replace( - /\n?(export type (\w+) = \2;|\/\*\* @typedef {(\w+)} \3 \*\/)/g, - '' - ) + .replace(/\.\.\.([_a-zA-Z0-9]+): (([_a-zA-Z0-9]+)(\[[_a-zA-Z0-9]*\])?)\[\]/g, '...$1: $2') + .replace(/\n?(export type (\w+) = \2;|\/\*\* @typedef {(\w+)} \3 \*\/)/g, '') .replace(/export(?!s)(?!\s+(\*|declare|=|{))/g, 'export declare') .replace(/export(?!s)(\s+=)/g, 'export default') @@ -83,8 +76,7 @@ export function cleanImports(data) { } // تحذير إذا تم الوصول إلى الحد الأقصى للحلقات - if (count === threshold) - console.warn(`Reached threshold of ${threshold} loops`) + if (count === threshold) console.warn(`Reached threshold of ${threshold} loops`) // إذا كانت هناك واردات، يتم كتابتها وإضافتها إلى البيانات if (imports.size > 0) return writeImports(imports) + '\n' + data diff --git a/src/line/func/create.js b/src/line/func/create.js index 6d89998..8d50696 100644 --- a/src/line/func/create.js +++ b/src/line/func/create.js @@ -26,12 +26,9 @@ */ export function one({ dis = 1, end = 1, spacing = 1, count = 2, neg = false }) { // التحقق من القيم المقدمة - if (!Number.isNaN(dis) && dis < 0) - throw new Error('يجب أن تكون المسافة موجباً') - if (!Number.isNaN(spacing) && spacing < 0) - throw new Error('يجب أن يكون التباعد موجباً') - if (!Number.isNaN(count) && count < 2) - throw new Error('يجب أن يكون عدد النقاط أكبر من أو يساوي 2') + if (!Number.isNaN(dis) && dis < 0) throw new Error('يجب أن تكون المسافة موجباً') + if (!Number.isNaN(spacing) && spacing < 0) throw new Error('يجب أن يكون التباعد موجباً') + if (!Number.isNaN(count) && count < 2) throw new Error('يجب أن يكون عدد النقاط أكبر من أو يساوي 2') // تهيئة كائن المستقيم const l = {} @@ -39,13 +36,7 @@ export function one({ dis = 1, end = 1, spacing = 1, count = 2, neg = false }) { l.neg = end !== undefined ? end < 0 : neg l.count = count !== undefined ? count : spacing ? dis / spacing + 1 : 2 l.dis = - end !== undefined - ? Math.abs(end) - : dis !== undefined - ? dis - : spacing !== undefined - ? spacing * (l.count - 1) - : 1 + end !== undefined ? Math.abs(end) : dis !== undefined ? dis : spacing !== undefined ? spacing * (l.count - 1) : 1 // تعريف الخصائص المحسوبة Object.defineProperties(l, { @@ -71,10 +62,7 @@ export function one({ dis = 1, end = 1, spacing = 1, count = 2, neg = false }) { }, points: { get() { - return Array.from( - { length: this.count }, - (_, i) => this.spacing * i * (this.neg ? -1 : 1) - ) + return Array.from({ length: this.count }, (_, i) => this.spacing * i * (this.neg ? -1 : 1)) } } }) diff --git a/tests/_cli/clean.test.js b/tests/_cli/clean.test.js index 330143a..2d8811e 100644 --- a/tests/_cli/clean.test.js +++ b/tests/_cli/clean.test.js @@ -28,18 +28,12 @@ describe('1: تنظيف الأسطر', function () { }) it('1.6: تحويل نوع التصدير إلى إعلان نوع التصدير', function () { - const a = cleanFile( - 'export type example = typeof import("./file/path.js");' - ) - strictEqual( - a, - 'export declare type example = typeof import("./file/path.js");' - ) + const a = cleanFile('export type example = typeof import("./file/path.js");') + strictEqual(a, 'export declare type example = typeof import("./file/path.js");') }) it('1.7: تحويل دالة التصدير إلى دالة إعلان التصدير', function () { - const a = - cleanFile(`export function (...args: example[][], ...args2: example[example][], ...args3: example[][][]) : + const a = cleanFile(`export function (...args: example[][], ...args2: example[example][], ...args3: example[][][]) : | Promise | example | void { }`) diff --git a/tests/_cli/read.test.js b/tests/_cli/read.test.js index 5cbaa5c..482283a 100644 --- a/tests/_cli/read.test.js +++ b/tests/_cli/read.test.js @@ -7,13 +7,7 @@ describe('1: قراءة مسارات المجلدات', function () { const paths = await readFolder('cli') deepStrictEqual( paths, - [ - 'clean.js', - 'docs.js', - 'func/clean.js', - 'func/read.js', - 'func/write.js' - ].map((subPath) => + ['clean.js', 'docs.js', 'func/clean.js', 'func/read.js', 'func/write.js'].map((subPath) => (process.cwd() + '/cli/' + subPath).replace(/\//g, sep) ) ) @@ -58,15 +52,9 @@ describe('2: قراءة محتويات الملفات', function () { }) it('2.6: إعادة المسار والنوع الصحيحين مع tuple', function () { - let a = readImport( - '@param {[import("./file").string, import("./file").number]} str' - ) + let a = readImport('@param {[import("./file").string, import("./file").number]} str') - deepStrictEqual(a, [ - '@param {[string, import("./file").number]} str', - './file', - 'string' - ]) + deepStrictEqual(a, ['@param {[string, import("./file").number]} str', './file', 'string']) a = readImport(a[0]) deepStrictEqual(a, ['@param {[string, number]} str', './file', 'number']) @@ -83,44 +71,26 @@ describe('2: قراءة محتويات الملفات', function () { }) it('2.9: إعادة المسار والنوع الصحيحين مع Map', function () { - let a = readImport( - '@param {Map} str' - ) + let a = readImport('@param {Map} str') - deepStrictEqual(a, [ - '@param {Map} str', - './file', - 'string' - ]) + deepStrictEqual(a, ['@param {Map} str', './file', 'string']) a = readImport(a[0]) deepStrictEqual(a, ['@param {Map} str', './file', 'number']) }) it('2.10: إعادة المسار والنوع الصحيحين مع نفس المسار استيرادات متعددة', function () { - let a = readImport( - '@param {import("./file").string|import("./file").number} str' - ) + let a = readImport('@param {import("./file").string|import("./file").number} str') - deepStrictEqual(a, [ - '@param {string|import("./file").number} str', - './file', - 'string' - ]) + deepStrictEqual(a, ['@param {string|import("./file").number} str', './file', 'string']) a = readImport(a[0]) deepStrictEqual(a, ['@param {string|number} str', './file', 'number']) }) it('2.11: إعادة المسار والنوع الصحيحين مع مسارات مختلفة استيرادات متعددة', function () { - let a = readImport( - '@param {import("./file1").string|import("./file2").number} str' - ) - deepStrictEqual(a, [ - '@param {string|import("./file2").number} str', - './file1', - 'string' - ]) + let a = readImport('@param {import("./file1").string|import("./file2").number} str') + deepStrictEqual(a, ['@param {string|import("./file2").number} str', './file1', 'string']) a = readImport(a[0]) deepStrictEqual(a, ['@param {string|number} str', './file2', 'number']) @@ -128,11 +98,7 @@ describe('2: قراءة محتويات الملفات', function () { it('2.12: إعادة المسار والنوع الصحيحين مع استيرادات كاملة', function () { const a = readImport('export type string = typeof import("./file");') - deepStrictEqual(a, [ - 'export type string = typeof import("./file");', - null, - null - ]) + deepStrictEqual(a, ['export type string = typeof import("./file");', null, null]) }) }) diff --git a/tests/_cli/write.test.js b/tests/_cli/write.test.js index 944aae4..64bc8fd 100644 --- a/tests/_cli/write.test.js +++ b/tests/_cli/write.test.js @@ -19,10 +19,7 @@ describe('1: تحويل خريطة الأنواع إلى واردات', function ['./file2', ['number']] ]) ) - equal( - a, - 'import type { string } from "./file1";\nimport type { number } from "./file2";\n' - ) + equal(a, 'import type { string } from "./file1";\nimport type { number } from "./file2";\n') }) }) diff --git a/typedoc.json b/typedoc.json index fb49aff..430a6e0 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,11 +1,7 @@ { "$schema": "https://typedoc.org/schema.json", - "plugin": [ - "@mxssfd/typedoc-theme", - "typedoc-plugin-missing-exports", - "typedoc-plugin-extras" - ], + "plugin": ["@mxssfd/typedoc-theme", "typedoc-plugin-missing-exports", "typedoc-plugin-extras"], "entryPoints": ["./types/exports.*"], "cname": "anthima-alaab.github.io", @@ -46,12 +42,7 @@ "external": false }, - "sort": [ - "kind", - "enum-member-source-order", - "instance-first", - "alphabetical" - ], + "sort": ["kind", "enum-member-source-order", "instance-first", "alphabetical"], "exclude": ["**/node_modules/**/*"], "excludePrivate": true, @@ -65,13 +56,5 @@ "version": true, "pretty": true, - "highlightLanguages": [ - "bash", - "console", - "javascript", - "json", - "jsonc", - "json5", - "typescript" - ] + "highlightLanguages": ["bash", "console", "javascript", "json", "jsonc", "json5", "typescript"] }