@natlibfi/oracledb-mock 1.0.3 → 2.0.0-alpha.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.
@@ -1,4 +1,4 @@
1
- # Melinda node tests
1
+ # Melinda node tests and publish
2
2
 
3
3
  name: Melinda-node-tests
4
4
 
@@ -11,14 +11,14 @@ jobs:
11
11
 
12
12
  strategy:
13
13
  matrix:
14
- node-version: [18.x, 19.x, 20.x]
14
+ node-version: [22.x, 24.x]
15
15
  # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
16
16
 
17
17
  steps:
18
18
  - name: Checkout the code
19
- uses: actions/checkout@v4
19
+ uses: actions/checkout@v5
20
20
  - name: Use Node.js ${{ matrix.node-version }}
21
- uses: actions/setup-node@v4
21
+ uses: actions/setup-node@v6
22
22
  with:
23
23
  node-version: ${{ matrix.node-version }}
24
24
  cache: 'npm'
@@ -35,7 +35,7 @@ jobs:
35
35
 
36
36
  steps:
37
37
  - name: Checkout the code
38
- uses: actions/checkout@v4
38
+ uses: actions/checkout@v5
39
39
  - name: nodejsscan scan
40
40
  id: njsscan
41
41
  uses: ajinabraham/njsscan-action@master
@@ -47,7 +47,7 @@ jobs:
47
47
  runs-on: ubuntu-latest
48
48
 
49
49
  steps:
50
- - uses: actions/checkout@v4
50
+ - uses: actions/checkout@v5
51
51
  - uses: mikaelvesavuori/license-compliance-action@v1.0.2
52
52
  with:
53
53
  exclude_pattern: /^@natlibfi/
@@ -58,11 +58,11 @@ jobs:
58
58
  if: contains(github.ref, 'refs/tags/')
59
59
 
60
60
  steps:
61
- - uses: actions/checkout@v4
61
+ - uses: actions/checkout@v5
62
62
  # Setup .npmrc file to publish to npm
63
- - uses: actions/setup-node@v4
63
+ - uses: actions/setup-node@v6
64
64
  with:
65
- node-version: '18.x'
65
+ node-version: '22.x'
66
66
  registry-url: 'https://registry.npmjs.org'
67
67
  - run: npm i
68
68
  - run: npm publish
package/README.md CHANGED
@@ -35,6 +35,6 @@ The `_execute` method initializes the mock with expected queries and their resul
35
35
 
36
36
  ## License and copyright
37
37
 
38
- Copyright (c) 2020 **University Of Helsinki (The National Library Of Finland)**
38
+ Copyright (c) 2020, 2025 **University Of Helsinki (The National Library Of Finland)**
39
39
 
40
40
  This project's source code is licensed under the terms of **GNU Lesser General Public License Version 3** or any later version.
package/dist/index.js CHANGED
@@ -1,72 +1,33 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _deepEql = _interopRequireDefault(require("deep-eql"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- /**
10
- *
11
- * @licstart The following is the entire license notice for the JavaScript code in this file.
12
- *
13
- * A mock for oracledb Node.js module
14
- *
15
- * Copyright (C) 2020 University Of Helsinki (The National Library Of Finland)
16
- *
17
- * This file is part of oracledb-mock-js
18
- *
19
- * oracledb-mock-js program is free software: you can redistribute it and/or modify
20
- * it under the terms of the GNU Affero General Public License as
21
- * published by the Free Software Foundation, either version 3 of the
22
- * License, or (at your option) any later version.
23
- *
24
- * oracledb-mock-js is distributed in the hope that it will be useful,
25
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
26
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27
- * GNU Affero General Public License for more details.
28
- *
29
- * You should have received a copy of the GNU Affero General Public License
30
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
31
- *
32
- * @licend The above is the entire license notice
33
- * for the JavaScript code in this file.
34
- *
35
- */
36
- var _default = () => {
1
+ import deepEqual from "deep-eql";
2
+ export default () => {
37
3
  const options = [];
38
4
  const DEFAULT_OPTIONS = {
39
5
  queryPattern: /.*/u,
40
6
  results: []
41
7
  };
42
8
  const connection = {
43
- close: () => {},
44
- // eslint-disable-line no-empty-function
45
- break: () => {},
46
- // eslint-disable-line no-empty-function
9
+ close: () => {
10
+ },
11
+ break: () => {
12
+ },
47
13
  execute: (query, args) => {
48
14
  const rows = getRows();
49
15
  return {
50
16
  resultSet: {
51
17
  getRow: () => rows.shift(),
52
- // eslint-disable-line functional/immutable-data
53
- close: () => {} // eslint-disable-line no-empty-function
18
+ close: () => {
19
+ }
54
20
  }
55
21
  };
56
22
  function getRows() {
57
- const index = options.findIndex(({
58
- queryPattern,
59
- expectedArgs
60
- }) => {
61
- if (queryPattern.test(query) && (expectedArgs === undefined || (0, _deepEql.default)(args, expectedArgs))) {
23
+ const index = options.findIndex(({ queryPattern, expectedArgs }) => {
24
+ if (queryPattern.test(query) && (expectedArgs === void 0 || deepEqual(args, expectedArgs))) {
62
25
  return true;
63
26
  }
64
27
  return false;
65
28
  });
66
29
  if (index >= 0) {
67
- const {
68
- results
69
- } = options.splice(index, 1).shift(); // eslint-disable-line functional/immutable-data
30
+ const { results } = options.splice(index, 1).shift();
70
31
  return results;
71
32
  }
72
33
  return [];
@@ -77,25 +38,19 @@ var _default = () => {
77
38
  getConnection: () => connection,
78
39
  createPool: () => ({
79
40
  getConnection: () => connection,
80
- close: () => {} // eslint-disable-line no-empty-function
41
+ close: () => {
42
+ }
81
43
  }),
82
44
  _clear: () => {
83
- // Clear array
84
- options.splice(0); // eslint-disable-line functional/immutable-data
85
- Object.keys(options).forEach(k => delete options[k]); // eslint-disable-line functional/immutable-data
45
+ options.splice(0);
46
+ Object.keys(options).forEach((k) => delete options[k]);
86
47
  },
87
- _execute: optList => {
88
- // Clear array
89
- options.splice(0); // eslint-disable-line functional/immutable-data
90
-
91
- optList.forEach(opts => {
92
- options.push({
93
- ...DEFAULT_OPTIONS,
94
- ...opts
95
- }); // eslint-disable-line functional/immutable-data
48
+ _execute: (optList) => {
49
+ options.splice(0);
50
+ optList.forEach((opts) => {
51
+ options.push({ ...DEFAULT_OPTIONS, ...opts });
96
52
  });
97
53
  }
98
54
  };
99
55
  };
100
- exports.default = _default;
101
- //# sourceMappingURL=index.js.map
56
+ //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1,7 @@
1
- {"version":3,"file":"index.js","names":["_deepEql","_interopRequireDefault","require","obj","__esModule","default","_default","options","DEFAULT_OPTIONS","queryPattern","results","connection","close","break","execute","query","args","rows","getRows","resultSet","getRow","shift","index","findIndex","expectedArgs","test","undefined","deepEqual","splice","getConnection","createPool","_clear","Object","keys","forEach","k","_execute","optList","opts","push","exports"],"sources":["../src/index.js"],"sourcesContent":["/**\n*\n* @licstart The following is the entire license notice for the JavaScript code in this file.\n*\n* A mock for oracledb Node.js module\n*\n* Copyright (C) 2020 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of oracledb-mock-js\n*\n* oracledb-mock-js program is free software: you can redistribute it and/or modify\n* it under the terms of the GNU Affero General Public License as\n* published by the Free Software Foundation, either version 3 of the\n* License, or (at your option) any later version.\n*\n* oracledb-mock-js is distributed in the hope that it will be useful,\n* but WITHOUT ANY WARRANTY; without even the implied warranty of\n* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n* GNU Affero General Public License for more details.\n*\n* You should have received a copy of the GNU Affero General Public License\n* along with this program. If not, see <http://www.gnu.org/licenses/>.\n*\n* @licend The above is the entire license notice\n* for the JavaScript code in this file.\n*\n*/\n\nimport deepEqual from 'deep-eql';\n\nexport default () => {\n const options = [];\n const DEFAULT_OPTIONS = {\n queryPattern: /.*/u,\n results: []\n };\n\n const connection = {\n close: () => {}, // eslint-disable-line no-empty-function\n break: () => {}, // eslint-disable-line no-empty-function\n execute: (query, args) => {\n const rows = getRows();\n\n return {\n resultSet: {\n getRow: () => rows.shift(), // eslint-disable-line functional/immutable-data\n close: () => {} // eslint-disable-line no-empty-function\n }\n };\n\n function getRows() {\n const index = options.findIndex(({queryPattern, expectedArgs}) => {\n if (queryPattern.test(query) && (expectedArgs === undefined || deepEqual(args, expectedArgs))) {\n return true;\n }\n\n return false;\n });\n\n if (index >= 0) {\n const {results} = options.splice(index, 1).shift(); // eslint-disable-line functional/immutable-data\n return results;\n }\n\n return [];\n }\n }\n };\n\n return {\n getConnection: () => connection,\n createPool: () => ({\n getConnection: () => connection,\n close: () => {} // eslint-disable-line no-empty-function\n }),\n _clear: () => {\n // Clear array\n options.splice(0); // eslint-disable-line functional/immutable-data\n Object.keys(options).forEach(k => delete options[k]); // eslint-disable-line functional/immutable-data\n },\n _execute: optList => {\n // Clear array\n options.splice(0); // eslint-disable-line functional/immutable-data\n\n optList.forEach(opts => {\n options.push({...DEFAULT_OPTIONS, ...opts}); // eslint-disable-line functional/immutable-data\n });\n }\n };\n};\n"],"mappings":";;;;;;AA4BA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAiC,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AA5BjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA1BA,IAAAG,QAAA,GA8BeA,CAAA,KAAM;EACnB,MAAMC,OAAO,GAAG,EAAE;EAClB,MAAMC,eAAe,GAAG;IACtBC,YAAY,EAAE,KAAK;IACnBC,OAAO,EAAE;EACX,CAAC;EAED,MAAMC,UAAU,GAAG;IACjBC,KAAK,EAAEA,CAAA,KAAM,CAAC,CAAC;IAAE;IACjBC,KAAK,EAAEA,CAAA,KAAM,CAAC,CAAC;IAAE;IACjBC,OAAO,EAAEA,CAACC,KAAK,EAAEC,IAAI,KAAK;MACxB,MAAMC,IAAI,GAAGC,OAAO,CAAC,CAAC;MAEtB,OAAO;QACLC,SAAS,EAAE;UACTC,MAAM,EAAEA,CAAA,KAAMH,IAAI,CAACI,KAAK,CAAC,CAAC;UAAE;UAC5BT,KAAK,EAAEA,CAAA,KAAM,CAAC,CAAC,CAAC;QAClB;MACF,CAAC;MAED,SAASM,OAAOA,CAAA,EAAG;QACjB,MAAMI,KAAK,GAAGf,OAAO,CAACgB,SAAS,CAAC,CAAC;UAACd,YAAY;UAAEe;QAAY,CAAC,KAAK;UAChE,IAAIf,YAAY,CAACgB,IAAI,CAACV,KAAK,CAAC,KAAKS,YAAY,KAAKE,SAAS,IAAI,IAAAC,gBAAS,EAACX,IAAI,EAAEQ,YAAY,CAAC,CAAC,EAAE;YAC7F,OAAO,IAAI;UACb;UAEA,OAAO,KAAK;QACd,CAAC,CAAC;QAEF,IAAIF,KAAK,IAAI,CAAC,EAAE;UACd,MAAM;YAACZ;UAAO,CAAC,GAAGH,OAAO,CAACqB,MAAM,CAACN,KAAK,EAAE,CAAC,CAAC,CAACD,KAAK,CAAC,CAAC,CAAC,CAAC;UACpD,OAAOX,OAAO;QAChB;QAEA,OAAO,EAAE;MACX;IACF;EACF,CAAC;EAED,OAAO;IACLmB,aAAa,EAAEA,CAAA,KAAMlB,UAAU;IAC/BmB,UAAU,EAAEA,CAAA,MAAO;MACjBD,aAAa,EAAEA,CAAA,KAAMlB,UAAU;MAC/BC,KAAK,EAAEA,CAAA,KAAM,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACFmB,MAAM,EAAEA,CAAA,KAAM;MACZ;MACAxB,OAAO,CAACqB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;MACnBI,MAAM,CAACC,IAAI,CAAC1B,OAAO,CAAC,CAAC2B,OAAO,CAACC,CAAC,IAAI,OAAO5B,OAAO,CAAC4B,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IACDC,QAAQ,EAAEC,OAAO,IAAI;MACnB;MACA9B,OAAO,CAACqB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;;MAEnBS,OAAO,CAACH,OAAO,CAACI,IAAI,IAAI;QACtB/B,OAAO,CAACgC,IAAI,CAAC;UAAC,GAAG/B,eAAe;UAAE,GAAG8B;QAAI,CAAC,CAAC,CAAC,CAAC;MAC/C,CAAC,CAAC;IACJ;EACF,CAAC;AACH,CAAC;AAAAE,OAAA,CAAAnC,OAAA,GAAAC,QAAA"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.js"],
4
+ "sourcesContent": ["/**\n*\n* @licstart The following is the entire license notice for the JavaScript code in this file.\n*\n* A mock for oracledb Node.js module\n*\n* Copyright (C) 2020 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of oracledb-mock-js\n*\n* oracledb-mock-js program is free software: you can redistribute it and/or modify\n* it under the terms of the GNU Affero General Public License as\n* published by the Free Software Foundation, either version 3 of the\n* License, or (at your option) any later version.\n*\n* oracledb-mock-js is distributed in the hope that it will be useful,\n* but WITHOUT ANY WARRANTY; without even the implied warranty of\n* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n* GNU Affero General Public License for more details.\n*\n* You should have received a copy of the GNU Affero General Public License\n* along with this program. If not, see <http://www.gnu.org/licenses/>.\n*\n* @licend The above is the entire license notice\n* for the JavaScript code in this file.\n*\n*/\n\nimport deepEqual from 'deep-eql';\n\nexport default () => {\n const options = [];\n const DEFAULT_OPTIONS = {\n queryPattern: /.*/u,\n results: []\n };\n\n const connection = {\n close: () => {},\n break: () => {},\n execute: (query, args) => {\n const rows = getRows();\n\n return {\n resultSet: {\n getRow: () => rows.shift(),\n close: () => {}\n }\n };\n\n function getRows() {\n const index = options.findIndex(({queryPattern, expectedArgs}) => {\n if (queryPattern.test(query) && (expectedArgs === undefined || deepEqual(args, expectedArgs))) {\n return true;\n }\n\n return false;\n });\n\n if (index >= 0) {\n const {results} = options.splice(index, 1).shift();\n return results;\n }\n\n return [];\n }\n }\n };\n\n return {\n getConnection: () => connection,\n createPool: () => ({\n getConnection: () => connection,\n close: () => {}\n }),\n _clear: () => {\n // Clear array\n options.splice(0);\n Object.keys(options).forEach(k => delete options[k]);\n },\n _execute: optList => {\n // Clear array\n options.splice(0);\n\n optList.forEach(opts => {\n options.push({...DEFAULT_OPTIONS, ...opts});\n });\n }\n };\n};\n"],
5
+ "mappings": "AA4BA,OAAO,eAAe;AAEtB,eAAe,MAAM;AACnB,QAAM,UAAU,CAAC;AACjB,QAAM,kBAAkB;AAAA,IACtB,cAAc;AAAA,IACd,SAAS,CAAC;AAAA,EACZ;AAEA,QAAM,aAAa;AAAA,IACjB,OAAO,MAAM;AAAA,IAAC;AAAA,IACd,OAAO,MAAM;AAAA,IAAC;AAAA,IACd,SAAS,CAAC,OAAO,SAAS;AACxB,YAAM,OAAO,QAAQ;AAErB,aAAO;AAAA,QACL,WAAW;AAAA,UACT,QAAQ,MAAM,KAAK,MAAM;AAAA,UACzB,OAAO,MAAM;AAAA,UAAC;AAAA,QAChB;AAAA,MACF;AAEA,eAAS,UAAU;AACjB,cAAM,QAAQ,QAAQ,UAAU,CAAC,EAAC,cAAc,aAAY,MAAM;AAChE,cAAI,aAAa,KAAK,KAAK,MAAM,iBAAiB,UAAa,UAAU,MAAM,YAAY,IAAI;AAC7F,mBAAO;AAAA,UACT;AAEA,iBAAO;AAAA,QACT,CAAC;AAED,YAAI,SAAS,GAAG;AACd,gBAAM,EAAC,QAAO,IAAI,QAAQ,OAAO,OAAO,CAAC,EAAE,MAAM;AACjD,iBAAO;AAAA,QACT;AAEA,eAAO,CAAC;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,eAAe,MAAM;AAAA,IACrB,YAAY,OAAO;AAAA,MACjB,eAAe,MAAM;AAAA,MACrB,OAAO,MAAM;AAAA,MAAC;AAAA,IAChB;AAAA,IACA,QAAQ,MAAM;AAEZ,cAAQ,OAAO,CAAC;AAChB,aAAO,KAAK,OAAO,EAAE,QAAQ,OAAK,OAAO,QAAQ,CAAC,CAAC;AAAA,IACrD;AAAA,IACA,UAAU,aAAW;AAEnB,cAAQ,OAAO,CAAC;AAEhB,cAAQ,QAAQ,UAAQ;AACtB,gBAAQ,KAAK,EAAC,GAAG,iBAAiB,GAAG,KAAI,CAAC;AAAA,MAC5C,CAAC;AAAA,IACH;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,48 @@
1
+ import createMock from "./index.js";
2
+ import generateTests from "@natlibfi/fixugen";
3
+ import assert from "node:assert";
4
+ generateTests({
5
+ useMetadataFile: true,
6
+ path: [import.meta.dirname, "..", "test-fixtures"],
7
+ callback: async ({ dbResults, usePool = false, expectedResults, query, args = {} }) => {
8
+ const mock = createMock();
9
+ mock._execute(formatDbResults());
10
+ if (usePool) {
11
+ const pool = await mock.createPool();
12
+ const connection2 = await pool.getConnection();
13
+ const { resultSet: resultSet2 } = await connection2.execute(query, args);
14
+ const results2 = await fetchResults(resultSet2);
15
+ assert.deepEqual(results2, expectedResults);
16
+ await connection2.close();
17
+ await pool.close();
18
+ mock._clear();
19
+ return;
20
+ }
21
+ const connection = await mock.getConnection();
22
+ const { resultSet } = await connection.execute(query, args);
23
+ const results = await fetchResults(resultSet);
24
+ assert.deepEqual(results, expectedResults);
25
+ await connection.close();
26
+ mock._clear();
27
+ async function fetchResults(resultSet2, results2 = []) {
28
+ const row = await resultSet2.getRow();
29
+ if (row) {
30
+ return fetchResults(resultSet2, results2.concat(row));
31
+ }
32
+ await resultSet2.close();
33
+ return results2;
34
+ }
35
+ function formatDbResults() {
36
+ return dbResults.map(({ queryPattern, ...rest }) => {
37
+ if (queryPattern) {
38
+ return {
39
+ ...rest,
40
+ queryPattern: new RegExp(queryPattern, "u")
41
+ };
42
+ }
43
+ return rest;
44
+ });
45
+ }
46
+ }
47
+ });
48
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.test.js"],
4
+ "sourcesContent": ["/**\n*\n* @licstart The following is the entire license notice for the JavaScript code in this file.\n*\n* A mock for oracledb Node.js module\n*\n* Copyright (C) 2020 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of oracledb-mock-js\n*\n* oracledb-mock-js program is free software: you can redistribute it and/or modify\n* it under the terms of the GNU Affero General Public License as\n* published by the Free Software Foundation, either version 3 of the\n* License, or (at your option) any later version.\n*\n* oracledb-mock-js is distributed in the hope that it will be useful,\n* but WITHOUT ANY WARRANTY; without even the implied warranty of\n* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n* GNU Affero General Public License for more details.\n*\n* You should have received a copy of the GNU Affero General Public License\n* along with this program. If not, see <http://www.gnu.org/licenses/>.\n*\n* @licend The above is the entire license notice\n* for the JavaScript code in this file.\n*\n*/\n\nimport createMock from './index.js';\nimport generateTests from '@natlibfi/fixugen';\nimport assert from 'node:assert';\n\ngenerateTests({\n useMetadataFile: true,\n path: [import.meta.dirname, '..', 'test-fixtures'],\n callback: async ({dbResults, usePool = false, expectedResults, query, args = {}}) => {\n const mock = createMock();\n\n mock._execute(formatDbResults());\n\n if (usePool) {\n const pool = await mock.createPool();\n const connection = await pool.getConnection();\n const {resultSet} = await connection.execute(query, args);\n const results = await fetchResults(resultSet);\n\n //expect(results).to.eql(expectedResults);\n assert.deepEqual(results, expectedResults);\n\n await connection.close();\n await pool.close();\n\n mock._clear();\n return;\n }\n\n const connection = await mock.getConnection();\n const {resultSet} = await connection.execute(query, args);\n const results = await fetchResults(resultSet);\n\n // expect(results).to.eql(expectedResults);\n assert.deepEqual(results, expectedResults);\n await connection.close();\n mock._clear();\n\n async function fetchResults(resultSet, results = []) {\n const row = await resultSet.getRow();\n\n if (row) {\n return fetchResults(resultSet, results.concat(row));\n }\n\n await resultSet.close();\n return results;\n }\n\n function formatDbResults() {\n return dbResults.map(({queryPattern, ...rest}) => {\n if (queryPattern) {\n return {\n ...rest,\n queryPattern: new RegExp(queryPattern, 'u')\n };\n }\n\n return rest;\n });\n }\n }\n});\n"],
5
+ "mappings": "AA4BA,OAAO,gBAAgB;AACvB,OAAO,mBAAmB;AAC1B,OAAO,YAAY;AAEnB,cAAc;AAAA,EACZ,iBAAiB;AAAA,EACjB,MAAM,CAAC,YAAY,SAAS,MAAM,eAAe;AAAA,EACjD,UAAU,OAAO,EAAC,WAAW,UAAU,OAAO,iBAAiB,OAAO,OAAO,CAAC,EAAC,MAAM;AACnF,UAAM,OAAO,WAAW;AAExB,SAAK,SAAS,gBAAgB,CAAC;AAE/B,QAAI,SAAS;AACX,YAAM,OAAO,MAAM,KAAK,WAAW;AACnC,YAAMA,cAAa,MAAM,KAAK,cAAc;AAC5C,YAAM,EAAC,WAAAC,WAAS,IAAI,MAAMD,YAAW,QAAQ,OAAO,IAAI;AACxD,YAAME,WAAU,MAAM,aAAaD,UAAS;AAG5C,aAAO,UAAUC,UAAS,eAAe;AAEzC,YAAMF,YAAW,MAAM;AACvB,YAAM,KAAK,MAAM;AAEjB,WAAK,OAAO;AACZ;AAAA,IACF;AAEA,UAAM,aAAa,MAAM,KAAK,cAAc;AAC5C,UAAM,EAAC,UAAS,IAAI,MAAM,WAAW,QAAQ,OAAO,IAAI;AACxD,UAAM,UAAU,MAAM,aAAa,SAAS;AAG5C,WAAO,UAAU,SAAS,eAAe;AACzC,UAAM,WAAW,MAAM;AACvB,SAAK,OAAO;AAEZ,mBAAe,aAAaC,YAAWC,WAAU,CAAC,GAAG;AACnD,YAAM,MAAM,MAAMD,WAAU,OAAO;AAEnC,UAAI,KAAK;AACP,eAAO,aAAaA,YAAWC,SAAQ,OAAO,GAAG,CAAC;AAAA,MACpD;AAEA,YAAMD,WAAU,MAAM;AACtB,aAAOC;AAAA,IACT;AAEA,aAAS,kBAAkB;AACzB,aAAO,UAAU,IAAI,CAAC,EAAC,cAAc,GAAG,KAAI,MAAM;AAChD,YAAI,cAAc;AAChB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,cAAc,IAAI,OAAO,cAAc,GAAG;AAAA,UAC5C;AAAA,QACF;AAEA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;",
6
+ "names": ["connection", "resultSet", "results"]
7
+ }
@@ -0,0 +1,52 @@
1
+ // Eslint configuration object for src
2
+ const configSrc = {
3
+ files: [
4
+ "src/*"
5
+ ],
6
+ linterOptions: {
7
+ reportUnusedDisableDirectives: true,
8
+ },
9
+ rules: {
10
+ "no-console": "warn",
11
+ "eqeqeq": ["error", "always"],
12
+ "no-const-assign": "error",
13
+ "max-depth": ["warn", 4],
14
+ "max-lines": ["warn", 500],
15
+ "max-lines-per-function": ["warn", {"max": 100}],
16
+ "no-else-return": ["error", {allowElseIf: false}],
17
+ "no-plusplus": [
18
+ "error",
19
+ {
20
+ "allowForLoopAfterthoughts": true
21
+ }
22
+ ],
23
+ "array-callback-return": [
24
+ "error",
25
+ {
26
+ "checkForEach": false
27
+ }
28
+ ],
29
+ "no-unused-vars": [
30
+ "error",
31
+ {
32
+ "argsIgnorePattern": "next"
33
+ }
34
+ ],
35
+ "no-warning-comments": "off"
36
+ }
37
+ };
38
+
39
+ // Eslint configuration object for globally ignoring .js files
40
+ // - ignore all files that start with a dot
41
+ // - ignore all files inside directories named 'dist'
42
+ const configIgnores = {
43
+ ignores: [
44
+ "**/.*",
45
+ "**/dist/"
46
+ ]
47
+ };
48
+
49
+ export default [
50
+ configSrc,
51
+ configIgnores
52
+ ];
package/package.json CHANGED
@@ -5,109 +5,40 @@
5
5
  "name": "The National Library of Finland"
6
6
  },
7
7
  "keywords": [],
8
- "homepage": "https://github.com/natlibfi/oracledb-mock-js",
8
+ "homepage": "https://www.npmjs.com/package/@natlibfi/oracledb-moc",
9
9
  "bugs": {
10
10
  "url": "https://github.com/natlibfi/oracledb-mock-js/issues"
11
11
  },
12
12
  "repository": {
13
- "type": "git",
14
- "url": "git@github.com:natlibfi/oracledb-mock-js.git"
13
+ "url": "https://github.com/NatLibFi/oracledb-mock-js"
15
14
  },
16
15
  "license": "LGPL-3.0+",
17
- "version": "1.0.3",
16
+ "version": "2.0.0-alpha.1",
17
+ "type": "module",
18
18
  "main": "./dist/index.js",
19
19
  "engines": {
20
- "node": ">=12"
20
+ "node": ">=22"
21
21
  },
22
22
  "publishConfig": {
23
23
  "access": "public"
24
24
  },
25
25
  "scripts": {
26
26
  "prepare": "npm run build",
27
- "build": "babel src --source-maps --copy-files --delete-dir-on-start --out-dir=dist",
27
+ "build": "esbuild \"src/**/*.js\" --sourcemap --platform=node --outdir=dist",
28
28
  "lint": "eslint ./src",
29
29
  "lint:dev": "eslint --fix ./src",
30
30
  "test": "npm run lint && npm run test:base",
31
- "test:base": "cross-env NODE_ENV=test nyc mocha --package ./package.json",
32
- "test:dev": "npm run lint:dev && npm run test:base",
33
- "coverage": "nyc check-coverage --per-file",
34
- "dev": "nodemon",
35
- "dev:debug": "cross-env LOG_LEVEL=debug DEBUG=@natlibfi/* NODE_ENV=test nodemon",
36
- "watch:test": "cross-env DEBUG=@natlibfi/* NODE_ENV=test nodemon -w src -w test-fixtures --exec 'npm run test:dev'"
31
+ "test:base": "node --test --test-force-exit --experimental-test-coverage --test-reporter=spec './src/**/*.test.js'",
32
+ "dev:test": "cross-env DEBUG=@natlibfi/* NODE_ENV=test node --watch --test --experimental-test-coverage --test-reporter=spec './src/**/*.test.js'"
37
33
  },
38
34
  "dependencies": {
39
- "deep-eql": "^4.1.3"
35
+ "deep-eql": "^4.1.4"
40
36
  },
41
37
  "devDependencies": {
42
- "@babel/cli": "^7.23.4",
43
- "@babel/core": "^7.23.6",
44
- "@babel/node": "^7.22.19",
45
- "@babel/preset-env": "^7.23.6",
46
- "@babel/register": "^7.22.15",
47
- "@natlibfi/eslint-config-melinda-backend": "^3.0.3",
48
- "@natlibfi/fixugen": "^2.0.3",
49
- "@natlibfi/fixura": "^3.0.3",
50
- "babel-plugin-istanbul": "^6.1.1",
51
- "chai": "^4.3.10",
52
- "cross-env": "^7.0.3",
53
- "eslint": "^8.56.0",
54
- "mocha": "^10.2.0",
55
- "nodemon": "^3.0.2",
56
- "nyc": "^15.1.0"
57
- },
58
- "eslintConfig": {
59
- "extends": "@natlibfi/melinda-backend"
60
- },
61
- "babel": {
62
- "presets": [
63
- [
64
- "@babel/preset-env",
65
- {
66
- "targets": "maintained node versions"
67
- }
68
- ]
69
- ],
70
- "env": {
71
- "test": {
72
- "plugins": [
73
- "istanbul"
74
- ]
75
- }
76
- }
77
- },
78
- "mocha": {
79
- "spec": [
80
- "src/*.spec.js",
81
- "src/**/*.spec.js"
82
- ],
83
- "require": [
84
- "@babel/register"
85
- ],
86
- "inline-diffs": true,
87
- "maxDiffSize": 25000,
88
- "bail": true,
89
- "exit": true
90
- },
91
- "nodemonConfig": {
92
- "exec": "npm run test:dev",
93
- "watch": [
94
- "src/*",
95
- "test-fixtures/*"
96
- ]
97
- },
98
- "nyc": {
99
- "exclude": [
100
- "src/*.spec.js",
101
- "src/**/*.spec.js"
102
- ],
103
- "reporter": [
104
- "text"
105
- ],
106
- "sourceMap": false,
107
- "instrument": false,
108
- "lines": 80,
109
- "statements": 80,
110
- "functions": 80,
111
- "branches": 80
38
+ "@natlibfi/fixugen": "^3.0.0",
39
+ "@natlibfi/fixura": "^4.0.0",
40
+ "cross-env": "^10.1.0",
41
+ "esbuild": "^0.25.12",
42
+ "eslint": "^9.39.1"
112
43
  }
113
44
  }
package/src/index.js CHANGED
@@ -36,15 +36,15 @@ export default () => {
36
36
  };
37
37
 
38
38
  const connection = {
39
- close: () => {}, // eslint-disable-line no-empty-function
40
- break: () => {}, // eslint-disable-line no-empty-function
39
+ close: () => {},
40
+ break: () => {},
41
41
  execute: (query, args) => {
42
42
  const rows = getRows();
43
43
 
44
44
  return {
45
45
  resultSet: {
46
- getRow: () => rows.shift(), // eslint-disable-line functional/immutable-data
47
- close: () => {} // eslint-disable-line no-empty-function
46
+ getRow: () => rows.shift(),
47
+ close: () => {}
48
48
  }
49
49
  };
50
50
 
@@ -58,7 +58,7 @@ export default () => {
58
58
  });
59
59
 
60
60
  if (index >= 0) {
61
- const {results} = options.splice(index, 1).shift(); // eslint-disable-line functional/immutable-data
61
+ const {results} = options.splice(index, 1).shift();
62
62
  return results;
63
63
  }
64
64
 
@@ -71,19 +71,19 @@ export default () => {
71
71
  getConnection: () => connection,
72
72
  createPool: () => ({
73
73
  getConnection: () => connection,
74
- close: () => {} // eslint-disable-line no-empty-function
74
+ close: () => {}
75
75
  }),
76
76
  _clear: () => {
77
77
  // Clear array
78
- options.splice(0); // eslint-disable-line functional/immutable-data
79
- Object.keys(options).forEach(k => delete options[k]); // eslint-disable-line functional/immutable-data
78
+ options.splice(0);
79
+ Object.keys(options).forEach(k => delete options[k]);
80
80
  },
81
81
  _execute: optList => {
82
82
  // Clear array
83
- options.splice(0); // eslint-disable-line functional/immutable-data
83
+ options.splice(0);
84
84
 
85
85
  optList.forEach(opts => {
86
- options.push({...DEFAULT_OPTIONS, ...opts}); // eslint-disable-line functional/immutable-data
86
+ options.push({...DEFAULT_OPTIONS, ...opts});
87
87
  });
88
88
  }
89
89
  };
@@ -26,13 +26,13 @@
26
26
  *
27
27
  */
28
28
 
29
- import createMock from '.';
29
+ import createMock from './index.js';
30
30
  import generateTests from '@natlibfi/fixugen';
31
- import {expect} from 'chai';
31
+ import assert from 'node:assert';
32
32
 
33
33
  generateTests({
34
34
  useMetadataFile: true,
35
- path: [__dirname, '..', 'test-fixtures'],
35
+ path: [import.meta.dirname, '..', 'test-fixtures'],
36
36
  callback: async ({dbResults, usePool = false, expectedResults, query, args = {}}) => {
37
37
  const mock = createMock();
38
38
 
@@ -44,7 +44,8 @@ generateTests({
44
44
  const {resultSet} = await connection.execute(query, args);
45
45
  const results = await fetchResults(resultSet);
46
46
 
47
- expect(results).to.eql(expectedResults);
47
+ //expect(results).to.eql(expectedResults);
48
+ assert.deepEqual(results, expectedResults);
48
49
 
49
50
  await connection.close();
50
51
  await pool.close();
@@ -57,8 +58,8 @@ generateTests({
57
58
  const {resultSet} = await connection.execute(query, args);
58
59
  const results = await fetchResults(resultSet);
59
60
 
60
- expect(results).to.eql(expectedResults);
61
-
61
+ // expect(results).to.eql(expectedResults);
62
+ assert.deepEqual(results, expectedResults);
62
63
  await connection.close();
63
64
  mock._clear();
64
65
 
package/.drone.yml DELETED
@@ -1,92 +0,0 @@
1
- ---
2
- kind: pipeline
3
- type: docker
4
- name: Default
5
-
6
- trigger:
7
- event:
8
- - push
9
- - tag
10
-
11
- steps:
12
-
13
- - name: audit
14
- image: node:12
15
- commands:
16
- - npm audit --package-lock-only --production --audit-level=moderate
17
-
18
- - name: install
19
- image: node:12
20
- environment:
21
- NPM_CONFIG_IGNORE_SCRIPTS: true
22
- commands:
23
- - npm ci
24
-
25
- - name: test
26
- image: node:12
27
- commands:
28
- - npm test
29
-
30
- - name: check-coverage
31
- image: node:12
32
- commands:
33
- - npm run coverage
34
-
35
- - name: build
36
- image: node:12
37
- commands:
38
- - npm run build
39
- - npm ci --production
40
-
41
- - name: static-security-scan
42
- image: quay.io/natlibfi/nodejsscan
43
- commands:
44
- - python /usr/src/app/cli.py -d dist
45
-
46
- - name: npm
47
- image: plugins/npm
48
- settings:
49
- registry: 'https://registry.npmjs.org/'
50
- token:
51
- from_secret: npm_token
52
- when:
53
- event: tag
54
- ---
55
- kind: pipeline
56
- type: docker
57
- name: Update dependencies
58
-
59
- trigger:
60
- event:
61
- - custom
62
- branch:
63
- - master
64
-
65
- steps:
66
-
67
- - name: publish
68
- image: quay.io/natlibfi/drone-npm-git-publish
69
- settings:
70
- git_user_name: natlibfi-melinda-automation
71
- git_user_email: 65649125+natlibfi-melinda-automation@users.noreply.github.com
72
- git_ssh_key:
73
- from_secret: ssh_key
74
- git_gpg_key:
75
- from_secret: gpg_key
76
- ---
77
- kind: secret
78
- name: npm_token
79
- data: +LGGkdsxbZ5J49jYZ4cQKB7JaRl1ZL1azpJOMFtml7jVXjXpxohqVvk2Xjz4y6czlEwOISPs/MuB/BKrbWXNqQ==
80
- ---
81
- kind: secret
82
- name: ssh_key
83
- data: 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
84
- ---
85
- kind: secret
86
- name: gpg_key
87
- data: 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
88
- ---
89
- kind: signature
90
- hmac: 9415ddc069b4a7e2025032ef731a702c377b2c8e2e5bde085a0bb7d0c202aca8
91
-
92
- ...
@@ -1,92 +0,0 @@
1
- "use strict";
2
-
3
- var _ = _interopRequireDefault(require("."));
4
- var _fixugen = _interopRequireDefault(require("@natlibfi/fixugen"));
5
- var _chai = require("chai");
6
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
- /**
8
- *
9
- * @licstart The following is the entire license notice for the JavaScript code in this file.
10
- *
11
- * A mock for oracledb Node.js module
12
- *
13
- * Copyright (C) 2020 University Of Helsinki (The National Library Of Finland)
14
- *
15
- * This file is part of oracledb-mock-js
16
- *
17
- * oracledb-mock-js program is free software: you can redistribute it and/or modify
18
- * it under the terms of the GNU Affero General Public License as
19
- * published by the Free Software Foundation, either version 3 of the
20
- * License, or (at your option) any later version.
21
- *
22
- * oracledb-mock-js is distributed in the hope that it will be useful,
23
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
24
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25
- * GNU Affero General Public License for more details.
26
- *
27
- * You should have received a copy of the GNU Affero General Public License
28
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
29
- *
30
- * @licend The above is the entire license notice
31
- * for the JavaScript code in this file.
32
- *
33
- */
34
-
35
- (0, _fixugen.default)({
36
- useMetadataFile: true,
37
- path: [__dirname, '..', 'test-fixtures'],
38
- callback: async ({
39
- dbResults,
40
- usePool = false,
41
- expectedResults,
42
- query,
43
- args = {}
44
- }) => {
45
- const mock = (0, _.default)();
46
- mock._execute(formatDbResults());
47
- if (usePool) {
48
- const pool = await mock.createPool();
49
- const connection = await pool.getConnection();
50
- const {
51
- resultSet
52
- } = await connection.execute(query, args);
53
- const results = await fetchResults(resultSet);
54
- (0, _chai.expect)(results).to.eql(expectedResults);
55
- await connection.close();
56
- await pool.close();
57
- mock._clear();
58
- return;
59
- }
60
- const connection = await mock.getConnection();
61
- const {
62
- resultSet
63
- } = await connection.execute(query, args);
64
- const results = await fetchResults(resultSet);
65
- (0, _chai.expect)(results).to.eql(expectedResults);
66
- await connection.close();
67
- mock._clear();
68
- async function fetchResults(resultSet, results = []) {
69
- const row = await resultSet.getRow();
70
- if (row) {
71
- return fetchResults(resultSet, results.concat(row));
72
- }
73
- await resultSet.close();
74
- return results;
75
- }
76
- function formatDbResults() {
77
- return dbResults.map(({
78
- queryPattern,
79
- ...rest
80
- }) => {
81
- if (queryPattern) {
82
- return {
83
- ...rest,
84
- queryPattern: new RegExp(queryPattern, 'u')
85
- };
86
- }
87
- return rest;
88
- });
89
- }
90
- }
91
- });
92
- //# sourceMappingURL=index.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.spec.js","names":["_","_interopRequireDefault","require","_fixugen","_chai","obj","__esModule","default","generateTests","useMetadataFile","path","__dirname","callback","dbResults","usePool","expectedResults","query","args","mock","createMock","_execute","formatDbResults","pool","createPool","connection","getConnection","resultSet","execute","results","fetchResults","expect","to","eql","close","_clear","row","getRow","concat","map","queryPattern","rest","RegExp"],"sources":["../src/index.spec.js"],"sourcesContent":["/**\n*\n* @licstart The following is the entire license notice for the JavaScript code in this file.\n*\n* A mock for oracledb Node.js module\n*\n* Copyright (C) 2020 University Of Helsinki (The National Library Of Finland)\n*\n* This file is part of oracledb-mock-js\n*\n* oracledb-mock-js program is free software: you can redistribute it and/or modify\n* it under the terms of the GNU Affero General Public License as\n* published by the Free Software Foundation, either version 3 of the\n* License, or (at your option) any later version.\n*\n* oracledb-mock-js is distributed in the hope that it will be useful,\n* but WITHOUT ANY WARRANTY; without even the implied warranty of\n* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n* GNU Affero General Public License for more details.\n*\n* You should have received a copy of the GNU Affero General Public License\n* along with this program. If not, see <http://www.gnu.org/licenses/>.\n*\n* @licend The above is the entire license notice\n* for the JavaScript code in this file.\n*\n*/\n\nimport createMock from '.';\nimport generateTests from '@natlibfi/fixugen';\nimport {expect} from 'chai';\n\ngenerateTests({\n useMetadataFile: true,\n path: [__dirname, '..', 'test-fixtures'],\n callback: async ({dbResults, usePool = false, expectedResults, query, args = {}}) => {\n const mock = createMock();\n\n mock._execute(formatDbResults());\n\n if (usePool) {\n const pool = await mock.createPool();\n const connection = await pool.getConnection();\n const {resultSet} = await connection.execute(query, args);\n const results = await fetchResults(resultSet);\n\n expect(results).to.eql(expectedResults);\n\n await connection.close();\n await pool.close();\n\n mock._clear();\n return;\n }\n\n const connection = await mock.getConnection();\n const {resultSet} = await connection.execute(query, args);\n const results = await fetchResults(resultSet);\n\n expect(results).to.eql(expectedResults);\n\n await connection.close();\n mock._clear();\n\n async function fetchResults(resultSet, results = []) {\n const row = await resultSet.getRow();\n\n if (row) {\n return fetchResults(resultSet, results.concat(row));\n }\n\n await resultSet.close();\n return results;\n }\n\n function formatDbResults() {\n return dbResults.map(({queryPattern, ...rest}) => {\n if (queryPattern) {\n return {\n ...rest,\n queryPattern: new RegExp(queryPattern, 'u')\n };\n }\n\n return rest;\n });\n }\n }\n});\n"],"mappings":";;AA4BA,IAAAA,CAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AAA4B,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AA9B5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,IAAAG,gBAAa,EAAC;EACZC,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE,CAACC,SAAS,EAAE,IAAI,EAAE,eAAe,CAAC;EACxCC,QAAQ,EAAE,MAAAA,CAAO;IAACC,SAAS;IAAEC,OAAO,GAAG,KAAK;IAAEC,eAAe;IAAEC,KAAK;IAAEC,IAAI,GAAG,CAAC;EAAC,CAAC,KAAK;IACnF,MAAMC,IAAI,GAAG,IAAAC,SAAU,EAAC,CAAC;IAEzBD,IAAI,CAACE,QAAQ,CAACC,eAAe,CAAC,CAAC,CAAC;IAEhC,IAAIP,OAAO,EAAE;MACX,MAAMQ,IAAI,GAAG,MAAMJ,IAAI,CAACK,UAAU,CAAC,CAAC;MACpC,MAAMC,UAAU,GAAG,MAAMF,IAAI,CAACG,aAAa,CAAC,CAAC;MAC7C,MAAM;QAACC;MAAS,CAAC,GAAG,MAAMF,UAAU,CAACG,OAAO,CAACX,KAAK,EAAEC,IAAI,CAAC;MACzD,MAAMW,OAAO,GAAG,MAAMC,YAAY,CAACH,SAAS,CAAC;MAE7C,IAAAI,YAAM,EAACF,OAAO,CAAC,CAACG,EAAE,CAACC,GAAG,CAACjB,eAAe,CAAC;MAEvC,MAAMS,UAAU,CAACS,KAAK,CAAC,CAAC;MACxB,MAAMX,IAAI,CAACW,KAAK,CAAC,CAAC;MAElBf,IAAI,CAACgB,MAAM,CAAC,CAAC;MACb;IACF;IAEA,MAAMV,UAAU,GAAG,MAAMN,IAAI,CAACO,aAAa,CAAC,CAAC;IAC7C,MAAM;MAACC;IAAS,CAAC,GAAG,MAAMF,UAAU,CAACG,OAAO,CAACX,KAAK,EAAEC,IAAI,CAAC;IACzD,MAAMW,OAAO,GAAG,MAAMC,YAAY,CAACH,SAAS,CAAC;IAE7C,IAAAI,YAAM,EAACF,OAAO,CAAC,CAACG,EAAE,CAACC,GAAG,CAACjB,eAAe,CAAC;IAEvC,MAAMS,UAAU,CAACS,KAAK,CAAC,CAAC;IACxBf,IAAI,CAACgB,MAAM,CAAC,CAAC;IAEb,eAAeL,YAAYA,CAACH,SAAS,EAAEE,OAAO,GAAG,EAAE,EAAE;MACnD,MAAMO,GAAG,GAAG,MAAMT,SAAS,CAACU,MAAM,CAAC,CAAC;MAEpC,IAAID,GAAG,EAAE;QACP,OAAON,YAAY,CAACH,SAAS,EAAEE,OAAO,CAACS,MAAM,CAACF,GAAG,CAAC,CAAC;MACrD;MAEA,MAAMT,SAAS,CAACO,KAAK,CAAC,CAAC;MACvB,OAAOL,OAAO;IAChB;IAEA,SAASP,eAAeA,CAAA,EAAG;MACzB,OAAOR,SAAS,CAACyB,GAAG,CAAC,CAAC;QAACC,YAAY;QAAE,GAAGC;MAAI,CAAC,KAAK;QAChD,IAAID,YAAY,EAAE;UAChB,OAAO;YACL,GAAGC,IAAI;YACPD,YAAY,EAAE,IAAIE,MAAM,CAACF,YAAY,EAAE,GAAG;UAC5C,CAAC;QACH;QAEA,OAAOC,IAAI;MACb,CAAC,CAAC;IACJ;EACF;AACF,CAAC,CAAC"}