Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@eslint-react/shared

Package Overview
Dependencies
Maintainers
1
Versions
781
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@eslint-react/shared - npm Package Compare versions

Comparing version 0.9.8-beta.0 to 0.9.8-beta.1

28

dist/index.d.ts

@@ -369,2 +369,28 @@ import * as valibot from 'valibot';

export { type ESLintReactSettings, ESLintReactSettingsSchema, type ESLintSettings, ESLintSettingsSchema, GITHUB_URL, HOST_HTML_COMPONENT_TYPES, HOST_SVG_COMPONENT_TYPES, NPM_SCOPE, RE_JAVASCRIPT_PROTOCOL, WEBSITE_URL };
type RecommendationBuilder = (name: string) => string;
declare class CaseValidator {
#private;
constructor(expression: RegExp, ignorePatterns: RegExp[], recommendationBuilder?: RecommendationBuilder);
getRecommendedName(name: string): string;
validate(name: string): boolean;
}
declare const getCaseValidator: (ruleName: string, ignorePattern?: string[]) => CaseValidator;
interface Rule {
expression: RegExp;
recommendationBuilder?: (name: string) => string;
}
interface PresetRules {
[key: string]: Required<Rule> | undefined;
CONSTANT_CASE: Required<Rule>;
PascalCase: Required<Rule>;
camelCase: Required<Rule>;
"kebab-case": Required<Rule>;
snake_case: Required<Rule>;
}
declare const presetRules: PresetRules;
declare const getRule: (expression: string, preset?: PresetRules) => Rule;
declare const splitName: (name: string) => string[];
export { CaseValidator, type ESLintReactSettings, ESLintReactSettingsSchema, type ESLintSettings, ESLintSettingsSchema, GITHUB_URL, HOST_HTML_COMPONENT_TYPES, HOST_SVG_COMPONENT_TYPES, NPM_SCOPE, RE_JAVASCRIPT_PROTOCOL, WEBSITE_URL, getCaseValidator, getRule, presetRules, splitName };

@@ -221,2 +221,140 @@ 'use strict';

