From ef5491075ffd6425913252e79358c7c699f22553 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Fri, 28 Nov 2025 07:53:15 +0000 Subject: [PATCH] fix(collectionfactory): Simplify CollectionFactory.getCollection: remove unnecessary IIFE and instantiate collection only when dbArg is SmartdataDb --- changelog.md | 7 +++ deno.lock | 85 +++++++++++++++++++-------------- ts/00_commitinfo_data.ts | 2 +- ts/classes.collectionfactory.ts | 9 +--- 4 files changed, 59 insertions(+), 44 deletions(-) diff --git a/changelog.md b/changelog.md index 169faf6..05aef5c 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,12 @@ # Changelog +## 2025-11-28 - 7.0.2 - fix(collectionfactory) +Simplify CollectionFactory.getCollection: remove unnecessary IIFE and instantiate collection only when dbArg is SmartdataDb + +- Remove redundant IIFE wrapper in getCollection for improved readability +- Only create and cache a SmartdataCollection when dbArg is an instance of SmartdataDb +- Avoid assigning undefined to the collections map by guarding instantiation and returning existing collection + ## 2025-11-27 - 7.0.1 - fix(build) Update build tooling and TypeScript compilation target diff --git a/deno.lock b/deno.lock index a17036b..ac2e40a 100644 --- a/deno.lock +++ b/deno.lock @@ -1,7 +1,7 @@ { "version": "5", "specifiers": { - "npm:@git.zone/tsbuild@^3.1.0": "3.1.0", + "npm:@git.zone/tsbuild@^3.1.1": "3.1.1", "npm:@git.zone/tsrun@2": "2.0.0", "npm:@git.zone/tstest@^3.1.3": "3.1.3", "npm:@push.rocks/lik@^6.2.2": "6.2.2", @@ -57,7 +57,7 @@ "@push.rocks/smartdelay", "@push.rocks/smartenv@5.0.13", "@push.rocks/smartfeed", - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smartjson", "@push.rocks/smartlog", "@push.rocks/smartlog-destination-devtools", @@ -1111,21 +1111,21 @@ ], "tarball": "https://verdaccio.lossless.digital/@esm-bundle/chai/-/chai-4.3.4-fix.0.tgz" }, - "@git.zone/tsbuild@3.1.0": { - "integrity": "sha512-j8lMd84pmzWiU6NG3e+pyu0o41oo6mQVfcZv8kDsCrQwZMhoQV9Jp87MlU0i/XI5IZkqDjelG8Kx1QhOmbK+iQ==", + "@git.zone/tsbuild@3.1.1": { + "integrity": "sha512-x2MxBu5vaGabWGLS2Rcu/75VDKRZ0F74x0wEzgWPEqG/z9+vFu+8E70FOHj/TZJdnrw0yLEL78dUartNdGqm3A==", "dependencies": [ "@git.zone/tspublish", "@push.rocks/early", "@push.rocks/smartcli", "@push.rocks/smartdelay", - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smartlog", "@push.rocks/smartpath@6.0.0", "@push.rocks/smartpromise", "typescript" ], "bin": true, - "tarball": "https://verdaccio.lossless.digital/@git.zone/tsbuild/-/tsbuild-3.1.0.tgz" + "tarball": "https://verdaccio.lossless.digital/@git.zone/tsbuild/-/tsbuild-3.1.1.tgz" }, "@git.zone/tsbundle@2.6.1": { "integrity": "sha512-P1ER6A859GBY5mmC2hNro06O1w/vYCDt5XaetE4vsyJMlFSvWGXrKTxFpTdookZvntQyoXJglYsCPKEsy+OXWQ==", @@ -1155,7 +1155,7 @@ "@push.rocks/consolecolor", "@push.rocks/smartcli", "@push.rocks/smartdelay", - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smartlog", "@push.rocks/smartnpm", "@push.rocks/smartpath@6.0.0", @@ -1168,7 +1168,7 @@ "@git.zone/tsrun@2.0.0": { "integrity": "sha512-yA6zCjL+kn7xfZe6sL/m4K+zYqgkznG/pF6++i/E17iwzpG6dHmW+VZmYldHe86sW4DcLMvqM6CxM+KlgaEpKw==", "dependencies": [ - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smartshell", "tsx" ], @@ -1189,7 +1189,7 @@ "@push.rocks/smartdelay", "@push.rocks/smartenv@6.0.0", "@push.rocks/smartexpect", - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smartjson", "@push.rocks/smartlog", "@push.rocks/smartmongo", @@ -1625,7 +1625,7 @@ "@push.rocks/smartcache", "@push.rocks/smartenv@5.0.13", "@push.rocks/smartexit", - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smartjson", "@push.rocks/smartpath@6.0.0", "@push.rocks/smartpromise", @@ -1654,7 +1654,7 @@ "integrity": "sha512-kW0ZUGyf1e4nwloVwBQjNId+MzgTcNS834C+RxH21i1NqyOubbpWZtJtPP+K+s35nSJRyCTy3ICfBMdDBTAm2w==", "dependencies": [ "@push.rocks/lik", - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smartjson", "@push.rocks/smartpath@6.0.0", "@push.rocks/smartpromise", @@ -1668,17 +1668,17 @@ "dependencies": [ "@api.global/typedrequest", "@configvault.io/interfaces", - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smartlog", "@push.rocks/smartpath@6.0.0" ], "tarball": "https://verdaccio.lossless.digital/@push.rocks/qenv/-/qenv-6.1.3.tgz" }, - "@push.rocks/smartarchive@4.2.2": { - "integrity": "sha512-6EpqbKU32D6Gcqsc9+Tn1dOCU5HoTlrqqs/7IdUr9Tirp9Ngtptkapca1Fw/D0kVJ7SSw3kG/miAYnuPMZLEoA==", + "@push.rocks/smartarchive@4.2.4": { + "integrity": "sha512-uiqVAXPxmr8G5rv3uZvZFMOCt8l7cZC3nzvsy4YQqKf/VkPhKIEX+b7LkAeNlxPSYUiBQUkNRoawg9+5BaMcHg==", "dependencies": [ "@push.rocks/smartdelay", - "@push.rocks/smartfile", + "@push.rocks/smartfile@13.0.1", "@push.rocks/smartpath@6.0.0", "@push.rocks/smartpromise", "@push.rocks/smartrequest@4.4.2", @@ -1688,11 +1688,10 @@ "@push.rocks/smarturl", "@types/tar-stream", "fflate", - "file-type@21.1.0", - "tar-stream", - "through" + "file-type@21.1.1", + "tar-stream" ], - "tarball": "https://verdaccio.lossless.digital/@push.rocks/smartarchive/-/smartarchive-4.2.2.tgz" + "tarball": "https://verdaccio.lossless.digital/@push.rocks/smartarchive/-/smartarchive-4.2.4.tgz" }, "@push.rocks/smartbrowser@2.0.8": { "integrity": "sha512-0KWRZj3TuKo/sNwgPbiSE6WL+TMeR19t1JmXBZWh9n8iA2mpc4HhMrQAndEUdRCkx5ofSaHWojIRVFzGChj0Dg==", @@ -1913,6 +1912,25 @@ ], "tarball": "https://verdaccio.lossless.digital/@push.rocks/smartfile/-/smartfile-11.2.7.tgz" }, + "@push.rocks/smartfile@13.0.1": { + "integrity": "sha512-phtryDFtBYHo7R2H9V3Y7VeiYQU9YzKL140gKD3bTicBgXoIYrJ6+b3mbZunSO2yQt1Vy1AxCxYXrFE/K+4grw==", + "dependencies": [ + "@push.rocks/lik", + "@push.rocks/smartdelay", + "@push.rocks/smartfile-interfaces", + "@push.rocks/smarthash", + "@push.rocks/smartjson", + "@push.rocks/smartmime", + "@push.rocks/smartpath@6.0.0", + "@push.rocks/smartpromise", + "@push.rocks/smartrequest@4.4.2", + "@push.rocks/smartstream", + "@types/js-yaml@4.0.9", + "glob@11.0.3", + "js-yaml@4.1.1" + ], + "tarball": "https://verdaccio.lossless.digital/@push.rocks/smartfile/-/smartfile-13.0.1.tgz" + }, "@push.rocks/smartfs@1.1.0": { "integrity": "sha512-fg8JIjFUPPX5laRoBpTaGwhMfZ3Y8mFT4fUaW54Y4J/BfOBa/y0+rIFgvgvqcOZgkQlyZU+FIfL8Z6zezqxyTg==", "dependencies": [ @@ -1980,7 +1998,7 @@ "@push.rocks/consolecolor", "@push.rocks/isounique", "@push.rocks/smartclickhouse", - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smarthash", "@push.rocks/smartpromise", "@push.rocks/smarttime", @@ -2054,7 +2072,7 @@ "@push.rocks/consolecolor", "@push.rocks/levelcache", "@push.rocks/smartarchive", - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smartpath@6.0.0", "@push.rocks/smartpromise", "@push.rocks/smartrequest@4.4.2", @@ -2102,7 +2120,7 @@ "dependencies": [ "@push.rocks/smartbuffer", "@push.rocks/smartdelay", - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smartnetwork", "@push.rocks/smartpath@6.0.0", "@push.rocks/smartpromise", @@ -2193,7 +2211,7 @@ "integrity": "sha512-f2i2keHs+KZr5cyB8nBOnmRGiE2YG42W4pSx+8gmZEsf8yZUT1iUnuD/YZVTKosH2v5dPCKdmtSpMSux8Q/tCw==", "dependencies": [ "@push.rocks/smartbucket@3.3.10", - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smartpath@6.0.0", "@tsclass/tsclass@9.3.0", "@types/s3rver", @@ -2363,7 +2381,7 @@ "@push.rocks/smartdelay", "@push.rocks/smartenv@5.0.13", "@push.rocks/smartexpect", - "@push.rocks/smartfile", + "@push.rocks/smartfile@11.2.7", "@push.rocks/smartjson", "@push.rocks/smartmongo", "@push.rocks/smartpath@5.1.0", @@ -3229,14 +3247,13 @@ "integrity": "sha512-hPJQKO7+oAIY+pDNImrZ9QAINbz9KmwT+yO4iRVwdPanok2YKpaUxdJzIvCUwY0YgAawlvYdffbLvRLV5hbs2g==", "tarball": "https://verdaccio.lossless.digital/@tempfix/idb/-/idb-8.0.3.tgz" }, - "@tokenizer/inflate@0.3.1": { - "integrity": "sha512-4oeoZEBQdLdt5WmP/hx1KZ6D3/Oid/0cUb2nk4F0pTDAWy+KCH3/EnAkZF/bvckWo8I33EqBm01lIPgmgc8rCA==", + "@tokenizer/inflate@0.4.1": { + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", "dependencies": [ "debug@4.4.3", - "fflate", "token-types" ], - "tarball": "https://verdaccio.lossless.digital/@tokenizer/inflate/-/inflate-0.3.1.tgz" + "tarball": "https://verdaccio.lossless.digital/@tokenizer/inflate/-/inflate-0.4.1.tgz" }, "@tokenizer/token@0.3.0": { "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", @@ -5053,15 +5070,15 @@ ], "tarball": "https://verdaccio.lossless.digital/file-type/-/file-type-19.6.0.tgz" }, - "file-type@21.1.0": { - "integrity": "sha512-boU4EHmP3JXkwDo4uhyBhTt5pPstxB6eEXKJBu2yu2l7aAMMm7QQYQEzssJmKReZYrFdFOJS8koVo6bXIBGDqA==", + "file-type@21.1.1": { + "integrity": "sha512-ifJXo8zUqbQ/bLbl9sFoqHNTNWbnPY1COImFfM6CCy7z+E+jC1eY9YfOKkx0fckIg+VljAy2/87T61fp0+eEkg==", "dependencies": [ "@tokenizer/inflate", "strtok3@10.3.4", "token-types", "uint8array-extras" ], - "tarball": "https://verdaccio.lossless.digital/file-type/-/file-type-21.1.0.tgz" + "tarball": "https://verdaccio.lossless.digital/file-type/-/file-type-21.1.1.tgz" }, "fill-range@7.1.1": { "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", @@ -7925,10 +7942,6 @@ ], "tarball": "https://verdaccio.lossless.digital/through2/-/through2-4.0.2.tgz" }, - "through@2.3.8": { - "integrity": "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5", - "tarball": "https://verdaccio.lossless.digital/through/-/through-2.3.8.tgz" - }, "tiny-worker@2.3.0": { "integrity": "sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==", "dependencies": [ @@ -8356,7 +8369,7 @@ "workspace": { "packageJson": { "dependencies": [ - "npm:@git.zone/tsbuild@^3.1.0", + "npm:@git.zone/tsbuild@^3.1.1", "npm:@git.zone/tsrun@2", "npm:@git.zone/tstest@^3.1.3", "npm:@push.rocks/lik@^6.2.2", diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index ad85b72..606b6a9 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/smartdata', - version: '7.0.1', + version: '7.0.2', description: 'An advanced library for NoSQL data organization and manipulation using TypeScript with support for MongoDB, data validation, collections, and custom data types.' } diff --git a/ts/classes.collectionfactory.ts b/ts/classes.collectionfactory.ts index 90f3cec..7a1d87e 100644 --- a/ts/classes.collectionfactory.ts +++ b/ts/classes.collectionfactory.ts @@ -6,13 +6,8 @@ export class CollectionFactory { public collections: { [key: string]: SmartdataCollection } = {}; public getCollection = (nameArg: string, dbArg: SmartdataDb): SmartdataCollection => { - if (!this.collections[nameArg]) { - this.collections[nameArg] = (() => { - if (dbArg instanceof SmartdataDb) { - // tslint:disable-next-line: no-string-literal - return new SmartdataCollection(nameArg, dbArg); - } - })(); + if (!this.collections[nameArg] && dbArg instanceof SmartdataDb) { + this.collections[nameArg] = new SmartdataCollection(nameArg, dbArg); } return this.collections[nameArg]; };