Browse Source

refactor: adds types

e22m4u 3 days ago
parent
commit
1e51fb7f74

+ 0 - 4
.mocharc.cjs

@@ -1,4 +0,0 @@
-module.exports = {
-  extension: ['js'],
-  spec: 'src/**/*.spec.js',
-}

+ 4 - 0
.mocharc.json

@@ -0,0 +1,4 @@
+{
+  "extension": ["js"],
+  "spec": "src/**/*.spec.js"
+}

+ 1 - 0
dist/cjs/index.cjs

@@ -1,3 +1,4 @@
+"use strict";
 var __defProp = Object.defineProperty;
 var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
 var __getOwnPropNames = Object.getOwnPropertyNames;

+ 7 - 2
eslint.config.js

@@ -2,28 +2,33 @@ import globals from 'globals';
 import eslintJs from '@eslint/js';
 import eslintJsdocPlugin from 'eslint-plugin-jsdoc';
 import eslintMochaPlugin from 'eslint-plugin-mocha';
+import eslintImportPlugin from 'eslint-plugin-import';
 import eslintPrettierConfig from 'eslint-config-prettier';
 import eslintChaiExpectPlugin from 'eslint-plugin-chai-expect';
 
 export default [{
   languageOptions: {
     globals: {
+      ...globals.node,
       ...globals.es2021,
       ...globals.mocha,
-      ...globals.node,
     },
   },
   plugins: {
     'jsdoc': eslintJsdocPlugin,
     'mocha': eslintMochaPlugin,
+    'import': eslintImportPlugin,
     'chai-expect': eslintChaiExpectPlugin,
   },
   rules: {
     ...eslintJs.configs.recommended.rules,
     ...eslintPrettierConfig.rules,
-    ...eslintJsdocPlugin.configs['flat/recommended-error'].rules,
+    ...eslintImportPlugin.flatConfigs.recommended.rules,
     ...eslintMochaPlugin.configs.recommended.rules,
     ...eslintChaiExpectPlugin.configs['recommended-flat'].rules,
+    ...eslintJsdocPlugin.configs['flat/recommended-error'].rules,
+    'no-duplicate-imports': 'error',
+    'import/export': 0,
     'jsdoc/reject-any-type': 0,
     'jsdoc/reject-function-type': 0,
     'jsdoc/require-param-description': 0,

+ 9 - 6
package.json

@@ -11,10 +11,10 @@
     "Locator",
     "Container"
   ],
-  "homepage": "https://github.com/e22m4u/js-service",
+  "homepage": "https://gitrepos.ru/e22m4u/js-service",
   "repository": {
     "type": "git",
-    "url": "git+https://github.com/e22m4u/js-service.git"
+    "url": "git+https://gitrepos.ru/e22m4u/js-service.git"
   },
   "type": "module",
   "types": "./src/index.d.ts",
@@ -38,26 +38,29 @@
     "prepare": "husky"
   },
   "dependencies": {
-    "@e22m4u/js-debug": "~0.3.3",
-    "@e22m4u/js-format": "~0.2.1"
+    "@e22m4u/js-debug": "~0.4.1",
+    "@e22m4u/js-format": "~0.3.1"
   },
   "devDependencies": {
     "@commitlint/cli": "~20.1.0",
     "@commitlint/config-conventional": "~20.0.0",
-    "@e22m4u/js-spy": "~0.2.0",
+    "@e22m4u/js-spy": "~0.3.0",
     "@eslint/js": "~9.39.1",
+    "@types/chai": "~5.2.3",
+    "@types/mocha": "~10.0.10",
     "c8": "~10.1.3",
     "chai": "~6.2.1",
     "esbuild": "~0.27.0",
     "eslint": "~9.39.1",
     "eslint-config-prettier": "~10.1.8",
     "eslint-plugin-chai-expect": "~3.1.0",
+    "eslint-plugin-import": "~2.32.0",
     "eslint-plugin-jsdoc": "~61.4.1",
     "eslint-plugin-mocha": "~11.2.0",
     "globals": "~16.5.0",
     "husky": "~9.1.7",
     "mocha": "~11.7.5",
-    "prettier": "~3.6.2",
+    "prettier": "~3.7.4",
     "rimraf": "~6.1.2",
     "typescript": "~5.9.3"
   }

+ 1 - 2
src/debuggable-service.d.ts

@@ -1,7 +1,6 @@
 import {Service} from './service.js';
 import {Constructor} from './types.js';
-import {Debuggable} from '@e22m4u/js-debug';
-import {DebuggableOptions} from '@e22m4u/js-debug';
+import {Debuggable, DebuggableOptions} from '@e22m4u/js-debug';
 import {FindServicePredicate, ServiceContainer} from './service-container.js';
 
 /**

+ 5 - 2
src/service-container.spec.js

@@ -2,8 +2,11 @@ import {expect} from 'chai';
 import {Service} from './service.js';
 import {format} from '@e22m4u/js-format';
 import {createSpy} from '@e22m4u/js-spy';
-import {ServiceContainer} from './service-container.js';
-import {SERVICE_CONTAINER_CLASS_NAME} from './service-container.js';
+
+import {
+  ServiceContainer,
+  SERVICE_CONTAINER_CLASS_NAME,
+} from './service-container.js';
 
 describe('ServiceContainer', function () {
   it('should expose static property "kinds"', function () {

+ 6 - 4
src/service.spec.js

@@ -1,8 +1,10 @@
 import {expect} from 'chai';
-import {Service} from './service.js';
-import {SERVICE_CLASS_NAME} from './service.js';
-import {ServiceContainer} from './service-container.js';
-import {SERVICE_CONTAINER_CLASS_NAME} from './service-container.js';
+import {Service, SERVICE_CLASS_NAME} from './service.js';
+
+import {
+  ServiceContainer,
+  SERVICE_CONTAINER_CLASS_NAME,
+} from './service-container.js';
 
 describe('Service', function () {
   it('should expose static property "kinds"', function () {

+ 4 - 4
src/utils/is-service-container.js

@@ -10,9 +10,9 @@ import {SERVICE_CONTAINER_CLASS_NAME} from '../service-container.js';
 export function isServiceContainer(container) {
   return Boolean(
     container &&
-      typeof container === 'object' &&
-      typeof container.constructor === 'function' &&
-      Array.isArray(container.constructor.kinds) &&
-      container.constructor.kinds.includes(SERVICE_CONTAINER_CLASS_NAME),
+    typeof container === 'object' &&
+    typeof container.constructor === 'function' &&
+    Array.isArray(container.constructor.kinds) &&
+    container.constructor.kinds.includes(SERVICE_CONTAINER_CLASS_NAME),
   );
 }

+ 5 - 2
src/utils/is-service-container.spec.js

@@ -1,7 +1,10 @@
 import {expect} from 'chai';
-import {ServiceContainer} from '../service-container.js';
 import {isServiceContainer} from './is-service-container.js';
-import {SERVICE_CONTAINER_CLASS_NAME} from '../service-container.js';
+
+import {
+  ServiceContainer,
+  SERVICE_CONTAINER_CLASS_NAME,
+} from '../service-container.js';
 
 describe('isServiceContainer', function () {
   it('should return true for ServiceContainer instance', function () {

+ 9 - 4
tsconfig.json

@@ -1,9 +1,14 @@
 {
   "compilerOptions": {
-    "rootDir": "src",
-    "noEmit": true,
+    "strict": true,
     "target": "es2022",
     "module": "NodeNext",
-    "moduleResolution": "NodeNext"
-  }
+    "moduleResolution": "NodeNext",
+    "noEmit": true,
+    "allowJs": true
+  },
+  "include": [
+    "./src/**/*.ts",
+    "./src/**/*.js"
+  ]
 }