@effect-app/infra 0.7.0
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/.eslintrc.cjs +11 -0
- package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-314902b6271c341511f7398a50469024 +0 -0
- package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-3f072cc7afa09b6adaead0527ab9df83 +0 -0
- package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-74c3c295c110fc861b6a4c673afc3e24 +0 -0
- package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-bf6dae8cb9ea9740ceb39aefaf12716c +0 -0
- package/.jest-cache/haste-map-369fa5ca2164cc35b19159bd76147276-e7a7ff05756c055cb63be97ba8537525-cf9d1486029526079a5f68f2041dea02 +0 -0
- package/.jest-cache/haste-map-4ca41cc04e60c616a19cbb483cbf487b-e2f1f4b6d87214e3c49442fed31f310c-b4710ed9fb3d0757c4bf23045c585670 +0 -0
- package/.jest-cache/haste-map-4ca41cc04e60c616a19cbb483cbf487b-e2f1f4b6d87214e3c49442fed31f310c-ee17e5395bb1b7b36a4e2e22a6ae1449 +0 -0
- package/.jest-cache/haste-map-7dc16d7fae8c072843ed1c69eae73100-a8a4225b317477b49bca31f54559afb3-c16136699bb7f463be85273162b447c3 +0 -0
- package/.jest-cache/haste-map-9aa1e395a82e108eb49698982c574272-e2f1f4b6d87214e3c49442fed31f310c-f7435f46fc41ac5a13d06a49cae9a650 +0 -0
- package/.jest-cache/haste-map-9d206b45d610536c9ec65eec263c6964-a8a4225b317477b49bca31f54559afb3-3510506a330b44f1ae629033aac8fbb3 +0 -0
- package/.jest-cache/haste-map-a00ab30d0d656f9d3990958a54b9ccfd-87603b0fc921b26b622a5859b4c92bed-17b550b450b18840c25861aa6e835f0c +0 -0
- package/.jest-cache/haste-map-a00ab30d0d656f9d3990958a54b9ccfd-87603b0fc921b26b622a5859b4c92bed-4dc31290b1efc98335eb4c89167d75c3 +0 -0
- package/.jest-cache/haste-map-ab843cb0ffbadfd0deea4adb182c7ecd-87603b0fc921b26b622a5859b4c92bed-997106edf4bbc31567a378146180e45e +0 -0
- package/.jest-cache/haste-map-ab843cb0ffbadfd0deea4adb182c7ecd-87603b0fc921b26b622a5859b4c92bed-f0cd25414f9ed16c446940ca3aa23c1b +0 -0
- package/.jest-cache/haste-map-cf17f2edf0e949eebfdfca561816457c-e7a7ff05756c055cb63be97ba8537525-2cac07d09e6384e2d37c49714edad0ba +0 -0
- package/.jest-cache/haste-map-cf17f2edf0e949eebfdfca561816457c-e7a7ff05756c055cb63be97ba8537525-d7967c2976c5feac7161c964f0aa442f +0 -0
- package/.jest-cache/haste-map-fb1a173276d25bbff02f815600059283-938122bdc1c8836874b6585d7acb2e99-f705929cca05ce95ceaa6d520b560ce8 +0 -0
- package/.prettierignore +6 -0
- package/_cjs/_global.cjs +6 -0
- package/_cjs/_global.cjs.map +1 -0
- package/_cjs/_global.ext.cjs +6 -0
- package/_cjs/_global.ext.cjs.map +1 -0
- package/_cjs/_global.schema.cjs +5 -0
- package/_cjs/_global.schema.cjs.map +1 -0
- package/_cjs/errors.cjs +82 -0
- package/_cjs/errors.cjs.map +1 -0
- package/_cjs/ext.cjs +4 -0
- package/_cjs/ext.cjs.map +1 -0
- package/_cjs/index.cjs +6 -0
- package/_cjs/index.cjs.map +1 -0
- package/_cjs/lib/RequestContext.cjs +70 -0
- package/_cjs/lib/RequestContext.cjs.map +1 -0
- package/_cjs/lib/api/authorization.jwt.cjs +44 -0
- package/_cjs/lib/api/authorization.jwt.cjs.map +1 -0
- package/_cjs/lib/api/defaultErrorHandler.cjs +45 -0
- package/_cjs/lib/api/defaultErrorHandler.cjs.map +1 -0
- package/_cjs/lib/api/reportError.cjs +64 -0
- package/_cjs/lib/api/reportError.cjs.map +1 -0
- package/_cjs/lib/api/routing.cjs +262 -0
- package/_cjs/lib/api/routing.cjs.map +1 -0
- package/_cjs/lib/api/setupRequest.cjs +35 -0
- package/_cjs/lib/api/setupRequest.cjs.map +1 -0
- package/_cjs/lib/api/util.cjs +17 -0
- package/_cjs/lib/api/util.cjs.map +1 -0
- package/_cjs/lib/api/writeDocs.cjs +31 -0
- package/_cjs/lib/api/writeDocs.cjs.map +1 -0
- package/_cjs/lib/errorReporter.cjs +72 -0
- package/_cjs/lib/errorReporter.cjs.map +1 -0
- package/_cjs/lib/ext/Array.cjs +30 -0
- package/_cjs/lib/ext/Array.cjs.map +1 -0
- package/_cjs/lib/fileUtil.cjs +36 -0
- package/_cjs/lib/fileUtil.cjs.map +1 -0
- package/_cjs/lib/filter/types/errors.cjs +6 -0
- package/_cjs/lib/filter/types/errors.cjs.map +1 -0
- package/_cjs/lib/filter/types/fields.cjs +6 -0
- package/_cjs/lib/filter/types/fields.cjs.map +1 -0
- package/_cjs/lib/filter/types/index.cjs +61 -0
- package/_cjs/lib/filter/types/index.cjs.map +1 -0
- package/_cjs/lib/filter/types/path/common.cjs +6 -0
- package/_cjs/lib/filter/types/path/common.cjs.map +1 -0
- package/_cjs/lib/filter/types/path/eager.cjs +6 -0
- package/_cjs/lib/filter/types/path/eager.cjs.map +1 -0
- package/_cjs/lib/filter/types/path/index.cjs +8 -0
- package/_cjs/lib/filter/types/path/index.cjs.map +1 -0
- package/_cjs/lib/filter/types/utils.cjs +6 -0
- package/_cjs/lib/filter/types/utils.cjs.map +1 -0
- package/_cjs/lib/filter/types/validator.cjs +6 -0
- package/_cjs/lib/filter/types/validator.cjs.map +1 -0
- package/_cjs/lib/filter.cjs +238 -0
- package/_cjs/lib/filter.cjs.map +1 -0
- package/_cjs/lib/instrument.cjs +20 -0
- package/_cjs/lib/instrument.cjs.map +1 -0
- package/_cjs/lib/rateLimit.cjs +88 -0
- package/_cjs/lib/rateLimit.cjs.map +1 -0
- package/_cjs/services/CUPS/service.cjs +15 -0
- package/_cjs/services/CUPS/service.cjs.map +1 -0
- package/_cjs/services/CUPS.cjs +113 -0
- package/_cjs/services/CUPS.cjs.map +1 -0
- package/_cjs/services/Cache.cjs +39 -0
- package/_cjs/services/Cache.cjs.map +1 -0
- package/_cjs/services/Emailer/Sendgrid.cjs +112 -0
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -0
- package/_cjs/services/Emailer/fake.cjs +24 -0
- package/_cjs/services/Emailer/fake.cjs.map +1 -0
- package/_cjs/services/Emailer/service.cjs +12 -0
- package/_cjs/services/Emailer/service.cjs.map +1 -0
- package/_cjs/services/Emailer.cjs +17 -0
- package/_cjs/services/Emailer.cjs.map +1 -0
- package/_cjs/services/Repository.cjs +247 -0
- package/_cjs/services/Repository.cjs.map +1 -0
- package/_cjs/services/ServiceBus.cjs +69 -0
- package/_cjs/services/ServiceBus.cjs.map +1 -0
- package/_cjs/services/Store/Cosmos.cjs +324 -0
- package/_cjs/services/Store/Cosmos.cjs.map +1 -0
- package/_cjs/services/Store/Cosmos.test.cjs +59 -0
- package/_cjs/services/Store/Cosmos.test.cjs.map +1 -0
- package/_cjs/services/Store/Disk.cjs +62 -0
- package/_cjs/services/Store/Disk.cjs.map +1 -0
- package/_cjs/services/Store/Memory.cjs +70 -0
- package/_cjs/services/Store/Memory.cjs.map +1 -0
- package/_cjs/services/Store/Redis.cjs +72 -0
- package/_cjs/services/Store/Redis.cjs.map +1 -0
- package/_cjs/services/Store/codeFilter.test.cjs +61 -0
- package/_cjs/services/Store/codeFilter.test.cjs.map +1 -0
- package/_cjs/services/Store/index.cjs +72 -0
- package/_cjs/services/Store/index.cjs.map +1 -0
- package/_cjs/services/Store/service.cjs +72 -0
- package/_cjs/services/Store/service.cjs.map +1 -0
- package/_cjs/services/Store/utils.cjs +78 -0
- package/_cjs/services/Store/utils.cjs.map +1 -0
- package/_cjs/services/Store.cjs +17 -0
- package/_cjs/services/Store.cjs.map +1 -0
- package/_cjs/services/memQueue.cjs +32 -0
- package/_cjs/services/memQueue.cjs.map +1 -0
- package/_cjs/test.arbs.cjs +32 -0
- package/_cjs/test.arbs.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache/_internal/AtomicBoolean.cjs +14 -0
- package/_cjs/vendor/Cache/Cache/_internal/AtomicBoolean.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache/_internal/AtomicNumber.cjs +29 -0
- package/_cjs/vendor/Cache/Cache/_internal/AtomicNumber.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache/_internal/AtomicReference.cjs +32 -0
- package/_cjs/vendor/Cache/Cache/_internal/AtomicReference.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache/_internal/CacheInternal.cjs +266 -0
- package/_cjs/vendor/Cache/Cache/_internal/CacheInternal.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache/_internal/CacheState.cjs +31 -0
- package/_cjs/vendor/Cache/Cache/_internal/CacheState.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache/_internal/KeySet.cjs +67 -0
- package/_cjs/vendor/Cache/Cache/_internal/KeySet.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache/_internal/MapKey.cjs +44 -0
- package/_cjs/vendor/Cache/Cache/_internal/MapKey.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache/_internal/MapValue.cjs +33 -0
- package/_cjs/vendor/Cache/Cache/_internal/MapValue.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache/definition.cjs +13 -0
- package/_cjs/vendor/Cache/Cache/definition.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache/operations/make.cjs +20 -0
- package/_cjs/vendor/Cache/Cache/operations/make.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache/operations/makeWith.cjs +23 -0
- package/_cjs/vendor/Cache/Cache/operations/makeWith.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache/operations.cjs +28 -0
- package/_cjs/vendor/Cache/Cache/operations.cjs.map +1 -0
- package/_cjs/vendor/Cache/Cache.cjs +28 -0
- package/_cjs/vendor/Cache/Cache.cjs.map +1 -0
- package/_cjs/vendor/Cache/CacheStats/definition.cjs +13 -0
- package/_cjs/vendor/Cache/CacheStats/definition.cjs.map +1 -0
- package/_cjs/vendor/Cache/CacheStats.cjs +17 -0
- package/_cjs/vendor/Cache/CacheStats.cjs.map +1 -0
- package/_cjs/vendor/Cache/EntryStats/definition.cjs +11 -0
- package/_cjs/vendor/Cache/EntryStats/definition.cjs.map +1 -0
- package/_cjs/vendor/Cache/EntryStats.cjs +17 -0
- package/_cjs/vendor/Cache/EntryStats.cjs.map +1 -0
- package/_cjs/vendor/Cache/Lookup/definition.cjs +6 -0
- package/_cjs/vendor/Cache/Lookup/definition.cjs.map +1 -0
- package/_cjs/vendor/Cache/Lookup.cjs +17 -0
- package/_cjs/vendor/Cache/Lookup.cjs.map +1 -0
- package/_cjs/vendor/Cache/index.cjs +17 -0
- package/_cjs/vendor/Cache/index.cjs.map +1 -0
- package/_src/_global.ext.ts +34 -0
- package/_src/_global.schema.ts +10 -0
- package/_src/_global.ts +14 -0
- package/_src/errors.ts +50 -0
- package/_src/ext.ts +1 -0
- package/_src/index.ts +0 -0
- package/_src/lib/RequestContext.ts +132 -0
- package/_src/lib/api/authorization.jwt.ts +52 -0
- package/_src/lib/api/defaultErrorHandler.ts +92 -0
- package/_src/lib/api/reportError.ts +50 -0
- package/_src/lib/api/routing.ts +623 -0
- package/_src/lib/api/setupRequest.ts +22 -0
- package/_src/lib/api/util.ts +14 -0
- package/_src/lib/api/writeDocs.ts +26 -0
- package/_src/lib/errorReporter.ts +63 -0
- package/_src/lib/ext/Array.ts +32 -0
- package/_src/lib/fileUtil.ts +56 -0
- package/_src/lib/filter/types/errors.ts +47 -0
- package/_src/lib/filter/types/fields.ts +50 -0
- package/_src/lib/filter/types/index.ts +5 -0
- package/_src/lib/filter/types/path/common.ts +404 -0
- package/_src/lib/filter/types/path/eager.ts +146 -0
- package/_src/lib/filter/types/path/index.ts +14 -0
- package/_src/lib/filter/types/utils.ts +106 -0
- package/_src/lib/filter/types/validator.ts +46 -0
- package/_src/lib/filter.ts +323 -0
- package/_src/lib/instrument.ts +9 -0
- package/_src/lib/rateLimit.ts +126 -0
- package/_src/services/CUPS/service.ts +16 -0
- package/_src/services/CUPS.ts +105 -0
- package/_src/services/Cache.ts +45 -0
- package/_src/services/Emailer/Sendgrid.ts +123 -0
- package/_src/services/Emailer/fake.ts +14 -0
- package/_src/services/Emailer/service.ts +33 -0
- package/_src/services/Emailer.ts +1 -0
- package/_src/services/Repository.ts +513 -0
- package/_src/services/ServiceBus.ts +111 -0
- package/_src/services/Store/Cosmos.test.ts +91 -0
- package/_src/services/Store/Cosmos.ts +545 -0
- package/_src/services/Store/Disk.ts +81 -0
- package/_src/services/Store/Memory.ts +77 -0
- package/_src/services/Store/Redis.ts +92 -0
- package/_src/services/Store/codeFilter.test.ts +74 -0
- package/_src/services/Store/index.test.ts.bak +112 -0
- package/_src/services/Store/index.ts +62 -0
- package/_src/services/Store/service.ts +174 -0
- package/_src/services/Store/utils.ts +126 -0
- package/_src/services/Store.ts +1 -0
- package/_src/services/memQueue.ts +30 -0
- package/_src/test.arbs.ts +27 -0
- package/_src/vendor/Cache/Cache/_internal/AtomicBoolean.ts +7 -0
- package/_src/vendor/Cache/Cache/_internal/AtomicNumber.ts +28 -0
- package/_src/vendor/Cache/Cache/_internal/AtomicReference.ts +30 -0
- package/_src/vendor/Cache/Cache/_internal/CacheInternal.ts +293 -0
- package/_src/vendor/Cache/Cache/_internal/CacheState.ts +56 -0
- package/_src/vendor/Cache/Cache/_internal/KeySet.ts +58 -0
- package/_src/vendor/Cache/Cache/_internal/MapKey.ts +43 -0
- package/_src/vendor/Cache/Cache/_internal/MapValue.ts +39 -0
- package/_src/vendor/Cache/Cache/definition.ts +112 -0
- package/_src/vendor/Cache/Cache/operations/make.ts +17 -0
- package/_src/vendor/Cache/Cache/operations/makeWith.ts +32 -0
- package/_src/vendor/Cache/Cache/operations.ts +4 -0
- package/_src/vendor/Cache/Cache.ts +4 -0
- package/_src/vendor/Cache/CacheStats/definition.ts +23 -0
- package/_src/vendor/Cache/CacheStats.ts +3 -0
- package/_src/vendor/Cache/EntryStats/definition.ts +19 -0
- package/_src/vendor/Cache/EntryStats.ts +3 -0
- package/_src/vendor/Cache/Lookup/definition.ts +15 -0
- package/_src/vendor/Cache/Lookup.ts +3 -0
- package/_src/vendor/Cache/global.ts.bak +23 -0
- package/_src/vendor/Cache/index.ts +4 -0
- package/dist/_global.d.ts +10 -0
- package/dist/_global.d.ts.map +1 -0
- package/dist/_global.ext.d.ts +34 -0
- package/dist/_global.ext.d.ts.map +1 -0
- package/dist/_global.ext.js +2 -0
- package/dist/_global.js +12 -0
- package/dist/_global.schema.d.ts +6 -0
- package/dist/_global.schema.d.ts.map +1 -0
- package/dist/_global.schema.js +9 -0
- package/dist/errors.d.ts +41 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +51 -0
- package/dist/ext.d.ts +2 -0
- package/dist/ext.d.ts.map +1 -0
- package/dist/ext.js +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/lib/RequestContext.d.ts +122 -0
- package/dist/lib/RequestContext.d.ts.map +1 -0
- package/dist/lib/RequestContext.js +52 -0
- package/dist/lib/api/authorization.jwt.d.ts +7 -0
- package/dist/lib/api/authorization.jwt.d.ts.map +1 -0
- package/dist/lib/api/authorization.jwt.js +32 -0
- package/dist/lib/api/defaultErrorHandler.d.ts +8 -0
- package/dist/lib/api/defaultErrorHandler.d.ts.map +1 -0
- package/dist/lib/api/defaultErrorHandler.js +37 -0
- package/dist/lib/api/reportError.d.ts +32 -0
- package/dist/lib/api/reportError.d.ts.map +1 -0
- package/dist/lib/api/reportError.js +44 -0
- package/dist/lib/api/routing.d.ts +100 -0
- package/dist/lib/api/routing.d.ts.map +1 -0
- package/dist/lib/api/routing.js +248 -0
- package/dist/lib/api/setupRequest.d.ts +13 -0
- package/dist/lib/api/setupRequest.d.ts.map +1 -0
- package/dist/lib/api/setupRequest.js +25 -0
- package/dist/lib/api/util.d.ts +3 -0
- package/dist/lib/api/util.d.ts.map +1 -0
- package/dist/lib/api/util.js +14 -0
- package/dist/lib/api/writeDocs.d.ts +3 -0
- package/dist/lib/api/writeDocs.d.ts.map +1 -0
- package/dist/lib/api/writeDocs.js +23 -0
- package/dist/lib/errorReporter.d.ts +8 -0
- package/dist/lib/errorReporter.d.ts.map +1 -0
- package/dist/lib/errorReporter.js +45 -0
- package/dist/lib/ext/Array.d.ts +19 -0
- package/dist/lib/ext/Array.d.ts.map +1 -0
- package/dist/lib/ext/Array.js +21 -0
- package/dist/lib/fileUtil.d.ts +22 -0
- package/dist/lib/fileUtil.d.ts.map +1 -0
- package/dist/lib/fileUtil.js +23 -0
- package/dist/lib/filter/types/errors.d.ts +30 -0
- package/dist/lib/filter/types/errors.d.ts.map +1 -0
- package/dist/lib/filter/types/errors.js +2 -0
- package/dist/lib/filter/types/fields.d.ts +29 -0
- package/dist/lib/filter/types/fields.d.ts.map +1 -0
- package/dist/lib/filter/types/fields.js +2 -0
- package/dist/lib/filter/types/index.d.ts +6 -0
- package/dist/lib/filter/types/index.d.ts.map +1 -0
- package/dist/lib/filter/types/index.js +6 -0
- package/dist/lib/filter/types/path/common.d.ts +316 -0
- package/dist/lib/filter/types/path/common.d.ts.map +1 -0
- package/dist/lib/filter/types/path/common.js +2 -0
- package/dist/lib/filter/types/path/eager.d.ts +95 -0
- package/dist/lib/filter/types/path/eager.d.ts.map +1 -0
- package/dist/lib/filter/types/path/eager.js +2 -0
- package/dist/lib/filter/types/path/index.d.ts +4 -0
- package/dist/lib/filter/types/path/index.d.ts.map +1 -0
- package/dist/lib/filter/types/path/index.js +4 -0
- package/dist/lib/filter/types/utils.d.ts +68 -0
- package/dist/lib/filter/types/utils.d.ts.map +1 -0
- package/dist/lib/filter/types/utils.js +2 -0
- package/dist/lib/filter/types/validator.d.ts +30 -0
- package/dist/lib/filter/types/validator.d.ts.map +1 -0
- package/dist/lib/filter/types/validator.js +2 -0
- package/dist/lib/filter.d.ts +133 -0
- package/dist/lib/filter.d.ts.map +1 -0
- package/dist/lib/filter.js +171 -0
- package/dist/lib/instrument.d.ts +7 -0
- package/dist/lib/instrument.d.ts.map +1 -0
- package/dist/lib/instrument.js +12 -0
- package/dist/lib/rateLimit.d.ts +43 -0
- package/dist/lib/rateLimit.d.ts.map +1 -0
- package/dist/lib/rateLimit.js +76 -0
- package/dist/services/CUPS/service.d.ts +19 -0
- package/dist/services/CUPS/service.d.ts.map +1 -0
- package/dist/services/CUPS/service.js +5 -0
- package/dist/services/CUPS.d.ts +10 -0
- package/dist/services/CUPS.d.ts.map +1 -0
- package/dist/services/CUPS.js +89 -0
- package/dist/services/Cache.d.ts +28 -0
- package/dist/services/Cache.d.ts.map +1 -0
- package/dist/services/Cache.js +28 -0
- package/dist/services/Emailer/Sendgrid.d.ts +180 -0
- package/dist/services/Emailer/Sendgrid.d.ts.map +1 -0
- package/dist/services/Emailer/Sendgrid.js +102 -0
- package/dist/services/Emailer/fake.d.ts +7 -0
- package/dist/services/Emailer/fake.d.ts.map +1 -0
- package/dist/services/Emailer/fake.js +15 -0
- package/dist/services/Emailer/service.d.ts +41 -0
- package/dist/services/Emailer/service.d.ts.map +1 -0
- package/dist/services/Emailer/service.js +3 -0
- package/dist/services/Emailer.d.ts +2 -0
- package/dist/services/Emailer.d.ts.map +1 -0
- package/dist/services/Emailer.js +2 -0
- package/dist/services/Repository.d.ts +300 -0
- package/dist/services/Repository.d.ts.map +1 -0
- package/dist/services/Repository.js +193 -0
- package/dist/services/ServiceBus.d.ts +26 -0
- package/dist/services/ServiceBus.d.ts.map +1 -0
- package/dist/services/ServiceBus.js +53 -0
- package/dist/services/Store/Cosmos.d.ts +56 -0
- package/dist/services/Store/Cosmos.d.ts.map +1 -0
- package/dist/services/Store/Cosmos.js +321 -0
- package/dist/services/Store/Cosmos.test.d.ts.map +1 -0
- package/dist/services/Store/Disk.d.ts +14 -0
- package/dist/services/Store/Disk.d.ts.map +1 -0
- package/dist/services/Store/Disk.js +52 -0
- package/dist/services/Store/Memory.d.ts +17 -0
- package/dist/services/Store/Memory.d.ts.map +1 -0
- package/dist/services/Store/Memory.js +60 -0
- package/dist/services/Store/Redis.d.ts +12 -0
- package/dist/services/Store/Redis.d.ts.map +1 -0
- package/dist/services/Store/Redis.js +59 -0
- package/dist/services/Store/codeFilter.test.d.ts.map +1 -0
- package/dist/services/Store/index.d.ts +10 -0
- package/dist/services/Store/index.d.ts.map +1 -0
- package/dist/services/Store/index.js +52 -0
- package/dist/services/Store/service.d.ts +113 -0
- package/dist/services/Store/service.d.ts.map +1 -0
- package/dist/services/Store/service.js +63 -0
- package/dist/services/Store/utils.d.ts +14 -0
- package/dist/services/Store/utils.d.ts.map +1 -0
- package/dist/services/Store/utils.js +103 -0
- package/dist/services/Store.d.ts +2 -0
- package/dist/services/Store.d.ts.map +1 -0
- package/dist/services/Store.js +2 -0
- package/dist/services/memQueue.d.ts +18 -0
- package/dist/services/memQueue.d.ts.map +1 -0
- package/dist/services/memQueue.js +24 -0
- package/dist/test.arbs.d.ts +13 -0
- package/dist/test.arbs.d.ts.map +1 -0
- package/dist/test.arbs.js +22 -0
- package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.d.ts +5 -0
- package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.js +7 -0
- package/dist/vendor/Cache/Cache/_internal/AtomicNumber.d.ts +8 -0
- package/dist/vendor/Cache/Cache/_internal/AtomicNumber.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache/_internal/AtomicNumber.js +22 -0
- package/dist/vendor/Cache/Cache/_internal/AtomicReference.d.ts +10 -0
- package/dist/vendor/Cache/Cache/_internal/AtomicReference.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache/_internal/AtomicReference.js +25 -0
- package/dist/vendor/Cache/Cache/_internal/CacheInternal.d.ts +51 -0
- package/dist/vendor/Cache/Cache/_internal/CacheInternal.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache/_internal/CacheInternal.js +253 -0
- package/dist/vendor/Cache/Cache/_internal/CacheState.d.ts +33 -0
- package/dist/vendor/Cache/Cache/_internal/CacheState.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache/_internal/CacheState.js +21 -0
- package/dist/vendor/Cache/Cache/_internal/KeySet.d.ts +20 -0
- package/dist/vendor/Cache/Cache/_internal/KeySet.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache/_internal/KeySet.js +61 -0
- package/dist/vendor/Cache/Cache/_internal/MapKey.d.ts +24 -0
- package/dist/vendor/Cache/Cache/_internal/MapKey.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache/_internal/MapKey.js +37 -0
- package/dist/vendor/Cache/Cache/_internal/MapValue.d.ts +32 -0
- package/dist/vendor/Cache/Cache/_internal/MapValue.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache/_internal/MapValue.js +24 -0
- package/dist/vendor/Cache/Cache/definition.d.ts +100 -0
- package/dist/vendor/Cache/Cache/definition.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache/definition.js +5 -0
- package/dist/vendor/Cache/Cache/operations/make.d.ts +12 -0
- package/dist/vendor/Cache/Cache/operations/make.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache/operations/make.js +12 -0
- package/dist/vendor/Cache/Cache/operations/makeWith.d.ts +14 -0
- package/dist/vendor/Cache/Cache/operations/makeWith.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache/operations/makeWith.js +15 -0
- package/dist/vendor/Cache/Cache/operations.d.ts +3 -0
- package/dist/vendor/Cache/Cache/operations.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache/operations.js +4 -0
- package/dist/vendor/Cache/Cache.d.ts +3 -0
- package/dist/vendor/Cache/Cache.d.ts.map +1 -0
- package/dist/vendor/Cache/Cache.js +4 -0
- package/dist/vendor/Cache/CacheStats/definition.d.ts +19 -0
- package/dist/vendor/Cache/CacheStats/definition.d.ts.map +1 -0
- package/dist/vendor/Cache/CacheStats/definition.js +6 -0
- package/dist/vendor/Cache/CacheStats.d.ts +2 -0
- package/dist/vendor/Cache/CacheStats.d.ts.map +1 -0
- package/dist/vendor/Cache/CacheStats.js +3 -0
- package/dist/vendor/Cache/EntryStats/definition.d.ts +17 -0
- package/dist/vendor/Cache/EntryStats/definition.d.ts.map +1 -0
- package/dist/vendor/Cache/EntryStats/definition.js +4 -0
- package/dist/vendor/Cache/EntryStats.d.ts +2 -0
- package/dist/vendor/Cache/EntryStats.d.ts.map +1 -0
- package/dist/vendor/Cache/EntryStats.js +3 -0
- package/dist/vendor/Cache/Lookup/definition.d.ts +17 -0
- package/dist/vendor/Cache/Lookup/definition.d.ts.map +1 -0
- package/dist/vendor/Cache/Lookup/definition.js +2 -0
- package/dist/vendor/Cache/Lookup.d.ts +2 -0
- package/dist/vendor/Cache/Lookup.d.ts.map +1 -0
- package/dist/vendor/Cache/Lookup.js +3 -0
- package/dist/vendor/Cache/index.d.ts +5 -0
- package/dist/vendor/Cache/index.d.ts.map +1 -0
- package/dist/vendor/Cache/index.js +5 -0
- package/package.json +756 -0
- package/tsconfig.json +107 -0
- package/tsconfig.json.bak +47 -0
- package/tsplus.config.json +6 -0
- package/types/modules.d.ts +1 -0
- package/vitest.config.ts +5 -0
- package/wallaby.cjs +1 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
+
const fileName_1 = "packages/infra/_src/services/Store/Memory.ts";
|
|
3
|
+
import * as tsplus_module_1 from "@fp-ts/data/Chunk";
|
|
4
|
+
import * as tsplus_module_2 from "@effect-app/core/Chunk";
|
|
5
|
+
import * as tsplus_module_3 from "@fp-ts/data/Option";
|
|
6
|
+
import * as tsplus_module_4 from "@effect-app/core/Array";
|
|
7
|
+
import * as tsplus_module_5 from "@effect-app/prelude";
|
|
8
|
+
import * as tsplus_module_6 from "@effect/io/Effect";
|
|
9
|
+
import * as tsplus_module_7 from "@effect/io/Ref";
|
|
10
|
+
import * as tsplus_module_8 from "@effect-app/core/fluent/_ext/awesome/_files/Iterable";
|
|
11
|
+
import * as tsplus_module_9 from "@effect-app/core/Tag";
|
|
12
|
+
import { StoreMaker } from "./service.js";
|
|
13
|
+
import { codeFilter, codeFilterJoinSelect, makeETag, makeUpdateETag } from "./utils.js";
|
|
14
|
+
export function memFilter(filter, cursor) {
|
|
15
|
+
return ((c) => {
|
|
16
|
+
const skip = cursor?.skip;
|
|
17
|
+
const limit = cursor?.limit;
|
|
18
|
+
if (!skip && limit === 1) {
|
|
19
|
+
return tsplus_module_3.getOrElse(() => tsplus_module_1.empty())(tsplus_module_3.map(tsplus_module_1.make)(tsplus_module_2.findFirstMap(codeFilter(filter))(c)));
|
|
20
|
+
}
|
|
21
|
+
let r = tsplus_module_1.filterMap(codeFilter(filter))(c);
|
|
22
|
+
if (skip) {
|
|
23
|
+
r = tsplus_module_1.drop(skip)(r);
|
|
24
|
+
}
|
|
25
|
+
if (limit !== undefined) {
|
|
26
|
+
r = tsplus_module_1.take(limit)(r);
|
|
27
|
+
}
|
|
28
|
+
return tsplus_module_4.ext_itToChunk(r);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export const makeMemoryStore = () => ({
|
|
32
|
+
make: (name, existing, _config) => tracer_1.withCallTrace(fileName_1 + ":31:12")(tsplus_module_6.gen(function* ($) {
|
|
33
|
+
const updateETag = makeUpdateETag(name);
|
|
34
|
+
const items = yield* $(existing ?? tracer_1.withCallTrace(fileName_1 + ":33:42")(tsplus_module_6.sync(() => tsplus_module_5.ROMap.empty)));
|
|
35
|
+
const store = yield* $(tracer_1.withCallTrace(fileName_1 + ":35:13")(tsplus_module_7.make(tsplus_module_5.ROMap.make([...items.entries()].map(([id, e]) => [id, makeETag(e)])))));
|
|
36
|
+
const sem = tsplus_module_6.unsafeMakeSemaphore(1);
|
|
37
|
+
const withPermit = sem.withPermits(1);
|
|
38
|
+
const values = tracer_1.withCallTrace(fileName_1 + ":41:32")(tsplus_module_6.map(s => s.values()))(tsplus_module_7.get(store));
|
|
39
|
+
const all = tracer_1.withCallTrace(fileName_1 + ":42:26")(tsplus_module_6.map(tsplus_module_1.fromIterable))(values);
|
|
40
|
+
const batchSet = (items) => withPermit(tracer_1.withCallTrace(fileName_1 + ":55:12")(tsplus_module_6.map(_ => _.toReadonlyArray()))(tracer_1.withCallTrace(fileName_1 + ":46:12")(tsplus_module_6.tap(items => tracer_1.withCallTrace(fileName_1 + ":53:16")(tsplus_module_6.flatMap(_ => tsplus_module_7.set(store)(_)))(tracer_1.withCallTrace(fileName_1 + ":48:16")(tsplus_module_6.map(m => {
|
|
41
|
+
const mut = tsplus_module_5.ROMap.toMutable(m);
|
|
42
|
+
items.forEach(e => mut.set(e.id, e));
|
|
43
|
+
return tsplus_module_5.ROMap.fromMutable(mut);
|
|
44
|
+
}))(tsplus_module_7.get(store)))))(tsplus_module_8.ext_forEach(items, i => tracer_1.withCallTrace(fileName_1 + ":45:44")(tsplus_module_6.flatMap(current => updateETag(i, current)))(s.find(i.id))))));
|
|
45
|
+
const s = {
|
|
46
|
+
all,
|
|
47
|
+
find: id => tracer_1.withCallTrace(fileName_1 + ":59:31")(tsplus_module_6.map(tsplus_module_5.ROMap.lookup(id)))(tsplus_module_7.get(store)),
|
|
48
|
+
filter: (filter, cursor) => tracer_1.withCallTrace(fileName_1 + ":60:89")(tsplus_module_6.map(memFilter(filter, cursor)))(all),
|
|
49
|
+
filterJoinSelect: (filter) => tracer_1.withCallTrace(fileName_1 + ":62:15")(tsplus_module_6.map(c => c.flatMap(codeFilterJoinSelect(filter))))(all),
|
|
50
|
+
set: e => withPermit(tracer_1.withCallTrace(fileName_1 + ":67:14")(tsplus_module_6.tap(e => tracer_1.withCallTrace(fileName_1 + ":67:60")(tsplus_module_6.flatMap(_ => tsplus_module_7.set(store)(_)))(tracer_1.withCallTrace(fileName_1 + ":67:33")(tsplus_module_6.map(tsplus_module_5.ROMap.insert(e.id, e)))(tsplus_module_7.get(store)))))(tracer_1.withCallTrace(fileName_1 + ":66:14")(tsplus_module_6.flatMap(current => updateETag(e, current)))(s
|
|
51
|
+
.find(e.id)))),
|
|
52
|
+
batchSet,
|
|
53
|
+
bulkSet: batchSet,
|
|
54
|
+
remove: (e) => withPermit(tracer_1.withCallTrace(fileName_1 + ":71:62")(tsplus_module_6.flatMap(_ => tsplus_module_7.set(store)(_)))(tracer_1.withCallTrace(fileName_1 + ":71:38")(tsplus_module_6.map(tsplus_module_5.ROMap.remove(e.id)))(tsplus_module_7.get(store))))
|
|
55
|
+
};
|
|
56
|
+
return s;
|
|
57
|
+
}))
|
|
58
|
+
});
|
|
59
|
+
export const MemoryStoreLive = tsplus_module_9.makeLayer(StoreMaker)(makeMemoryStore());
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9TdG9yZS9NZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV2RixNQUFNLFVBQVUsU0FBUyxDQUEyQixNQUFpQixFQUFFLE1BQTBDO0lBQy9HLE9BQU8sQ0FBQyxDQUFDLENBQVcsRUFBWSxFQUFFO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUE7UUFDekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssQ0FBQTtRQUMzQixJQUFJLENBQUMsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTywwQkFBNkQsR0FBRyxFQUFFLENBQUMsdUJBQWEsRUFBaEYsMENBQUEsNkJBQWUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFqQyxDQUFDLENBQWlDLENBQWdCLENBQStCLENBQUE7U0FDekY7UUFDRCxJQUFJLENBQUMsR0FBRywwQkFBWSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQTlCLENBQUMsQ0FBOEIsQ0FBQTtRQUN2QyxJQUFJLElBQUksRUFBRTtZQUNSLENBQUMsR0FBRyxxQkFBTyxJQUFJLEVBQVgsQ0FBQyxDQUFXLENBQUE7U0FDakI7UUFDRCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsQ0FBQyxHQUFHLHFCQUFPLEtBQUssRUFBWixDQUFDLENBQVksQ0FBQTtTQUNsQjtRQUNELHFDQUFPLENBQUMsRUFBUTtJQUNsQixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztJ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
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Effect } from "@effect/io/Effect";
|
|
2
|
+
import { ROMap } from "@effect-app/prelude";
|
|
3
|
+
import { NonEmptyReadonlyArray } from "@fp-ts/data/ReadonlyArray";
|
|
4
|
+
import { Config } from "@effect/io/Config";
|
|
5
|
+
import * as RedisClient from "@effect-app/infra-adapters/redis-client";
|
|
6
|
+
import type { PersistenceModelType, StorageConfig, Store, StoreConfig } from "./service.js";
|
|
7
|
+
import { StoreMaker } from "./service.js";
|
|
8
|
+
export declare function makeRedisStore({ prefix }: StorageConfig): import("@effect/io/Effect").Effect<RedisClient.RedisClient, never, {
|
|
9
|
+
make: <Id extends string, PM extends PersistenceModelType<Id>, Id2 extends Id>(name: string, existing?: import("@effect/io/Effect").Effect<never, never, import("@effect-app/core/Prelude").Map<Id2, PM>> | undefined, _config?: StoreConfig<PM> | undefined) => import("@effect/io/Effect").Effect<never, never, Store<PM, Id>>;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function RedisStoreLive(config: Config<StorageConfig>): import("@effect/io/Layer").Layer<RedisClient.RedisClient, import("@effect/io/Config/Error").ConfigError, StoreMaker>;
|
|
12
|
+
//# sourceMappingURL=Redis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Redis.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/Redis.ts"],"names":[],"mappings":";;;;AACA,OAAO,KAAK,WAAW,MAAM,yCAAyC,CAAA;AAItE,OAAO,KAAK,EAA4B,oBAAoB,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACrH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa;yFAK1C,MAAM;GA0EnB;AACD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,wHAE3D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
+
const fileName_1 = "packages/infra/_src/services/Store/Redis.ts";
|
|
3
|
+
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
4
|
+
import * as tsplus_module_2 from "@effect-app/core/Effect";
|
|
5
|
+
import * as tsplus_module_3 from "@fp-ts/data/Option";
|
|
6
|
+
import * as tsplus_module_4 from "@effect-app/prelude";
|
|
7
|
+
import * as tsplus_module_5 from "@effect-app/prelude/_ext/Prelude.ext";
|
|
8
|
+
import * as tsplus_module_6 from "@fp-ts/data/Chunk";
|
|
9
|
+
import * as tsplus_module_7 from "@effect-app/core/fluent/_ext/awesome/_files/Iterable";
|
|
10
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
11
|
+
import * as RedisClient from "@effect-app/infra-adapters/redis-client";
|
|
12
|
+
import { NotFoundError } from "../../errors.js";
|
|
13
|
+
import { memFilter } from "./Memory.js";
|
|
14
|
+
import { StoreMaker } from "./service.js";
|
|
15
|
+
import { codeFilterJoinSelect, makeETag, makeUpdateETag } from "./utils.js";
|
|
16
|
+
export function makeRedisStore({ prefix }) {
|
|
17
|
+
return tracer_1.withCallTrace(fileName_1 + ":11:17")(tsplus_module_1.gen(function* ($) {
|
|
18
|
+
const redis = yield* $(tsplus_module_1.service(RedisClient.RedisClient));
|
|
19
|
+
return {
|
|
20
|
+
make: (name, existing, _config) => tracer_1.withCallTrace(fileName_1 + ":19:16")(tsplus_module_1.gen(function* ($) {
|
|
21
|
+
const updateETag = makeUpdateETag(name);
|
|
22
|
+
// Very naive implementation of course.
|
|
23
|
+
const key = `${prefix}${name}`;
|
|
24
|
+
const current = yield* $(tracer_1.withCallTrace(fileName_1 + ":23:63")(tsplus_module_2.provideService(tsplus_module_1.orDie(RedisClient.get(key)), RedisClient.RedisClient, redis)));
|
|
25
|
+
if (!tsplus_module_3.isSome(current)) {
|
|
26
|
+
const m = yield* $(existing ?? tracer_1.withCallTrace(fileName_1 + ":25:44")(tsplus_module_1.sync(() => tsplus_module_4.ROMap.empty)));
|
|
27
|
+
yield* $(tracer_1.withCallTrace(fileName_1 + ":29:18")(tsplus_module_2.provideService(tsplus_module_1.orDie(RedisClient.set(key, JSON.stringify({ data: [...m.values()].map(e => makeETag(e)) }))), RedisClient.RedisClient, redis)));
|
|
28
|
+
}
|
|
29
|
+
const get = tracer_1.withCallTrace(fileName_1 + ":37:14")(tsplus_module_2.provideService(tracer_1.withCallTrace(fileName_1 + ":36:14")(tsplus_module_1.map(_ => _.data))(tracer_1.withCallTrace(fileName_1 + ":35:14")(tsplus_module_1.map(x => JSON.parse(x)))(tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":33:14")(tsplus_module_1.flatMap(x => tsplus_module_5.encaseMaybeInEffect_(x, () => new NotFoundError("data", ""))))(RedisClient.get(key))))), RedisClient.RedisClient, redis));
|
|
30
|
+
const set = (i) => tsplus_module_1.orDie(RedisClient.set(key, JSON.stringify({ data: [...i.values()] })));
|
|
31
|
+
const sem = tsplus_module_1.unsafeMakeSemaphore(1);
|
|
32
|
+
const withPermit = sem.withPermits(1);
|
|
33
|
+
const asMap = tracer_1.withCallTrace(fileName_1 + ":44:29")(tsplus_module_1.map(x => tsplus_module_4.ROMap.make(x.map(x => [x.id, x]))))(get);
|
|
34
|
+
const all = tracer_1.withCallTrace(fileName_1 + ":45:27")(tsplus_module_1.map(tsplus_module_6.fromIterable))(get);
|
|
35
|
+
const batchSet = (items) => tracer_1.withCallTrace(fileName_1 + ":60:16")(tsplus_module_2.provideService(withPermit(tracer_1.withCallTrace(fileName_1 + ":58:16")(tsplus_module_1.map(_ => _.toReadonlyArray()))(tracer_1.withCallTrace(fileName_1 + ":49:16")(tsplus_module_1.tap(items => tracer_1.withCallTrace(fileName_1 + ":56:20")(tsplus_module_1.flatMap(set))(tracer_1.withCallTrace(fileName_1 + ":51:20")(tsplus_module_1.map(m => {
|
|
36
|
+
const mut = tsplus_module_4.ROMap.toMutable(m);
|
|
37
|
+
items.forEach(e => mut.set(e.id, e));
|
|
38
|
+
return tsplus_module_4.ROMap.fromMutable(mut);
|
|
39
|
+
}))(asMap))))(tsplus_module_7.ext_forEach(items, e => tracer_1.withCallTrace(fileName_1 + ":48:48")(tsplus_module_1.flatMap(current => updateETag(e, current)))(s.find(e.id)))))), RedisClient.RedisClient, redis));
|
|
40
|
+
const s = {
|
|
41
|
+
all,
|
|
42
|
+
filter: (filter, cursor) => tracer_1.withCallTrace(fileName_1 + ":64:19")(tsplus_module_1.map(memFilter(filter, cursor)))(all),
|
|
43
|
+
filterJoinSelect: (filter) => tracer_1.withCallTrace(fileName_1 + ":66:19")(tsplus_module_1.map(c => c.flatMap(codeFilterJoinSelect(filter))))(all),
|
|
44
|
+
find: id => tracer_1.withCallTrace(fileName_1 + ":67:31")(tsplus_module_1.map(tsplus_module_4.ROMap.lookup(id)))(asMap),
|
|
45
|
+
set: e => tracer_1.withCallTrace(fileName_1 + ":74:18")(tsplus_module_2.provideService(withPermit(tracer_1.withCallTrace(fileName_1 + ":72:18")(tsplus_module_1.tap(e => tracer_1.withCallTrace(fileName_1 + ":72:60")(tsplus_module_1.flatMap(set))(tracer_1.withCallTrace(fileName_1 + ":72:33")(tsplus_module_1.map(tsplus_module_4.ROMap.insert(e.id, e)))(asMap))))(tracer_1.withCallTrace(fileName_1 + ":71:18")(tsplus_module_1.flatMap(current => updateETag(e, current)))(s
|
|
46
|
+
.find(e.id)))), RedisClient.RedisClient, redis)),
|
|
47
|
+
batchSet,
|
|
48
|
+
bulkSet: batchSet,
|
|
49
|
+
remove: (e) => tracer_1.withCallTrace(fileName_1 + ":80:18")(tsplus_module_2.provideService(withPermit(tracer_1.withCallTrace(fileName_1 + ":78:45")(tsplus_module_1.flatMap(set))(tracer_1.withCallTrace(fileName_1 + ":78:21")(tsplus_module_1.map(tsplus_module_4.ROMap.remove(e.id)))(asMap))), RedisClient.RedisClient, redis))
|
|
50
|
+
};
|
|
51
|
+
return s;
|
|
52
|
+
}))
|
|
53
|
+
};
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
export function RedisStoreLive(config) {
|
|
57
|
+
return tsplus_module_1.toLayer(StoreMaker)(tracer_1.withCallTrace(fileName_1 + ":91:24")(tsplus_module_1.flatMap(makeRedisStore))(tsplus_module_1.config(config)));
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVkaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL1JlZGlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEtBQUssV0FBVyxNQUFNLHlDQUF5QyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBR3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFM0UsTUFBTSxVQUFVLGNBQWMsQ0FBQyxFQUFFLE1BQU0sRUFBaUI7SUFDdEQscURBQU8sb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLHlCQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQVEsQ0FBQTtRQUN0RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLENBQ0osSUFBWSxFQUNaLFFBQStDLEVBQy9DLE9BQXlCLEVBQ3pCLEVBQUUsK0NBQ0Ysb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztnQkFDcEIsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUN2Qyx1Q0FBdUM7Z0JBQ3ZDLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFBO2dCQUM5QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLCtDQUFDLHFEQUFBLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQXNCLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUMsQ0FBQTtnQkFDbkcsSUFBSSxDQUFDLHVCQUFBLE9BQU8sQ0FBUyxF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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeFilter.test.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/codeFilter.test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAA;AAU/E,QAAA,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;CAA2B,CAAA;AACnC,MAAM,MAAM,oBAAoB,GAAG,OAAO,EAAE,CAAA;AAE5C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,oBAAoB,KAAK,gBAAgB,oBAEzF;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,CACT,CAAC,EAAE,oBAAoB,KACpB,KAAK,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,EAChC,IAAI,CAAC,EAAE,IAAI,GAAG,KAAK,oBASpB;AAGD,KAAK,aAAa,GAAG;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,KAAK,SAAS,GAAG;IACf,CAAC,EAAE,MAAM,CAAC;IACV,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CAC5B,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Config } from "@effect/io/Config";
|
|
2
|
+
import type { StorageConfig } from "./service.js";
|
|
3
|
+
import { StoreMaker } from "./service.js";
|
|
4
|
+
/**
|
|
5
|
+
* @tsplus static StoreMaker.Ops Live
|
|
6
|
+
* @tsplus location "@effect-app/infra/services/Store/index"
|
|
7
|
+
*/
|
|
8
|
+
export declare function StoreMakerLive(config: Config<StorageConfig>): import("@effect/io/Layer").Layer<never, import("@effect/io/Config/Error").ConfigError, StoreMaker>;
|
|
9
|
+
export * from "./service.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/index.ts"],"names":[],"mappings":";AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;;;;;AAKzC,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,sGA2B3D;AAmBD,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
+
const fileName_1 = "packages/infra/_src/services/Store/index.ts";
|
|
3
|
+
import * as tsplus_module_1 from "@effect/io/Config/Secret";
|
|
4
|
+
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
5
|
+
import * as tsplus_module_3 from "@effect-app/core/Effect";
|
|
6
|
+
import * as tsplus_module_4 from "@effect/io/Layer";
|
|
7
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
8
|
+
import * as CosmosClient from "@effect-app/infra-adapters/cosmos-client";
|
|
9
|
+
import * as RedisClient from "@effect-app/infra-adapters/redis-client";
|
|
10
|
+
import { createClient } from "redis";
|
|
11
|
+
import { makeCosmosStore } from "./Cosmos.js";
|
|
12
|
+
import { makeDiskStore } from "./Disk.js";
|
|
13
|
+
import { makeMemoryStore } from "./Memory.js";
|
|
14
|
+
import { makeRedisStore } from "./Redis.js";
|
|
15
|
+
import { StoreMaker } from "./service.js";
|
|
16
|
+
/**
|
|
17
|
+
* @tsplus static StoreMaker.Ops Live
|
|
18
|
+
*/
|
|
19
|
+
export function StoreMakerLive(config) {
|
|
20
|
+
return tsplus_module_4.scoped(StoreMaker)(tracer_1.withCallTrace(fileName_1 + ":17:24")(tsplus_module_2.flatMap(cfg => {
|
|
21
|
+
const storageUrl = tsplus_module_1.value(cfg.url);
|
|
22
|
+
if (storageUrl.startsWith("mem://")) {
|
|
23
|
+
console.log("Using in memory store");
|
|
24
|
+
return tracer_1.withCallTrace(fileName_1 + ":21:14")(tsplus_module_2.sync(() => makeMemoryStore()));
|
|
25
|
+
}
|
|
26
|
+
if (storageUrl.startsWith("disk://")) {
|
|
27
|
+
console.log("Using disk store at ./.data");
|
|
28
|
+
return makeDiskStore(cfg);
|
|
29
|
+
}
|
|
30
|
+
if (storageUrl.startsWith("redis://")) {
|
|
31
|
+
console.log("Using Redis store");
|
|
32
|
+
return tracer_1.withCallTrace(fileName_1 + ":29:65")(tsplus_module_2.flatMap(client => tracer_1.withCallTrace(fileName_1 + ":30:29")(tsplus_module_3.provideService(makeRedisStore(cfg), RedisClient.RedisClient, client))))(RedisClient.makeRedisClient(makeRedis(storageUrl)));
|
|
33
|
+
}
|
|
34
|
+
console.log("Using Cosmos DB store");
|
|
35
|
+
return tracer_1.withCallTrace(fileName_1 + ":38:66")(tsplus_module_2.flatMap(client => tracer_1.withCallTrace(fileName_1 + ":39:28")(tsplus_module_3.provideService(makeCosmosStore(cfg), CosmosClient.CosmosClient, client))))(CosmosClient.makeCosmosClient(storageUrl, cfg.dbName));
|
|
36
|
+
}))(tsplus_module_2.config(config)));
|
|
37
|
+
}
|
|
38
|
+
function makeRedis(storageUrl) {
|
|
39
|
+
const url = new URL(storageUrl);
|
|
40
|
+
const hostname = url.hostname;
|
|
41
|
+
const password = url.password;
|
|
42
|
+
return () => createClient(storageUrl === "redis://"
|
|
43
|
+
? {
|
|
44
|
+
host: hostname,
|
|
45
|
+
port: 6380,
|
|
46
|
+
auth_pass: password,
|
|
47
|
+
tls: { servername: hostname }
|
|
48
|
+
}
|
|
49
|
+
: storageUrl);
|
|
50
|
+
}
|
|
51
|
+
export * from "./service.js";
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEtBQUssWUFBWSxNQUFNLDBDQUEwQyxDQUFBO0FBQ3hFLE9BQU8sS0FBSyxXQUFXLE1BQU0seUNBQXlDLENBQUE7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUVwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFekM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQTZCO0lBQzFELE9BQU8sdUJBeUJVLFVBQVUsRUF6QnBCLHNFQUFzQixHQUFHLENBQUMsRUFBRTtRQUNqQyxNQUFNLFVBQVUseUJBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBTSxDQUFBO1FBQ2hDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNuQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUE7WUFDcEMscURBQU8sMkJBQU8sZUFBZSxFQUFFLENBQUMsRUFBQTtTQUNqQztRQUNELElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUE7WUFDMUMsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUE7U0FDMUI7UUFDRCxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1lBQ2hDLE9BQU8sc0VBQTJELE1BQU0sQ0FBQyxFQUFFLCtDQUN6RSwrQkFBQSxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQ2pCLFdBQVcsQ0FBQyxXQUFXLEVBQ3ZCLE1BQU0sQ0FDUCxDQUFBLEdBSkksV0FBVyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FLeEQsQ0FBQTtTQUNGO1FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1FBQ3BDLE9BQU8sc0VBQThELE1BQU0sQ0FBQyxFQUFFLCtDQUM1RSwrQkFBQSxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQWdCLFlBQVksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUEsR0FEakUsWUFBWSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBRTNELENBQUE7SUFDSCxDQUFDLDBCQXhCTSxNQUFNLEVBd0JYLENBQzBCLENBQUE7QUFDOUIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLFVBQWtCO0lBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQy9CLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUE7SUFDN0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQTtJQUM3QixPQUFPLEdBQUcsRUFBRSxDQUNWLFlBQVksQ0FDVixVQUFVLEtBQUssVUFBVTtRQUN2QixDQUFDLENBQUU7WUFDRCxJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLFFBQVE7WUFDbkIsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRTtTQUN0QjtRQUNULENBQUMsQ0FBRSxVQUFrQixDQUN4QixDQUFBO0FBQ0wsQ0FBQztBQUVELGNBQWMsY0FBYyxDQUFBIn0=
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Effect } from "@effect/io/Effect";
|
|
2
|
+
import { Chunk } from "@fp-ts/data/Chunk";
|
|
3
|
+
import { Opt } from "@effect-app/core/Option";
|
|
4
|
+
import { NonEmptyReadonlyArray } from "@fp-ts/data/ReadonlyArray";
|
|
5
|
+
import { ROMap } from "@effect-app/prelude";
|
|
6
|
+
import { Tag } from "@fp-ts/data/Context";
|
|
7
|
+
import { ConfigSecret } from "@effect/io/Config/Secret";
|
|
8
|
+
import type { UniqueKey } from "@azure/cosmos";
|
|
9
|
+
import type { ParserEnv } from "@effect-app/schema/custom/Parser";
|
|
10
|
+
import type { OptimisticConcurrencyException } from "../../errors.js";
|
|
11
|
+
export type StoreConfig<E> = {
|
|
12
|
+
uniqueKeys?: UniqueKey[];
|
|
13
|
+
maxBulkSize?: number;
|
|
14
|
+
partitionValue: (e: E) => string | undefined;
|
|
15
|
+
};
|
|
16
|
+
export type SupportedValues = string | boolean | number | null;
|
|
17
|
+
export type Where = {
|
|
18
|
+
key: string;
|
|
19
|
+
t?: "eq" | "not-eq";
|
|
20
|
+
value: SupportedValues;
|
|
21
|
+
} | {
|
|
22
|
+
key: string;
|
|
23
|
+
t: "in" | "not-in";
|
|
24
|
+
value: readonly (SupportedValues)[];
|
|
25
|
+
};
|
|
26
|
+
export type StoreWhereFilter = {
|
|
27
|
+
type?: "where";
|
|
28
|
+
mode?: "and" | "or";
|
|
29
|
+
where: readonly [
|
|
30
|
+
Where,
|
|
31
|
+
...(Where[])
|
|
32
|
+
];
|
|
33
|
+
};
|
|
34
|
+
export type LegacyFilter<E> = {
|
|
35
|
+
by: keyof E;
|
|
36
|
+
type: "startsWith";
|
|
37
|
+
value: any;
|
|
38
|
+
} | {
|
|
39
|
+
by: keyof E;
|
|
40
|
+
type: "endsWith";
|
|
41
|
+
value: any;
|
|
42
|
+
} | {
|
|
43
|
+
by: keyof E;
|
|
44
|
+
type: "contains";
|
|
45
|
+
value: any;
|
|
46
|
+
};
|
|
47
|
+
export type JoinFindFilter = {
|
|
48
|
+
type: "join_find";
|
|
49
|
+
keys: readonly string[];
|
|
50
|
+
valueKey: string;
|
|
51
|
+
value: any;
|
|
52
|
+
};
|
|
53
|
+
export type Filter<E> = JoinFindFilter | StoreWhereFilter | LegacyFilter<E>;
|
|
54
|
+
export type FilterJoinSelect = {
|
|
55
|
+
type: "filter_join_select";
|
|
56
|
+
keys: readonly string[];
|
|
57
|
+
valueKey: string;
|
|
58
|
+
value: any;
|
|
59
|
+
};
|
|
60
|
+
export interface Store<PM extends PersistenceModelType<Id>, Id extends string> {
|
|
61
|
+
all: Effect<never, never, Chunk<PM>>;
|
|
62
|
+
filter: (filter: Filter<PM>, cursor?: {
|
|
63
|
+
limit?: number;
|
|
64
|
+
skip?: number;
|
|
65
|
+
}) => Effect<never, never, Chunk<PM>>;
|
|
66
|
+
filterJoinSelect: <T extends object>(filter: FilterJoinSelect) => Effect<never, never, Chunk<T & {
|
|
67
|
+
_rootId: string;
|
|
68
|
+
}>>;
|
|
69
|
+
find: (id: Id) => Effect<never, never, Opt<PM>>;
|
|
70
|
+
set: (e: PM) => Effect<never, OptimisticConcurrencyException, PM>;
|
|
71
|
+
batchSet: (items: NonEmptyReadonlyArray<PM>) => Effect<never, OptimisticConcurrencyException, NonEmptyReadonlyArray<PM>>;
|
|
72
|
+
bulkSet: (items: NonEmptyReadonlyArray<PM>) => Effect<never, OptimisticConcurrencyException, NonEmptyReadonlyArray<PM>>;
|
|
73
|
+
/**
|
|
74
|
+
* Requires the PM type, not Id, because various stores may need to calculate e.g partition keys.
|
|
75
|
+
*/
|
|
76
|
+
remove: (e: PM) => Effect<never, never, void>;
|
|
77
|
+
}
|
|
78
|
+
export interface StoreMaker {
|
|
79
|
+
make: <E extends PersistenceModelType<Id>, Id extends string, Id2 extends Id>(name: string, existing?: Effect<never, never, ROMap<Id2, E>>, config?: StoreConfig<E>) => Effect<never, never, Store<E, Id>>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* @tsplus type StoreMaker.Ops
|
|
83
|
+
*/
|
|
84
|
+
export interface StoreMakerOps extends Tag<StoreMaker> {
|
|
85
|
+
}
|
|
86
|
+
export declare const StoreMaker: StoreMakerOps;
|
|
87
|
+
/**
|
|
88
|
+
* @tsplus static ContextMap.Ops Make
|
|
89
|
+
* @tsplus location "@effect-app/infra/services/Store/service"
|
|
90
|
+
*/
|
|
91
|
+
export declare const makeMap: import("@effect/io/Effect").Effect<never, never, {
|
|
92
|
+
get: (id: string) => string | undefined;
|
|
93
|
+
set: (id: string, eTag: string | undefined) => void;
|
|
94
|
+
parserEnv: ParserEnv;
|
|
95
|
+
}>;
|
|
96
|
+
export interface ContextMap extends Effect.Success<typeof makeMap> {
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* @tsplus type ContextMap.Ops
|
|
100
|
+
*/
|
|
101
|
+
export interface ContextMapOps extends Tag<ContextMap> {
|
|
102
|
+
}
|
|
103
|
+
export declare const ContextMap: ContextMapOps;
|
|
104
|
+
export interface PersistenceModelType<Id extends string> {
|
|
105
|
+
id: Id;
|
|
106
|
+
_etag: string | undefined;
|
|
107
|
+
}
|
|
108
|
+
export interface StorageConfig {
|
|
109
|
+
url: ConfigSecret;
|
|
110
|
+
prefix: string;
|
|
111
|
+
dbName: string;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
+
const fileName_1 = "packages/infra/_src/services/Store/service.ts";
|
|
3
|
+
import * as tsplus_module_1 from "@fp-ts/data/Context";
|
|
4
|
+
import * as tsplus_module_2 from "@effect-app/prelude";
|
|
5
|
+
import * as tsplus_module_3 from "@effect/io/Effect";
|
|
6
|
+
export const StoreMaker = tsplus_module_1.Tag();
|
|
7
|
+
/**
|
|
8
|
+
* @tsplus static ContextMap.Ops Make
|
|
9
|
+
*/
|
|
10
|
+
export const makeMap = tracer_1.withCallTrace(fileName_1 + ":94:24")(tsplus_module_3.sync(() => {
|
|
11
|
+
const etags = tsplus_module_2.ROMap.make([])["|>"](tsplus_module_2.ROMap.toMutable);
|
|
12
|
+
const getEtag = (id) => etags.get(id);
|
|
13
|
+
const setEtag = (id, eTag) => {
|
|
14
|
+
eTag === undefined ? etags.delete(id) : etags.set(id, eTag);
|
|
15
|
+
};
|
|
16
|
+
const parsedCache = tsplus_module_2.ROMap.make([])["|>"](tsplus_module_2.ROMap.toMutable);
|
|
17
|
+
const parserCache = tsplus_module_2.ROMap.make([])["|>"](tsplus_module_2.ROMap.toMutable);
|
|
18
|
+
const setAndReturn = (p, np) => {
|
|
19
|
+
parserCache.set(p, np);
|
|
20
|
+
return np;
|
|
21
|
+
};
|
|
22
|
+
const parserEnv = {
|
|
23
|
+
// TODO: lax: true would turn off refinement checks, may help on large payloads
|
|
24
|
+
// but of course removes confirming of validation rules (which may be okay for a database owned by the app, as we write safely)
|
|
25
|
+
lax: false,
|
|
26
|
+
cache: {
|
|
27
|
+
getOrSetParser: p => parserCache.get(p) ?? setAndReturn(p, i => parserEnv.cache.getOrSet(i, p)),
|
|
28
|
+
getOrSetParsers: parsers => {
|
|
29
|
+
return Object.entries(parsers).reduce((prev, [k, v]) => {
|
|
30
|
+
prev[k] = parserEnv.cache.getOrSetParser(v);
|
|
31
|
+
return prev;
|
|
32
|
+
}, {});
|
|
33
|
+
},
|
|
34
|
+
getOrSet: (i, parse) => {
|
|
35
|
+
const c = parsedCache.get(parse);
|
|
36
|
+
if (c) {
|
|
37
|
+
const f = c.get(i);
|
|
38
|
+
if (f) {
|
|
39
|
+
// console.log("$$$ cache hit", i)
|
|
40
|
+
return f;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
const nf = parse(i, parserEnv);
|
|
44
|
+
c.set(i, nf);
|
|
45
|
+
return nf;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const nf = parse(i, parserEnv);
|
|
50
|
+
parsedCache.set(parse, tsplus_module_2.ROMap.make([[i, nf]])["|>"](tsplus_module_2.ROMap.toMutable));
|
|
51
|
+
return nf;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
return {
|
|
57
|
+
get: getEtag,
|
|
58
|
+
set: setEtag,
|
|
59
|
+
parserEnv
|
|
60
|
+
};
|
|
61
|
+
}));
|
|
62
|
+
export const ContextMap = tsplus_module_1.Tag();
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvU3RvcmUvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXdGQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLGdCQUFBLEdBQUcsRUFBYyxDQUFBO0FBRTFEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxpREFBRyxxQkFBTyxHQUFHLEVBQUU7SUFDakMsTUFBTSxLQUFLLEdBQUcsZ0JBQUEsS0FBSyxDQUFDLElBQUksQ0FBaUIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQUEsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ25FLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzdDLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBVSxFQUFFLElBQXdCLEVBQUUsRUFBRTtRQUN2RCxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM3RCxDQUFDLENBQUE7SUFFRCxNQUFNLFdBQVcsR0FBRyxnQkFBQSxLQUFLLENBQUMsSUFBSSxDQUc1QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBQSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFNUIsTUFBTSxXQUFXLEdBQUcsZ0JBQUEsS0FBSyxDQUFDLElBQUksQ0FHNUIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQUEsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBRTVCLE1BQU0sWUFBWSxHQUFHLENBQ25CLENBQWtCLEVBQ2xCLEVBQStCLEVBQy9CLEVBQUU7UUFDRixXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUN0QixPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUMsQ0FBQTtJQUVELE1BQU0sU0FBUyxHQUFjO1FBQzNCLCtFQUErRTtRQUMvRSwrSEFBK0g7UUFDL0gsR0FBRyxFQUFFLEtBQUs7UUFDVixLQUFLLEVBQUU7WUFDTCxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEcsZUFBZSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUN6QixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ3JELElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDNUMsT0FBTyxJQUFJLENBQUE7Z0JBQ2IsQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFBO1lBQ2YsQ0FBQztZQUNELFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQU8sRUFBRTtnQkFDMUIsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDaEMsSUFBSSxDQUFDLEVBQUU7b0JBQ0wsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDbEIsSUFBSSxDQUFDLEVBQUU7d0JBQ0wsa0NBQWtDO3dCQUNsQyxPQUFPLENBQUMsQ0FBQTtxQkFDVDt5QkFBTTt3QkFDTCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO3dCQUM5QixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTt3QkFDWixPQUFPLEVBQUUsQ0FBQTtxQkFDVjtpQkFDRjtxQkFBTTtvQkFDTCxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFBO29CQUM5QixXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxnQkFBQSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFBLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO29CQUNwRSxPQUFPLEVBQUUsQ0FBQTtpQkFDVjtZQUNILENBQUM7U0FDRjtLQUNGLENBQUE7SUFFRCxPQUFPO1FBQ0wsR0FBRyxFQUFFLE9BQU87UUFDWixHQUFHLEVBQUUsT0FBTztRQUNaLFNBQVM7S0FDVixDQUFBO0FBQ0gsQ0FBQyxDQUFDLENBQUEsQ0FBQTtBQU1GLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBa0IsZ0JBQUEsR0FBRyxFQUFjLENBQUEifQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Opt } from "@effect-app/core/Option";
|
|
2
|
+
import { OptimisticConcurrencyException } from "../../errors.js";
|
|
3
|
+
import type { Filter, FilterJoinSelect, PersistenceModelType } from "./service.js";
|
|
4
|
+
export declare const makeETag: <E extends PersistenceModelType<Id>, Id extends string>({ _etag, ...e }: E) => E;
|
|
5
|
+
export declare const makeUpdateETag: (name: string) => <E extends PersistenceModelType<Id>, Id extends string>(e: E, current: import("@fp-ts/data/Option").Option<E>) => import("@effect/io/Effect").Effect<never, OptimisticConcurrencyException, E>;
|
|
6
|
+
export declare function codeFilter<E extends {
|
|
7
|
+
id: string;
|
|
8
|
+
}, NE extends E>(filter: Filter<NE>): (x: E) => import("@fp-ts/data/Option").None | import("@fp-ts/data/Option").Some<NE>;
|
|
9
|
+
export declare function codeFilterJoinSelect<E extends {
|
|
10
|
+
id: string;
|
|
11
|
+
}, NE>(filter: FilterJoinSelect): (x: E) => import("@fp-ts/data/Chunk").Chunk<NE & {
|
|
12
|
+
_rootId: string;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/utils.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAA;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAIlF,eAAO,MAAM,QAAQ,kFAMV,CAAA;AACX,eAAO,MAAM,cAAc,SAAU,MAAM,mMAUrC,CAAA;AAEN,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,OACxE,CAAC,+EA8Db;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,EAC/D,MAAM,EAAE,gBAAgB,OAEb,CAAC;;GAiBb"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
+
const fileName_1 = "packages/infra/_src/services/Store/utils.ts";
|
|
3
|
+
import * as tsplus_module_1 from "@fp-ts/data/Option";
|
|
4
|
+
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
5
|
+
import * as tsplus_module_3 from "@fp-ts/data/ReadonlyArray";
|
|
6
|
+
import * as tsplus_module_4 from "@effect-app/core/Array";
|
|
7
|
+
import { get } from "@effect-app/prelude/utils";
|
|
8
|
+
import { OptimisticConcurrencyException } from "../../errors.js";
|
|
9
|
+
import objectHash from "object-hash";
|
|
10
|
+
export const makeETag = ({ _etag, ...e }) => ({
|
|
11
|
+
...e,
|
|
12
|
+
_etag: objectHash(e)
|
|
13
|
+
});
|
|
14
|
+
export const makeUpdateETag = (name) => (e, current) => tracer_1.withCallTrace(fileName_1 + ":18:12")(tsplus_module_2.gen(function* ($) {
|
|
15
|
+
if (tsplus_module_1.isSome(current) && current.value._etag !== e._etag) {
|
|
16
|
+
return yield* $(tracer_1.withCallTrace(fileName_1 + ":21:18")(tsplus_module_2.fail(new OptimisticConcurrencyException(name, current.value.id, current.value._etag, e._etag))));
|
|
17
|
+
}
|
|
18
|
+
const newE = makeETag(e);
|
|
19
|
+
return newE;
|
|
20
|
+
}));
|
|
21
|
+
export function codeFilter(filter) {
|
|
22
|
+
return (x) => filter.type === "startsWith"
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
|
+
? lowercaseIfString(x[filter.by]).startsWith(filter.value.toLowerCase())
|
|
25
|
+
? tsplus_module_1.some(x)
|
|
26
|
+
: tsplus_module_1.none
|
|
27
|
+
: filter.type === "endsWith"
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
? lowercaseIfString(x[filter.by]).endsWith(filter.value.toLowerCase())
|
|
30
|
+
? tsplus_module_1.some(x)
|
|
31
|
+
: tsplus_module_1.none
|
|
32
|
+
: filter.type === "contains"
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
35
|
+
? lowercaseIfString(x[filter.by]).includes(filter.value.toLowerCase())
|
|
36
|
+
? tsplus_module_1.some(x)
|
|
37
|
+
: tsplus_module_1.none
|
|
38
|
+
: filter.type === "join_find"
|
|
39
|
+
? filter.keys.some(k => {
|
|
40
|
+
const value = get(x, k);
|
|
41
|
+
// we mimic the behavior of cosmosdb; if the shape in db does not match what we're looking for, we imagine false hit
|
|
42
|
+
return (value &&
|
|
43
|
+
value.some(v => compareCaseInsensitive(v[filter.valueKey], filter.value)));
|
|
44
|
+
})
|
|
45
|
+
? tsplus_module_1.some(x)
|
|
46
|
+
: tsplus_module_1.none
|
|
47
|
+
: // TODO: support mixed or/and
|
|
48
|
+
filter.mode === "or"
|
|
49
|
+
? filter.where
|
|
50
|
+
.some(p => p.t === "in"
|
|
51
|
+
? p.value.includes(get(x, p.key))
|
|
52
|
+
: p.t === "not-in"
|
|
53
|
+
? !p.value.includes(get(x, p.key))
|
|
54
|
+
: p.t === "not-eq"
|
|
55
|
+
? !compareCaseInsensitive(get(x, p.key), p.value)
|
|
56
|
+
: compareCaseInsensitive(get(x, p.key), p.value))
|
|
57
|
+
? tsplus_module_1.some(x)
|
|
58
|
+
: tsplus_module_1.none
|
|
59
|
+
: filter.where
|
|
60
|
+
.every(p => p.t === "in"
|
|
61
|
+
? p.value.includes(get(x, p.key))
|
|
62
|
+
: p.t === "not-in"
|
|
63
|
+
? !p.value.includes(get(x, p.key))
|
|
64
|
+
: p.t === "not-eq"
|
|
65
|
+
? p.key.includes(".-1.")
|
|
66
|
+
? get(x, p.key.split(".-1.")[0])
|
|
67
|
+
// TODO: or vs and
|
|
68
|
+
.every(_ => !compareCaseInsensitive(get(_, p.key.split(".-1.")[1]), p.value))
|
|
69
|
+
: !compareCaseInsensitive(get(x, p.key), p.value)
|
|
70
|
+
: p.key.includes(".-1.")
|
|
71
|
+
? get(x, p.key.split(".-1.")[0])
|
|
72
|
+
// TODO: or vs and
|
|
73
|
+
.some(_ => compareCaseInsensitive(get(_, p.key.split(".-1.")[1]), p.value))
|
|
74
|
+
: compareCaseInsensitive(get(x, p.key), p.value))
|
|
75
|
+
? tsplus_module_1.some(x)
|
|
76
|
+
: tsplus_module_1.none;
|
|
77
|
+
}
|
|
78
|
+
export function codeFilterJoinSelect(filter) {
|
|
79
|
+
return (x) => tsplus_module_4.ext_itToChunk(tsplus_module_3.filterMap(k => {
|
|
80
|
+
const value = get(x, k);
|
|
81
|
+
// we mimic the behavior of cosmosdb; if the shape in db does not match what we're looking for, we imagine false hit
|
|
82
|
+
return value
|
|
83
|
+
? tsplus_module_1.some(tsplus_module_3.filterMap(v =>
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
85
|
+
compareCaseInsensitive(v[filter.valueKey], filter.value)
|
|
86
|
+
? tsplus_module_1.some({ ...v, _rootId: x.id })
|
|
87
|
+
: tsplus_module_1.none)(value))
|
|
88
|
+
: tsplus_module_1.none;
|
|
89
|
+
})(filter.keys)
|
|
90
|
+
.flatMap(_ => _));
|
|
91
|
+
}
|
|
92
|
+
function lowercaseIfString(val) {
|
|
93
|
+
if (typeof val === "string") {
|
|
94
|
+
return val.toLowerCase();
|
|
95
|
+
}
|
|
96
|
+
return val;
|
|
97
|
+
}
|
|
98
|
+
function compareCaseInsensitive(valA, valB) {
|
|
99
|
+
return typeof valB === "string" && typeof valA === "string"
|
|
100
|
+
? valA.toLowerCase() === valB.toLowerCase()
|
|
101
|
+
: valA === valB;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUUvQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUloRSxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUE7QUFFcEMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQ3RCLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFLLEVBQ2YsRUFBRSxDQUNMLENBQUM7SUFDQyxHQUFHLENBQUM7SUFDSixLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztDQUNyQixDQUFRLENBQUE7QUFDWCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUM3QyxDQUF3RCxDQUFJLEVBQUUsT0FBZSxFQUFFLEVBQUUsK0NBQy9FLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7SUFDcEIsSUFBSSx1QkFBQSxPQUFPLENBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFO1FBQ3ZELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQywrQ0FDYixxQkFBWSxJQUFJLDhCQUE4QixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDdEcsQ0FBQTtLQUNGO0lBQ0QsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3hCLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyxDQUFDLENBQUEsQ0FBQTtBQUVOLE1BQU0sVUFBVSxVQUFVLENBQXlDLE1BQWtCO0lBQ25GLE9BQU8sQ0FBQyxDQUFJLEVBQUUsRUFBRSxDQUNkLE1BQU0sQ0FBQyxJQUFJLEtBQUssWUFBWTtRQUMxQiw4REFBOEQ7UUFDOUQsQ0FBQyxDQUFDLGlCQUFpQixDQUFFLENBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvRSxDQUFDLENBQUMscUJBQUksQ0FBa0IsQ0FBQztZQUN6QixDQUFDLHFCQUFTO1FBQ1osQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVTtZQUM1Qiw4REFBOEQ7WUFDOUQsQ0FBQyxDQUFDLGlCQUFpQixDQUFFLENBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDN0UsQ0FBQyxDQUFDLHFCQUFJLENBQWtCLENBQUM7Z0JBQ3pCLENBQUMscUJBQVM7WUFDWixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVO2dCQUM1Qiw4REFBOEQ7Z0JBQzlELDZEQUE2RDtnQkFDN0QsQ0FBQyxDQUFDLGlCQUFpQixDQUFFLENBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDN0UsQ0FBQyxDQUFDLHFCQUFJLENBQWtCLENBQUM7b0JBQ3pCLENBQUMscUJBQVM7Z0JBQ1osQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssV0FBVztvQkFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUNuQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBOEIsQ0FBQTt3QkFDcEQsb0hBQW9IO3dCQUNwSCxPQUFPLENBQ0wsS0FBSzs0QkFDTCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDMUUsQ0FBQTtvQkFDSCxDQUFDLENBQUM7d0JBQ0YsQ0FBQyxDQUFDLHFCQUFJLENBQWtCLENBQUM7d0JBQ3pCLENBQUMscUJBQVM7b0JBQ1osQ0FBQyxDQUFDLDZCQUE2Qjt3QkFDN0IsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJOzRCQUNwQixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUs7aUNBQ1QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ1IsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJO2dDQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQ0FDakMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUTtvQ0FDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7b0NBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7d0NBQ2xCLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUM7d0NBQ2pELENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQ25EO2dDQUNILENBQUMsQ0FBQyxxQkFBSSxDQUFrQixDQUFDO2dDQUN6QixDQUFDLHFCQUFTOzRCQUNaLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSztpQ0FDVCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDVCxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUk7Z0NBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dDQUNqQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRO29DQUNsQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQ0FDbEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUTt3Q0FDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzs0Q0FDdEIsQ0FBQyxDQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQVc7Z0RBQ3pDLGtCQUFrQjtpREFDakIsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRDQUNoRixDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO3dDQUNuRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDOzRDQUN4QixDQUFDLENBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBVztnREFDekMsa0JBQWtCO2lEQUNqQixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRDQUM5RSxDQUFDLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUNuRDtnQ0FDTCxDQUFDLENBQUMscUJBQUksQ0FBa0IsQ0FBQztnQ0FDekIsQ0FBQyxxQkFBUyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLE1BQXdCO0lBRXhCLE9BQU8sQ0FBQyxDQUFJLEVBQUUsRUFBRSwrQkFDZCwwQkFBc0IsQ0FBQyxDQUFDLEVBQUU7UUFDeEIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUN2QixvSEFBb0g7UUFDcEgsT0FBTyxLQUFLO1lBQ1YsQ0FBQyxDQUFDLHFCQUNBLDBCQUFtQyxDQUFDLENBQUMsRUFBRTtZQUNyQyw4REFBOEQ7WUFDOUQsc0JBQXNCLENBQUUsQ0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUMvRCxDQUFDLENBQUMscUJBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM5QixDQUFDLHFCQUFTLEVBSmIsS0FBdUIsQ0FLdkIsQ0FDRjtZQUNELENBQUMscUJBQVMsQ0FBQTtJQUNkLENBQUMsRUFiRCxNQUFNLENBQUMsSUFBSSxDQWFUO1NBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQTtBQUNkLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFJLEdBQU07SUFDbEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7UUFDM0IsT0FBTyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUE7S0FDekI7SUFDRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQWEsRUFBRSxJQUFhO0lBQzFELE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDekQsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQzNDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFBO0FBQ25CLENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../_src/services/Store.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Effect } from "@effect/io/Effect";
|
|
2
|
+
import { Queue } from "@effect/io/Queue";
|
|
3
|
+
import { Tag } from "@fp-ts/data/Context";
|
|
4
|
+
export interface MemQueue {
|
|
5
|
+
getOrCreateQueue: (k: string) => Effect<never, never, Queue<string>>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* @tsplus type MemQueue.Ops
|
|
9
|
+
*/
|
|
10
|
+
export interface MemQueueOps extends Tag<MemQueue> {
|
|
11
|
+
}
|
|
12
|
+
export declare const MemQueue: MemQueueOps;
|
|
13
|
+
/**
|
|
14
|
+
* @tsplus static MemQueue.Ops Live
|
|
15
|
+
* @tsplus location "@effect-app/infra/services/memQueue"
|
|
16
|
+
*/
|
|
17
|
+
export declare const LiveMemQueue: import("@effect/io/Layer").Layer<never, never, MemQueue>;
|
|
18
|
+
//# sourceMappingURL=memQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../_src/services/memQueue.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,QAAQ;IACvB,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;CACrE;AAED;;GAEG;AAEH,MAAM,WAAW,WAAY,SAAQ,GAAG,CAAC,QAAQ,CAAC;CAAG;AACrD,eAAO,MAAM,QAAQ,EAAE,WAA6B,CAAA;;;;;AAKpD,eAAO,MAAM,YAAY,0DAaL,CAAA"}
|