https://github.com/igorskyflyer/npm-windev
π Provides ways of checking whether a path is a legacy Windows device. πΎ
https://github.com/igorskyflyer/npm-windev
back-end device file-system igorskyflyer javascript legacy nodejs npm path reserved storage string windows
Last synced: 3 months ago
JSON representation
π Provides ways of checking whether a path is a legacy Windows device. πΎ
- Host: GitHub
- URL: https://github.com/igorskyflyer/npm-windev
- Owner: igorskyflyer
- License: mit
- Created: 2021-07-28T23:16:04.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-09-01T23:01:01.000Z (10 months ago)
- Last Synced: 2025-10-02T12:45:27.612Z (9 months ago)
- Topics: back-end, device, file-system, igorskyflyer, javascript, legacy, nodejs, npm, path, reserved, storage, string, windows
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/@igorskyflyer/windev
- Size: 354 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
\\.\WinDev
π Determines whether a path is a legacy Windows device. πΎ
## π Table of Contents
- [Features](#-features)
- [Usage](#-usage)
- [API](#-api)
- [Examples](#οΈ-examples)
- [Changelog](#-changelog)
- [Support](#-support)
- [License](#-license)
- [Related](#-related)
- [Author](#-author)
## π€ Features
- πΎ Detects instantly if a name is a legacy Windows device
- π₯ Works with both file and folder names
- π― Ignores case so matches are reliable
- π§Ή Handles extra spaces or extensions gracefully
- β‘ Gives a simple `true` or `false` result for quick decisions
> ### βΉοΈ NOTE
>
> #### Legacy filesystem names
>
> When creating files or folders on Windows there are some rules about naming them, one of which is that te usage of legacy Windows devices' names as the folder/file name is prohibited, i.e.:
>
> βDo not use the following reserved names for the name of a file:
>
> `CON`, `PRN`, `AUX`, `NUL`, `COM1`, `COM2`, `COM3`, `COM4`, `COM5`, `COM6`, `COM7`, `COM8`, `COM9`, `LPT1`, `LPT2`, `LPT3`, `LPT4`, `LPT5`, `LPT6`, `LPT7`, `LPT8`, and `LPT9`.
>
> Also avoid these names followed immediately by an extension; for example, `NUL.txt` is not recommended.β.
>
> Source: [Microsoft Docs](https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#Naming_Conventions)
>
> ### π‘ TIP
>
> #### Edge-cases
>
> Be aware that there are some edge-cases that this module also handles, examples #4 and #7 illustrate that. Technically the provided strings in those two examples are not legacy devices but you are still not allowed to create files/directories with those names.
>
## π΅πΌ Usage
Install it by executing any of the following, depending on your preferred package manager:
```bash
pnpm add @igorskyflyer/windev
```
```bash
yarn add @igorskyflyer/windev
```
```bash
npm i @igorskyflyer/windev
```
## π€ΉπΌ API
```ts
function isWindowsDevice(name: string): boolean
```
Checks whether the given directory or file name is a legacy Windows device.
## ποΈ Examples
```ts
import { isWindowsDevice } from '@igorskyflyer/windev'
console.log(isWindowsDevice()) // prints false
console.log(isWindowsDevice('')) // prints false
console.log(isWindowsDevice('con')) // prints true
console.log(isWindowsDevice('con.txt')) // prints true
console.log(isWindowsDevice('cOm3')) // prints true
console.log(isWindowsDevice('COM7 ')) // prints true
console.log(isWindowsDevice(' COM2 .txt.al')) // prints true
console.log(isWindowsDevice('CONnection')) // prints false
```
## π Changelog
π The changelog is available here, [CHANGELOG.md](https://github.com/igorskyflyer/npm-windev/blob/main/CHANGELOG.md).
## πͺͺ License
Licensed under the MIT license which is available here, [MIT license](https://github.com/igorskyflyer/npm-windev/blob/main/LICENSE).
## π Support
I work hard for every project, including this one and your support means a lot to me!
Consider buying me a coffee. β
Thank you for supporting my efforts! ππ
## 𧬠Related
[@igorskyflyer/windows-packages](https://www.npmjs.com/package/@igorskyflyer/windows-packages)
> _π» A Node.js module for reading the Packages registry key on Windows 10+. Useful for retrieving Windows 10+ installed Store applications. π¦_
[@igorskyflyer/astro-post-excerpt](https://www.npmjs.com/package/@igorskyflyer/astro-post-excerpt)
> _β An Astro component that renders post excerpts for your Astro blog - directly from your Markdown and MDX files. Astro v2+ collections are supported as well! π_
[@igorskyflyer/mapped-replacer](https://www.npmjs.com/package/@igorskyflyer/mapped-replacer)
> _πΊ Zero-dependency Map and RegExp based string replacer with Unicode support. π_
[@igorskyflyer/astro-saferesource](https://www.npmjs.com/package/@igorskyflyer/astro-saferesource)
> _π Adds CSP-compliant inline scripts and styles to Astro! π _
[@igorskyflyer/pathexists](https://www.npmjs.com/package/@igorskyflyer/pathexists)
> _π§² Provides ways of properly checking if a path exists inside a given array of files/directories both on Windows and UNIX-like operating systems. πΊ_
## π¨π»βπ» Author
Created by **Igor DimitrijeviΔ** ([*@igorskyflyer*](https://github.com/igorskyflyer/)).