cspell-config-lib
Advanced tools
Comparing version 8.0.0 to 8.1.0
@@ -1,5 +0,13 @@ | ||
import type { CSpellConfigFileReaderWriter } from './CSpellConfigFileReaderWriter'; | ||
import type { Deserializer } from './Deserializer'; | ||
import type { IO } from './IO'; | ||
export declare function createReaderWriter(deserializers?: Deserializer[], io?: IO): CSpellConfigFileReaderWriter; | ||
import type { CSpellConfigFileReaderWriter } from './CSpellConfigFileReaderWriter.js'; | ||
import type { FileLoaderMiddleware } from './FileLoader.js'; | ||
import type { IO } from './IO.js'; | ||
import type { SerializerMiddleware } from './Serializer.js'; | ||
/** | ||
* | ||
* @param deserializers - Additional deserializers to use when reading a config file. The order of the deserializers is | ||
* important. The last one in the list will be the first one to be called. | ||
* @param io - an optional injectable IO interface. The default it to use the file system. | ||
* @returns | ||
*/ | ||
export declare function createReaderWriter(deserializers?: SerializerMiddleware[], loaders?: FileLoaderMiddleware[], io?: IO): CSpellConfigFileReaderWriter; | ||
//# sourceMappingURL=createReaderWriter.d.ts.map |
@@ -1,23 +0,15 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.createReaderWriter = void 0; | ||
const fs_1 = require("fs"); | ||
const CSpellConfigFileReaderWriter_1 = require("./CSpellConfigFileReaderWriter"); | ||
const deserializers_1 = require("./deserializers"); | ||
const defaultIO = { | ||
readFile, | ||
writeFile, | ||
}; | ||
function createReaderWriter(deserializers = [], io = defaultIO) { | ||
return new CSpellConfigFileReaderWriter_1.CSpellConfigFileReaderWriterImpl(io, deserializers.concat(deserializers_1.defaultDeserializers)); | ||
import { CSpellConfigFileReaderWriterImpl } from './CSpellConfigFileReaderWriter.js'; | ||
import { defaultIO } from './defaultIO.js'; | ||
import { defaultLoaders } from './loaders/index.js'; | ||
import { defaultDeserializers } from './serializers/index.js'; | ||
/** | ||
* | ||
* @param deserializers - Additional deserializers to use when reading a config file. The order of the deserializers is | ||
* important. The last one in the list will be the first one to be called. | ||
* @param io - an optional injectable IO interface. The default it to use the file system. | ||
* @returns | ||
*/ | ||
export function createReaderWriter(deserializers = [], loaders = [], io = defaultIO) { | ||
return new CSpellConfigFileReaderWriterImpl(io, defaultDeserializers.concat(deserializers), defaultLoaders.concat(loaders)); | ||
} | ||
exports.createReaderWriter = createReaderWriter; | ||
function readFile(uriFile) { | ||
const uri = new URL(uriFile); | ||
return fs_1.promises.readFile(uri, 'utf-8'); | ||
} | ||
function writeFile(uriFile, content) { | ||
const uri = new URL(uriFile); | ||
return fs_1.promises.writeFile(uri, content); | ||
} | ||
//# sourceMappingURL=createReaderWriter.js.map |
import type { CSpellSettings } from '@cspell/cspell-types'; | ||
import type { Serializer } from './Serializer'; | ||
export interface CSpellConfigFile { | ||
readonly uri: string; | ||
export interface CSpellConfigFileReference { | ||
readonly url: URL; | ||
} | ||
export interface ICSpellConfigFile { | ||
readonly url: URL; | ||
readonly settings: CSpellSettings; | ||
serialize(): string; | ||
addWords(words: string[]): this; | ||
readonly readonly?: boolean; | ||
} | ||
export declare class ImplCSpellConfigFile implements CSpellConfigFile { | ||
readonly uri: string; | ||
export declare abstract class CSpellConfigFile implements ICSpellConfigFile { | ||
readonly url: URL; | ||
constructor(url: URL); | ||
abstract readonly settings: CSpellSettings; | ||
abstract addWords(words: string[]): this; | ||
get readonly(): boolean; | ||
} | ||
export declare abstract class ImplCSpellConfigFile extends CSpellConfigFile { | ||
readonly url: URL; | ||
readonly settings: CSpellSettings; | ||
readonly serializer: Serializer; | ||
constructor(uri: string, settings: CSpellSettings, serializer: Serializer); | ||
serialize(): string; | ||
constructor(url: URL, settings: CSpellSettings); | ||
addWords(words: string[]): this; | ||
@@ -19,2 +25,3 @@ } | ||
* Adds words to a list, sorts the list and makes sure it is unique. | ||
* Note: this method is used to try and preserve comments in the config file. | ||
* @param list - list to be modified | ||
@@ -21,0 +28,0 @@ * @param toAdd - words to add |
@@ -1,17 +0,21 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.__testing__ = exports.ImplCSpellConfigFile = void 0; | ||
class ImplCSpellConfigFile { | ||
uri; | ||
export class CSpellConfigFile { | ||
url; | ||
constructor(url) { | ||
this.url = url; | ||
} | ||
get readonly() { | ||
return this.settings.readonly || this.url.protocol !== 'file:'; | ||
} | ||
} | ||
export class ImplCSpellConfigFile extends CSpellConfigFile { | ||
url; | ||
settings; | ||
serializer; | ||
constructor(uri, settings, serializer) { | ||
this.uri = uri; | ||
constructor(url, settings) { | ||
super(url); | ||
this.url = url; | ||
this.settings = settings; | ||
this.serializer = serializer; | ||
} | ||
serialize() { | ||
return this.serializer(this.settings); | ||
} | ||
addWords(words) { | ||
if (this.readonly) | ||
throw new Error(`Config file is readonly: ${this.url.href}`); | ||
const w = this.settings.words || []; | ||
@@ -23,5 +27,5 @@ this.settings.words = w; | ||
} | ||
exports.ImplCSpellConfigFile = ImplCSpellConfigFile; | ||
/** | ||
* Adds words to a list, sorts the list and makes sure it is unique. | ||
* Note: this method is used to try and preserve comments in the config file. | ||
* @param list - list to be modified | ||
@@ -40,5 +44,5 @@ * @param toAdd - words to add | ||
} | ||
exports.__testing__ = { | ||
export const __testing__ = { | ||
addUniqueWordsToListAndSort, | ||
}; | ||
//# sourceMappingURL=CSpellConfigFile.js.map |
@@ -1,18 +0,30 @@ | ||
import type { CSpellConfigFile } from './CSpellConfigFile'; | ||
import type { Deserializer, DeserializerNext } from './Deserializer'; | ||
import type { IO } from './IO'; | ||
export declare const defaultNextDeserializer: DeserializerNext; | ||
import type { CSpellConfigFile, ICSpellConfigFile } from './CSpellConfigFile.js'; | ||
import type { FileLoaderMiddleware } from './FileLoader.js'; | ||
import type { IO } from './IO.js'; | ||
import type { DeserializerNext, SerializerMiddleware } from './Serializer.js'; | ||
import type { TextFileRef } from './TextFile.js'; | ||
export interface CSpellConfigFileReaderWriter { | ||
readonly io: IO; | ||
readonly deserializers: Deserializer[]; | ||
readConfig(uri: string): Promise<CSpellConfigFile>; | ||
writeConfig(configFile: CSpellConfigFile): Promise<void>; | ||
readonly middleware: SerializerMiddleware[]; | ||
readonly loaders: FileLoaderMiddleware[]; | ||
readConfig(uri: URL | string): Promise<CSpellConfigFile>; | ||
writeConfig(configFile: CSpellConfigFile): Promise<TextFileRef>; | ||
clearCachedFiles(): void; | ||
} | ||
export declare class CSpellConfigFileReaderWriterImpl implements CSpellConfigFileReaderWriter { | ||
readonly io: IO; | ||
readonly deserializers: Deserializer[]; | ||
constructor(io: IO, deserializers: Deserializer[]); | ||
readConfig(uri: string): Promise<CSpellConfigFile>; | ||
writeConfig(configFile: CSpellConfigFile): Promise<void>; | ||
readonly middleware: SerializerMiddleware[]; | ||
readonly loaders: FileLoaderMiddleware[]; | ||
/** | ||
* @param io - an optional injectable IO interface. The default is to use the file system. | ||
* @param deserializers - Additional deserializers to use when reading a config file. The order of the deserializers is | ||
* important. The last one in the list will be the first one to be called. | ||
*/ | ||
constructor(io: IO, middleware: SerializerMiddleware[], loaders: FileLoaderMiddleware[]); | ||
readConfig(uri: URL | string): Promise<CSpellConfigFile>; | ||
getDeserializer(): DeserializerNext; | ||
serialize(configFile: ICSpellConfigFile): string; | ||
writeConfig(configFile: ICSpellConfigFile): Promise<TextFileRef>; | ||
clearCachedFiles(): void; | ||
} | ||
//# sourceMappingURL=CSpellConfigFileReaderWriter.d.ts.map |
@@ -1,33 +0,41 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.CSpellConfigFileReaderWriterImpl = exports.defaultNextDeserializer = void 0; | ||
const defaultNextDeserializer = (content) => { | ||
throw new Error(`Unable to parse config file: "${content.uri}"`); | ||
}; | ||
exports.defaultNextDeserializer = defaultNextDeserializer; | ||
class CSpellConfigFileReaderWriterImpl { | ||
import { getDeserializer, getLoader, getSerializer } from './middlewareHelper.js'; | ||
import { toURL } from './util/toURL.js'; | ||
export class CSpellConfigFileReaderWriterImpl { | ||
io; | ||
deserializers; | ||
constructor(io, deserializers) { | ||
middleware; | ||
loaders; | ||
/** | ||
* @param io - an optional injectable IO interface. The default is to use the file system. | ||
* @param deserializers - Additional deserializers to use when reading a config file. The order of the deserializers is | ||
* important. The last one in the list will be the first one to be called. | ||
*/ | ||
constructor(io, middleware, loaders) { | ||
this.io = io; | ||
this.deserializers = deserializers; | ||
this.middleware = middleware; | ||
this.loaders = loaders; | ||
} | ||
async readConfig(uri) { | ||
const content = await this.io.readFile(uri); | ||
let next = exports.defaultNextDeserializer; | ||
const desContent = { uri, content }; | ||
for (const des of [...this.deserializers].reverse()) { | ||
next = curry(des, next); | ||
readConfig(uri) { | ||
const loader = getLoader(this.loaders); | ||
return loader({ url: toURL(uri), context: { deserialize: this.getDeserializer(), io: this.io } }); | ||
} | ||
getDeserializer() { | ||
return getDeserializer(this.middleware); | ||
} | ||
serialize(configFile) { | ||
const serializer = getSerializer(this.middleware); | ||
return serializer(configFile); | ||
} | ||
async writeConfig(configFile) { | ||
if (configFile.readonly) | ||
throw new Error(`Config file is readonly: ${configFile.url.href}`); | ||
const content = this.serialize(configFile); | ||
await this.io.writeFile({ url: configFile.url, content }); | ||
return { url: configFile.url }; | ||
} | ||
clearCachedFiles() { | ||
for (const loader of this.loaders) { | ||
loader.reset?.(); | ||
} | ||
return next(desContent); | ||
} | ||
writeConfig(configFile) { | ||
const content = configFile.serialize(); | ||
return this.io.writeFile(configFile.uri, content); | ||
} | ||
} | ||
exports.CSpellConfigFileReaderWriterImpl = CSpellConfigFileReaderWriterImpl; | ||
function curry(des, next) { | ||
return (content) => des(content, next); | ||
} | ||
//# sourceMappingURL=CSpellConfigFileReaderWriter.js.map |
@@ -1,7 +0,8 @@ | ||
export { createReaderWriter } from './createReaderWriter'; | ||
export type { CSpellConfigFile } from './CSpellConfigFile'; | ||
export type { CSpellConfigFileReaderWriter } from './CSpellConfigFileReaderWriter'; | ||
export type { Deserializer, DeserializerNext, DeserializerParams } from './Deserializer'; | ||
export type { IO } from './IO'; | ||
export type { Serializer } from './Serializer'; | ||
export { createReaderWriter } from './createReaderWriter.js'; | ||
export { CSpellConfigFile } from './CSpellConfigFile.js'; | ||
export { CSpellConfigFileInMemory, CSpellConfigFileJavaScript, CSpellConfigFileJson, CSpellConfigFilePackageJson, CSpellConfigFileYaml, } from './CSpellConfigFile/index.js'; | ||
export type { CSpellConfigFileReaderWriter } from './CSpellConfigFileReaderWriter.js'; | ||
export type { IO } from './IO.js'; | ||
export type { DeserializerNext, DeserializerParams, DeserializerReducer, SerializerMiddleware, SerializerNext, SerializerReducer, SerializeSettingsFn, } from './Serializer.js'; | ||
export type { TextFile, TextFileRef } from './TextFile.js'; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -1,6 +0,4 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.createReaderWriter = void 0; | ||
var createReaderWriter_1 = require("./createReaderWriter"); | ||
Object.defineProperty(exports, "createReaderWriter", { enumerable: true, get: function () { return createReaderWriter_1.createReaderWriter; } }); | ||
export { createReaderWriter } from './createReaderWriter.js'; | ||
export { CSpellConfigFile } from './CSpellConfigFile.js'; | ||
export { CSpellConfigFileInMemory, CSpellConfigFileJavaScript, CSpellConfigFileJson, CSpellConfigFilePackageJson, CSpellConfigFileYaml, } from './CSpellConfigFile/index.js'; | ||
//# sourceMappingURL=index.js.map |
@@ -0,5 +1,6 @@ | ||
import type { TextFile, TextFileRef } from './TextFile.js'; | ||
export interface IO { | ||
readFile(uri: string): Promise<string>; | ||
writeFile(uri: string, content: string): Promise<void>; | ||
readFile(url: URL): Promise<TextFile>; | ||
writeFile(file: TextFile): Promise<TextFileRef>; | ||
} | ||
//# sourceMappingURL=IO.d.ts.map |
@@ -1,3 +0,2 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
export {}; | ||
//# sourceMappingURL=IO.js.map |
import type { CSpellSettings } from '@cspell/cspell-types'; | ||
export interface Serializer { | ||
(settings: CSpellSettings): string; | ||
import type { CSpellConfigFile, ICSpellConfigFile } from './CSpellConfigFile.js'; | ||
import type { TextFile } from './TextFile.js'; | ||
export interface SerializerNext { | ||
(content: ICSpellConfigFile): string; | ||
} | ||
export interface SerializerReducer { | ||
/** | ||
* If a Serializer can handle a given request, it returns a CSpellConfigFile, otherwise it calls `next`. | ||
*/ | ||
(settings: ICSpellConfigFile, next: SerializerNext): string; | ||
} | ||
export type SerializeSettingsFn = (settings: CSpellSettings) => string; | ||
export interface DeserializerParams extends TextFile { | ||
} | ||
export interface DeserializerNext { | ||
(content: DeserializerParams): CSpellConfigFile; | ||
} | ||
export interface DeserializerReducer { | ||
/** | ||
* If a Deserializer can handle a given request, it returns a CSpellConfigFile, otherwise it calls `next`. | ||
*/ | ||
(params: DeserializerParams, next: DeserializerNext): CSpellConfigFile; | ||
} | ||
export interface SerializerMiddleware { | ||
serialize: SerializerReducer; | ||
deserialize: DeserializerReducer; | ||
} | ||
//# sourceMappingURL=Serializer.d.ts.map |
@@ -1,3 +0,2 @@ | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
export {}; | ||
//# sourceMappingURL=Serializer.js.map |
@@ -1,33 +0,6 @@ | ||
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
var desc = Object.getOwnPropertyDescriptor(m, k); | ||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
desc = { enumerable: true, get: function() { return m[k]; } }; | ||
} | ||
Object.defineProperty(o, k2, desc); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
}) : function(o, v) { | ||
o["default"] = v; | ||
}); | ||
var __importStar = (this && this.__importStar) || function (mod) { | ||
if (mod && mod.__esModule) return mod; | ||
var result = {}; | ||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
__setModuleDefault(result, mod); | ||
return result; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.fixtures = void 0; | ||
const path = __importStar(require("path")); | ||
import * as path from 'path'; | ||
const fixturesDir = path.join(__dirname, '../../fixtures'); | ||
function fixtures(pathOfFixture = '') { | ||
export function fixtures(pathOfFixture = '') { | ||
return path.resolve(fixturesDir, pathOfFixture); | ||
} | ||
exports.fixtures = fixtures; | ||
//# sourceMappingURL=fixtures.js.map |
@@ -1,47 +0,18 @@ | ||
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
var desc = Object.getOwnPropertyDescriptor(m, k); | ||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
desc = { enumerable: true, get: function() { return m[k]; } }; | ||
} | ||
Object.defineProperty(o, k2, desc); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
}) : function(o, v) { | ||
o["default"] = v; | ||
}); | ||
var __importStar = (this && this.__importStar) || function (mod) { | ||
if (mod && mod.__esModule) return mod; | ||
var result = {}; | ||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
__setModuleDefault(result, mod); | ||
return result; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.copyFile = exports.createPathForFile = exports.tempPath = exports.json = void 0; | ||
const fs_1 = require("fs"); | ||
const path = __importStar(require("path")); | ||
function json(obj, indent = 2) { | ||
import { promises as fs } from 'fs'; | ||
import * as path from 'path'; | ||
import { expect } from 'vitest'; | ||
export function json(obj, indent = 2) { | ||
return JSON.stringify(obj, null, indent) + '\n'; | ||
} | ||
exports.json = json; | ||
function tempPath(file) { | ||
export function tempPath(file) { | ||
const testState = expect.getState(); | ||
return path.join(__dirname, '../../temp', testState.currentTestName || 'test', file); | ||
return path.join(__dirname, '../../.temp', testState.currentTestName?.replace(/[^a-z./-]/gi, '_') || 'test', file); | ||
} | ||
exports.tempPath = tempPath; | ||
async function createPathForFile(file) { | ||
await fs_1.promises.mkdir(path.dirname(file), { recursive: true }); | ||
export async function createPathForFile(file) { | ||
await fs.mkdir(path.dirname(file), { recursive: true }); | ||
} | ||
exports.createPathForFile = createPathForFile; | ||
async function copyFile(fromFile, toFile) { | ||
export async function copyFile(fromFile, toFile) { | ||
await createPathForFile(toFile); | ||
return fs_1.promises.copyFile(fromFile, toFile); | ||
return fs.copyFile(fromFile, toFile); | ||
} | ||
exports.copyFile = copyFile; | ||
//# sourceMappingURL=util.js.map |
{ | ||
"name": "cspell-config-lib", | ||
"version": "8.0.0", | ||
"version": "8.1.0", | ||
"description": "CSpell Config library", | ||
@@ -12,3 +12,6 @@ "keywords": [ | ||
"license": "MIT", | ||
"main": "dist/index.js", | ||
"type": "module", | ||
"exports": { | ||
".": "./dist/index.js" | ||
}, | ||
"directories": { | ||
@@ -31,5 +34,5 @@ "dist": "dist" | ||
"clean-build": "pnpm run clean && pnpm run build", | ||
"coverage": "jest --coverage", | ||
"test-watch": "jest --watch", | ||
"test": "jest" | ||
"coverage": "vitest run --coverage", | ||
"test-watch": "vitest", | ||
"test": "vitest run" | ||
}, | ||
@@ -47,12 +50,7 @@ "repository": { | ||
"dependencies": { | ||
"@cspell/cspell-types": "8.0.0", | ||
"@cspell/cspell-types": "8.1.0", | ||
"comment-json": "^4.2.3", | ||
"vscode-uri": "^3.0.8", | ||
"yaml": "^1.10.2" | ||
"yaml": "^2.3.4" | ||
}, | ||
"devDependencies": { | ||
"@types/jest": "^29.5.7", | ||
"jest": "^29.7.0" | ||
}, | ||
"gitHead": "67c22bf98baed1c17bbc658fba8656262d17e370" | ||
"gitHead": "28568808deaf39b9ffa71fd0f722441ff1b8c794" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
32074
3
0
59
676
Yes
1
+ Added@cspell/cspell-types@8.1.0(transitive)
+ Addedyaml@2.5.1(transitive)
- Removedvscode-uri@^3.0.8
- Removed@cspell/cspell-types@8.0.0(transitive)
- Removedvscode-uri@3.0.8(transitive)
- Removedyaml@1.10.2(transitive)
Updated@cspell/cspell-types@8.1.0
Updatedyaml@^2.3.4