e22m4u 1 год назад
Родитель
Сommit
df22459e90
5 измененных файлов с 28 добавлено и 12 удалено
  1. 7 3
      dist/cjs/index.cjs
  2. 1 1
      package.json
  3. 6 1
      src/adapter/adapter-loader.js
  4. 8 1
      src/adapter/adapter.js
  5. 6 6
      src/adapter/adapter.spec.js

+ 7 - 3
dist/cjs/index.cjs

@@ -5346,7 +5346,7 @@ var init_decorator = __esm({
 });
 
 // src/adapter/adapter.js
-var import_js_service32, _Adapter, Adapter;
+var import_js_service32, ADAPTER_CLASS_NAME, _Adapter, Adapter;
 var init_adapter = __esm({
   "src/adapter/adapter.js"() {
     "use strict";
@@ -5359,6 +5359,7 @@ var init_adapter = __esm({
     init_decorator();
     init_decorator();
     init_decorator();
+    ADAPTER_CLASS_NAME = "Adapter";
     _Adapter = class _Adapter extends import_js_service32.Service {
       /**
        * Settings.
@@ -5551,7 +5552,7 @@ var init_adapter = __esm({
      *
      * @type {string}
      */
-    __publicField(_Adapter, "kind", "Adapter");
+    __publicField(_Adapter, "kinds", [...import_js_service32.Service.kinds, ADAPTER_CLASS_NAME]);
     Adapter = _Adapter;
   }
 });
@@ -5953,7 +5954,7 @@ function findAdapterCtorInModule(module2) {
   let adapterCtor;
   if (!module2 || typeof module2 !== "object" || Array.isArray(module2)) return;
   for (const ctor of Object.values(module2)) {
-    if (typeof ctor === "function" && ctor.kind === Adapter.kind) {
+    if (typeof ctor === "function" && Array.isArray(ctor.kinds) && Adapter.kinds.includes(ADAPTER_CLASS_NAME)) {
       adapterCtor = ctor;
       break;
     }
@@ -5966,6 +5967,7 @@ var init_adapter_loader = __esm({
     "use strict";
     init_adapter();
     import_js_service33 = require("@e22m4u/js-service");
+    init_adapter();
     init_errors();
     init_();
     _AdapterLoader = class _AdapterLoader extends import_js_service33.Service {
@@ -6328,6 +6330,7 @@ var init_repository2 = __esm({
 // src/index.js
 var src_exports = {};
 __export(src_exports, {
+  ADAPTER_CLASS_NAME: () => ADAPTER_CLASS_NAME,
   Adapter: () => Adapter,
   AdapterLoader: () => AdapterLoader,
   AdapterRegistry: () => AdapterRegistry,
@@ -6432,6 +6435,7 @@ init_definition();
 init_repository2();
 // Annotate the CommonJS export names for ESM import in node:
 0 && (module.exports = {
+  ADAPTER_CLASS_NAME,
   Adapter,
   AdapterLoader,
   AdapterRegistry,

+ 1 - 1
package.json

@@ -40,7 +40,7 @@
   "homepage": "https://github.com/e22m4u/js-repository",
   "peerDependencies": {
     "@e22m4u/js-format": "0.1.x",
-    "@e22m4u/js-service": "0.1.x"
+    "@e22m4u/js-service": "0.2.x"
   },
   "devDependencies": {
     "@commitlint/cli": "~19.6.0",

+ 6 - 1
src/adapter/adapter-loader.js

@@ -1,5 +1,6 @@
 import {Adapter} from './adapter.js';
 import {Service} from '@e22m4u/js-service';
+import {ADAPTER_CLASS_NAME} from './adapter.js';
 import {InvalidArgumentError} from '../errors/index.js';
 
 /**
@@ -54,7 +55,11 @@ function findAdapterCtorInModule(module) {
   let adapterCtor;
   if (!module || typeof module !== 'object' || Array.isArray(module)) return;
   for (const ctor of Object.values(module)) {
-    if (typeof ctor === 'function' && ctor.kind === Adapter.kind) {
+    if (
+      typeof ctor === 'function' &&
+      Array.isArray(ctor.kinds) &&
+      Adapter.kinds.includes(ADAPTER_CLASS_NAME)
+    ) {
       adapterCtor = ctor;
       break;
     }

+ 8 - 1
src/adapter/adapter.js

@@ -10,6 +10,13 @@ import {FieldsFilteringDecorator} from './decorator/index.js';
 import {DataTransformationDecorator} from './decorator/index.js';
 import {PropertyUniquenessDecorator} from './decorator/index.js';
 
+/**
+ * Adapter class name.
+ *
+ * @type {string}
+ */
+export const ADAPTER_CLASS_NAME = 'Adapter';
+
 /**
  * Adapter.
  */
@@ -19,7 +26,7 @@ export class Adapter extends Service {
    *
    * @type {string}
    */
-  static kind = 'Adapter';
+  static kinds = [...Service.kinds, ADAPTER_CLASS_NAME];
 
   /**
    * Settings.

+ 6 - 6
src/adapter/adapter.spec.js

@@ -3,6 +3,7 @@ import {chai} from '../chai.js';
 import {Schema} from '../schema.js';
 import {Adapter} from './adapter.js';
 import {Service} from '@e22m4u/js-service';
+import {ADAPTER_CLASS_NAME} from './adapter.js';
 import {ServiceContainer} from '@e22m4u/js-service';
 import {InclusionDecorator} from './decorator/index.js';
 import {DefaultValuesDecorator} from './decorator/index.js';
@@ -15,12 +16,11 @@ import {PropertyUniquenessDecorator} from './decorator/index.js';
 const sandbox = chai.spy.sandbox();
 
 describe('Adapter', function () {
-  it('exposes static property "kind"', function () {
-    expect(Adapter.kind).to.be.eq(Adapter.name);
-    const MyAdapter1 = class extends Adapter {};
-    expect(MyAdapter1.kind).to.be.eq(Adapter.name);
-    class MyAdapter2 extends Adapter {}
-    expect(MyAdapter2.kind).to.be.eq(Adapter.name);
+  it('exposes static property "kinds"', function () {
+    const kinds = [...Service.kinds, ADAPTER_CLASS_NAME];
+    expect(Adapter.kinds).to.be.eql(kinds);
+    const MyAdapter = class extends Adapter {};
+    expect(MyAdapter.kinds).to.be.eql(kinds);
   });
 
   describe('constructor', function () {