/*
* Copied from https://github.com/epaew/eslint-plugin-filenames-simple/blob/master/src/utils/split-name.ts
* Split the file/variable name written in camelCase, kebab-case, PascalCase, and snake_case.
*/ const splitName = (name)=>{
return name.replaceAll("_", "-").replaceAll(/([\da-z])([A-Z])|([A-Z])([A-Z])(?=[a-z])/gu, "$1$3-$2$4").toLowerCase().split("-");
};
/* eslint-disable no-restricted-syntax */ /* eslint-disable security/detect-object-injection */ /* eslint-disable security/detect-non-literal-regexp */ // Copied from https://github.com/epaew/eslint-plugin-filenames-simple/blob/master/src/utils/preset-rules.ts
const presetRules = {
PascalCase: {
expression: /^[A-Z][\dA-Za-z]*$/u,
recommendationBuilder: (name)=>{
return splitName(name).map((word)=>{
const [first, ...rest] = word;
return `${first?.toUpperCase() ?? ""}${rest.join("")}`;
}).join("");
}
},
camelCase: {
expression: /^[a-z][\dA-Za-z]*$/u,
recommendationBuilder: (name)=>{
return splitName(name).map((word, i)=>{
if (i === 0) {
return word;
}
const [first, ...rest] = word;
return `${first?.toUpperCase() ?? ""}${rest.join("")}`;
}).join("");
}
},
"kebab-case": {
expression: /^[a-z][\d\-a-z]*$/u,
recommendationBuilder: (name)=>{
return splitName(name).join("-");
}
},
snake_case: {
expression: /^[a-z][\d_a-z]*$/u,
recommendationBuilder: (name)=>{
return splitName(name).join("_");
}
},
// eslint-disable-next-line perfectionist/sort-objects
CONSTANT_CASE: {
expression: /^[A-Z][\d_A-Z]*$/u,
recommendationBuilder: (name)=>{
return splitName(name).join("_").toUpperCase();
}
}
};
const getRule = (expression, preset = presetRules)=>{
const rule = preset[expression];
return rule ?? {
expression: new RegExp(`^${expression}$`, "u")
};
};
/* eslint-disable functional/no-this-expressions */ /* eslint-disable functional/prefer-immutable-types */ /* eslint-disable functional/no-expression-statements */ /* eslint-disable functional/no-classes */ /* eslint-disable functional/no-throw-statements */ /* eslint-disable security/detect-non-literal-regexp */ // Copied from https://github.com/epaew/eslint-plugin-filenames-simple/blob/master/src/utils/case-validator.ts
function _check_private_redeclaration(obj, privateCollection) {
if (privateCollection.has(obj)) {
throw new TypeError("Cannot initialize the same private elements twice on an object");
}
}
function _class_apply_descriptor_get(receiver, descriptor) {
if (descriptor.get) {
return descriptor.get.call(receiver);
}
return descriptor.value;
}
function _class_apply_descriptor_set(receiver, descriptor, value) {
if (descriptor.set) {
descriptor.set.call(receiver, value);
} else {
if (!descriptor.writable) {
throw new TypeError("attempted to set read only private field");
}
descriptor.value = value;
}
}
function _class_extract_field_descriptor(receiver, privateMap, action) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to " + action + " private field on non-instance");
}
return privateMap.get(receiver);
}
function _class_private_field_get(receiver, privateMap) {
var descriptor = _class_extract_field_descriptor(receiver, privateMap, "get");
return _class_apply_descriptor_get(receiver, descriptor);
}
function _class_private_field_init(obj, privateMap, value) {
_check_private_redeclaration(obj, privateMap);
privateMap.set(obj, value);
}
function _class_private_field_set(receiver, privateMap, value) {
var descriptor = _class_extract_field_descriptor(receiver, privateMap, "set");
_class_apply_descriptor_set(receiver, descriptor, value);
return value;
}
var _expression = /*#__PURE__*/ new WeakMap(), _ignorePatterns = /*#__PURE__*/ new WeakMap(), _recommendationBuilder = /*#__PURE__*/ new WeakMap();
class CaseValidator {
getRecommendedName(name) {
const recommendedName = _class_private_field_get(this, _recommendationBuilder).call(this, name);
if (_class_private_field_get(this, _expression).test(recommendedName)) {
return recommendedName;
}
throw new Error("Failed to build recommendation.");
}
validate(name) {
if (_class_private_field_get(this, _ignorePatterns).some((re)=>re.test(name))) {
return true;
}
return _class_private_field_get(this, _expression).test(name);
}
constructor(expression, ignorePatterns, recommendationBuilder = ()=>{
throw new Error("Not implemented");
}){
_class_private_field_init(this, _expression, {
writable: true,
value: void 0
});
_class_private_field_init(this, _ignorePatterns, {
writable: true,
value: void 0
});
_class_private_field_init(this, _recommendationBuilder, {
writable: true,
value: void 0
});
_class_private_field_set(this, _expression, expression);
_class_private_field_set(this, _ignorePatterns, ignorePatterns);
_class_private_field_set(this, _recommendationBuilder, recommendationBuilder);
}
}
const getCaseValidator = (ruleName, ignorePattern = [])=>{
const { expression, recommendationBuilder } = getRule(ruleName);
return new CaseValidator(expression, ignorePattern.map((pattern)=>new RegExp(`^${pattern}$`, "u")), recommendationBuilder);
};
Object.defineProperty(exports, "parse", {

@@ -230,2 +368,3 @@ enumerable: true,

});
exports.CaseValidator = CaseValidator;
exports.ESLintReactSettingsSchema = ESLintReactSettingsSchema;

@@ -239,1 +378,5 @@ exports.ESLintSettingsSchema = ESLintSettingsSchema;

exports.WEBSITE_URL = WEBSITE_URL;
exports.getCaseValidator = getCaseValidator;
exports.getRule = getRule;
exports.presetRules = presetRules;
exports.splitName = splitName;

16

package.json
{
"name": "@eslint-react/shared",
"version": "0.9.8-beta.0",
"version": "0.9.8-beta.1",
"description": "ESLint React's shared data and constants.",

@@ -38,14 +38,10 @@ "homepage": "https://github.com/rel1cx/eslint-react",

"dependencies": {
"@typescript-eslint/utils": "6.14.0",
"dedent": "1.5.1",
"deepmerge-ts": "5.1.0",
"short-unique-id": "5.0.3",
"tslib": "2.6.2",
"valibot": "0.24.1",
"@eslint-react/tools": "0.9.8-beta.0",
"@eslint-react/types": "0.9.8-beta.0"
"valibot": "0.24.1"
},
"devDependencies": {
"type-fest": "4.8.3"
},
"scripts": {
"build": "rollup -c rollup.config.ts --configPlugin swc3 && cp dist/index.d.ts dist/index.d.mts",
"build:docs": "typedoc && dprint fmt ./docs/**/*.md",
"build:docs": "typedoc",
"lint:publish": "publint",

@@ -52,0 +48,0 @@ "lint:type": "tsc --noEmit"

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc