nolo-cli 0.143.0-alpha.1 → 0.145.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.
- package/README.md +2 -0
- package/{_executeModel-QK43QR2R.js → _executeModel-M3FASQ2Z.js} +18 -17
- package/{agentDeleteCommand-SE4WUIRR.js → agentDeleteCommand-K7GCEEVS.js} +10 -9
- package/{agentEmailCommands-LW5JMYH2.js → agentEmailCommands-MNXRO36L.js} +24 -23
- package/{agentListCommands-LGZG2OQR.js → agentListCommands-KMZR6VVM.js} +12 -11
- package/{agentMachineCommands-BNOXYSPZ.js → agentMachineCommands-75TIBYDY.js} +10 -9
- package/{agentProviderCommands-AOG3OZJA.js → agentProviderCommands-TWB6E5WD.js} +1 -1
- package/{agentRecordCommands-W5ZXPHZV.js → agentRecordCommands-RDO5L3N4.js} +23 -22
- package/{agentRunCommand-VRLCL57M.js → agentRunCommand-FVJJPL27.js} +23 -22
- package/{agentRuntimeLocal-VOQ3UYZB.js → agentRuntimeLocal-DAK7RCER.js} +8 -7
- package/{agentSlice-4AK24F5F.js → agentSlice-6MRJR2BJ.js} +1 -1
- package/{appDeleteCommands-XWAIUHTN.js → appDeleteCommands-JMMXK3XT.js} +11 -10
- package/{appDeployCommands-CBJJCUMG.js → appDeployCommands-JFU6GALI.js} +11 -10
- package/{appDeployStatusCommands-LTTZTJQS.js → appDeployStatusCommands-AXTZ4GAN.js} +11 -10
- package/{appGetCommands-QHUB7MFF.js → appGetCommands-CR2W3DCM.js} +11 -10
- package/{appListCommands-HINIDJE7.js → appListCommands-2TV6P3EU.js} +11 -10
- package/{authCommand-LARLQ3GC.js → authCommand-UBJ4EWYZ.js} +6 -6
- package/{authCommands-GBIFZWD3.js → authCommands-H6WKKCRW.js} +1 -1
- package/{builtinSkillRegistry-AFPSTTAU.js → builtinSkillRegistry-ZMF6YGNO.js} +4 -3
- package/{chatQueueReduxAdapter-KIQ3FQ62.js → chatQueueReduxAdapter-CDOHVTSE.js} +2 -2
- package/{chromeCommands-NKU3OWKH.js → chromeCommands-2N6MEWRU.js} +94 -23
- package/{chromeOpsCommands-OQDJGD4Y.js → chromeOpsCommands-IXRLN57H.js} +4 -3
- package/{chunk-7MUSNQ6E.js → chunk-27ONFIEY.js} +20 -2
- package/{chunk-OZ6V53WV.js → chunk-2EE5UD3N.js} +1 -1
- package/{chunk-44QZPYLI.js → chunk-2SYTUTLI.js} +92 -20
- package/{chunk-DID5AVGT.js → chunk-2TKVOEQF.js} +11 -10
- package/chunk-5J3PYNUP.js +255 -0
- package/{chunk-OUOJE2P2.js → chunk-5XYFIDFU.js} +5 -5
- package/{chunk-WTUVMKSQ.js → chunk-62XHRZG4.js} +2 -2
- package/{chunk-WC6A2Q7S.js → chunk-6TPOEJMQ.js} +5 -2
- package/{chunk-RRMAZ2BI.js → chunk-7NANRWL4.js} +1 -1
- package/{chunk-44F6KKUE.js → chunk-7YAK46ML.js} +3 -3
- package/{chunk-NOGH7HCP.js → chunk-A6FNUMCF.js} +47 -6
- package/{chunk-OFYHCA6W.js → chunk-AATZZAZE.js} +1 -1
- package/{chunk-KUPDS66Q.js → chunk-ANX7Z7Z2.js} +8 -8
- package/{chunk-J5H6SUOW.js → chunk-B2XUQXQX.js} +2 -2
- package/{chunk-A5MB5RIT.js → chunk-CCOXTK3I.js} +1 -1
- package/chunk-GNMAFAIS.js +29 -0
- package/{chunk-GZQNKKDG.js → chunk-HKBFZONG.js} +1 -1
- package/{chunk-7LLWEG6F.js → chunk-I44MDY73.js} +3 -3
- package/{chunk-QDT5T7MK.js → chunk-I4OPU5TK.js} +1 -1
- package/{chunk-VPFEPRME.js → chunk-IVZJWTDI.js} +3 -0
- package/{chunk-CTGZO35O.js → chunk-JLQKV2ZJ.js} +2 -2
- package/{chunk-PQVOC2CZ.js → chunk-M2YBIBBS.js} +1 -1
- package/{chunk-ZOI6KA4N.js → chunk-M76SRQ3H.js} +34 -22
- package/{chunk-K25DK52L.js → chunk-OKSJZ4UU.js} +21 -223
- package/{chunk-U5QTKTZE.js → chunk-P6GMCCAT.js} +1 -1
- package/{chunk-L6RB42ZR.js → chunk-QFZM5BFI.js} +3 -3
- package/{chunk-GH4MH73K.js → chunk-RHDOQWXZ.js} +175 -17
- package/{chunk-M6NK74VP.js → chunk-S5XGT6GB.js} +1 -1
- package/{chunk-KUWT3C2P.js → chunk-T76D3OYX.js} +1 -1
- package/{chunk-MXRUAINC.js → chunk-UMB7CHAY.js} +3 -3
- package/{chunk-VVUSRF5D.js → chunk-VJ4FUWPC.js} +3 -3
- package/{chunk-T36EFAW7.js → chunk-VZVTPDPL.js} +3 -3
- package/{chunk-AAROOKLX.js → chunk-X2QRZXZH.js} +1 -1
- package/{chunk-WYYO2YOL.js → chunk-XNXNHAAP.js} +1 -1
- package/{chunk-O6OSWFZQ.js → chunk-XUWRURDF.js} +6 -0
- package/{chunk-DOBBRISY.js → chunk-Y6XHJ4JJ.js} +22 -10
- package/{chunk-W247GBSQ.js → chunk-YU2THNST.js} +1 -1
- package/{chunk-OY5IJI2N.js → chunk-YUNJN43V.js} +23 -3
- package/{commandRegistry-DETYXF5I.js → commandRegistry-ZF6YXQWV.js} +76 -65
- package/{contentThunks-6QBTPLWT.js → contentThunks-6Y6ATG3A.js} +3 -3
- package/{createAgentAutomationAction-TZVIJTZ7.js → createAgentAutomationAction-OQTLA2FC.js} +3 -3
- package/{createDialogAction-KTDAEA42.js → createDialogAction-IF5EZMBD.js} +6 -5
- package/{createPageAction-4RASVDAU.js → createPageAction-GU766R3L.js} +3 -3
- package/{dialogCommands-GY7LRERG.js → dialogCommands-QV7XAX2V.js} +11 -10
- package/{dialogSlice-J24APUGG.js → dialogSlice-CVHMDSVV.js} +2 -2
- package/{docCreateCommands-T7KII3WP.js → docCreateCommands-FSBANQTO.js} +10 -9
- package/{docDeleteCommands-SQ26EFE6.js → docDeleteCommands-4IR4YSGU.js} +11 -10
- package/{docReadCommands-I6NA2ZKV.js → docReadCommands-4EYPGUE3.js} +10 -9
- package/{docStore-SPOGE7K3.js → docStore-RQOWPNON.js} +1 -1
- package/{docUpdateCommands-IG43SZ6U.js → docUpdateCommands-RW2BYLSE.js} +10 -9
- package/{handleSendMessageAction-I2IN64DS.js → handleSendMessageAction-UDTPG5WK.js} +4 -3
- package/index.js +4 -4
- package/{machineCommands-U7VABJPW.js → machineCommands-WBQ4TCPD.js} +22 -21
- package/{machineWsRunDispatch-ZNU6LRNG.js → machineWsRunDispatch-7DNDXUOS.js} +22 -21
- package/node_modules/abstract-level/CHANGELOG.md +150 -0
- package/node_modules/abstract-level/LICENSE +21 -0
- package/node_modules/abstract-level/README.md +1957 -0
- package/node_modules/abstract-level/UPGRADING.md +669 -0
- package/node_modules/abstract-level/abstract-chained-batch.js +397 -0
- package/node_modules/abstract-level/abstract-iterator.js +404 -0
- package/node_modules/abstract-level/abstract-level.js +1127 -0
- package/node_modules/abstract-level/abstract-snapshot.js +84 -0
- package/node_modules/abstract-level/index.d.ts +52 -0
- package/node_modules/abstract-level/index.js +9 -0
- package/node_modules/abstract-level/lib/abstract-sublevel-iterator.js +141 -0
- package/node_modules/abstract-level/lib/abstract-sublevel.js +290 -0
- package/node_modules/abstract-level/lib/common.js +33 -0
- package/node_modules/abstract-level/lib/default-chained-batch.js +29 -0
- package/node_modules/abstract-level/lib/default-kv-iterator.js +74 -0
- package/node_modules/abstract-level/lib/deferred-iterator.js +110 -0
- package/node_modules/abstract-level/lib/deferred-queue.js +84 -0
- package/node_modules/abstract-level/lib/errors.js +21 -0
- package/node_modules/abstract-level/lib/event-monitor.js +30 -0
- package/node_modules/abstract-level/lib/hooks.js +78 -0
- package/node_modules/abstract-level/lib/prefixes.js +21 -0
- package/node_modules/abstract-level/lib/prewrite-batch.js +96 -0
- package/node_modules/abstract-level/lib/range-options.js +26 -0
- package/node_modules/abstract-level/package.json +66 -0
- package/node_modules/abstract-level/test/async-iterator-test.js +132 -0
- package/node_modules/abstract-level/test/batch-test.js +214 -0
- package/node_modules/abstract-level/test/chained-batch-test.js +315 -0
- package/node_modules/abstract-level/test/clear-range-test.js +262 -0
- package/node_modules/abstract-level/test/clear-test.js +110 -0
- package/node_modules/abstract-level/test/common.js +90 -0
- package/node_modules/abstract-level/test/deferred-open-test.js +209 -0
- package/node_modules/abstract-level/test/del-test.js +65 -0
- package/node_modules/abstract-level/test/encoding-buffer-test.js +336 -0
- package/node_modules/abstract-level/test/encoding-custom-test.js +92 -0
- package/node_modules/abstract-level/test/encoding-decode-error-test.js +85 -0
- package/node_modules/abstract-level/test/encoding-json-test.js +75 -0
- package/node_modules/abstract-level/test/encoding-test.js +130 -0
- package/node_modules/abstract-level/test/events/write.js +132 -0
- package/node_modules/abstract-level/test/factory-test.js +36 -0
- package/node_modules/abstract-level/test/get-many-test.js +157 -0
- package/node_modules/abstract-level/test/get-sync-test.js +61 -0
- package/node_modules/abstract-level/test/get-test.js +83 -0
- package/node_modules/abstract-level/test/has-many-test.js +144 -0
- package/node_modules/abstract-level/test/has-test.js +81 -0
- package/node_modules/abstract-level/test/hooks/newsub.js +57 -0
- package/node_modules/abstract-level/test/hooks/postopen.js +229 -0
- package/node_modules/abstract-level/test/hooks/prewrite.js +816 -0
- package/node_modules/abstract-level/test/hooks/shared.js +38 -0
- package/node_modules/abstract-level/test/index.js +86 -0
- package/node_modules/abstract-level/test/iterator-explicit-snapshot-test.js +393 -0
- package/node_modules/abstract-level/test/iterator-no-snapshot-test.js +49 -0
- package/node_modules/abstract-level/test/iterator-range-test.js +277 -0
- package/node_modules/abstract-level/test/iterator-seek-test.js +335 -0
- package/node_modules/abstract-level/test/iterator-snapshot-test.js +56 -0
- package/node_modules/abstract-level/test/iterator-test.js +621 -0
- package/node_modules/abstract-level/test/manifest-test.js +21 -0
- package/node_modules/abstract-level/test/open-create-if-missing-test.js +39 -0
- package/node_modules/abstract-level/test/open-error-if-exists-test.js +25 -0
- package/node_modules/abstract-level/test/open-test.js +263 -0
- package/node_modules/abstract-level/test/put-get-del-test.js +97 -0
- package/node_modules/abstract-level/test/put-test.js +70 -0
- package/node_modules/abstract-level/test/self/abstract-iterator-test.js +182 -0
- package/node_modules/abstract-level/test/self/async-iterator-test.js +242 -0
- package/node_modules/abstract-level/test/self/attach-resource-test.js +74 -0
- package/node_modules/abstract-level/test/self/defer-test.js +140 -0
- package/node_modules/abstract-level/test/self/deferred-iterator-test.js +314 -0
- package/node_modules/abstract-level/test/self/deferred-operations-test.js +86 -0
- package/node_modules/abstract-level/test/self/deferred-queue-test.js +93 -0
- package/node_modules/abstract-level/test/self/encoding-test.js +391 -0
- package/node_modules/abstract-level/test/self/errors-test.js +11 -0
- package/node_modules/abstract-level/test/self/iterator-test.js +1050 -0
- package/node_modules/abstract-level/test/self/sublevel-test.js +1039 -0
- package/node_modules/abstract-level/test/self.js +905 -0
- package/node_modules/abstract-level/test/sublevel-test.js +209 -0
- package/node_modules/abstract-level/test/traits/closed.js +42 -0
- package/node_modules/abstract-level/test/traits/index.js +4 -0
- package/node_modules/abstract-level/test/traits/open.js +62 -0
- package/node_modules/abstract-level/test/util.js +275 -0
- package/node_modules/abstract-level/types/abstract-chained-batch.d.ts +124 -0
- package/node_modules/abstract-level/types/abstract-iterator.d.ts +241 -0
- package/node_modules/abstract-level/types/abstract-level.d.ts +636 -0
- package/node_modules/abstract-level/types/abstract-snapshot.d.ts +30 -0
- package/node_modules/abstract-level/types/abstract-sublevel.d.ts +76 -0
- package/node_modules/abstract-level/types/interfaces.d.ts +43 -0
- package/node_modules/base64-js/LICENSE +21 -0
- package/node_modules/base64-js/README.md +34 -0
- package/node_modules/base64-js/base64js.min.js +1 -0
- package/node_modules/base64-js/index.d.ts +3 -0
- package/node_modules/base64-js/index.js +150 -0
- package/node_modules/base64-js/package.json +47 -0
- package/node_modules/browser-level/CHANGELOG.md +44 -0
- package/node_modules/browser-level/LICENSE +21 -0
- package/node_modules/browser-level/README.md +124 -0
- package/node_modules/browser-level/UPGRADING.md +143 -0
- package/node_modules/browser-level/index.d.ts +108 -0
- package/node_modules/browser-level/index.js +323 -0
- package/node_modules/browser-level/iterator.js +239 -0
- package/node_modules/browser-level/package.json +48 -0
- package/node_modules/browser-level/util/clear.js +38 -0
- package/node_modules/browser-level/util/deserialize.js +17 -0
- package/node_modules/browser-level/util/key-range.js +20 -0
- package/node_modules/buffer/AUTHORS.md +73 -0
- package/node_modules/buffer/LICENSE +21 -0
- package/node_modules/buffer/README.md +410 -0
- package/node_modules/buffer/index.d.ts +194 -0
- package/node_modules/buffer/index.js +2106 -0
- package/node_modules/buffer/package.json +93 -0
- package/node_modules/classic-level/CHANGELOG.md +115 -0
- package/node_modules/classic-level/LICENSE +21 -0
- package/node_modules/classic-level/README.md +274 -0
- package/node_modules/classic-level/UPGRADING.md +131 -0
- package/node_modules/classic-level/binding.cc +2652 -0
- package/node_modules/classic-level/binding.gyp +71 -0
- package/node_modules/classic-level/binding.js +1 -0
- package/node_modules/classic-level/chained-batch.js +35 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/LICENSE +27 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/Makefile +424 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/build_detect_platform +256 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/autocompact_test.cc +118 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/builder.cc +88 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/builder.h +34 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/c.cc +595 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/c_test.c +390 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/corruption_test.cc +374 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/db_bench.cc +1020 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/db_impl.cc +1568 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/db_impl.h +212 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/db_iter.cc +317 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/db_iter.h +28 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/db_test.cc +2158 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/dbformat.cc +140 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/dbformat.h +230 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/dbformat_test.cc +112 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/dumpfile.cc +225 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/fault_injection_test.cc +554 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/filename.cc +144 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/filename.h +85 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/filename_test.cc +123 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/leveldbutil.cc +64 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/log_format.h +35 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/log_reader.cc +284 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/log_reader.h +113 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/log_test.cc +591 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/log_writer.cc +112 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/log_writer.h +54 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/memtable.cc +145 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/memtable.h +89 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/recovery_test.cc +324 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/repair.cc +461 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/skiplist.h +384 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/skiplist_test.cc +378 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/snapshot.h +67 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/table_cache.cc +127 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/table_cache.h +61 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/version_edit.cc +266 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/version_edit.h +107 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/version_edit_test.cc +46 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/version_set.cc +1535 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/version_set.h +399 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/version_set_test.cc +179 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/write_batch.cc +147 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/write_batch_internal.h +50 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/db/write_batch_test.cc +120 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/helpers/memenv/memenv.cc +398 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/helpers/memenv/memenv.h +20 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/helpers/memenv/memenv_test.cc +241 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/c.h +290 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/cache.h +110 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/comparator.h +63 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/db.h +164 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/dumpfile.h +25 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/env.h +351 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/filter_policy.h +70 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/iterator.h +100 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/options.h +213 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/slice.h +109 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/status.h +112 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/table.h +85 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/table_builder.h +92 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/value_sink.h +26 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/include/leveldb/write_batch.h +64 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/issues/issue178_test.cc +92 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/issues/issue200_test.cc +59 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/port/atomic_pointer.h +242 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/port/port.h +21 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/port/port_example.h +141 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/port/port_posix.cc +53 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/port/port_posix.h +156 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/port/port_posix_sse.cc +129 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/port/thread_annotations.h +60 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/port/win/stdint.h +24 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/block.cc +268 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/block.h +44 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/block_builder.cc +109 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/block_builder.h +57 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/filter_block.cc +111 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/filter_block.h +68 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/filter_block_test.cc +128 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/format.cc +144 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/format.h +108 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/iterator.cc +67 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/iterator_wrapper.h +66 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/merger.cc +197 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/merger.h +26 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/table.cc +285 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/table_builder.cc +270 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/table_test.cc +876 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/two_level_iterator.cc +182 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/table/two_level_iterator.h +34 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/arena.cc +68 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/arena.h +68 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/arena_test.cc +68 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/bloom.cc +95 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/bloom_test.cc +162 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/cache.cc +405 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/cache_test.cc +226 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/coding.cc +194 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/coding.h +104 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/coding_test.cc +196 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/comparator.cc +81 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/crc32c.cc +350 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/crc32c.h +45 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/crc32c_test.cc +72 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/env.cc +100 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/env_posix.cc +695 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/env_posix_test.cc +66 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/env_posix_test_helper.h +28 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/env_test.cc +106 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/filter_policy.cc +11 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/hash.cc +52 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/hash.h +19 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/hash_test.cc +54 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/histogram.cc +139 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/histogram.h +42 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/logging.cc +72 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/logging.h +43 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/mutexlock.h +41 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/options.cc +30 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/posix_logger.h +98 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/random.h +64 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/status.cc +75 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/testharness.cc +77 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/testharness.h +138 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/testutil.cc +51 -0
- package/node_modules/classic-level/deps/leveldb/leveldb-1.20/util/testutil.h +63 -0
- package/node_modules/classic-level/deps/leveldb/leveldb.gyp +282 -0
- package/node_modules/classic-level/deps/leveldb/patches/001-value-sink.patch +164 -0
- package/node_modules/classic-level/deps/leveldb/port-libuv/atomic_pointer_win.h +48 -0
- package/node_modules/classic-level/deps/leveldb/port-libuv/env_win.cc +692 -0
- package/node_modules/classic-level/deps/leveldb/port-libuv/port_uv.cc +36 -0
- package/node_modules/classic-level/deps/leveldb/port-libuv/port_uv.h +157 -0
- package/node_modules/classic-level/deps/leveldb/port-libuv/port_uv.h.bak +153 -0
- package/node_modules/classic-level/deps/leveldb/port-libuv/stdint-msvc2008.h +247 -0
- package/node_modules/classic-level/deps/leveldb/port-libuv/uv_condvar.h +45 -0
- package/node_modules/classic-level/deps/leveldb/port-libuv/uv_condvar_posix.cc +139 -0
- package/node_modules/classic-level/deps/leveldb/port-libuv/win_logger.cc +79 -0
- package/node_modules/classic-level/deps/leveldb/port-libuv/win_logger.h +28 -0
- package/node_modules/classic-level/deps/snappy/freebsd/config.h +135 -0
- package/node_modules/classic-level/deps/snappy/freebsd/snappy-stubs-public.h +100 -0
- package/node_modules/classic-level/deps/snappy/linux/config.h +135 -0
- package/node_modules/classic-level/deps/snappy/linux/snappy-stubs-public.h +100 -0
- package/node_modules/classic-level/deps/snappy/mac/config.h +137 -0
- package/node_modules/classic-level/deps/snappy/mac/snappy-stubs-public.h +100 -0
- package/node_modules/classic-level/deps/snappy/openbsd/config.h +135 -0
- package/node_modules/classic-level/deps/snappy/openbsd/snappy-stubs-public.h +100 -0
- package/node_modules/classic-level/deps/snappy/snappy/COPYING +54 -0
- package/node_modules/classic-level/deps/snappy/snappy/cmake/SnappyConfig.cmake +1 -0
- package/node_modules/classic-level/deps/snappy/snappy/cmake/config.h.in +62 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy-c.cc +90 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy-c.h +138 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy-internal.h +224 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy-sinksource.cc +104 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy-sinksource.h +182 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy-stubs-internal.cc +42 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy-stubs-internal.h +561 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy-stubs-public.h.in +94 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy-test.cc +612 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy-test.h +573 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy.cc +1515 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy.h +203 -0
- package/node_modules/classic-level/deps/snappy/snappy/snappy_unittest.cc +1410 -0
- package/node_modules/classic-level/deps/snappy/snappy.gyp +119 -0
- package/node_modules/classic-level/deps/snappy/solaris/config.h +135 -0
- package/node_modules/classic-level/deps/snappy/solaris/snappy-stubs-public.h +100 -0
- package/node_modules/classic-level/deps/snappy/win32/config.h +29 -0
- package/node_modules/classic-level/deps/snappy/win32/snappy-stubs-public.h +100 -0
- package/node_modules/classic-level/index.d.ts +343 -0
- package/node_modules/classic-level/index.js +311 -0
- package/node_modules/classic-level/iterator.js +122 -0
- package/node_modules/classic-level/package.json +70 -0
- package/node_modules/classic-level/prebuilds/android-arm/classic-level.armv7.node +0 -0
- package/node_modules/classic-level/prebuilds/android-arm64/classic-level.armv8.node +0 -0
- package/node_modules/classic-level/prebuilds/darwin-x64+arm64/classic-level.node +0 -0
- package/node_modules/classic-level/prebuilds/linux-arm/classic-level.armv6.node +0 -0
- package/node_modules/classic-level/prebuilds/linux-arm/classic-level.armv7.node +0 -0
- package/node_modules/classic-level/prebuilds/linux-arm64/classic-level.armv8.node +0 -0
- package/node_modules/classic-level/prebuilds/linux-x64/classic-level.musl.node +0 -0
- package/node_modules/classic-level/prebuilds/linux-x64/classic-level.node +0 -0
- package/node_modules/classic-level/prebuilds/win32-ia32/classic-level.node +0 -0
- package/node_modules/classic-level/prebuilds/win32-x64/classic-level.node +0 -0
- package/node_modules/ieee754/LICENSE +11 -0
- package/node_modules/ieee754/README.md +51 -0
- package/node_modules/ieee754/index.d.ts +10 -0
- package/node_modules/ieee754/index.js +85 -0
- package/node_modules/ieee754/package.json +52 -0
- package/node_modules/is-buffer/LICENSE +21 -0
- package/node_modules/is-buffer/README.md +54 -0
- package/node_modules/is-buffer/index.d.ts +2 -0
- package/node_modules/is-buffer/index.js +11 -0
- package/node_modules/is-buffer/package.json +65 -0
- package/node_modules/level/CHANGELOG.md +532 -0
- package/node_modules/level/LICENSE +21 -0
- package/node_modules/level/README.md +107 -0
- package/node_modules/level/UPGRADING.md +413 -0
- package/node_modules/level/browser.js +1 -0
- package/node_modules/level/index.d.ts +75 -0
- package/node_modules/level/index.js +1 -0
- package/node_modules/level/package.json +62 -0
- package/node_modules/level-supports/CHANGELOG.md +140 -0
- package/node_modules/level-supports/LICENSE +21 -0
- package/node_modules/level-supports/README.md +276 -0
- package/node_modules/level-supports/index.d.ts +137 -0
- package/node_modules/level-supports/index.js +26 -0
- package/node_modules/level-supports/package.json +46 -0
- package/node_modules/level-supports/test/cloneable.js +26 -0
- package/node_modules/level-supports/test/index.js +24 -0
- package/node_modules/level-supports/test/self.js +86 -0
- package/node_modules/level-supports/test/shape.js +23 -0
- package/node_modules/level-transcoder/CHANGELOG.md +15 -0
- package/node_modules/level-transcoder/LICENSE +21 -0
- package/node_modules/level-transcoder/README.md +214 -0
- package/node_modules/level-transcoder/UPGRADING.md +13 -0
- package/node_modules/level-transcoder/index.d.ts +27 -0
- package/node_modules/level-transcoder/index.js +158 -0
- package/node_modules/level-transcoder/lib/encoding.d.ts +158 -0
- package/node_modules/level-transcoder/lib/encoding.js +105 -0
- package/node_modules/level-transcoder/lib/encodings.d.ts +9 -0
- package/node_modules/level-transcoder/lib/encodings.js +135 -0
- package/node_modules/level-transcoder/lib/formats.d.ts +13 -0
- package/node_modules/level-transcoder/lib/formats.js +111 -0
- package/node_modules/level-transcoder/lib/text-endec.d.ts +6 -0
- package/node_modules/level-transcoder/lib/text-endec.js +19 -0
- package/node_modules/level-transcoder/package.json +46 -0
- package/node_modules/maybe-combine-errors/LICENSE.md +21 -0
- package/node_modules/maybe-combine-errors/README.md +94 -0
- package/node_modules/maybe-combine-errors/index.js +60 -0
- package/node_modules/maybe-combine-errors/package.json +33 -0
- package/node_modules/module-error/CHANGELOG.md +23 -0
- package/node_modules/module-error/LICENSE +21 -0
- package/node_modules/module-error/README.md +89 -0
- package/node_modules/module-error/index.d.ts +18 -0
- package/node_modules/module-error/index.js +22 -0
- package/node_modules/module-error/package.json +36 -0
- package/node_modules/napi-macros/LICENSE +21 -0
- package/node_modules/napi-macros/README.md +277 -0
- package/node_modules/napi-macros/index.js +1 -0
- package/node_modules/napi-macros/napi-macros.h +255 -0
- package/node_modules/napi-macros/package.json +22 -0
- package/node_modules/node-gyp-build/LICENSE +21 -0
- package/node_modules/node-gyp-build/README.md +58 -0
- package/node_modules/node-gyp-build/SECURITY.md +5 -0
- package/node_modules/node-gyp-build/bin.js +84 -0
- package/node_modules/node-gyp-build/build-test.js +19 -0
- package/node_modules/node-gyp-build/index.js +6 -0
- package/node_modules/node-gyp-build/node-gyp-build.js +207 -0
- package/node_modules/node-gyp-build/optional.js +7 -0
- package/node_modules/node-gyp-build/package.json +43 -0
- package/package.json +6 -3
- package/{providerPresetApply-7XEHTODR.js → providerPresetApply-XTEXOH7X.js} +3 -3
- package/{providerRegistry-GNV4FFSA.js → providerRegistry-ADYDSLKR.js} +3 -3
- package/{readlineWorkspace-46KDFUHN.js → readlineWorkspace-LO6ZLFTO.js} +1381 -1317
- package/{runAgentClientLoop-CQWLWU4W.js → runAgentClientLoop-KAYGKVTK.js} +16 -15
- package/{runtimeDoctorCommands-3USD722U.js → runtimeDoctorCommands-ID23PNNZ.js} +28 -0
- package/{spaceCommands-TSBC5UWP.js → spaceCommands-FA6RCZ2Y.js} +10 -9
- package/{streamAgentChatTurn-XD5JEJXA.js → streamAgentChatTurn-DFNDU2UY.js} +17 -16
- package/{tools-5NAJJTFN.js → tools-6HKH75NT.js} +13 -12
- package/{tuiSummaryLlmCaller-7KLLDP22.js → tuiSummaryLlmCaller-CFFVXQWX.js} +2 -2
- package/{updateCommands-XYMGOKF4.js → updateCommands-4EHDLF5J.js} +1 -1
- package/{updateDialogTitleAction-IKZPJCRA.js → updateDialogTitleAction-FFSYTLBC.js} +3 -3
|
@@ -0,0 +1,1050 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const test = require('tape')
|
|
4
|
+
const { Buffer } = require('buffer')
|
|
5
|
+
const { AbstractLevel } = require('../..')
|
|
6
|
+
const { AbstractIterator, AbstractKeyIterator, AbstractValueIterator } = require('../..')
|
|
7
|
+
const { mockLevel, mockIterator, nullishEncoding } = require('../util')
|
|
8
|
+
|
|
9
|
+
const identity = (v) => v
|
|
10
|
+
const utf8Manifest = { encodings: { utf8: true } }
|
|
11
|
+
const dualManifest = { encodings: { utf8: true, buffer: true } }
|
|
12
|
+
const tripleManifest = { encodings: { utf8: true, buffer: true, view: true } }
|
|
13
|
+
|
|
14
|
+
for (const deferred of [false, true]) {
|
|
15
|
+
// Also test default fallback implementations of keys() and values()
|
|
16
|
+
for (const [mode, def] of [['iterator', false], ['keys', false], ['values', false], ['keys', true], ['values', true]]) {
|
|
17
|
+
const Ctor = mode === 'iterator' || def ? AbstractIterator : mode === 'keys' ? AbstractKeyIterator : AbstractValueIterator
|
|
18
|
+
const privateMethod = def ? '_iterator' : '_' + mode
|
|
19
|
+
const publicMethod = mode
|
|
20
|
+
|
|
21
|
+
test(`${mode}() (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
22
|
+
t.plan(4)
|
|
23
|
+
|
|
24
|
+
let called = false
|
|
25
|
+
class MockLevel extends AbstractLevel {
|
|
26
|
+
[privateMethod] (options) {
|
|
27
|
+
t.is(this, db, 'thisArg is correct')
|
|
28
|
+
t.is(arguments.length, 1, 'got one argument')
|
|
29
|
+
|
|
30
|
+
const kvOptions = mode === 'iterator' || def
|
|
31
|
+
? { keys: mode !== 'values', values: mode !== 'keys' }
|
|
32
|
+
: {}
|
|
33
|
+
|
|
34
|
+
t.same(options, {
|
|
35
|
+
reverse: false,
|
|
36
|
+
limit: -1,
|
|
37
|
+
keyEncoding: 'utf8',
|
|
38
|
+
valueEncoding: 'utf8',
|
|
39
|
+
...kvOptions
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
called = true
|
|
43
|
+
return new Ctor(this, options)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const db = new MockLevel(tripleManifest)
|
|
48
|
+
if (!deferred) await db.open()
|
|
49
|
+
|
|
50
|
+
db[publicMethod]()
|
|
51
|
+
t.is(called, !deferred)
|
|
52
|
+
if (deferred) await db.open()
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
test(`${mode}() with custom options (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
56
|
+
t.plan(3)
|
|
57
|
+
|
|
58
|
+
class MockLevel extends AbstractLevel {
|
|
59
|
+
[privateMethod] (options) {
|
|
60
|
+
t.is(options.foo, 123)
|
|
61
|
+
t.is(options.reverse, true)
|
|
62
|
+
t.is(options.limit, 1)
|
|
63
|
+
|
|
64
|
+
return new Ctor(this, options)
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const db = new MockLevel(tripleManifest)
|
|
69
|
+
if (!deferred) await db.open()
|
|
70
|
+
db[publicMethod]({ foo: 123, reverse: true, limit: 1 })
|
|
71
|
+
if (deferred) await db.open()
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
test(`${mode}().next() skips _next() if it previously signaled end (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
75
|
+
class MockLevel extends AbstractLevel {
|
|
76
|
+
[privateMethod] (options) {
|
|
77
|
+
return new MockIterator(this, options)
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
let calls = 0
|
|
82
|
+
|
|
83
|
+
class MockIterator extends Ctor {
|
|
84
|
+
async _next () {
|
|
85
|
+
if (calls++) return undefined
|
|
86
|
+
|
|
87
|
+
if (mode === 'iterator' || def) {
|
|
88
|
+
return ['a', 'a']
|
|
89
|
+
} else {
|
|
90
|
+
return 'a'
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const db = new MockLevel(utf8Manifest)
|
|
96
|
+
if (!deferred) await db.open()
|
|
97
|
+
const it = db[publicMethod]()
|
|
98
|
+
|
|
99
|
+
t.same(await it.next(), mode === 'iterator' ? ['a', 'a'] : 'a')
|
|
100
|
+
t.is(calls, 1, 'got one _next() call')
|
|
101
|
+
|
|
102
|
+
t.is(await it.next(), undefined)
|
|
103
|
+
t.is(calls, 2, 'got another _next() call')
|
|
104
|
+
|
|
105
|
+
t.is(await it.next(), undefined)
|
|
106
|
+
t.is(calls, 2, 'not called again')
|
|
107
|
+
})
|
|
108
|
+
|
|
109
|
+
for (const limit of [2, 0]) {
|
|
110
|
+
test(`${mode}().next() skips _next() when limit ${limit} is reached (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
111
|
+
class MockLevel extends AbstractLevel {
|
|
112
|
+
[privateMethod] (options) {
|
|
113
|
+
return new MockIterator(this, options)
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
let calls = 0
|
|
118
|
+
let yielded = 0
|
|
119
|
+
|
|
120
|
+
class MockIterator extends Ctor {
|
|
121
|
+
async _next () {
|
|
122
|
+
calls++
|
|
123
|
+
|
|
124
|
+
if (mode === 'iterator' || def) {
|
|
125
|
+
return ['a', 'a']
|
|
126
|
+
} else {
|
|
127
|
+
return 'a'
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const db = new MockLevel(utf8Manifest)
|
|
133
|
+
if (!deferred) await db.open()
|
|
134
|
+
|
|
135
|
+
const it = db[publicMethod]({ limit })
|
|
136
|
+
|
|
137
|
+
for (let i = 0; i < limit + 2; i++) {
|
|
138
|
+
const item = await it.next()
|
|
139
|
+
if (item === undefined) break
|
|
140
|
+
yielded++
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
t.is(it.count, limit, 'final count matches limit')
|
|
144
|
+
t.is(calls, limit)
|
|
145
|
+
t.is(yielded, limit)
|
|
146
|
+
})
|
|
147
|
+
|
|
148
|
+
test(`${mode}().nextv() skips _nextv() when limit ${limit} is reached (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
149
|
+
class MockLevel extends AbstractLevel {
|
|
150
|
+
[privateMethod] (options) {
|
|
151
|
+
return new MockIterator(this, options)
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
let calls = 0
|
|
156
|
+
let yielded = 0
|
|
157
|
+
|
|
158
|
+
class MockIterator extends Ctor {
|
|
159
|
+
async _nextv (size, options) {
|
|
160
|
+
calls++
|
|
161
|
+
|
|
162
|
+
if (mode === 'iterator' || def) {
|
|
163
|
+
return [['a', 'a']]
|
|
164
|
+
} else {
|
|
165
|
+
return ['a']
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const db = new MockLevel(utf8Manifest)
|
|
171
|
+
if (!deferred) await db.open()
|
|
172
|
+
|
|
173
|
+
const it = db[publicMethod]({ limit })
|
|
174
|
+
|
|
175
|
+
for (let i = 0; i < limit + 2; i++) {
|
|
176
|
+
const items = await it.nextv(1)
|
|
177
|
+
yielded += items.length
|
|
178
|
+
if (items.length === 0) break
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
t.is(it.count, limit, 'final count matches limit')
|
|
182
|
+
t.is(calls, limit)
|
|
183
|
+
t.is(yielded, limit)
|
|
184
|
+
})
|
|
185
|
+
|
|
186
|
+
test(`${mode}().all() skips _all() when limit ${limit} is reached (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
187
|
+
class MockLevel extends AbstractLevel {
|
|
188
|
+
[privateMethod] (options) {
|
|
189
|
+
return new MockIterator(this, options)
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
let nextCount = 0
|
|
194
|
+
class MockIterator extends Ctor {
|
|
195
|
+
async _next () {
|
|
196
|
+
if (++nextCount > 10) {
|
|
197
|
+
throw new Error('Potential infinite loop')
|
|
198
|
+
} else if (mode === 'iterator' || def) {
|
|
199
|
+
return ['a', 'a']
|
|
200
|
+
} else {
|
|
201
|
+
return 'a'
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
_all (options, callback) {
|
|
206
|
+
t.fail('should not be called')
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
const db = new MockLevel(utf8Manifest)
|
|
211
|
+
if (!deferred) await db.open()
|
|
212
|
+
|
|
213
|
+
const it = db[publicMethod]({ limit })
|
|
214
|
+
|
|
215
|
+
// Use next() because all() auto-closes and thus can't be used twice
|
|
216
|
+
for (let i = 0; i < limit; i++) await it.next()
|
|
217
|
+
|
|
218
|
+
t.same(await it.all(), [])
|
|
219
|
+
})
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
test(`${mode}().nextv() skips _nextv() if it previously signaled end (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
223
|
+
class MockLevel extends AbstractLevel {
|
|
224
|
+
[privateMethod] (options) {
|
|
225
|
+
return new MockIterator(this, options)
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
let calls = 0
|
|
230
|
+
|
|
231
|
+
class MockIterator extends Ctor {
|
|
232
|
+
async _nextv () {
|
|
233
|
+
if (calls++) return []
|
|
234
|
+
|
|
235
|
+
if (mode === 'iterator' || def) {
|
|
236
|
+
return [['a', 'a']]
|
|
237
|
+
} else {
|
|
238
|
+
return ['a']
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
const db = new MockLevel(utf8Manifest)
|
|
244
|
+
if (!deferred) await db.open()
|
|
245
|
+
const it = db[publicMethod]()
|
|
246
|
+
|
|
247
|
+
t.same(await it.nextv(100), [mode === 'iterator' ? ['a', 'a'] : 'a'])
|
|
248
|
+
t.is(calls, 1, 'got one _nextv() call')
|
|
249
|
+
|
|
250
|
+
t.same(await it.nextv(100), [])
|
|
251
|
+
t.is(calls, 2, 'got another _nextv() call')
|
|
252
|
+
|
|
253
|
+
t.same(await it.nextv(100), [])
|
|
254
|
+
t.is(calls, 2, 'not called again')
|
|
255
|
+
})
|
|
256
|
+
|
|
257
|
+
test(`${mode}().nextv() reduces size for _nextv() when near limit (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
258
|
+
class MockLevel extends AbstractLevel {
|
|
259
|
+
[privateMethod] (options) {
|
|
260
|
+
return new MockIterator(this, options)
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
class MockIterator extends Ctor {
|
|
265
|
+
async _nextv (size, options) {
|
|
266
|
+
if (mode === 'iterator' || def) {
|
|
267
|
+
return Array(size).fill(['a', 'a'])
|
|
268
|
+
} else {
|
|
269
|
+
return Array(size).fill('a')
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
const db = new MockLevel(utf8Manifest)
|
|
275
|
+
if (!deferred) await db.open()
|
|
276
|
+
|
|
277
|
+
const it = db[publicMethod]({ limit: 3 })
|
|
278
|
+
|
|
279
|
+
t.is((await it.nextv(2)).length, 2)
|
|
280
|
+
t.is((await it.nextv(2)).length, 1)
|
|
281
|
+
t.is((await it.nextv(2)).length, 0)
|
|
282
|
+
})
|
|
283
|
+
|
|
284
|
+
test(`${mode}().count increments by next(), nextv() and all() (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
285
|
+
class MockLevel extends AbstractLevel {
|
|
286
|
+
[privateMethod] (options) {
|
|
287
|
+
return new MockIterator(this, options)
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
class MockIterator extends Ctor {
|
|
292
|
+
async _next () {
|
|
293
|
+
if (mode === 'iterator' || def) {
|
|
294
|
+
return ['a', 'a']
|
|
295
|
+
} else {
|
|
296
|
+
return 'a'
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
async _nextv (size, options) {
|
|
301
|
+
if (mode === 'iterator' || def) {
|
|
302
|
+
return [['a', 'a'], ['b', 'b']]
|
|
303
|
+
} else {
|
|
304
|
+
return ['a', 'b']
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
async _all (options) {
|
|
309
|
+
if (mode === 'iterator' || def) {
|
|
310
|
+
return [['c', 'c'], ['d', 'd'], ['e', 'e']]
|
|
311
|
+
} else {
|
|
312
|
+
return ['c', 'd', 'e']
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
const db = new MockLevel(utf8Manifest)
|
|
318
|
+
if (!deferred) await db.open()
|
|
319
|
+
|
|
320
|
+
const it = db[publicMethod]()
|
|
321
|
+
|
|
322
|
+
for (let i = 0; i < 2; i++) {
|
|
323
|
+
t.isNot(await it.next(), undefined) // 2 * 1 = 2
|
|
324
|
+
t.is((await it.nextv(2)).length, 2) // 2 * 2 = 4
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
t.is(it.count, 2 + 4)
|
|
328
|
+
t.is((await it.all()).length, 3)
|
|
329
|
+
t.is(it.count, 2 + 4 + 3)
|
|
330
|
+
})
|
|
331
|
+
|
|
332
|
+
test(`${mode}() forwards encoding options (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
333
|
+
t.plan(3)
|
|
334
|
+
|
|
335
|
+
class MockLevel extends AbstractLevel {
|
|
336
|
+
[privateMethod] (options) {
|
|
337
|
+
t.is(options.keyEncoding, 'utf8')
|
|
338
|
+
t.is(options.valueEncoding, 'buffer')
|
|
339
|
+
|
|
340
|
+
return new MockIterator(this, options)
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
class MockIterator extends Ctor {
|
|
345
|
+
_next () {
|
|
346
|
+
if (mode === 'iterator' || def) {
|
|
347
|
+
return ['281', Buffer.from('a')]
|
|
348
|
+
} else if (mode === 'keys') {
|
|
349
|
+
return '281'
|
|
350
|
+
} else {
|
|
351
|
+
return Buffer.from('a')
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
const db = new MockLevel(dualManifest)
|
|
357
|
+
if (!deferred) await db.open()
|
|
358
|
+
|
|
359
|
+
const item = await db[publicMethod]({ keyEncoding: 'json', valueEncoding: 'hex' }).next()
|
|
360
|
+
t.same(item, mode === 'iterator' ? [281, '61'] : mode === 'keys' ? 281 : '61')
|
|
361
|
+
})
|
|
362
|
+
|
|
363
|
+
// NOTE: adapted from encoding-down
|
|
364
|
+
test(`${mode}() with custom encodings that want a buffer (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
365
|
+
t.plan(5)
|
|
366
|
+
|
|
367
|
+
class MockLevel extends AbstractLevel {
|
|
368
|
+
[privateMethod] (options) {
|
|
369
|
+
t.is(options.keyEncoding, 'buffer')
|
|
370
|
+
t.is(options.valueEncoding, 'buffer')
|
|
371
|
+
|
|
372
|
+
return new MockIterator(this, options)
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
class MockIterator extends Ctor {
|
|
377
|
+
async _next () {
|
|
378
|
+
if (mode === 'iterator' || def) {
|
|
379
|
+
return [Buffer.from('a'), Buffer.from('b')]
|
|
380
|
+
} else if (mode === 'keys') {
|
|
381
|
+
return Buffer.from('a')
|
|
382
|
+
} else {
|
|
383
|
+
return Buffer.from('b')
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
const db = new MockLevel(dualManifest)
|
|
389
|
+
const encoding = { encode: spy(identity), decode: spy(identity), format: 'buffer' }
|
|
390
|
+
if (!deferred) await db.open()
|
|
391
|
+
|
|
392
|
+
const it = db[publicMethod]({ keyEncoding: encoding, valueEncoding: encoding })
|
|
393
|
+
const item = await it.next()
|
|
394
|
+
|
|
395
|
+
t.is(encoding.encode.calls, 0, 'did not need to encode anything')
|
|
396
|
+
t.is(encoding.decode.calls, mode === 'iterator' ? 2 : 1)
|
|
397
|
+
t.same(item, mode === 'iterator' ? [Buffer.from('a'), Buffer.from('b')] : Buffer.from(mode === 'keys' ? 'a' : 'b'))
|
|
398
|
+
})
|
|
399
|
+
|
|
400
|
+
// NOTE: adapted from encoding-down
|
|
401
|
+
test(`${mode}() with custom encodings that want a string (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
402
|
+
t.plan(5)
|
|
403
|
+
|
|
404
|
+
class MockLevel extends AbstractLevel {
|
|
405
|
+
[privateMethod] (options) {
|
|
406
|
+
t.is(options.keyEncoding, 'utf8')
|
|
407
|
+
t.is(options.valueEncoding, 'utf8')
|
|
408
|
+
|
|
409
|
+
return new MockIterator(this, options)
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
class MockIterator extends Ctor {
|
|
414
|
+
async _next () {
|
|
415
|
+
if (mode === 'iterator' || def) {
|
|
416
|
+
return ['a', 'b']
|
|
417
|
+
} else if (mode === 'keys') {
|
|
418
|
+
return 'a'
|
|
419
|
+
} else {
|
|
420
|
+
return 'b'
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
const db = new MockLevel(dualManifest)
|
|
426
|
+
const encoding = { encode: spy(identity), decode: spy(identity), format: 'utf8' }
|
|
427
|
+
if (!deferred) await db.open()
|
|
428
|
+
|
|
429
|
+
const it = db[publicMethod]({ keyEncoding: encoding, valueEncoding: encoding })
|
|
430
|
+
const item = await it.next()
|
|
431
|
+
|
|
432
|
+
t.is(encoding.encode.calls, 0, 'did not need to encode anything')
|
|
433
|
+
t.is(encoding.decode.calls, mode === 'iterator' ? 2 : 1)
|
|
434
|
+
t.same(item, mode === 'iterator' ? ['a', 'b'] : mode === 'keys' ? 'a' : 'b')
|
|
435
|
+
})
|
|
436
|
+
|
|
437
|
+
// NOTE: adapted from encoding-down
|
|
438
|
+
test(`${mode}() encodes range options (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
439
|
+
t.plan(6)
|
|
440
|
+
|
|
441
|
+
let calls = 0
|
|
442
|
+
const keyEncoding = {
|
|
443
|
+
format: 'utf8',
|
|
444
|
+
encode (key) {
|
|
445
|
+
calls++
|
|
446
|
+
return 'encoded_' + key
|
|
447
|
+
},
|
|
448
|
+
decode: identity
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
class MockLevel extends AbstractLevel {
|
|
452
|
+
[privateMethod] (options) {
|
|
453
|
+
t.is(options.gt, 'encoded_3')
|
|
454
|
+
t.is(options.gte, 'encoded_4')
|
|
455
|
+
t.is(options.lt, 'encoded_5')
|
|
456
|
+
t.is(options.lte, 'encoded_6')
|
|
457
|
+
t.is(options.foo, 7)
|
|
458
|
+
return new Ctor(this, options)
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
const db = new MockLevel(utf8Manifest, { keyEncoding })
|
|
463
|
+
if (!deferred) await db.open()
|
|
464
|
+
await db[publicMethod]({ gt: 3, gte: 4, lt: 5, lte: 6, foo: 7 }).next()
|
|
465
|
+
t.is(calls, 4)
|
|
466
|
+
})
|
|
467
|
+
|
|
468
|
+
// NOTE: adapted from encoding-down
|
|
469
|
+
test(`${mode}() does not strip nullish range options (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
470
|
+
t.plan(12)
|
|
471
|
+
|
|
472
|
+
const db1 = mockLevel({
|
|
473
|
+
[privateMethod] (options) {
|
|
474
|
+
t.is(options.gt, '\x00', 'encoded null')
|
|
475
|
+
t.is(options.gte, '\x00', 'encoded null')
|
|
476
|
+
t.is(options.lt, '\x00', 'encoded null')
|
|
477
|
+
t.is(options.lte, '\x00', 'encoded null')
|
|
478
|
+
|
|
479
|
+
return new Ctor(this, options)
|
|
480
|
+
}
|
|
481
|
+
}, utf8Manifest, { keyEncoding: nullishEncoding, valueEncoding: nullishEncoding })
|
|
482
|
+
|
|
483
|
+
const db2 = mockLevel({
|
|
484
|
+
[privateMethod] (options) {
|
|
485
|
+
t.is(hasOwnProperty.call(options, 'gt'), true)
|
|
486
|
+
t.is(hasOwnProperty.call(options, 'gte'), true)
|
|
487
|
+
t.is(hasOwnProperty.call(options, 'lt'), true)
|
|
488
|
+
t.is(hasOwnProperty.call(options, 'lte'), true)
|
|
489
|
+
|
|
490
|
+
t.is(options.gt, '\xff', 'encoded undefined')
|
|
491
|
+
t.is(options.gte, '\xff', 'encoded undefined')
|
|
492
|
+
t.is(options.lt, '\xff', 'encoded undefined')
|
|
493
|
+
t.is(options.lte, '\xff', 'encoded undefined')
|
|
494
|
+
|
|
495
|
+
return new Ctor(this, options)
|
|
496
|
+
}
|
|
497
|
+
}, utf8Manifest, { keyEncoding: nullishEncoding, valueEncoding: nullishEncoding })
|
|
498
|
+
|
|
499
|
+
if (!deferred) {
|
|
500
|
+
await Promise.all([db1.open(), db2.open()])
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
const promise1 = db1[publicMethod]({
|
|
504
|
+
gt: null,
|
|
505
|
+
gte: null,
|
|
506
|
+
lt: null,
|
|
507
|
+
lte: null
|
|
508
|
+
}).next()
|
|
509
|
+
|
|
510
|
+
const promise2 = db2[publicMethod]({
|
|
511
|
+
gt: undefined,
|
|
512
|
+
gte: undefined,
|
|
513
|
+
lt: undefined,
|
|
514
|
+
lte: undefined
|
|
515
|
+
}).next()
|
|
516
|
+
|
|
517
|
+
return Promise.all([promise1, promise2])
|
|
518
|
+
})
|
|
519
|
+
|
|
520
|
+
// NOTE: adapted from encoding-down
|
|
521
|
+
test(`${mode}() does not add nullish range options (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
522
|
+
t.plan(4)
|
|
523
|
+
|
|
524
|
+
const db = mockLevel({
|
|
525
|
+
[privateMethod] (options) {
|
|
526
|
+
t.is(hasOwnProperty.call(options, 'gt'), false)
|
|
527
|
+
t.is(hasOwnProperty.call(options, 'gte'), false)
|
|
528
|
+
t.is(hasOwnProperty.call(options, 'lt'), false)
|
|
529
|
+
t.is(hasOwnProperty.call(options, 'lte'), false)
|
|
530
|
+
|
|
531
|
+
return new Ctor(this, options)
|
|
532
|
+
}
|
|
533
|
+
})
|
|
534
|
+
|
|
535
|
+
if (!deferred) await db.open()
|
|
536
|
+
await db[publicMethod]({}).next()
|
|
537
|
+
})
|
|
538
|
+
|
|
539
|
+
// NOTE: adapted from encoding-down
|
|
540
|
+
test(`${mode}() encodes seek target (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
541
|
+
t.plan(2)
|
|
542
|
+
|
|
543
|
+
const db = mockLevel({
|
|
544
|
+
[privateMethod] (options) {
|
|
545
|
+
return new MockIterator(this, options)
|
|
546
|
+
}
|
|
547
|
+
}, utf8Manifest, { keyEncoding: 'json' })
|
|
548
|
+
|
|
549
|
+
class MockIterator extends Ctor {
|
|
550
|
+
_seek (target, options) {
|
|
551
|
+
t.is(target, '"a"', 'encoded once')
|
|
552
|
+
t.same(options, { keyEncoding: 'utf8' })
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
if (!deferred) await db.open()
|
|
557
|
+
const it = db[publicMethod]()
|
|
558
|
+
it.seek('a')
|
|
559
|
+
await it.next()
|
|
560
|
+
})
|
|
561
|
+
|
|
562
|
+
// NOTE: adapted from encoding-down
|
|
563
|
+
test(`${mode}() encodes seek target with custom encoding (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
564
|
+
t.plan(1)
|
|
565
|
+
|
|
566
|
+
const targets = []
|
|
567
|
+
const db = mockLevel({
|
|
568
|
+
[privateMethod] (options) {
|
|
569
|
+
return new MockIterator(this, options)
|
|
570
|
+
}
|
|
571
|
+
}, utf8Manifest)
|
|
572
|
+
|
|
573
|
+
class MockIterator extends Ctor {
|
|
574
|
+
_seek (target) {
|
|
575
|
+
targets.push(target)
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
if (!deferred) await db.open()
|
|
580
|
+
|
|
581
|
+
db[publicMethod]().seek('a')
|
|
582
|
+
db[publicMethod]({ keyEncoding: 'json' }).seek('a')
|
|
583
|
+
db[publicMethod]().seek('b', { keyEncoding: 'json' })
|
|
584
|
+
|
|
585
|
+
await db.open()
|
|
586
|
+
t.same(targets, ['a', '"a"', '"b"'], 'encoded targets')
|
|
587
|
+
})
|
|
588
|
+
|
|
589
|
+
// NOTE: adapted from encoding-down
|
|
590
|
+
test(`${mode}() encodes nullish seek target (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
591
|
+
t.plan(1)
|
|
592
|
+
|
|
593
|
+
const targets = []
|
|
594
|
+
const db = mockLevel({
|
|
595
|
+
[privateMethod] (options) {
|
|
596
|
+
return new MockIterator(this, options)
|
|
597
|
+
}
|
|
598
|
+
}, utf8Manifest, { keyEncoding: { encode: String, decode: identity, format: 'utf8' } })
|
|
599
|
+
|
|
600
|
+
class MockIterator extends Ctor {
|
|
601
|
+
_seek (target) {
|
|
602
|
+
targets.push(target)
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
if (!deferred) await db.open()
|
|
607
|
+
|
|
608
|
+
// Unlike keys, nullish targets should not be rejected;
|
|
609
|
+
// assume that the encoding gives these types meaning.
|
|
610
|
+
db[publicMethod]().seek(null)
|
|
611
|
+
db[publicMethod]().seek(undefined)
|
|
612
|
+
|
|
613
|
+
await db.open()
|
|
614
|
+
t.same(targets, ['null', 'undefined'], 'encoded')
|
|
615
|
+
})
|
|
616
|
+
|
|
617
|
+
test(`${mode}() has default nextv() (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
618
|
+
const sizes = [[1, [0]], [1, [1]], [2, [2]], [3, [3]]]
|
|
619
|
+
t.plan(sizes.length * 2)
|
|
620
|
+
|
|
621
|
+
class MockLevel extends AbstractLevel {
|
|
622
|
+
[privateMethod] (options) {
|
|
623
|
+
return new MockIterator(this, options)
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
let pos = 0
|
|
628
|
+
class MockIterator extends Ctor {
|
|
629
|
+
async _next () {
|
|
630
|
+
if (mode === 'iterator' || def) {
|
|
631
|
+
return ['k' + pos, 'v' + (pos++)]
|
|
632
|
+
} else if (mode === 'keys') {
|
|
633
|
+
return 'k' + (pos++)
|
|
634
|
+
} else {
|
|
635
|
+
return 'v' + (pos++)
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
const db = new MockLevel(utf8Manifest)
|
|
641
|
+
if (!deferred) await db.open()
|
|
642
|
+
|
|
643
|
+
let expectedPos = 0
|
|
644
|
+
const it = db[publicMethod]()
|
|
645
|
+
|
|
646
|
+
for (const [size, args] of sizes) {
|
|
647
|
+
const actual = await it.nextv(...args)
|
|
648
|
+
const expected = []
|
|
649
|
+
|
|
650
|
+
for (let i = 0; i < size; i++) {
|
|
651
|
+
const pos = expectedPos++
|
|
652
|
+
if (mode === 'iterator') expected.push(['k' + pos, 'v' + pos])
|
|
653
|
+
else if (mode === 'keys') expected.push('k' + pos)
|
|
654
|
+
else expected.push('v' + pos)
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
t.is(actual.length, size)
|
|
658
|
+
t.same(actual, expected)
|
|
659
|
+
}
|
|
660
|
+
})
|
|
661
|
+
|
|
662
|
+
test(`${mode}() default nextv() forwards next() error (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
663
|
+
t.plan(2)
|
|
664
|
+
|
|
665
|
+
class MockLevel extends AbstractLevel {
|
|
666
|
+
[privateMethod] (options) {
|
|
667
|
+
return new MockIterator(this, options)
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
class MockIterator extends Ctor {
|
|
672
|
+
async _next () {
|
|
673
|
+
t.pass('called')
|
|
674
|
+
throw new Error('test')
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
const db = new MockLevel(utf8Manifest)
|
|
679
|
+
if (!deferred) await db.open()
|
|
680
|
+
|
|
681
|
+
try {
|
|
682
|
+
await db[publicMethod]().nextv(10)
|
|
683
|
+
} catch (err) {
|
|
684
|
+
t.is(err.message, 'test')
|
|
685
|
+
}
|
|
686
|
+
})
|
|
687
|
+
|
|
688
|
+
test(`${mode}() default nextv() stops when natural end is reached (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
689
|
+
let calls = 0
|
|
690
|
+
|
|
691
|
+
class MockLevel extends AbstractLevel {
|
|
692
|
+
[privateMethod] (options) {
|
|
693
|
+
return new MockIterator(this, options)
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
class MockIterator extends Ctor {
|
|
698
|
+
async _next () {
|
|
699
|
+
if (calls++) return undefined
|
|
700
|
+
|
|
701
|
+
if (mode === 'iterator' || def) {
|
|
702
|
+
return ['a', 'a']
|
|
703
|
+
} else {
|
|
704
|
+
return 'a'
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
const db = new MockLevel(utf8Manifest)
|
|
710
|
+
if (!deferred) await db.open()
|
|
711
|
+
const it = await db[publicMethod]()
|
|
712
|
+
|
|
713
|
+
t.same(await it.nextv(10), [mode === 'iterator' ? ['a', 'a'] : 'a'])
|
|
714
|
+
t.is(calls, 2)
|
|
715
|
+
|
|
716
|
+
t.same(await it.nextv(10), [], 'ended')
|
|
717
|
+
t.is(calls, 2, 'not called again')
|
|
718
|
+
})
|
|
719
|
+
|
|
720
|
+
test(`${mode}() has default all() (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
721
|
+
t.plan(8)
|
|
722
|
+
|
|
723
|
+
class MockLevel extends AbstractLevel {
|
|
724
|
+
[privateMethod] (options) {
|
|
725
|
+
return new MockIterator(this, options)
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
let pos = 0
|
|
730
|
+
let closes = 0
|
|
731
|
+
class MockIterator extends Ctor {
|
|
732
|
+
async _nextv (size, options) {
|
|
733
|
+
t.is(size, 1000)
|
|
734
|
+
t.same(options, {})
|
|
735
|
+
|
|
736
|
+
if (pos === 4) {
|
|
737
|
+
return []
|
|
738
|
+
} else if (mode === 'iterator' || def) {
|
|
739
|
+
return [[String(pos++), 'a'], [String(pos++), 'b']]
|
|
740
|
+
} else if (mode === 'keys') {
|
|
741
|
+
return [String(pos++), String(pos++)]
|
|
742
|
+
} else {
|
|
743
|
+
pos += 2
|
|
744
|
+
return ['a', 'b']
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
async _close () {
|
|
749
|
+
t.is(++closes, 1)
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
const db = new MockLevel(utf8Manifest)
|
|
754
|
+
if (!deferred) await db.open()
|
|
755
|
+
|
|
756
|
+
t.same(await db[publicMethod]().all(), [
|
|
757
|
+
['0', 'a'],
|
|
758
|
+
['1', 'b'],
|
|
759
|
+
['2', 'a'],
|
|
760
|
+
['3', 'b']
|
|
761
|
+
].map(kv => mode === 'iterator' ? kv : kv[mode === 'keys' ? 0 : 1]))
|
|
762
|
+
})
|
|
763
|
+
|
|
764
|
+
test(`${mode}() default all() forwards nextv() error (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
765
|
+
t.plan(2)
|
|
766
|
+
|
|
767
|
+
class MockLevel extends AbstractLevel {
|
|
768
|
+
[privateMethod] (options) {
|
|
769
|
+
return new MockIterator(this, options)
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
class MockIterator extends Ctor {
|
|
774
|
+
async _nextv (size, options) {
|
|
775
|
+
t.pass('called')
|
|
776
|
+
throw new Error('test')
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
const db = new MockLevel(utf8Manifest)
|
|
781
|
+
if (!deferred) await db.open()
|
|
782
|
+
|
|
783
|
+
try {
|
|
784
|
+
await db[publicMethod]().all()
|
|
785
|
+
} catch (err) {
|
|
786
|
+
t.is(err.message, 'test')
|
|
787
|
+
}
|
|
788
|
+
})
|
|
789
|
+
|
|
790
|
+
test(`${mode}() default all() stops when limit is reached (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
791
|
+
t.plan(2)
|
|
792
|
+
let calls = 0
|
|
793
|
+
|
|
794
|
+
class MockLevel extends AbstractLevel {
|
|
795
|
+
[privateMethod] (options) {
|
|
796
|
+
return new MockIterator(this, options)
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
|
|
800
|
+
class MockIterator extends Ctor {
|
|
801
|
+
async _nextv (size, options) {
|
|
802
|
+
calls++
|
|
803
|
+
if (mode === 'iterator' || def) {
|
|
804
|
+
return [[String(calls), String(calls)]]
|
|
805
|
+
} else {
|
|
806
|
+
return [String(calls)]
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
const db = new MockLevel(utf8Manifest)
|
|
812
|
+
if (!deferred) await db.open()
|
|
813
|
+
|
|
814
|
+
const items = await db[publicMethod]({ limit: 2 }).all()
|
|
815
|
+
t.is(items.length, 2)
|
|
816
|
+
t.is(calls, 2)
|
|
817
|
+
})
|
|
818
|
+
|
|
819
|
+
test(`${mode}() custom all() (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
820
|
+
t.plan(3)
|
|
821
|
+
|
|
822
|
+
class MockLevel extends AbstractLevel {
|
|
823
|
+
[privateMethod] (options) {
|
|
824
|
+
return new MockIterator(this, options)
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
|
|
828
|
+
class MockIterator extends Ctor {
|
|
829
|
+
async _all (options) {
|
|
830
|
+
t.same(options, {})
|
|
831
|
+
|
|
832
|
+
if (mode === 'iterator' || def) {
|
|
833
|
+
return [['k0', 'v0'], ['k1', 'v1']]
|
|
834
|
+
} else if (mode === 'keys') {
|
|
835
|
+
return ['k0', 'k1']
|
|
836
|
+
} else {
|
|
837
|
+
return ['v0', 'v1']
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
async _close () {
|
|
842
|
+
t.pass('closed')
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
const db = new MockLevel(utf8Manifest)
|
|
847
|
+
if (!deferred) await db.open()
|
|
848
|
+
|
|
849
|
+
t.same(await db[publicMethod]().all(), [
|
|
850
|
+
['k0', 'v0'],
|
|
851
|
+
['k1', 'v1']
|
|
852
|
+
].map(kv => mode === 'iterator' ? kv : kv[mode === 'keys' ? 0 : 1]))
|
|
853
|
+
})
|
|
854
|
+
|
|
855
|
+
test(`${mode}() custom all() forwards error and closes (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
856
|
+
t.plan(3)
|
|
857
|
+
|
|
858
|
+
class MockLevel extends AbstractLevel {
|
|
859
|
+
[privateMethod] (options) {
|
|
860
|
+
return new MockIterator(this, options)
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
class MockIterator extends Ctor {
|
|
865
|
+
async _all (options) {
|
|
866
|
+
t.pass('_all called')
|
|
867
|
+
throw new Error('test')
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
async _close () {
|
|
871
|
+
t.pass('closed')
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
const db = new MockLevel(utf8Manifest)
|
|
876
|
+
if (!deferred) await db.open()
|
|
877
|
+
|
|
878
|
+
try {
|
|
879
|
+
await db[publicMethod]().all()
|
|
880
|
+
} catch (err) {
|
|
881
|
+
t.is(err.message, 'test')
|
|
882
|
+
}
|
|
883
|
+
})
|
|
884
|
+
|
|
885
|
+
test(`${mode}() all() combines errors (deferred: ${deferred}, default implementation: ${def})`, async function (t) {
|
|
886
|
+
t.plan(4)
|
|
887
|
+
|
|
888
|
+
class MockLevel extends AbstractLevel {
|
|
889
|
+
[privateMethod] (options) {
|
|
890
|
+
return new MockIterator(this, options)
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
class MockIterator extends Ctor {
|
|
895
|
+
async _all (options) {
|
|
896
|
+
t.pass('_all called')
|
|
897
|
+
throw new Error('all error')
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
async _close () {
|
|
901
|
+
t.pass('closed')
|
|
902
|
+
throw new Error('close error')
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
const db = new MockLevel(utf8Manifest)
|
|
907
|
+
if (!deferred) await db.open()
|
|
908
|
+
|
|
909
|
+
try {
|
|
910
|
+
await db[publicMethod]().all()
|
|
911
|
+
} catch (err) {
|
|
912
|
+
t.is(err.name, 'CombinedError')
|
|
913
|
+
t.is(err.message, 'all error; close error')
|
|
914
|
+
}
|
|
915
|
+
})
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
for (const deferred of [false, true]) {
|
|
920
|
+
// NOTE: adapted from encoding-down
|
|
921
|
+
test(`iterator().next() skips decoding keys if options.keys is false (deferred: ${deferred})`, async function (t) {
|
|
922
|
+
t.plan(3)
|
|
923
|
+
|
|
924
|
+
const keyEncoding = {
|
|
925
|
+
format: 'utf8',
|
|
926
|
+
decode (key) {
|
|
927
|
+
t.fail('should not be called')
|
|
928
|
+
},
|
|
929
|
+
encode: identity
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
const db = mockLevel({
|
|
933
|
+
_iterator (options) {
|
|
934
|
+
t.is(options.keys, false)
|
|
935
|
+
|
|
936
|
+
return mockIterator(this, options, {
|
|
937
|
+
async _next () {
|
|
938
|
+
return ['', 'value']
|
|
939
|
+
}
|
|
940
|
+
})
|
|
941
|
+
}
|
|
942
|
+
}, utf8Manifest, { keyEncoding })
|
|
943
|
+
|
|
944
|
+
if (!deferred) await db.open()
|
|
945
|
+
const [key, value] = await db.iterator({ keys: false }).next()
|
|
946
|
+
|
|
947
|
+
t.is(key, undefined, 'normalized key to undefined')
|
|
948
|
+
t.is(value, 'value', 'got value')
|
|
949
|
+
})
|
|
950
|
+
|
|
951
|
+
// NOTE: adapted from encoding-down
|
|
952
|
+
test(`iterator().next() skips decoding values if options.values is false (deferred: ${deferred})`, async function (t) {
|
|
953
|
+
t.plan(3)
|
|
954
|
+
|
|
955
|
+
const valueEncoding = {
|
|
956
|
+
format: 'utf8',
|
|
957
|
+
decode (value) {
|
|
958
|
+
t.fail('should not be called')
|
|
959
|
+
},
|
|
960
|
+
encode: identity
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
const db = mockLevel({
|
|
964
|
+
_iterator (options) {
|
|
965
|
+
t.is(options.values, false)
|
|
966
|
+
|
|
967
|
+
return mockIterator(this, options, {
|
|
968
|
+
async _next () {
|
|
969
|
+
return ['key', '']
|
|
970
|
+
}
|
|
971
|
+
})
|
|
972
|
+
}
|
|
973
|
+
}, utf8Manifest, { valueEncoding })
|
|
974
|
+
|
|
975
|
+
if (!deferred) await db.open()
|
|
976
|
+
const [key, value] = await db.iterator({ values: false }).next()
|
|
977
|
+
|
|
978
|
+
t.is(key, 'key', 'got key')
|
|
979
|
+
t.is(value, undefined, 'normalized value to undefined')
|
|
980
|
+
})
|
|
981
|
+
|
|
982
|
+
test(`keys().all() default skips decoding undefined keys (deferred: ${deferred})`, async function (t) {
|
|
983
|
+
t.plan(3)
|
|
984
|
+
|
|
985
|
+
const keyEncoding = {
|
|
986
|
+
format: 'utf8',
|
|
987
|
+
decode (key) {
|
|
988
|
+
t.isNot(key, undefined)
|
|
989
|
+
return key
|
|
990
|
+
},
|
|
991
|
+
encode: identity
|
|
992
|
+
}
|
|
993
|
+
|
|
994
|
+
class MockIterator extends AbstractKeyIterator {
|
|
995
|
+
async _all () {
|
|
996
|
+
// Note, this is technically invalid
|
|
997
|
+
return ['1', undefined, '3']
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
const db = mockLevel({
|
|
1002
|
+
_keys (options) {
|
|
1003
|
+
return new MockIterator(this, options)
|
|
1004
|
+
}
|
|
1005
|
+
}, utf8Manifest, { keyEncoding })
|
|
1006
|
+
|
|
1007
|
+
if (!deferred) await db.open()
|
|
1008
|
+
|
|
1009
|
+
t.same(await db.keys().all(), ['1', undefined, '3'])
|
|
1010
|
+
})
|
|
1011
|
+
|
|
1012
|
+
test(`values().all() default skips decoding undefined values (deferred: ${deferred})`, async function (t) {
|
|
1013
|
+
t.plan(3)
|
|
1014
|
+
|
|
1015
|
+
const valueEncoding = {
|
|
1016
|
+
format: 'utf8',
|
|
1017
|
+
decode (value) {
|
|
1018
|
+
t.isNot(value, undefined)
|
|
1019
|
+
return value
|
|
1020
|
+
},
|
|
1021
|
+
encode: identity
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1024
|
+
class MockIterator extends AbstractValueIterator {
|
|
1025
|
+
async _all () {
|
|
1026
|
+
// Note, this is technically invalid
|
|
1027
|
+
return ['1', undefined, '3']
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
const db = mockLevel({
|
|
1032
|
+
_values (options) {
|
|
1033
|
+
return new MockIterator(this, options)
|
|
1034
|
+
}
|
|
1035
|
+
}, utf8Manifest, { valueEncoding })
|
|
1036
|
+
|
|
1037
|
+
if (!deferred) await db.open()
|
|
1038
|
+
|
|
1039
|
+
t.same(await db.values().all(), ['1', undefined, '3'])
|
|
1040
|
+
})
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
function spy (fn) {
|
|
1044
|
+
const wrapped = function (...args) {
|
|
1045
|
+
wrapped.calls++
|
|
1046
|
+
return fn(...args)
|
|
1047
|
+
}
|
|
1048
|
+
wrapped.calls = 0
|
|
1049
|
+
return wrapped
|
|
1050
|
+
}
|