@effectionx/test-adapter 0.4.0 → 0.5.1

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.
package/README.md CHANGED
@@ -25,9 +25,14 @@ describe("something", () => {
25
25
 
26
26
  adapter.addSetup(function*() {
27
27
  /* do some setup. equivalent of beforeEach() */
28
- /* contexts set here will be visible in the test */*
28
+ /* contexts set here will be visible in the test */
29
29
  });
30
30
 
31
+ adapter.addOnetimeSetup(function*() {
32
+ /* do some setup that will only happen once. equivalent of beforeAll() */
33
+ /* contexts set here will be visible in the test */
34
+ });
35
+
31
36
  it("does a thing", async () => {
32
37
  await adapter.runTest(function*() {
33
38
  /* ... the body of the test */
package/esm/box.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import { type Operation, type Result } from "effection";
2
+ export declare function box<T>(content: () => Operation<T>): Operation<Result<T>>;
3
+ export declare function unbox<T>(result: Result<T>): T;
4
+ //# sourceMappingURL=box.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../src/box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAEjE,wBAAiB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAMzE;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAK7C"}
package/esm/box.js ADDED
@@ -0,0 +1,15 @@
1
+ import { Err, Ok } from "effection";
2
+ export function* box(content) {
3
+ try {
4
+ return Ok(yield* content());
5
+ }
6
+ catch (error) {
7
+ return Err(error);
8
+ }
9
+ }
10
+ export function unbox(result) {
11
+ if (result.ok) {
12
+ return result.value;
13
+ }
14
+ throw result.error;
15
+ }
package/esm/mod.d.ts CHANGED
@@ -17,11 +17,6 @@ export interface TestAdapter {
17
17
  * ancestors. E.g. `All Tests > File System > write`
18
18
  */
19
19
  readonly fullname: string;
20
- /**
21
- * Every test adapter has its own Effection `Scope` which holds the resources necessary
22
- * to run this test.
23
- */
24
- readonly scope: Scope;
25
20
  /**
26
21
  * A list of this test adapter and every adapter that it descends from.
27
22
  */
@@ -30,12 +25,20 @@ export interface TestAdapter {
30
25
  * The setup operations that will be run by this test adapter. It only includes those
31
26
  * setups that are associated with this adapter, not those of its ancestors.
32
27
  */
33
- readonly setups: TestOperation[];
28
+ readonly setup: {
29
+ all: TestOperation[];
30
+ each: TestOperation[];
31
+ };
34
32
  /**
35
33
  * Add a setup operation to every test that is part of this adapter. In BDD integrations,
36
34
  * this is usually called by `beforEach()`
37
35
  */
38
36
  addSetup(op: TestOperation): void;
37
+ /**
38
+ * Add a setup operation that will run exactly once before any tests that are run in this
39
+ * adapter. In BDD integrations, this is usually called by beforeAll()
40
+ */
41
+ addOnetimeSetup(op: TestOperation): void;
39
42
  /**
40
43
  * Actually run a test. This evaluates all setup operations, and then after those have completed
41
44
  * it runs the body of the test itself.
@@ -46,6 +49,12 @@ export interface TestAdapter {
46
49
  * This basically destroys the Effection `Scope` associated with this adapter.
47
50
  */
48
51
  destroy(): Future<void>;
52
+ /**
53
+ * Used internally to prepare adapters to run test
54
+ *
55
+ * @ignore
56
+ */
57
+ ["@@init@@"](): Operation<Result<Scope>>;
49
58
  }
50
59
  export interface TestAdapterOptions {
51
60
  /**
package/esm/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAGlE,MAAM,WAAW,aAAa;IAC5B,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC;IAElC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnD;;;OAGG;IACH,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AASD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CA6Cb"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,SAAS,EACT,MAAM,EACN,KAAK,EAEN,MAAM,WAAW,CAAC;AAWnB,MAAM,WAAW,aAAa;IAC5B,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,aAAa,EAAE,CAAC;QAAC,IAAI,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC;IAEhE;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC;IAElC;;;OAGG;IACH,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC;IAEzC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnD;;;OAGG;IACH,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IAExB;;;;OAIG;IACH,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AASD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CA4Fb"}
package/esm/mod.js CHANGED
@@ -1,4 +1,5 @@
1
- import { createScope, Err, Ok } from "effection";
1
+ import { createScope, Ok, run, suspend, useScope, withResolvers, } from "effection";
2
+ import { box } from "./box.js";
2
3
  const anonymousNames = (function* () {
3
4
  let count = 1;
4
5
  while (true) {
@@ -9,14 +10,17 @@ const anonymousNames = (function* () {
9
10
  * Create a new test adapter with the given options.
10
11
  */
11
12
  export function createTestAdapter(options = {}) {
12
- const setups = [];
13
+ const setup = {
14
+ all: [],
15
+ each: [],
16
+ };
13
17
  const { parent, name = anonymousNames.next().value } = options;
14
- const [scope, destroy] = createScope(parent?.scope);
18
+ let scope = undefined;
19
+ let destroy = function* () { };
15
20
  const adapter = {
16
21
  parent,
17
22
  name,
18
- scope,
19
- setups,
23
+ setup,
20
24
  get lineage() {
21
25
  const lineage = [adapter];
22
26
  for (let current = parent; current; current = current.parent) {
@@ -28,24 +32,58 @@ export function createTestAdapter(options = {}) {
28
32
  return adapter.lineage.map((adapter) => adapter.name).join(" > ");
29
33
  },
30
34
  addSetup(op) {
31
- setups.push(op);
35
+ setup.each.push(op);
36
+ },
37
+ addOnetimeSetup(op) {
38
+ setup.all.push(op);
32
39
  },
33
40
  runTest(op) {
34
- return scope.run(function* () {
35
- const allSetups = adapter.lineage.reduce((all, adapter) => all.concat(adapter.setups), []);
36
- try {
37
- for (const setup of allSetups) {
38
- yield* setup();
41
+ return run(function* () {
42
+ let init = yield* adapter["@@init@@"]();
43
+ if (!init.ok) {
44
+ return init;
45
+ }
46
+ let scope = init.value;
47
+ const setups = adapter.lineage.reduce((all, adapter) => all.concat(adapter.setup.each), []);
48
+ let test = yield* scope.spawn(() => box(function* () {
49
+ for (let fn of setups) {
50
+ yield* fn();
39
51
  }
40
52
  yield* op();
41
- return Ok(void 0);
53
+ }));
54
+ return yield* test;
55
+ });
56
+ },
57
+ *["@@init@@"]() {
58
+ if (scope) {
59
+ return yield* scope.operation;
60
+ }
61
+ scope = withResolvers();
62
+ let parent = adapter.parent
63
+ ? yield* adapter.parent["@@init@@"]()
64
+ : Ok(createScope()[0]);
65
+ if (!parent.ok) {
66
+ scope.resolve(parent);
67
+ return yield* scope.operation;
68
+ }
69
+ let task = yield* parent.value.spawn(function* () {
70
+ let init = yield* box(function* () {
71
+ for (let initializer of adapter.setup.all) {
72
+ yield* initializer();
73
+ }
74
+ });
75
+ if (!init.ok) {
76
+ scope.resolve(init);
42
77
  }
43
- catch (error) {
44
- return Err(error);
78
+ else {
79
+ scope.resolve(Ok(yield* useScope()));
80
+ yield* suspend();
45
81
  }
46
82
  });
83
+ destroy = task.halt;
84
+ return yield* scope.operation;
47
85
  },
48
- destroy,
86
+ destroy: () => run(destroy),
49
87
  };
50
88
  return adapter;
51
89
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effectionx/test-adapter",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "author": "engineering@frontside.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,4 @@
1
+ import { type Operation, type Result } from "effection";
2
+ export declare function box<T>(content: () => Operation<T>): Operation<Result<T>>;
3
+ export declare function unbox<T>(result: Result<T>): T;
4
+ //# sourceMappingURL=box.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../src/box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAEjE,wBAAiB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAMzE;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAK7C"}
package/script/box.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.box = box;
4
+ exports.unbox = unbox;
5
+ const effection_1 = require("effection");
6
+ function* box(content) {
7
+ try {
8
+ return (0, effection_1.Ok)(yield* content());
9
+ }
10
+ catch (error) {
11
+ return (0, effection_1.Err)(error);
12
+ }
13
+ }
14
+ function unbox(result) {
15
+ if (result.ok) {
16
+ return result.value;
17
+ }
18
+ throw result.error;
19
+ }
package/script/mod.d.ts CHANGED
@@ -17,11 +17,6 @@ export interface TestAdapter {
17
17
  * ancestors. E.g. `All Tests > File System > write`
18
18
  */
19
19
  readonly fullname: string;
20
- /**
21
- * Every test adapter has its own Effection `Scope` which holds the resources necessary
22
- * to run this test.
23
- */
24
- readonly scope: Scope;
25
20
  /**
26
21
  * A list of this test adapter and every adapter that it descends from.
27
22
  */
@@ -30,12 +25,20 @@ export interface TestAdapter {
30
25
  * The setup operations that will be run by this test adapter. It only includes those
31
26
  * setups that are associated with this adapter, not those of its ancestors.
32
27
  */
33
- readonly setups: TestOperation[];
28
+ readonly setup: {
29
+ all: TestOperation[];
30
+ each: TestOperation[];
31
+ };
34
32
  /**
35
33
  * Add a setup operation to every test that is part of this adapter. In BDD integrations,
36
34
  * this is usually called by `beforEach()`
37
35
  */
38
36
  addSetup(op: TestOperation): void;
37
+ /**
38
+ * Add a setup operation that will run exactly once before any tests that are run in this
39
+ * adapter. In BDD integrations, this is usually called by beforeAll()
40
+ */
41
+ addOnetimeSetup(op: TestOperation): void;
39
42
  /**
40
43
  * Actually run a test. This evaluates all setup operations, and then after those have completed
41
44
  * it runs the body of the test itself.
@@ -46,6 +49,12 @@ export interface TestAdapter {
46
49
  * This basically destroys the Effection `Scope` associated with this adapter.
47
50
  */
48
51
  destroy(): Future<void>;
52
+ /**
53
+ * Used internally to prepare adapters to run test
54
+ *
55
+ * @ignore
56
+ */
57
+ ["@@init@@"](): Operation<Result<Scope>>;
49
58
  }
50
59
  export interface TestAdapterOptions {
51
60
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAGlE,MAAM,WAAW,aAAa;IAC5B,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC;IAElC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnD;;;OAGG;IACH,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AASD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CA6Cb"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,SAAS,EACT,MAAM,EACN,KAAK,EAEN,MAAM,WAAW,CAAC;AAWnB,MAAM,WAAW,aAAa;IAC5B,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAErC;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,aAAa,EAAE,CAAC;QAAC,IAAI,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC;IAEhE;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC;IAElC;;;OAGG;IACH,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC;IAEzC;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnD;;;OAGG;IACH,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IAExB;;;;OAIG;IACH,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AASD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CA4Fb"}
package/script/mod.js CHANGED
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createTestAdapter = createTestAdapter;
4
4
  const effection_1 = require("effection");
5
+ const box_js_1 = require("./box.js");
5
6
  const anonymousNames = (function* () {
6
7
  let count = 1;
7
8
  while (true) {
@@ -12,14 +13,17 @@ const anonymousNames = (function* () {
12
13
  * Create a new test adapter with the given options.
13
14
  */
14
15
  function createTestAdapter(options = {}) {
15
- const setups = [];
16
+ const setup = {
17
+ all: [],
18
+ each: [],
19
+ };
16
20
  const { parent, name = anonymousNames.next().value } = options;
17
- const [scope, destroy] = (0, effection_1.createScope)(parent?.scope);
21
+ let scope = undefined;
22
+ let destroy = function* () { };
18
23
  const adapter = {
19
24
  parent,
20
25
  name,
21
- scope,
22
- setups,
26
+ setup,
23
27
  get lineage() {
24
28
  const lineage = [adapter];
25
29
  for (let current = parent; current; current = current.parent) {
@@ -31,24 +35,58 @@ function createTestAdapter(options = {}) {
31
35
  return adapter.lineage.map((adapter) => adapter.name).join(" > ");
32
36
  },
33
37
  addSetup(op) {
34
- setups.push(op);
38
+ setup.each.push(op);
39
+ },
40
+ addOnetimeSetup(op) {
41
+ setup.all.push(op);
35
42
  },
36
43
  runTest(op) {
37
- return scope.run(function* () {
38
- const allSetups = adapter.lineage.reduce((all, adapter) => all.concat(adapter.setups), []);
39
- try {
40
- for (const setup of allSetups) {
41
- yield* setup();
44
+ return (0, effection_1.run)(function* () {
45
+ let init = yield* adapter["@@init@@"]();
46
+ if (!init.ok) {
47
+ return init;
48
+ }
49
+ let scope = init.value;
50
+ const setups = adapter.lineage.reduce((all, adapter) => all.concat(adapter.setup.each), []);
51
+ let test = yield* scope.spawn(() => (0, box_js_1.box)(function* () {
52
+ for (let fn of setups) {
53
+ yield* fn();
42
54
  }
43
55
  yield* op();
44
- return (0, effection_1.Ok)(void 0);
56
+ }));
57
+ return yield* test;
58
+ });
59
+ },
60
+ *["@@init@@"]() {
61
+ if (scope) {
62
+ return yield* scope.operation;
63
+ }
64
+ scope = (0, effection_1.withResolvers)();
65
+ let parent = adapter.parent
66
+ ? yield* adapter.parent["@@init@@"]()
67
+ : (0, effection_1.Ok)((0, effection_1.createScope)()[0]);
68
+ if (!parent.ok) {
69
+ scope.resolve(parent);
70
+ return yield* scope.operation;
71
+ }
72
+ let task = yield* parent.value.spawn(function* () {
73
+ let init = yield* (0, box_js_1.box)(function* () {
74
+ for (let initializer of adapter.setup.all) {
75
+ yield* initializer();
76
+ }
77
+ });
78
+ if (!init.ok) {
79
+ scope.resolve(init);
45
80
  }
46
- catch (error) {
47
- return (0, effection_1.Err)(error);
81
+ else {
82
+ scope.resolve((0, effection_1.Ok)(yield* (0, effection_1.useScope)()));
83
+ yield* (0, effection_1.suspend)();
48
84
  }
49
85
  });
86
+ destroy = task.halt;
87
+ return yield* scope.operation;
50
88
  },
51
- destroy,
89
+ destroy: () => (0, effection_1.run)(destroy),
52
90
  };
53
91
  return adapter;
54
92
  }