eslint-config-functype 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -51,7 +51,7 @@ declare const _default: {
51
51
  "functional/no-mixed-types": string;
52
52
  "functional/functional-parameters": string;
53
53
  "functional/no-throw-statements": (string | {
54
- allowToRejectWith: boolean;
54
+ allowToRejectPromises: boolean;
55
55
  })[];
56
56
  "functional/no-try-statements": (string | {
57
57
  allowCatch: boolean;
@@ -60,7 +60,7 @@ var recommended_default = {
60
60
  "functional/prefer-immutable-types": "off",
61
61
  "functional/no-mixed-types": "off",
62
62
  "functional/functional-parameters": "off",
63
- "functional/no-throw-statements": ["warn", { allowToRejectWith: true }],
63
+ "functional/no-throw-statements": ["warn", { allowToRejectPromises: true }],
64
64
  "functional/no-try-statements": ["warn", { allowCatch: true }],
65
65
  "functional/no-conditional-statements": "off",
66
66
  "functional/no-expression-statements": "off",
@@ -1 +1 @@
1
- {"version":3,"file":"recommended.js","names":[],"sources":["../../src/configs/recommended.ts"],"sourcesContent":["import {\n createValidationError,\n shouldValidateDependencies,\n validatePeerDependencies,\n} from \"../utils/dependency-validator\"\n\n// Validate peer dependencies on config load\nif (shouldValidateDependencies()) {\n const result = validatePeerDependencies()\n if (!result.isValid) {\n throw createValidationError(result)\n }\n\n // Log warnings for missing optional dependencies\n if (result.warnings.length > 0) {\n console.warn(\"\\n⚠️ eslint-config-functype warnings:\")\n result.warnings.forEach((warning) => console.warn(` ${warning}`))\n console.warn(\"\")\n }\n}\n\n// ESLint 9.x Flat Config Format\n// Complete functional TypeScript config with formatting and import organization\nexport default {\n name: \"functype/recommended\",\n rules: {\n // Core JavaScript immutability\n \"prefer-const\": \"error\",\n \"no-var\": \"error\",\n \"no-throw-literal\": \"error\",\n \"no-mixed-spaces-and-tabs\": \"error\",\n \"no-extra-semi\": \"error\",\n \"object-shorthand\": \"error\",\n \"prefer-template\": \"error\",\n \"prefer-destructuring\": [\n \"error\",\n {\n array: false,\n object: true,\n },\n ],\n\n // TypeScript functional patterns (when @typescript-eslint is available)\n \"@typescript-eslint/consistent-type-imports\": \"error\",\n \"@typescript-eslint/no-explicit-any\": \"error\",\n \"@typescript-eslint/no-unused-vars\": [\n \"error\",\n {\n argsIgnorePattern: \"^_\", // Only underscore-prefixed parameters\n varsIgnorePattern: \"^(_|[A-Z]$)\", // Allow underscore-prefixed vars and single uppercase letters (interface generics)\n caughtErrors: \"all\", // Require using catch block errors or prefix with _\n caughtErrorsIgnorePattern: \"^_\", // Allow _error, _e, etc. in catch blocks\n destructuredArrayIgnorePattern: \"^_\",\n ignoreRestSiblings: true,\n args: \"after-used\",\n },\n ],\n \"@typescript-eslint/no-unused-expressions\": [\n \"error\",\n {\n allowShortCircuit: true,\n allowTernary: true,\n },\n ],\n \"@typescript-eslint/no-floating-promises\": \"error\",\n \"@typescript-eslint/await-thenable\": \"error\",\n \"@typescript-eslint/no-misused-promises\": \"error\",\n \"@typescript-eslint/require-await\": \"error\",\n \"@typescript-eslint/prefer-nullish-coalescing\": \"error\",\n \"@typescript-eslint/prefer-optional-chain\": \"error\",\n \"@typescript-eslint/no-unnecessary-condition\": \"warn\",\n // Relax strict-boolean-expressions for functional library patterns\n // This rule is valuable for applications but creates excessive noise in a functional library where:\n // 1. Optional chaining patterns like `if (options?.prop)` are idiomatic and safe\n // 2. String/object truthiness checks are common and intentional (e.g., `if (message)`)\n // 3. The functional design already provides safety through Option/Either patterns\n // 4. Library code often needs flexibility for performance and interoperability\n \"@typescript-eslint/strict-boolean-expressions\": [\n \"warn\",\n {\n allowString: true, // Allow `if (str)` patterns\n allowNumber: true, // Allow `if (num)` patterns\n allowNullableObject: true, // Allow `if (obj?.prop)` patterns\n allowNullableBoolean: true, // Allow `if (bool)` where bool might be null/undefined\n allowNullableString: true, // Allow `if (str)` where str might be null/undefined\n allowNullableNumber: true, // Allow `if (num)` where num might be null/undefined\n allowAny: true, // Allow `if (value)` where value is any type\n },\n ],\n\n // Functional programming rules (when eslint-plugin-functional is available)\n \"functional/no-let\": \"error\",\n \"functional/immutable-data\": \"warn\",\n \"functional/no-loop-statements\": \"off\", // Start disabled, can enable later\n \"functional/prefer-immutable-types\": \"off\",\n \"functional/no-mixed-types\": \"off\",\n \"functional/functional-parameters\": \"off\",\n \"functional/no-throw-statements\": [\"warn\", { allowToRejectWith: true }],\n \"functional/no-try-statements\": [\"warn\", { allowCatch: true }],\n\n // Allow some flexibility\n \"functional/no-conditional-statements\": \"off\",\n \"functional/no-expression-statements\": \"off\",\n \"functional/no-return-void\": \"off\",\n\n // Code formatting (when eslint-plugin-prettier is available)\n \"prettier/prettier\": [\n \"error\",\n {},\n {\n usePrettierrc: true,\n },\n ],\n\n // Import organization (when eslint-plugin-simple-import-sort is available)\n \"simple-import-sort/imports\": \"error\",\n \"simple-import-sort/exports\": \"error\",\n },\n}\n"],"mappings":";;AAOA,IAAI,4BAA4B,EAAE;CAChC,MAAM,SAAS,0BAA0B;AACzC,KAAI,CAAC,OAAO,QACV,OAAM,sBAAsB,OAAO;AAIrC,KAAI,OAAO,SAAS,SAAS,GAAG;AAC9B,UAAQ,KAAK,yCAAyC;AACtD,SAAO,SAAS,SAAS,YAAY,QAAQ,KAAK,MAAM,UAAU,CAAC;AACnE,UAAQ,KAAK,GAAG;;;AAMpB,IAAA,sBAAe;CACb,MAAM;CACN,OAAO;EAEL,gBAAgB;EAChB,UAAU;EACV,oBAAoB;EACpB,4BAA4B;EAC5B,iBAAiB;EACjB,oBAAoB;EACpB,mBAAmB;EACnB,wBAAwB,CACtB,SACA;GACE,OAAO;GACP,QAAQ;GACT,CACF;EAGD,8CAA8C;EAC9C,sCAAsC;EACtC,qCAAqC,CACnC,SACA;GACE,mBAAmB;GACnB,mBAAmB;GACnB,cAAc;GACd,2BAA2B;GAC3B,gCAAgC;GAChC,oBAAoB;GACpB,MAAM;GACP,CACF;EACD,4CAA4C,CAC1C,SACA;GACE,mBAAmB;GACnB,cAAc;GACf,CACF;EACD,2CAA2C;EAC3C,qCAAqC;EACrC,0CAA0C;EAC1C,oCAAoC;EACpC,gDAAgD;EAChD,4CAA4C;EAC5C,+CAA+C;EAO/C,iDAAiD,CAC/C,QACA;GACE,aAAa;GACb,aAAa;GACb,qBAAqB;GACrB,sBAAsB;GACtB,qBAAqB;GACrB,qBAAqB;GACrB,UAAU;GACX,CACF;EAGD,qBAAqB;EACrB,6BAA6B;EAC7B,iCAAiC;EACjC,qCAAqC;EACrC,6BAA6B;EAC7B,oCAAoC;EACpC,kCAAkC,CAAC,QAAQ,EAAE,mBAAmB,MAAM,CAAC;EACvE,gCAAgC,CAAC,QAAQ,EAAE,YAAY,MAAM,CAAC;EAG9D,wCAAwC;EACxC,uCAAuC;EACvC,6BAA6B;EAG7B,qBAAqB;GACnB;GACA,EAAE;GACF,EACE,eAAe,MAChB;GACF;EAGD,8BAA8B;EAC9B,8BAA8B;EAC/B;CACF"}
1
+ {"version":3,"file":"recommended.js","names":[],"sources":["../../src/configs/recommended.ts"],"sourcesContent":["import {\n createValidationError,\n shouldValidateDependencies,\n validatePeerDependencies,\n} from \"../utils/dependency-validator\"\n\n// Validate peer dependencies on config load\nif (shouldValidateDependencies()) {\n const result = validatePeerDependencies()\n if (!result.isValid) {\n throw createValidationError(result)\n }\n\n // Log warnings for missing optional dependencies\n if (result.warnings.length > 0) {\n console.warn(\"\\n⚠️ eslint-config-functype warnings:\")\n result.warnings.forEach((warning) => console.warn(` ${warning}`))\n console.warn(\"\")\n }\n}\n\n// ESLint 9.x Flat Config Format\n// Complete functional TypeScript config with formatting and import organization\nexport default {\n name: \"functype/recommended\",\n rules: {\n // Core JavaScript immutability\n \"prefer-const\": \"error\",\n \"no-var\": \"error\",\n \"no-throw-literal\": \"error\",\n \"no-mixed-spaces-and-tabs\": \"error\",\n \"no-extra-semi\": \"error\",\n \"object-shorthand\": \"error\",\n \"prefer-template\": \"error\",\n \"prefer-destructuring\": [\n \"error\",\n {\n array: false,\n object: true,\n },\n ],\n\n // TypeScript functional patterns (when @typescript-eslint is available)\n \"@typescript-eslint/consistent-type-imports\": \"error\",\n \"@typescript-eslint/no-explicit-any\": \"error\",\n \"@typescript-eslint/no-unused-vars\": [\n \"error\",\n {\n argsIgnorePattern: \"^_\", // Only underscore-prefixed parameters\n varsIgnorePattern: \"^(_|[A-Z]$)\", // Allow underscore-prefixed vars and single uppercase letters (interface generics)\n caughtErrors: \"all\", // Require using catch block errors or prefix with _\n caughtErrorsIgnorePattern: \"^_\", // Allow _error, _e, etc. in catch blocks\n destructuredArrayIgnorePattern: \"^_\",\n ignoreRestSiblings: true,\n args: \"after-used\",\n },\n ],\n \"@typescript-eslint/no-unused-expressions\": [\n \"error\",\n {\n allowShortCircuit: true,\n allowTernary: true,\n },\n ],\n \"@typescript-eslint/no-floating-promises\": \"error\",\n \"@typescript-eslint/await-thenable\": \"error\",\n \"@typescript-eslint/no-misused-promises\": \"error\",\n \"@typescript-eslint/require-await\": \"error\",\n \"@typescript-eslint/prefer-nullish-coalescing\": \"error\",\n \"@typescript-eslint/prefer-optional-chain\": \"error\",\n \"@typescript-eslint/no-unnecessary-condition\": \"warn\",\n // Relax strict-boolean-expressions for functional library patterns\n // This rule is valuable for applications but creates excessive noise in a functional library where:\n // 1. Optional chaining patterns like `if (options?.prop)` are idiomatic and safe\n // 2. String/object truthiness checks are common and intentional (e.g., `if (message)`)\n // 3. The functional design already provides safety through Option/Either patterns\n // 4. Library code often needs flexibility for performance and interoperability\n \"@typescript-eslint/strict-boolean-expressions\": [\n \"warn\",\n {\n allowString: true, // Allow `if (str)` patterns\n allowNumber: true, // Allow `if (num)` patterns\n allowNullableObject: true, // Allow `if (obj?.prop)` patterns\n allowNullableBoolean: true, // Allow `if (bool)` where bool might be null/undefined\n allowNullableString: true, // Allow `if (str)` where str might be null/undefined\n allowNullableNumber: true, // Allow `if (num)` where num might be null/undefined\n allowAny: true, // Allow `if (value)` where value is any type\n },\n ],\n\n // Functional programming rules (when eslint-plugin-functional is available)\n \"functional/no-let\": \"error\",\n \"functional/immutable-data\": \"warn\",\n \"functional/no-loop-statements\": \"off\", // Start disabled, can enable later\n \"functional/prefer-immutable-types\": \"off\",\n \"functional/no-mixed-types\": \"off\",\n \"functional/functional-parameters\": \"off\",\n \"functional/no-throw-statements\": [\"warn\", { allowToRejectPromises: true }],\n \"functional/no-try-statements\": [\"warn\", { allowCatch: true }],\n\n // Allow some flexibility\n \"functional/no-conditional-statements\": \"off\",\n \"functional/no-expression-statements\": \"off\",\n \"functional/no-return-void\": \"off\",\n\n // Code formatting (when eslint-plugin-prettier is available)\n \"prettier/prettier\": [\n \"error\",\n {},\n {\n usePrettierrc: true,\n },\n ],\n\n // Import organization (when eslint-plugin-simple-import-sort is available)\n \"simple-import-sort/imports\": \"error\",\n \"simple-import-sort/exports\": \"error\",\n },\n}\n"],"mappings":";;AAOA,IAAI,4BAA4B,EAAE;CAChC,MAAM,SAAS,0BAA0B;AACzC,KAAI,CAAC,OAAO,QACV,OAAM,sBAAsB,OAAO;AAIrC,KAAI,OAAO,SAAS,SAAS,GAAG;AAC9B,UAAQ,KAAK,yCAAyC;AACtD,SAAO,SAAS,SAAS,YAAY,QAAQ,KAAK,MAAM,UAAU,CAAC;AACnE,UAAQ,KAAK,GAAG;;;AAMpB,IAAA,sBAAe;CACb,MAAM;CACN,OAAO;EAEL,gBAAgB;EAChB,UAAU;EACV,oBAAoB;EACpB,4BAA4B;EAC5B,iBAAiB;EACjB,oBAAoB;EACpB,mBAAmB;EACnB,wBAAwB,CACtB,SACA;GACE,OAAO;GACP,QAAQ;GACT,CACF;EAGD,8CAA8C;EAC9C,sCAAsC;EACtC,qCAAqC,CACnC,SACA;GACE,mBAAmB;GACnB,mBAAmB;GACnB,cAAc;GACd,2BAA2B;GAC3B,gCAAgC;GAChC,oBAAoB;GACpB,MAAM;GACP,CACF;EACD,4CAA4C,CAC1C,SACA;GACE,mBAAmB;GACnB,cAAc;GACf,CACF;EACD,2CAA2C;EAC3C,qCAAqC;EACrC,0CAA0C;EAC1C,oCAAoC;EACpC,gDAAgD;EAChD,4CAA4C;EAC5C,+CAA+C;EAO/C,iDAAiD,CAC/C,QACA;GACE,aAAa;GACb,aAAa;GACb,qBAAqB;GACrB,sBAAsB;GACtB,qBAAqB;GACrB,qBAAqB;GACrB,UAAU;GACX,CACF;EAGD,qBAAqB;EACrB,6BAA6B;EAC7B,iCAAiC;EACjC,qCAAqC;EACrC,6BAA6B;EAC7B,oCAAoC;EACpC,kCAAkC,CAAC,QAAQ,EAAE,uBAAuB,MAAM,CAAC;EAC3E,gCAAgC,CAAC,QAAQ,EAAE,YAAY,MAAM,CAAC;EAG9D,wCAAwC;EACxC,uCAAuC;EACvC,6BAA6B;EAG7B,qBAAqB;GACnB;GACA,EAAE;GACF,EACE,eAAe,MAChB;GACF;EAGD,8BAA8B;EAC9B,8BAA8B;EAC/B;CACF"}
@@ -45,7 +45,7 @@ declare const _default: {
45
45
  "functional/no-let": string;
46
46
  "functional/no-mixed-types": string;
47
47
  "functional/no-throw-statements": (string | {
48
- allowToRejectWith: boolean;
48
+ allowToRejectPromises: boolean;
49
49
  })[];
50
50
  "functional/no-try-statements": (string | {
51
51
  allowCatch: boolean;
package/dist/index.d.ts CHANGED
@@ -53,7 +53,7 @@ declare const plugin: {
53
53
  "functional/no-mixed-types": string;
54
54
  "functional/functional-parameters": string;
55
55
  "functional/no-throw-statements": (string | {
56
- allowToRejectWith: boolean;
56
+ allowToRejectPromises: boolean;
57
57
  })[];
58
58
  "functional/no-try-statements": (string | {
59
59
  allowCatch: boolean;
@@ -116,7 +116,7 @@ declare const plugin: {
116
116
  "functional/no-let": string;
117
117
  "functional/no-mixed-types": string;
118
118
  "functional/no-throw-statements": (string | {
119
- allowToRejectWith: boolean;
119
+ allowToRejectPromises: boolean;
120
120
  })[];
121
121
  "functional/no-try-statements": (string | {
122
122
  allowCatch: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-config-functype",
3
- "version": "2.0.2",
3
+ "version": "2.0.3",
4
4
  "type": "module",
5
5
  "description": "Curated ESLint flat config bundle for functional TypeScript programming (ESLint 9.x+)",
6
6
  "main": "dist/index.js",