diff --git a/package.json b/package.json index 74a6416..a9abca5 100644 --- a/package.json +++ b/package.json @@ -34,13 +34,13 @@ "@push.rocks/smartmime": "^1.0.5", "@push.rocks/smartpath": "^5.0.11", "@push.rocks/smartpromise": "^4.0.2", - "@push.rocks/smartrequest": "^2.0.18", - "@push.rocks/smartstream": "^2.0.4", - "@types/fs-extra": "^11.0.2", + "@push.rocks/smartrequest": "^2.0.20", + "@push.rocks/smartstream": "^3.0.7", + "@types/fs-extra": "^11.0.3", "@types/glob": "^8.1.0", - "@types/js-yaml": "^4.0.6", + "@types/js-yaml": "^4.0.8", "fs-extra": "^11.1.1", - "glob": "^10.3.5", + "glob": "^10.3.10", "js-yaml": "^4.1.0" }, "devDependencies": { @@ -48,7 +48,7 @@ "@git.zone/tsrun": "^1.2.46", "@git.zone/tstest": "^1.0.81", "@push.rocks/tapbundle": "^5.0.15", - "@types/node": "^20.6.3" + "@types/node": "^20.8.10" }, "files": [ "ts/**/*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 502c9a7..0c2be58 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,26 +30,26 @@ dependencies: specifier: ^4.0.2 version: 4.0.3 '@push.rocks/smartrequest': - specifier: ^2.0.18 - version: 2.0.18 + specifier: ^2.0.20 + version: 2.0.20 '@push.rocks/smartstream': - specifier: ^2.0.4 - version: 2.0.4 + specifier: ^3.0.7 + version: 3.0.7 '@types/fs-extra': - specifier: ^11.0.2 - version: 11.0.2 + specifier: ^11.0.3 + version: 11.0.3 '@types/glob': specifier: ^8.1.0 version: 8.1.0 '@types/js-yaml': - specifier: ^4.0.6 - version: 4.0.6 + specifier: ^4.0.8 + version: 4.0.8 fs-extra: specifier: ^11.1.1 version: 11.1.1 glob: - specifier: ^10.3.5 - version: 10.3.5 + specifier: ^10.3.10 + version: 10.3.10 js-yaml: specifier: ^4.1.0 version: 4.1.0 @@ -60,16 +60,16 @@ devDependencies: version: 2.1.70 '@git.zone/tsrun': specifier: ^1.2.46 - version: 1.2.46(@types/node@20.6.3) + version: 1.2.46(@types/node@20.8.10) '@git.zone/tstest': specifier: ^1.0.81 - version: 1.0.81(@types/node@20.6.3)(sinon@16.0.0) + version: 1.0.81(@types/node@20.8.10)(sinon@17.0.1) '@push.rocks/tapbundle': specifier: ^5.0.15 - version: 5.0.15(sinon@16.0.0) + version: 5.0.15(sinon@17.0.1) '@types/node': - specifier: ^20.6.3 - version: 20.6.3 + specifier: ^20.8.10 + version: 20.8.10 packages: @@ -107,7 +107,7 @@ packages: '@push.rocks/smartopen': 2.0.0 '@push.rocks/smartpath': 5.0.11 '@push.rocks/smartpromise': 4.0.3 - '@push.rocks/smartrequest': 2.0.18 + '@push.rocks/smartrequest': 2.0.20 '@push.rocks/smartrx': 3.0.6 '@push.rocks/smartsitemap': 2.0.2 '@push.rocks/smarttime': 4.0.5 @@ -411,13 +411,13 @@ packages: - supports-color dev: true - /@git.zone/tsrun@1.2.46(@types/node@20.6.3): + /@git.zone/tsrun@1.2.46(@types/node@20.8.10): resolution: {integrity: sha512-8miFVBle9Mnjx+uPGI/P+EuWcIOXWjBAkdjN5IYbdp5Ytt4xQODCLh4JSnC9h56UeU1nUxCAxZeJs2e9TXrivA==} hasBin: true dependencies: '@push.rocks/smartfile': 10.0.30 '@push.rocks/smartshell': 3.0.3 - ts-node: 10.9.1(@types/node@20.6.3)(typescript@5.1.6) + ts-node: 10.9.1(@types/node@20.8.10)(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - '@swc/core' @@ -425,13 +425,13 @@ packages: - '@types/node' dev: true - /@git.zone/tstest@1.0.81(@types/node@20.6.3)(sinon@16.0.0): + /@git.zone/tstest@1.0.81(@types/node@20.8.10)(sinon@17.0.1): resolution: {integrity: sha512-OUTACsOmvvzbKay4i1hbBaToLzo/OaCYV1PiYpoK9S2BJMbVJAik+ZbdixbJugoLrw7bR9velYgT66lnS6OZUA==} hasBin: true dependencies: '@api.global/typedserver': 3.0.5 '@git.zone/tsbundle': 2.0.9 - '@git.zone/tsrun': 1.2.46(@types/node@20.6.3) + '@git.zone/tsrun': 1.2.46(@types/node@20.8.10) '@push.rocks/consolecolor': 2.0.1 '@push.rocks/smartbrowser': 2.0.6 '@push.rocks/smartdelay': 3.0.5 @@ -439,7 +439,7 @@ packages: '@push.rocks/smartlog': 3.0.3 '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartshell': 3.0.3 - '@push.rocks/tapbundle': 5.0.15(sinon@16.0.0) + '@push.rocks/tapbundle': 5.0.15(sinon@17.0.1) figures: 5.0.0 transitivePeerDependencies: - '@swc/core' @@ -555,7 +555,7 @@ packages: lit-html: 1.4.1 dev: true - /@open-wc/testing@2.5.33(sinon@16.0.0): + /@open-wc/testing@2.5.33(sinon@17.0.1): resolution: {integrity: sha512-+EJNs0i+VV4nE+BrG70l2DNGXOZTSrluruaaU06HUSk57ZlKa+kIxWmkLxCOLlbgnQgrPrQWxbs3lgB1tIx/YA==} dependencies: '@open-wc/chai-dom-equals': 0.12.36 @@ -569,7 +569,7 @@ packages: chai-a11y-axe: 1.5.0 chai-dom: 1.11.0(chai@4.3.8)(mocha@6.2.3) mocha: 6.2.3 - sinon-chai: 3.7.0(chai@4.3.8)(sinon@16.0.0) + sinon-chai: 3.7.0(chai@4.3.8)(sinon@17.0.1) transitivePeerDependencies: - bufferutil - sinon @@ -703,13 +703,13 @@ packages: '@push.rocks/smartmime': 1.0.6 '@push.rocks/smartpath': 5.0.11 '@push.rocks/smartpromise': 4.0.3 - '@push.rocks/smartrequest': 2.0.18 - '@push.rocks/smartstream': 2.0.4 - '@types/fs-extra': 11.0.2 + '@push.rocks/smartrequest': 2.0.20 + '@push.rocks/smartstream': 2.0.8 + '@types/fs-extra': 11.0.3 '@types/glob': 8.1.0 - '@types/js-yaml': 4.0.6 + '@types/js-yaml': 4.0.8 fs-extra: 11.1.1 - glob: 10.3.5 + glob: 10.3.10 js-yaml: 4.1.0 dev: true @@ -724,13 +724,13 @@ packages: '@push.rocks/smartmime': 1.0.6 '@push.rocks/smartpath': 5.0.11 '@push.rocks/smartpromise': 4.0.3 - '@push.rocks/smartrequest': 2.0.18 - '@push.rocks/smartstream': 2.0.4 - '@types/fs-extra': 11.0.2 + '@push.rocks/smartrequest': 2.0.20 + '@push.rocks/smartstream': 2.0.8 + '@types/fs-extra': 11.0.3 '@types/glob': 8.1.0 - '@types/js-yaml': 4.0.6 + '@types/js-yaml': 4.0.8 fs-extra: 11.1.1 - glob: 10.3.5 + glob: 10.3.10 js-yaml: 4.1.0 dev: true @@ -861,8 +861,8 @@ packages: - utf-8-validate dev: true - /@push.rocks/smartrequest@2.0.18: - resolution: {integrity: sha512-MsTou9rRHhlhBC83dUGoi6quYKrWD9urI23Bcgk2GjvkiOpaddpSib6x1cQfidoOVpwP7LaVDMD+tFnW4CpWRA==} + /@push.rocks/smartrequest@2.0.20: + resolution: {integrity: sha512-7Y22kOS9CGJLjayjpRbkoDxd5kqmnG9WDY1WWR3/kqo63WFhdgHueatmJjT/v1QqvKSG88gL36kG4f7YG/0xTA==} dependencies: '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smarturl': 3.0.7 @@ -875,6 +875,12 @@ packages: '@push.rocks/smartpromise': 4.0.3 rxjs: 7.8.1 + /@push.rocks/smartrx@3.0.7: + resolution: {integrity: sha512-qCWy0s3RLAgGSnaw/Gu0BNaJ59CsI6RK5OJDCCqxc7P2X/S755vuLtnAR5/0dEjdhCHXHX9ytPZx+o9g/CNiyA==} + dependencies: + '@push.rocks/smartpromise': 4.0.3 + rxjs: 7.8.1 + /@push.rocks/smartshell@3.0.3: resolution: {integrity: sha512-S4RXI76ltPetdJ8Gv4HlnlhR/hXDV8QmSU7TdhLEe171ZzfouAyt9XZ4MFDCtjk3VQ4Mw+zz4mSDaACXP/QdlQ==} dependencies: @@ -932,15 +938,23 @@ packages: - supports-color dev: true - /@push.rocks/smartstream@2.0.4: - resolution: {integrity: sha512-rbQf4+sLle9ga6RidRv0WXb/TuLFcMordRQBbqPq01n/mpBHoEiqIThWzVuImPVRVuSK/LKbM/QX4Ey26FFerg==} + /@push.rocks/smartstream@2.0.8: + resolution: {integrity: sha512-GlF/9cCkvBHwKa3DK4DO5wjfSgqkj6gAS4TrY9uD5NMHu9RQv4WiNrElTYj7iCEpnZgUnLO3tzw1JA3NRIMnnA==} dependencies: '@push.rocks/smartpromise': 4.0.3 - '@push.rocks/smartrx': 3.0.6 - '@types/from2': 2.3.2 - '@types/through2': 2.0.38 + '@push.rocks/smartrx': 3.0.7 + '@types/from2': 2.3.4 + '@types/through2': 2.0.40 from2: 2.3.0 through2: 4.0.2 + dev: true + + /@push.rocks/smartstream@3.0.7: + resolution: {integrity: sha512-F4HsYlMJusa7uf18aIXGuuAdlPxKaIcr7UDMLg4QUCtGK114SVt6E+72bXtN6yPyZ40+x8BVUWUkkTOdw22BeA==} + dependencies: + '@push.rocks/smartpromise': 4.0.3 + '@push.rocks/smartrx': 3.0.7 + dev: false /@push.rocks/smartstring@4.0.9: resolution: {integrity: sha512-VB0jzKmI4ZpdzEZe79M8rKVjAReNWGMG6ktzS0R5FeH96SSk3jvfOezgz/RJ7JbRN3UcyR0Ra/mXlpyeqJUHvw==} @@ -987,14 +1001,14 @@ packages: /@push.rocks/smartyaml@2.0.5: resolution: {integrity: sha512-tBcf+HaOIfeEsTMwgUZDtZERCxXQyRsWO8Ar5DjBdiSRchbhVGZQEBzXswMS0W5ZoRenjgPK+4tPW3JQGRTfbg==} dependencies: - '@types/js-yaml': 3.12.8 + '@types/js-yaml': 3.12.9 js-yaml: 3.14.1 dev: true - /@push.rocks/tapbundle@5.0.15(sinon@16.0.0): + /@push.rocks/tapbundle@5.0.15(sinon@17.0.1): resolution: {integrity: sha512-vVTVmQCovYq9xhif96z7wN8pFiB3UB9MZSkqMDgfNTWhlU19ZZR1azCZn+zXsYxgJmD8wKNYhvZYgdRz73KbBg==} dependencies: - '@open-wc/testing': 2.5.33(sinon@16.0.0) + '@open-wc/testing': 2.5.33(sinon@17.0.1) '@push.rocks/smartdelay': 3.0.5 '@push.rocks/smartenv': 5.0.5 '@push.rocks/smartexpect': 1.0.21 @@ -1308,6 +1322,12 @@ packages: '@sinonjs/commons': 3.0.0 dev: true + /@sinonjs/fake-timers@11.2.2: + resolution: {integrity: sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==} + dependencies: + '@sinonjs/commons': 3.0.0 + dev: true + /@sinonjs/samsam@8.0.0: resolution: {integrity: sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==} dependencies: @@ -1362,7 +1382,7 @@ packages: /@types/accepts@1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.8.10 dev: true /@types/babel__code-frame@7.0.3: @@ -1373,7 +1393,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 20.6.3 + '@types/node': 20.8.10 dev: true /@types/buffer-json@2.0.1: @@ -1399,21 +1419,21 @@ packages: /@types/clean-css@4.2.7: resolution: {integrity: sha512-lcoZHjUAANLTACLGi+O/0pN+oKQAQ8zAMWJSxiBRNLxqZG/WE8hfXJUs1eYwJOvOnDJrvxU1kR77UiVJ3+9N0Q==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.8.10 source-map: 0.6.1 dev: true /@types/co-body@6.1.0: resolution: {integrity: sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.8.10 '@types/qs': 6.9.8 dev: true /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.8.10 dev: true /@types/content-disposition@0.5.5: @@ -1434,13 +1454,13 @@ packages: '@types/connect': 3.4.35 '@types/express': 4.17.17 '@types/keygrip': 1.0.2 - '@types/node': 20.6.3 + '@types/node': 20.8.10 dev: true /@types/cors@2.8.14: resolution: {integrity: sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.8.10 dev: true /@types/debounce@1.2.1: @@ -1454,7 +1474,7 @@ packages: /@types/express-serve-static-core@4.17.36: resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.8.10 '@types/qs': 6.9.8 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -1469,22 +1489,23 @@ packages: '@types/serve-static': 1.15.2 dev: true - /@types/from2@2.3.2: - resolution: {integrity: sha512-s1pdctxW2+CA4FOxxTBRxC3RKQL9Br1a2s2LngP4jh1BI84JBL3mDXj87EwcckN9z/IXp8o3ySmvZveGEAAwqw==} + /@types/from2@2.3.4: + resolution: {integrity: sha512-Ofj/U9ytMjG5FIfFlTokSyGQdLgX8js+hbw9/qxZQbsGRjcjQPzoLGZhe6OEzrg7Sd98Il57iyxDtU1ArvCSTw==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.8.10 + dev: true - /@types/fs-extra@11.0.2: - resolution: {integrity: sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==} + /@types/fs-extra@11.0.3: + resolution: {integrity: sha512-sF59BlXtUdzEAL1u0MSvuzWd7PdZvZEtnaVkzX5mjpdWTJ8brG0jUqve3jPCzSzvAKKMHTG8F8o/WMQLtleZdQ==} dependencies: - '@types/jsonfile': 6.1.2 - '@types/node': 20.6.3 + '@types/jsonfile': 6.1.3 + '@types/node': 20.8.10 /@types/glob@8.1.0: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.6.3 + '@types/node': 20.8.10 /@types/html-minifier@4.0.3: resolution: {integrity: sha512-e55KfPv+cXjd2AXwkuVfMw/hcJipNoS+JML+z3ijqzMHgc6F2iviWSEUx5tXQ6Yu5UtYtLH35ae2ftFsRJTmLA==} @@ -1522,17 +1543,17 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/js-yaml@3.12.8: - resolution: {integrity: sha512-6McoI148SFmiE2m2Y9lpzwN238grgzEn2J1mHoc8UWwDKvAUsjl100jjqoj5ORVqDwWuEmD+zlOES0+jI7fZCA==} + /@types/js-yaml@3.12.9: + resolution: {integrity: sha512-s5v3+2RB96nd7AOZXLScwHDRClor83+0E5q+5fzq0fTFXw8spF3QWHAUmHwItmmlr7XnDjpM0FkAgNKHzDTXtg==} dev: true - /@types/js-yaml@4.0.6: - resolution: {integrity: sha512-ACTuifTSIIbyksx2HTon3aFtCKWcID7/h3XEmRpDYdMCXxPbl+m9GteOJeaAkiAta/NJaSFuA7ahZ0NkwajDSw==} + /@types/js-yaml@4.0.8: + resolution: {integrity: sha512-m6jnPk1VhlYRiLFm3f8X9Uep761f+CK8mHyS65LutH2OhmBF0BeMEjHgg05usH8PLZMWWc/BUR9RPmkvpWnyRA==} - /@types/jsonfile@6.1.2: - resolution: {integrity: sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==} + /@types/jsonfile@6.1.3: + resolution: {integrity: sha512-/yqTk2SZ1wIezK0hiRZD7RuSf4B3whFxFamB1kGStv+8zlWScTMcHanzfc0XKWs5vA1TkHeckBlOyM8jxU8nHA==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.8.10 /@types/keygrip@1.0.2: resolution: {integrity: sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==} @@ -1554,7 +1575,7 @@ packages: '@types/http-errors': 2.0.1 '@types/keygrip': 1.0.2 '@types/koa-compose': 3.2.5 - '@types/node': 20.6.3 + '@types/node': 20.8.10 dev: true /@types/mime-types@2.1.1: @@ -1579,8 +1600,10 @@ packages: resolution: {integrity: sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==} dev: true - /@types/node@20.6.3: - resolution: {integrity: sha512-HksnYH4Ljr4VQgEy2lTStbCKv/P590tmPe5HqOnv9Gprffgv5WXAY+Y5Gqniu0GGqeTCUdBnzC3QSrzPkBkAMA==} + /@types/node@20.8.10: + resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==} + dependencies: + undici-types: 5.26.5 /@types/parse5@6.0.3: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} @@ -1609,7 +1632,7 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 20.6.3 + '@types/node': 20.8.10 dev: true /@types/serve-static@1.15.2: @@ -1617,7 +1640,7 @@ packages: dependencies: '@types/http-errors': 2.0.1 '@types/mime': 3.0.1 - '@types/node': 20.6.3 + '@types/node': 20.8.10 dev: true /@types/shortid@0.0.29: @@ -1644,15 +1667,16 @@ packages: /@types/symbol-tree@3.2.2: resolution: {integrity: sha512-+NcSHyA9K2EDHv3ny4wpbRSA+f+Tj0O7hIj7+w4tVw9yxqMavXwtFwuZEo3vyigTgOhGkrAUl3gj4oxAcyLfRQ==} - /@types/through2@2.0.38: - resolution: {integrity: sha512-YFu+nHmjxMurkH1BSzA0Z1WrKDAY8jUKPZctNQn7mc+/KKtp2XxnclHFXxdB1m7Iqnzb5aywgP8TMK283LezGQ==} - dependencies: - '@types/node': 20.6.3 - /@types/through2@2.0.39: resolution: {integrity: sha512-zhK74atBQ1pl1CNNYDpRJT8I6m794CsDGN0q8aDcQ7jvxlg1SVUy7gio7nOnYHMzhnGT0Vv4C53lw94MSWCeWA==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.8.10 + + /@types/through2@2.0.40: + resolution: {integrity: sha512-QeEwyeGxvtKjP0I/SR8pHtKMgmqotWTI8V/rNMTjbF3arWZJV/kYtbZXtwQKxUuV/oPSGkUilSspFKkTgCPTpA==} + dependencies: + '@types/node': 20.8.10 + dev: true /@types/trusted-types@2.0.4: resolution: {integrity: sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==} @@ -1683,14 +1707,14 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 20.6.3 + '@types/node': 20.8.10 dev: true - /@types/yauzl@2.10.0: - resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} + /@types/yauzl@2.10.2: + resolution: {integrity: sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==} requiresBuild: true dependencies: - '@types/node': 20.6.3 + '@types/node': 20.8.10 dev: true optional: true @@ -2320,6 +2344,7 @@ packages: /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} @@ -2588,7 +2613,7 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.14 - '@types/node': 20.6.3 + '@types/node': 20.8.10 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -2800,7 +2825,7 @@ packages: get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: - '@types/yauzl': 2.10.0 + '@types/yauzl': 2.10.2 transitivePeerDependencies: - supports-color dev: true @@ -2956,6 +2981,7 @@ packages: dependencies: inherits: 2.0.4 readable-stream: 2.3.8 + dev: true /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -3042,15 +3068,15 @@ packages: is-glob: 4.0.3 dev: true - /glob@10.3.5: - resolution: {integrity: sha512-bYUpUD7XDEHI4Q2O5a7PXGvyw4deKR70kHiDxzQbe925wbZknhOzUt2xBgTkYL6RBcVeXYuD9iNYeqoWbBZQnA==} + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 - jackspeak: 2.3.3 + jackspeak: 2.3.6 minimatch: 9.0.3 - minipass: 7.0.3 + minipass: 7.0.4 path-scurry: 1.10.1 /glob@7.1.3: @@ -3510,6 +3536,7 @@ packages: /isarray@1.0.0: resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} + dev: true /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -3549,8 +3576,8 @@ packages: istanbul-lib-report: 3.0.1 dev: true - /jackspeak@2.3.3: - resolution: {integrity: sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==} + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 @@ -3972,8 +3999,8 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass@7.0.3: - resolution: {integrity: sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==} + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} /mkdirp-classic@0.5.3: @@ -4064,8 +4091,8 @@ packages: engines: {node: '>= 0.6'} dev: true - /nise@5.1.4: - resolution: {integrity: sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==} + /nise@5.1.5: + resolution: {integrity: sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw==} dependencies: '@sinonjs/commons': 2.0.0 '@sinonjs/fake-timers': 10.3.0 @@ -4291,7 +4318,7 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dependencies: lru-cache: 10.0.1 - minipass: 7.0.3 + minipass: 7.0.4 /path-to-regexp@0.1.7: resolution: {integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=} @@ -4376,6 +4403,7 @@ packages: /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} @@ -4508,6 +4536,7 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 + dev: true /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} @@ -4628,6 +4657,7 @@ packages: /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -4742,24 +4772,24 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - /sinon-chai@3.7.0(chai@4.3.8)(sinon@16.0.0): + /sinon-chai@3.7.0(chai@4.3.8)(sinon@17.0.1): resolution: {integrity: sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==} peerDependencies: chai: ^4.0.0 sinon: '>=4.0.0' dependencies: chai: 4.3.8 - sinon: 16.0.0 + sinon: 17.0.1 dev: true - /sinon@16.0.0: - resolution: {integrity: sha512-B8AaZZm9CT5pqe4l4uWJztfD/mOTa7dL8Qo0W4+s+t74xECOgSZDDQCBjNgIK3+n4kyxQrSTv2V5ul8K25qkiQ==} + /sinon@17.0.1: + resolution: {integrity: sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==} dependencies: '@sinonjs/commons': 3.0.0 - '@sinonjs/fake-timers': 10.3.0 + '@sinonjs/fake-timers': 11.2.2 '@sinonjs/samsam': 8.0.0 diff: 5.1.0 - nise: 5.1.4 + nise: 5.1.5 supports-color: 7.2.0 dev: true @@ -4929,6 +4959,7 @@ packages: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 + dev: true /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -5087,7 +5118,7 @@ packages: hasBin: true dev: true - /ts-node@10.9.1(@types/node@20.6.3)(typescript@5.1.6): + /ts-node@10.9.1(@types/node@20.8.10)(typescript@5.1.6): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -5106,7 +5137,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.6.3 + '@types/node': 20.8.10 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -5233,6 +5264,9 @@ packages: through: 2.3.8 dev: true + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + /unicode-trie@0.3.1: resolution: {integrity: sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=} dependencies: diff --git a/test/test.streamfile.ts b/test/test.streamfile.ts new file mode 100644 index 0000000..e69de29 diff --git a/test/test.ts b/test/test.ts index 4d6c0cc..c33d8ab 100644 --- a/test/test.ts +++ b/test/test.ts @@ -64,7 +64,7 @@ tap.test('.fs.fileTreeToObject -> should read a file tree into an Object', async path.resolve('./test/testassets/'), '**/*.txt' ); - expect(fileArrayArg[0]).toBeInstanceOf(smartfile.Smartfile); + expect(fileArrayArg[0]).toBeInstanceOf(smartfile.SmartFile); expect(fileArrayArg[0].contents.toString()).toEqual(fileArrayArg[0].contentBuffer.toString()); }); @@ -175,7 +175,7 @@ tap.test('.Smartfile -> should produce vinyl compatible files', async () => { './test/testassets/testfolder/**/*' ); const localSmartfile = smartfileArray[0]; - expect(localSmartfile).toBeInstanceOf(smartfile.Smartfile); + expect(localSmartfile).toBeInstanceOf(smartfile.SmartFile); expect(localSmartfile.contents).toBeInstanceOf(Buffer); // tslint:disable-next-line:no-unused-expression expect(localSmartfile.isBuffer()).toBeTrue(); @@ -202,9 +202,9 @@ tap.test('should output a smartfile array to disk', async () => { tap.test('should create, store and retrieve valid smartfiles', async () => { const fileString = 'hi there'; const filePath = './test/testassets/utf8.txt'; - const smartfileInstance = await smartfile.Smartfile.fromString(filePath, fileString, 'utf8'); + const smartfileInstance = await smartfile.SmartFile.fromString(filePath, fileString, 'utf8'); smartfileInstance.write(); - const smartfileInstance2 = await smartfile.Smartfile.fromFilePath(filePath); + const smartfileInstance2 = await smartfile.SmartFile.fromFilePath(filePath); const retrievedString = smartfileInstance.contents.toString(); expect(retrievedString).toEqual(fileString); }); @@ -212,7 +212,7 @@ tap.test('should create, store and retrieve valid smartfiles', async () => { tap.test('should get a hash', async () => { const fileString = 'hi there'; const filePath = './test/testassets/utf8.txt'; - const smartfileInstance = await smartfile.Smartfile.fromString(filePath, fileString, 'utf8'); + const smartfileInstance = await smartfile.SmartFile.fromString(filePath, fileString, 'utf8'); const hash = await smartfileInstance.getHash(); console.log(hash); }); diff --git a/ts/smartfile.classes.smartfile.ts b/ts/classes.smartfile.ts similarity index 93% rename from ts/smartfile.classes.smartfile.ts rename to ts/classes.smartfile.ts index a561340..46751dc 100644 --- a/ts/smartfile.classes.smartfile.ts +++ b/ts/classes.smartfile.ts @@ -1,6 +1,6 @@ import * as plugins from './smartfile.plugins.js'; -import * as fs from './smartfile.fs.js'; -import * as memory from './smartfile.memory.js'; +import * as fs from './fs.js'; +import * as memory from './memory.js'; export interface ISmartfileConstructorOptions { path: string; @@ -9,10 +9,9 @@ export interface ISmartfileConstructorOptions { } /** - * class Smartfile - * -> is vinyl file compatible + * an vinyl file compatible in memory file class */ -export class Smartfile extends plugins.smartjson.Smartjson { +export class SmartFile extends plugins.smartjson.Smartjson { // ====== // STATIC // ====== @@ -24,7 +23,7 @@ export class Smartfile extends plugins.smartjson.Smartjson { public static async fromFilePath(filePath: string, baseArg: string = process.cwd()) { filePath = plugins.path.resolve(filePath); const fileBuffer = fs.toBufferSync(filePath); - const smartfile = new Smartfile({ + const smartfile = new SmartFile({ contentBuffer: fileBuffer, base: baseArg, path: plugins.path.relative(baseArg, filePath), @@ -37,7 +36,7 @@ export class Smartfile extends plugins.smartjson.Smartjson { contentBufferArg: Buffer, baseArg: string = process.cwd() ) { - const smartfile = new Smartfile({ + const smartfile = new SmartFile({ contentBuffer: contentBufferArg, base: baseArg, path: plugins.path.relative(baseArg, filePath), @@ -52,7 +51,7 @@ export class Smartfile extends plugins.smartjson.Smartjson { encodingArg: 'utf8' | 'binary', baseArg = process.cwd() ) { - const smartfile = new Smartfile({ + const smartfile = new SmartFile({ contentBuffer: Buffer.from(contentStringArg, encodingArg), base: baseArg, path: plugins.path.relative(baseArg, filePath), @@ -62,7 +61,7 @@ export class Smartfile extends plugins.smartjson.Smartjson { } public static async fromFoldedJson(foldedJsonArg: string) { - return new Smartfile(plugins.smartjson.parse(foldedJsonArg)); + return new SmartFile(plugins.smartjson.parse(foldedJsonArg)); } /** @@ -75,14 +74,14 @@ export class Smartfile extends plugins.smartjson.Smartjson { stream: plugins.stream.Readable, filePath: string, baseArg: string = process.cwd() - ): Promise { - return new Promise((resolve, reject) => { + ): Promise { + return new Promise((resolve, reject) => { const chunks: Buffer[] = []; stream.on('data', (chunk) => chunks.push(Buffer.from(chunk))); stream.on('error', (error) => reject(error)); stream.on('end', () => { const contentBuffer = Buffer.concat(chunks); - const smartfile = new Smartfile({ + const smartfile = new SmartFile({ contentBuffer: contentBuffer, base: baseArg, path: plugins.path.relative(baseArg, filePath), diff --git a/ts/classes.streamfile.ts b/ts/classes.streamfile.ts new file mode 100644 index 0000000..48254e0 --- /dev/null +++ b/ts/classes.streamfile.ts @@ -0,0 +1,90 @@ +import * as plugins from './smartfile.plugins.js'; +import * as fsStream from './fsstream.js'; +import { Readable } from 'stream'; + +type StreamSource = () => Promise; + +/** + * The StreamFile class represents a file as a stream. + * It allows creating streams from a file path, a URL, or a buffer. + */ +export class StreamFile { + // INSTANCE + relativeFilePath?: string; + private streamSource: StreamSource; + + private constructor(streamSource: StreamSource, relativeFilePath?: string) { + this.streamSource = streamSource; + this.relativeFilePath = relativeFilePath; + } + + // STATIC + + public static async fromPath(filePath: string): Promise { + const streamSource = () => Promise.resolve(fsStream.createReadStream(filePath)); + return new StreamFile(streamSource, filePath); + } + + public static async fromUrl(url: string): Promise { + const streamSource = async () => plugins.smartrequest.getStream(url); // Replace with actual plugin method + return new StreamFile(streamSource); + } + + public static fromBuffer(buffer: Buffer, relativeFilePath?: string): StreamFile { + const streamSource = () => { + const stream = new Readable(); + stream.push(buffer); + stream.push(null); // End of stream + return Promise.resolve(stream); + }; + return new StreamFile(streamSource, relativeFilePath); + } + + // METHODS + + /** + * Creates a new readable stream from the source. + */ + public async createReadStream(): Promise { + return this.streamSource(); + } + + /** + * Writes the stream to the disk at the specified path. + * @param filePathArg The file path where the stream should be written. + */ + public async writeToDisk(filePathArg: string): Promise { + const readStream = await this.createReadStream(); + const writeStream = fsStream.createWriteStream(filePathArg); + + return new Promise((resolve, reject) => { + readStream.pipe(writeStream); + readStream.on('error', reject); + writeStream.on('error', reject); + writeStream.on('finish', resolve); + }); + } + + public async writeToDir(dirPathArg: string) { + const filePath = plugins.path.join(dirPathArg, this.relativeFilePath); + return this.writeToDisk(filePath); + } + + public async getContentAsBuffer() { + const done = plugins.smartpromise.defer(); + const readStream = await this.createReadStream(); + const chunks: Buffer[] = []; + readStream.on('data', (chunk) => chunks.push(Buffer.from(chunk))); + readStream.on('error', done.reject); + readStream.on('end', () => { + const contentBuffer = Buffer.concat(chunks); + done.resolve(contentBuffer); + }); + return done.promise; + } + + public async getContentAsString(formatArg: 'utf8' | 'binary' = 'utf8') { + const contentBuffer = await this.getContentAsBuffer(); + return contentBuffer.toString(formatArg); + } +} diff --git a/ts/smartfile.classes.virtualdirectory.ts b/ts/classes.virtualdirectory.ts similarity index 85% rename from ts/smartfile.classes.virtualdirectory.ts rename to ts/classes.virtualdirectory.ts index cc9de5e..e527724 100644 --- a/ts/smartfile.classes.virtualdirectory.ts +++ b/ts/classes.virtualdirectory.ts @@ -1,11 +1,21 @@ -import { Smartfile } from './smartfile.classes.smartfile.js'; +import { SmartFile } from './classes.smartfile.js'; import * as plugins from './smartfile.plugins.js'; -import * as fs from './smartfile.fs.js'; +import * as fs from './fs.js'; + + +export interface IVirtualDirectoryConstructorOptions { + mode: '' +} /** * a virtual directory exposes a fs api */ export class VirtualDirectory { + + consstructor(options = {}) { + + } + // STATIC public static async fromFsDirPath(pathArg: string): Promise { const newVirtualDir = new VirtualDirectory(); @@ -18,17 +28,17 @@ export class VirtualDirectory { ): Promise { const newVirtualDir = new VirtualDirectory(); for (const fileArg of virtualDirTransferableObjectArg.files) { - newVirtualDir.addSmartfiles([Smartfile.enfoldFromJson(fileArg) as Smartfile]); + newVirtualDir.addSmartfiles([SmartFile.enfoldFromJson(fileArg) as SmartFile]); } return newVirtualDir; } // INSTANCE - public smartfileArray: Smartfile[] = []; + public smartfileArray: SmartFile[] = []; constructor() {} - public addSmartfiles(smartfileArrayArg: Smartfile[]) { + public addSmartfiles(smartfileArrayArg: SmartFile[]) { this.smartfileArray = this.smartfileArray.concat(smartfileArrayArg); } diff --git a/ts/smartfile.fs.ts b/ts/fs.ts similarity index 98% rename from ts/smartfile.fs.ts rename to ts/fs.ts index f19981c..d296c19 100644 --- a/ts/smartfile.fs.ts +++ b/ts/fs.ts @@ -1,9 +1,9 @@ import * as plugins from './smartfile.plugins.js'; -import * as interpreter from './smartfile.interpreter.js'; +import * as interpreter from './interpreter.js'; -import { Smartfile } from './smartfile.classes.smartfile.js'; +import { SmartFile } from './classes.smartfile.js'; -import * as memory from './smartfile.memory.js'; +import * as memory from './memory.js'; /*=============================================================== ============================ Checks ============================= ===============================================================*/ @@ -258,7 +258,7 @@ export const fileTreeToObject = async (dirPathArg: string, miniMatchFilter: stri } const fileTree = await listFileTree(dirPath, miniMatchFilter); - const smartfileArray: Smartfile[] = []; + const smartfileArray: SmartFile[] = []; for (const filePath of fileTree) { const readPath = ((): string => { if (!plugins.path.isAbsolute(filePath)) { @@ -271,7 +271,7 @@ export const fileTreeToObject = async (dirPathArg: string, miniMatchFilter: stri // push a read file as Smartfile smartfileArray.push( - new Smartfile({ + new SmartFile({ contentBuffer: fileBuffer, base: dirPath, path: filePath, diff --git a/ts/smartfile.fsstream.ts b/ts/fsstream.ts similarity index 100% rename from ts/smartfile.fsstream.ts rename to ts/fsstream.ts diff --git a/ts/index.ts b/ts/index.ts index 96b996b..7c94907 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -1,11 +1,11 @@ import * as plugins from './smartfile.plugins.js'; -import * as fsMod from './smartfile.fs.js'; -import * as fsStreamMod from './smartfile.fsstream.js'; -import * as interpreterMod from './smartfile.interpreter.js'; -import * as memoryMod from './smartfile.memory.js'; +import * as fsMod from './fs.js'; +import * as fsStreamMod from './fsstream.js'; +import * as interpreterMod from './interpreter.js'; +import * as memoryMod from './memory.js'; -export * from './smartfile.classes.smartfile.js'; -export * from './smartfile.classes.virtualdirectory.js'; +export * from './classes.smartfile.js'; +export * from './classes.virtualdirectory.js'; export const fs = fsMod; export const fsStream = fsStreamMod; diff --git a/ts/smartfile.interpreter.ts b/ts/interpreter.ts similarity index 100% rename from ts/smartfile.interpreter.ts rename to ts/interpreter.ts diff --git a/ts/smartfile.memory.ts b/ts/memory.ts similarity index 86% rename from ts/smartfile.memory.ts rename to ts/memory.ts index cb3e520..c5b0842 100644 --- a/ts/smartfile.memory.ts +++ b/ts/memory.ts @@ -1,7 +1,8 @@ import * as plugins from './smartfile.plugins.js'; -import { Smartfile } from './smartfile.classes.smartfile.js'; -import * as smartfileFs from './smartfile.fs.js'; -import * as interpreter from './smartfile.interpreter.js'; +import { SmartFile } from './classes.smartfile.js'; +import * as smartfileFs from './fs.js'; +import * as interpreter from './interpreter.js'; +import type { StreamFile } from './classes.streamfile.js'; /** * converts file to Object @@ -24,7 +25,7 @@ export interface IToFsOptions { * @param fileBaseArg */ export let toFs = async ( - fileContentArg: string | Buffer | Smartfile, + fileContentArg: string | Buffer | SmartFile | StreamFile, filePathArg: string, optionsArg: IToFsOptions = {} ) => { @@ -41,7 +42,7 @@ export let toFs = async ( let filePath: string = filePathArg; // handle Smartfile - if (fileContentArg instanceof Smartfile) { + if (fileContentArg instanceof SmartFile) { fileContent = fileContentArg.contentBuffer; // handle options if (optionsArg.respectRelative) { @@ -83,7 +84,7 @@ export const toFsSync = (fileArg: string, filePathArg: string) => { plugins.fsExtra.writeFileSync(filePath, fileString, { encoding: 'utf8' }); }; -export let smartfileArrayToFs = async (smartfileArrayArg: Smartfile[], dirArg: string) => { +export let smartfileArrayToFs = async (smartfileArrayArg: SmartFile[], dirArg: string) => { await smartfileFs.ensureDir(dirArg); for (const smartfile of smartfileArrayArg) { await toFs(smartfile, dirArg, {