@proseql/core 0.1.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/LICENSE +21 -0
- package/dist/errors/crud-errors.d.ts +98 -0
- package/dist/errors/crud-errors.d.ts.map +1 -0
- package/dist/errors/crud-errors.js +23 -0
- package/dist/errors/crud-errors.js.map +1 -0
- package/dist/errors/index.d.ts +16 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +12 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/migration-errors.d.ts +22 -0
- package/dist/errors/migration-errors.d.ts.map +1 -0
- package/dist/errors/migration-errors.js +14 -0
- package/dist/errors/migration-errors.js.map +1 -0
- package/dist/errors/plugin-errors.d.ts +15 -0
- package/dist/errors/plugin-errors.d.ts.map +1 -0
- package/dist/errors/plugin-errors.js +11 -0
- package/dist/errors/plugin-errors.js.map +1 -0
- package/dist/errors/query-errors.d.ts +31 -0
- package/dist/errors/query-errors.d.ts.map +1 -0
- package/dist/errors/query-errors.js +11 -0
- package/dist/errors/query-errors.js.map +1 -0
- package/dist/errors/storage-errors.d.ts +30 -0
- package/dist/errors/storage-errors.d.ts.map +1 -0
- package/dist/errors/storage-errors.js +11 -0
- package/dist/errors/storage-errors.js.map +1 -0
- package/dist/factories/crud-factory-with-relationships.d.ts +28 -0
- package/dist/factories/crud-factory-with-relationships.d.ts.map +1 -0
- package/dist/factories/crud-factory-with-relationships.js +8 -0
- package/dist/factories/crud-factory-with-relationships.js.map +1 -0
- package/dist/factories/crud-factory.d.ts +25 -0
- package/dist/factories/crud-factory.d.ts.map +1 -0
- package/dist/factories/crud-factory.js +8 -0
- package/dist/factories/crud-factory.js.map +1 -0
- package/dist/factories/database-effect.d.ts +241 -0
- package/dist/factories/database-effect.d.ts.map +1 -0
- package/dist/factories/database-effect.js +859 -0
- package/dist/factories/database-effect.js.map +1 -0
- package/dist/hooks/hook-runner.d.ts +60 -0
- package/dist/hooks/hook-runner.d.ts.map +1 -0
- package/dist/hooks/hook-runner.js +107 -0
- package/dist/hooks/hook-runner.js.map +1 -0
- package/dist/index.d.ts +84 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +110 -0
- package/dist/index.js.map +1 -0
- package/dist/indexes/index-lookup.d.ts +33 -0
- package/dist/indexes/index-lookup.d.ts.map +1 -0
- package/dist/indexes/index-lookup.js +180 -0
- package/dist/indexes/index-lookup.js.map +1 -0
- package/dist/indexes/index-manager.d.ts +118 -0
- package/dist/indexes/index-manager.d.ts.map +1 -0
- package/dist/indexes/index-manager.js +345 -0
- package/dist/indexes/index-manager.js.map +1 -0
- package/dist/indexes/search-index.d.ts +179 -0
- package/dist/indexes/search-index.d.ts.map +1 -0
- package/dist/indexes/search-index.js +405 -0
- package/dist/indexes/search-index.js.map +1 -0
- package/dist/migrations/migration-runner.d.ts +70 -0
- package/dist/migrations/migration-runner.d.ts.map +1 -0
- package/dist/migrations/migration-runner.js +271 -0
- package/dist/migrations/migration-runner.js.map +1 -0
- package/dist/migrations/migration-types.d.ts +63 -0
- package/dist/migrations/migration-types.d.ts.map +1 -0
- package/dist/migrations/migration-types.js +5 -0
- package/dist/migrations/migration-types.js.map +1 -0
- package/dist/operations/crud/create-with-relationships.d.ts +44 -0
- package/dist/operations/crud/create-with-relationships.d.ts.map +1 -0
- package/dist/operations/crud/create-with-relationships.js +483 -0
- package/dist/operations/crud/create-with-relationships.js.map +1 -0
- package/dist/operations/crud/create.d.ts +48 -0
- package/dist/operations/crud/create.d.ts.map +1 -0
- package/dist/operations/crud/create.js +333 -0
- package/dist/operations/crud/create.js.map +1 -0
- package/dist/operations/crud/delete-with-relationships.d.ts +63 -0
- package/dist/operations/crud/delete-with-relationships.d.ts.map +1 -0
- package/dist/operations/crud/delete-with-relationships.js +395 -0
- package/dist/operations/crud/delete-with-relationships.js.map +1 -0
- package/dist/operations/crud/delete.d.ts +58 -0
- package/dist/operations/crud/delete.d.ts.map +1 -0
- package/dist/operations/crud/delete.js +267 -0
- package/dist/operations/crud/delete.js.map +1 -0
- package/dist/operations/crud/unique-check.d.ts +114 -0
- package/dist/operations/crud/unique-check.d.ts.map +1 -0
- package/dist/operations/crud/unique-check.js +383 -0
- package/dist/operations/crud/unique-check.js.map +1 -0
- package/dist/operations/crud/update-with-relationships.d.ts +45 -0
- package/dist/operations/crud/update-with-relationships.d.ts.map +1 -0
- package/dist/operations/crud/update-with-relationships.js +516 -0
- package/dist/operations/crud/update-with-relationships.js.map +1 -0
- package/dist/operations/crud/update.d.ts +91 -0
- package/dist/operations/crud/update.d.ts.map +1 -0
- package/dist/operations/crud/update.js +505 -0
- package/dist/operations/crud/update.js.map +1 -0
- package/dist/operations/crud/upsert.d.ts +52 -0
- package/dist/operations/crud/upsert.d.ts.map +1 -0
- package/dist/operations/crud/upsert.js +386 -0
- package/dist/operations/crud/upsert.js.map +1 -0
- package/dist/operations/query/aggregate.d.ts +30 -0
- package/dist/operations/query/aggregate.d.ts.map +1 -0
- package/dist/operations/query/aggregate.js +227 -0
- package/dist/operations/query/aggregate.js.map +1 -0
- package/dist/operations/query/cursor-stream.d.ts +18 -0
- package/dist/operations/query/cursor-stream.d.ts.map +1 -0
- package/dist/operations/query/cursor-stream.js +199 -0
- package/dist/operations/query/cursor-stream.js.map +1 -0
- package/dist/operations/query/filter-stream.d.ts +12 -0
- package/dist/operations/query/filter-stream.d.ts.map +1 -0
- package/dist/operations/query/filter-stream.js +167 -0
- package/dist/operations/query/filter-stream.js.map +1 -0
- package/dist/operations/query/filter.d.ts +13 -0
- package/dist/operations/query/filter.d.ts.map +1 -0
- package/dist/operations/query/filter.js +267 -0
- package/dist/operations/query/filter.js.map +1 -0
- package/dist/operations/query/paginate-stream.d.ts +11 -0
- package/dist/operations/query/paginate-stream.d.ts.map +1 -0
- package/dist/operations/query/paginate-stream.js +22 -0
- package/dist/operations/query/paginate-stream.js.map +1 -0
- package/dist/operations/query/query-helpers.d.ts +14 -0
- package/dist/operations/query/query-helpers.d.ts.map +1 -0
- package/dist/operations/query/query-helpers.js +22 -0
- package/dist/operations/query/query-helpers.js.map +1 -0
- package/dist/operations/query/resolve-computed.d.ts +142 -0
- package/dist/operations/query/resolve-computed.d.ts.map +1 -0
- package/dist/operations/query/resolve-computed.js +197 -0
- package/dist/operations/query/resolve-computed.js.map +1 -0
- package/dist/operations/query/search.d.ts +110 -0
- package/dist/operations/query/search.d.ts.map +1 -0
- package/dist/operations/query/search.js +188 -0
- package/dist/operations/query/search.js.map +1 -0
- package/dist/operations/query/select-stream.d.ts +27 -0
- package/dist/operations/query/select-stream.d.ts.map +1 -0
- package/dist/operations/query/select-stream.js +88 -0
- package/dist/operations/query/select-stream.js.map +1 -0
- package/dist/operations/query/select.d.ts +54 -0
- package/dist/operations/query/select.d.ts.map +1 -0
- package/dist/operations/query/select.js +159 -0
- package/dist/operations/query/select.js.map +1 -0
- package/dist/operations/query/sort-stream.d.ts +46 -0
- package/dist/operations/query/sort-stream.d.ts.map +1 -0
- package/dist/operations/query/sort-stream.js +158 -0
- package/dist/operations/query/sort-stream.js.map +1 -0
- package/dist/operations/query/sort.d.ts +9 -0
- package/dist/operations/query/sort.d.ts.map +1 -0
- package/dist/operations/query/sort.js +58 -0
- package/dist/operations/query/sort.js.map +1 -0
- package/dist/operations/relationships/populate-stream.d.ts +29 -0
- package/dist/operations/relationships/populate-stream.d.ts.map +1 -0
- package/dist/operations/relationships/populate-stream.js +159 -0
- package/dist/operations/relationships/populate-stream.js.map +1 -0
- package/dist/operations/relationships/populate.d.ts +15 -0
- package/dist/operations/relationships/populate.d.ts.map +1 -0
- package/dist/operations/relationships/populate.js +228 -0
- package/dist/operations/relationships/populate.js.map +1 -0
- package/dist/plugins/plugin-hooks.d.ts +25 -0
- package/dist/plugins/plugin-hooks.d.ts.map +1 -0
- package/dist/plugins/plugin-hooks.js +64 -0
- package/dist/plugins/plugin-hooks.js.map +1 -0
- package/dist/plugins/plugin-registry.d.ts +26 -0
- package/dist/plugins/plugin-registry.d.ts.map +1 -0
- package/dist/plugins/plugin-registry.js +150 -0
- package/dist/plugins/plugin-registry.js.map +1 -0
- package/dist/plugins/plugin-types.d.ts +95 -0
- package/dist/plugins/plugin-types.d.ts.map +1 -0
- package/dist/plugins/plugin-types.js +6 -0
- package/dist/plugins/plugin-types.js.map +1 -0
- package/dist/plugins/plugin-validation.d.ts +49 -0
- package/dist/plugins/plugin-validation.d.ts.map +1 -0
- package/dist/plugins/plugin-validation.js +295 -0
- package/dist/plugins/plugin-validation.js.map +1 -0
- package/dist/reactive/change-event.d.ts +44 -0
- package/dist/reactive/change-event.d.ts.map +1 -0
- package/dist/reactive/change-event.js +49 -0
- package/dist/reactive/change-event.js.map +1 -0
- package/dist/reactive/change-pubsub.d.ts +32 -0
- package/dist/reactive/change-pubsub.d.ts.map +1 -0
- package/dist/reactive/change-pubsub.js +31 -0
- package/dist/reactive/change-pubsub.js.map +1 -0
- package/dist/reactive/evaluate-query.d.ts +62 -0
- package/dist/reactive/evaluate-query.d.ts.map +1 -0
- package/dist/reactive/evaluate-query.js +57 -0
- package/dist/reactive/evaluate-query.js.map +1 -0
- package/dist/reactive/watch-by-id.d.ts +53 -0
- package/dist/reactive/watch-by-id.d.ts.map +1 -0
- package/dist/reactive/watch-by-id.js +55 -0
- package/dist/reactive/watch-by-id.js.map +1 -0
- package/dist/reactive/watch.d.ts +78 -0
- package/dist/reactive/watch.d.ts.map +1 -0
- package/dist/reactive/watch.js +133 -0
- package/dist/reactive/watch.js.map +1 -0
- package/dist/serializers/codecs/hjson.d.ts +33 -0
- package/dist/serializers/codecs/hjson.d.ts.map +1 -0
- package/dist/serializers/codecs/hjson.js +40 -0
- package/dist/serializers/codecs/hjson.js.map +1 -0
- package/dist/serializers/codecs/json.d.ts +22 -0
- package/dist/serializers/codecs/json.d.ts.map +1 -0
- package/dist/serializers/codecs/json.js +28 -0
- package/dist/serializers/codecs/json.js.map +1 -0
- package/dist/serializers/codecs/json5.d.ts +26 -0
- package/dist/serializers/codecs/json5.d.ts.map +1 -0
- package/dist/serializers/codecs/json5.js +33 -0
- package/dist/serializers/codecs/json5.js.map +1 -0
- package/dist/serializers/codecs/jsonc.d.ts +29 -0
- package/dist/serializers/codecs/jsonc.d.ts.map +1 -0
- package/dist/serializers/codecs/jsonc.js +38 -0
- package/dist/serializers/codecs/jsonc.js.map +1 -0
- package/dist/serializers/codecs/jsonl.d.ts +17 -0
- package/dist/serializers/codecs/jsonl.d.ts.map +1 -0
- package/dist/serializers/codecs/jsonl.js +31 -0
- package/dist/serializers/codecs/jsonl.js.map +1 -0
- package/dist/serializers/codecs/prose.d.ts +419 -0
- package/dist/serializers/codecs/prose.d.ts.map +1 -0
- package/dist/serializers/codecs/prose.js +1060 -0
- package/dist/serializers/codecs/prose.js.map +1 -0
- package/dist/serializers/codecs/toml.d.ts +23 -0
- package/dist/serializers/codecs/toml.d.ts.map +1 -0
- package/dist/serializers/codecs/toml.js +66 -0
- package/dist/serializers/codecs/toml.js.map +1 -0
- package/dist/serializers/codecs/toon.d.ts +20 -0
- package/dist/serializers/codecs/toon.d.ts.map +1 -0
- package/dist/serializers/codecs/toon.js +33 -0
- package/dist/serializers/codecs/toon.js.map +1 -0
- package/dist/serializers/codecs/yaml.d.ts +24 -0
- package/dist/serializers/codecs/yaml.d.ts.map +1 -0
- package/dist/serializers/codecs/yaml.js +31 -0
- package/dist/serializers/codecs/yaml.js.map +1 -0
- package/dist/serializers/format-codec.d.ts +53 -0
- package/dist/serializers/format-codec.d.ts.map +1 -0
- package/dist/serializers/format-codec.js +148 -0
- package/dist/serializers/format-codec.js.map +1 -0
- package/dist/serializers/presets.d.ts +48 -0
- package/dist/serializers/presets.d.ts.map +1 -0
- package/dist/serializers/presets.js +72 -0
- package/dist/serializers/presets.js.map +1 -0
- package/dist/serializers/serializer-service.d.ts +11 -0
- package/dist/serializers/serializer-service.d.ts.map +1 -0
- package/dist/serializers/serializer-service.js +4 -0
- package/dist/serializers/serializer-service.js.map +1 -0
- package/dist/state/collection-state.d.ts +19 -0
- package/dist/state/collection-state.d.ts.map +1 -0
- package/dist/state/collection-state.js +15 -0
- package/dist/state/collection-state.js.map +1 -0
- package/dist/state/state-operations.d.ts +38 -0
- package/dist/state/state-operations.d.ts.map +1 -0
- package/dist/state/state-operations.js +65 -0
- package/dist/state/state-operations.js.map +1 -0
- package/dist/storage/in-memory-adapter-layer.d.ts +16 -0
- package/dist/storage/in-memory-adapter-layer.d.ts.map +1 -0
- package/dist/storage/in-memory-adapter-layer.js +81 -0
- package/dist/storage/in-memory-adapter-layer.js.map +1 -0
- package/dist/storage/persistence-effect.d.ts +244 -0
- package/dist/storage/persistence-effect.d.ts.map +1 -0
- package/dist/storage/persistence-effect.js +551 -0
- package/dist/storage/persistence-effect.js.map +1 -0
- package/dist/storage/storage-service.d.ts +22 -0
- package/dist/storage/storage-service.d.ts.map +1 -0
- package/dist/storage/storage-service.js +4 -0
- package/dist/storage/storage-service.js.map +1 -0
- package/dist/storage/transforms.d.ts +183 -0
- package/dist/storage/transforms.d.ts.map +1 -0
- package/dist/storage/transforms.js +263 -0
- package/dist/storage/transforms.js.map +1 -0
- package/dist/transactions/transaction.d.ts +87 -0
- package/dist/transactions/transaction.d.ts.map +1 -0
- package/dist/transactions/transaction.js +240 -0
- package/dist/transactions/transaction.js.map +1 -0
- package/dist/types/aggregate-types.d.ts +73 -0
- package/dist/types/aggregate-types.d.ts.map +1 -0
- package/dist/types/aggregate-types.js +14 -0
- package/dist/types/aggregate-types.js.map +1 -0
- package/dist/types/computed-types.d.ts +71 -0
- package/dist/types/computed-types.d.ts.map +1 -0
- package/dist/types/computed-types.js +8 -0
- package/dist/types/computed-types.js.map +1 -0
- package/dist/types/crud-relationship-types.d.ts +180 -0
- package/dist/types/crud-relationship-types.d.ts.map +1 -0
- package/dist/types/crud-relationship-types.js +17 -0
- package/dist/types/crud-relationship-types.js.map +1 -0
- package/dist/types/crud-types.d.ts +343 -0
- package/dist/types/crud-types.d.ts.map +1 -0
- package/dist/types/crud-types.js +43 -0
- package/dist/types/crud-types.js.map +1 -0
- package/dist/types/cursor-types.d.ts +52 -0
- package/dist/types/cursor-types.d.ts.map +1 -0
- package/dist/types/cursor-types.js +2 -0
- package/dist/types/cursor-types.js.map +1 -0
- package/dist/types/database-config-types.d.ts +196 -0
- package/dist/types/database-config-types.d.ts.map +1 -0
- package/dist/types/database-config-types.js +11 -0
- package/dist/types/database-config-types.js.map +1 -0
- package/dist/types/hook-types.d.ts +158 -0
- package/dist/types/hook-types.d.ts.map +1 -0
- package/dist/types/hook-types.js +6 -0
- package/dist/types/hook-types.js.map +1 -0
- package/dist/types/index-types.d.ts +42 -0
- package/dist/types/index-types.d.ts.map +1 -0
- package/dist/types/index-types.js +8 -0
- package/dist/types/index-types.js.map +1 -0
- package/dist/types/operators.d.ts +5 -0
- package/dist/types/operators.d.ts.map +1 -0
- package/dist/types/operators.js +297 -0
- package/dist/types/operators.js.map +1 -0
- package/dist/types/query-overloads.d.ts +54 -0
- package/dist/types/query-overloads.d.ts.map +1 -0
- package/dist/types/query-overloads.js +3 -0
- package/dist/types/query-overloads.js.map +1 -0
- package/dist/types/reactive-types.d.ts +75 -0
- package/dist/types/reactive-types.d.ts.map +1 -0
- package/dist/types/reactive-types.js +7 -0
- package/dist/types/reactive-types.js.map +1 -0
- package/dist/types/schema-types.d.ts +56 -0
- package/dist/types/schema-types.d.ts.map +1 -0
- package/dist/types/schema-types.js +8 -0
- package/dist/types/schema-types.js.map +1 -0
- package/dist/types/search-types.d.ts +82 -0
- package/dist/types/search-types.d.ts.map +1 -0
- package/dist/types/search-types.js +110 -0
- package/dist/types/search-types.js.map +1 -0
- package/dist/types/types.d.ts +286 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +2 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/id-generator.d.ts +97 -0
- package/dist/utils/id-generator.d.ts.map +1 -0
- package/dist/utils/id-generator.js +247 -0
- package/dist/utils/id-generator.js.map +1 -0
- package/dist/utils/nested-path.d.ts +56 -0
- package/dist/utils/nested-path.d.ts.map +1 -0
- package/dist/utils/nested-path.js +119 -0
- package/dist/utils/nested-path.js.map +1 -0
- package/dist/utils/path.d.ts +16 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +24 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/validators/foreign-key.d.ts +49 -0
- package/dist/validators/foreign-key.d.ts.map +1 -0
- package/dist/validators/foreign-key.js +153 -0
- package/dist/validators/foreign-key.js.map +1 -0
- package/dist/validators/schema-validator.d.ts +19 -0
- package/dist/validators/schema-validator.d.ts.map +1 -0
- package/dist/validators/schema-validator.js +34 -0
- package/dist/validators/schema-validator.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../../src/operations/query/aggregate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Effect, Stream } from "effect";
|
|
2
|
+
import { ValidationError } from "../../errors/crud-errors.js";
|
|
3
|
+
import type { CursorConfig, CursorPageResult } from "../../types/cursor-types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Apply cursor-based pagination to a sorted stream.
|
|
6
|
+
*
|
|
7
|
+
* Unlike offset/limit pagination which is a lazy Stream combinator,
|
|
8
|
+
* cursor pagination terminates the stream into a concrete CursorPageResult
|
|
9
|
+
* because cursor metadata (hasNextPage, hasPreviousPage, cursors) requires
|
|
10
|
+
* collecting items.
|
|
11
|
+
*
|
|
12
|
+
* The input stream MUST be sorted by the cursor key (ascending).
|
|
13
|
+
*
|
|
14
|
+
* @param config - The cursor configuration specifying key, after/before, and limit
|
|
15
|
+
* @returns A function that takes a sorted stream and produces a CursorPageResult Effect
|
|
16
|
+
*/
|
|
17
|
+
export declare const applyCursor: (config: CursorConfig) => <T extends Record<string, unknown>, E, R>(stream: Stream.Stream<T, E, R>) => Effect.Effect<CursorPageResult<T>, E | ValidationError, R>;
|
|
18
|
+
//# sourceMappingURL=cursor-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-stream.d.ts","sourceRoot":"","sources":["../../../src/operations/query/cursor-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EACX,YAAY,EACZ,gBAAgB,EAChB,MAAM,6BAA6B,CAAC;AAqErC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,YAAY,MACpB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EACvC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC5B,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,CAuK3D,CAAC"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { Chunk, Effect, Stream } from "effect";
|
|
2
|
+
import { ValidationError } from "../../errors/crud-errors.js";
|
|
3
|
+
import { getNestedValue } from "../../utils/nested-path.js";
|
|
4
|
+
/**
|
|
5
|
+
* Check if a key exists on a record (returns undefined only if property doesn't exist).
|
|
6
|
+
*/
|
|
7
|
+
function keyExistsOnRecord(record, key) {
|
|
8
|
+
const parts = key.split(".");
|
|
9
|
+
let current = record;
|
|
10
|
+
for (const part of parts) {
|
|
11
|
+
if (current === null || current === undefined) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
if (typeof current === "object" && part in current) {
|
|
15
|
+
current = current[part];
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Extract cursor value from a record using the cursor key.
|
|
25
|
+
* Cursor values are string representations of the sort key value via String().
|
|
26
|
+
*/
|
|
27
|
+
function extractCursorValue(record, key) {
|
|
28
|
+
const value = getNestedValue(record, key);
|
|
29
|
+
return String(value);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Validate that the cursor key exists on the items.
|
|
33
|
+
* Returns a ValidationError if the key doesn't exist.
|
|
34
|
+
*/
|
|
35
|
+
function validateKeyExists(items, key) {
|
|
36
|
+
if (items.length === 0) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
// Check the first item to validate the key exists
|
|
40
|
+
const firstItem = items[0];
|
|
41
|
+
if (!keyExistsOnRecord(firstItem, key)) {
|
|
42
|
+
return new ValidationError({
|
|
43
|
+
message: "Invalid cursor configuration",
|
|
44
|
+
issues: [
|
|
45
|
+
{
|
|
46
|
+
field: "cursor.key",
|
|
47
|
+
message: `key '${key}' does not exist on entity`,
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Apply cursor-based pagination to a sorted stream.
|
|
56
|
+
*
|
|
57
|
+
* Unlike offset/limit pagination which is a lazy Stream combinator,
|
|
58
|
+
* cursor pagination terminates the stream into a concrete CursorPageResult
|
|
59
|
+
* because cursor metadata (hasNextPage, hasPreviousPage, cursors) requires
|
|
60
|
+
* collecting items.
|
|
61
|
+
*
|
|
62
|
+
* The input stream MUST be sorted by the cursor key (ascending).
|
|
63
|
+
*
|
|
64
|
+
* @param config - The cursor configuration specifying key, after/before, and limit
|
|
65
|
+
* @returns A function that takes a sorted stream and produces a CursorPageResult Effect
|
|
66
|
+
*/
|
|
67
|
+
export const applyCursor = (config) => (stream) => {
|
|
68
|
+
const { key, after, before, limit } = config;
|
|
69
|
+
// --- Validation ---
|
|
70
|
+
// Reject after + before both set
|
|
71
|
+
if (after !== undefined && before !== undefined) {
|
|
72
|
+
return Effect.fail(new ValidationError({
|
|
73
|
+
message: "Invalid cursor configuration",
|
|
74
|
+
issues: [
|
|
75
|
+
{
|
|
76
|
+
field: "cursor",
|
|
77
|
+
message: "after and before are mutually exclusive",
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
// Reject limit <= 0
|
|
83
|
+
if (limit <= 0) {
|
|
84
|
+
return Effect.fail(new ValidationError({
|
|
85
|
+
message: "Invalid cursor configuration",
|
|
86
|
+
issues: [
|
|
87
|
+
{
|
|
88
|
+
field: "cursor.limit",
|
|
89
|
+
message: "limit must be a positive integer",
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
// --- Cursor boundary filtering ---
|
|
95
|
+
let filteredStream = stream;
|
|
96
|
+
if (after !== undefined) {
|
|
97
|
+
// Forward pagination: filter to records where key > after
|
|
98
|
+
filteredStream = Stream.filter(filteredStream, (record) => extractCursorValue(record, key) > after);
|
|
99
|
+
}
|
|
100
|
+
else if (before !== undefined) {
|
|
101
|
+
// Backward pagination: filter to records where key < before
|
|
102
|
+
filteredStream = Stream.filter(filteredStream, (record) => extractCursorValue(record, key) < before);
|
|
103
|
+
}
|
|
104
|
+
// --- Fetch limit + 1 for has-more detection ---
|
|
105
|
+
// For forward/first-page: take first limit + 1
|
|
106
|
+
// For backward: take last limit + 1 (need to reverse, take, reverse back)
|
|
107
|
+
if (before !== undefined) {
|
|
108
|
+
// Backward pagination: need the last N+1 items
|
|
109
|
+
// Use takeRight to get the last items
|
|
110
|
+
const limitedStream = Stream.takeRight(filteredStream, limit + 1);
|
|
111
|
+
return Effect.gen(function* () {
|
|
112
|
+
const chunk = yield* Stream.runCollect(limitedStream);
|
|
113
|
+
const items = Chunk.toReadonlyArray(chunk);
|
|
114
|
+
// Handle empty results: return empty items, null cursors, both has-flags false
|
|
115
|
+
if (items.length === 0) {
|
|
116
|
+
return {
|
|
117
|
+
items: [],
|
|
118
|
+
pageInfo: {
|
|
119
|
+
startCursor: null,
|
|
120
|
+
endCursor: null,
|
|
121
|
+
hasNextPage: false,
|
|
122
|
+
hasPreviousPage: false,
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
// Validate cursor key exists on items
|
|
127
|
+
const keyError = validateKeyExists(items, key);
|
|
128
|
+
if (keyError !== null) {
|
|
129
|
+
return yield* Effect.fail(keyError);
|
|
130
|
+
}
|
|
131
|
+
// Check if we have overflow (more items than limit)
|
|
132
|
+
const hasOverflow = items.length > limit;
|
|
133
|
+
const hasPreviousPage = hasOverflow;
|
|
134
|
+
// hasNextPage = true when using "before" (items exist after this page)
|
|
135
|
+
const hasNextPage = true;
|
|
136
|
+
// Slice off the extra item if we have overflow
|
|
137
|
+
// For backward, the extra item is at the beginning
|
|
138
|
+
const pageItems = hasOverflow ? items.slice(1) : items;
|
|
139
|
+
// Extract cursors from first and last items
|
|
140
|
+
const startCursor = extractCursorValue(pageItems[0], key);
|
|
141
|
+
const endCursor = extractCursorValue(pageItems[pageItems.length - 1], key);
|
|
142
|
+
return {
|
|
143
|
+
items: pageItems,
|
|
144
|
+
pageInfo: {
|
|
145
|
+
startCursor,
|
|
146
|
+
endCursor,
|
|
147
|
+
hasNextPage,
|
|
148
|
+
hasPreviousPage,
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// Forward pagination or first page: take first N+1 items
|
|
155
|
+
const limitedStream = Stream.take(filteredStream, limit + 1);
|
|
156
|
+
return Effect.gen(function* () {
|
|
157
|
+
const chunk = yield* Stream.runCollect(limitedStream);
|
|
158
|
+
const items = Chunk.toReadonlyArray(chunk);
|
|
159
|
+
// Handle empty results: return empty items, null cursors, both has-flags false
|
|
160
|
+
if (items.length === 0) {
|
|
161
|
+
return {
|
|
162
|
+
items: [],
|
|
163
|
+
pageInfo: {
|
|
164
|
+
startCursor: null,
|
|
165
|
+
endCursor: null,
|
|
166
|
+
hasNextPage: false,
|
|
167
|
+
hasPreviousPage: false,
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
// Validate cursor key exists on items
|
|
172
|
+
const keyError = validateKeyExists(items, key);
|
|
173
|
+
if (keyError !== null) {
|
|
174
|
+
return yield* Effect.fail(keyError);
|
|
175
|
+
}
|
|
176
|
+
// Check if we have overflow (more items than limit)
|
|
177
|
+
const hasOverflow = items.length > limit;
|
|
178
|
+
const hasNextPage = hasOverflow;
|
|
179
|
+
// hasPreviousPage = true when using "after" (items exist before this page)
|
|
180
|
+
const hasPreviousPage = after !== undefined;
|
|
181
|
+
// Slice off the extra item if we have overflow
|
|
182
|
+
// For forward, the extra item is at the end
|
|
183
|
+
const pageItems = hasOverflow ? items.slice(0, limit) : items;
|
|
184
|
+
// Extract cursors from first and last items
|
|
185
|
+
const startCursor = extractCursorValue(pageItems[0], key);
|
|
186
|
+
const endCursor = extractCursorValue(pageItems[pageItems.length - 1], key);
|
|
187
|
+
return {
|
|
188
|
+
items: pageItems,
|
|
189
|
+
pageInfo: {
|
|
190
|
+
startCursor,
|
|
191
|
+
endCursor,
|
|
192
|
+
hasNextPage,
|
|
193
|
+
hasPreviousPage,
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
//# sourceMappingURL=cursor-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-stream.js","sourceRoot":"","sources":["../../../src/operations/query/cursor-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Stream } from "effect";
|
|
2
|
+
import type { CustomOperator } from "../../plugins/plugin-types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Apply a where clause filter as a Stream combinator.
|
|
5
|
+
* Returns a function that transforms Stream<T> → Stream<T>, keeping only items matching the where clause.
|
|
6
|
+
*
|
|
7
|
+
* Supports all field-level operators ($eq, $ne, $gt, $gte, $lt, $lte, $in, $nin,
|
|
8
|
+
* $startsWith, $endsWith, $contains, $all, $size), custom operators (via customOperators map),
|
|
9
|
+
* and logical operators ($or, $and, $not).
|
|
10
|
+
*/
|
|
11
|
+
export declare const applyFilter: <T extends Record<string, unknown>>(where: Record<string, unknown> | undefined, customOperators?: Map<string, CustomOperator>) => <E, R>(stream: Stream.Stream<T, E, R>) => Stream.Stream<T, E, R>;
|
|
12
|
+
//# sourceMappingURL=filter-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-stream.d.ts","sourceRoot":"","sources":["../../../src/operations/query/filter-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAoKpE;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GACtB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC1C,kBAAkB,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,MAE7C,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAK5D,CAAC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { Stream } from "effect";
|
|
2
|
+
import { isFilterOperatorObject, matchesFilter, } from "../../types/operators.js";
|
|
3
|
+
import { collectStringPaths, getNestedValue, isDotPath, } from "../../utils/nested-path.js";
|
|
4
|
+
import { tokenize } from "./search.js";
|
|
5
|
+
/**
|
|
6
|
+
* Type guard to check if a where clause is a valid object (not null, not array).
|
|
7
|
+
*/
|
|
8
|
+
function isValidWhereClause(where) {
|
|
9
|
+
return where !== null && typeof where === "object" && !Array.isArray(where);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Check if a single item matches a where clause.
|
|
13
|
+
* Handles field-level operators, $or, $and, $not logical operators.
|
|
14
|
+
* Does NOT handle relationship filtering ($some/$every/$none) — that is handled by the populate stage.
|
|
15
|
+
*/
|
|
16
|
+
function matchesWhere(item, where, customOperators) {
|
|
17
|
+
for (const [key, value] of Object.entries(where)) {
|
|
18
|
+
if (key === "$or") {
|
|
19
|
+
if (!Array.isArray(value))
|
|
20
|
+
return false;
|
|
21
|
+
if (value.length === 0)
|
|
22
|
+
return false;
|
|
23
|
+
const anyMatch = value.some((condition) => {
|
|
24
|
+
if (!isValidWhereClause(condition))
|
|
25
|
+
return false;
|
|
26
|
+
return matchesWhere(item, condition, customOperators);
|
|
27
|
+
});
|
|
28
|
+
if (!anyMatch)
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
else if (key === "$and") {
|
|
32
|
+
if (!Array.isArray(value))
|
|
33
|
+
return false;
|
|
34
|
+
if (value.length === 0)
|
|
35
|
+
continue;
|
|
36
|
+
const allMatch = value.every((condition) => {
|
|
37
|
+
if (!isValidWhereClause(condition))
|
|
38
|
+
return false;
|
|
39
|
+
return matchesWhere(item, condition, customOperators);
|
|
40
|
+
});
|
|
41
|
+
if (!allMatch)
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
else if (key === "$not") {
|
|
45
|
+
if (!isValidWhereClause(value))
|
|
46
|
+
return false;
|
|
47
|
+
if (matchesWhere(item, value, customOperators))
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
else if (key === "$search") {
|
|
51
|
+
// Top-level multi-field search: check if entity matches across specified fields
|
|
52
|
+
if (value === null || typeof value !== "object") {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
const searchConfig = value;
|
|
56
|
+
const query = searchConfig.query;
|
|
57
|
+
// Empty query matches everything
|
|
58
|
+
if (!query || query.trim() === "") {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const queryTokens = tokenize(query);
|
|
62
|
+
if (queryTokens.length === 0) {
|
|
63
|
+
// After tokenization, no tokens means match all
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
// Determine target fields: explicit or all string fields on the entity
|
|
67
|
+
let targetFields;
|
|
68
|
+
if (searchConfig.fields && searchConfig.fields.length > 0) {
|
|
69
|
+
targetFields = searchConfig.fields;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// Find all string fields on the entity (recursively, including nested paths)
|
|
73
|
+
targetFields = collectStringPaths(item);
|
|
74
|
+
}
|
|
75
|
+
// Check if all query tokens are found across the target fields
|
|
76
|
+
// Each query token must match in at least one field (exact or prefix)
|
|
77
|
+
const allTokensMatch = queryTokens.every((qt) => {
|
|
78
|
+
// Check if this query token matches in any of the target fields
|
|
79
|
+
return targetFields.some((field) => {
|
|
80
|
+
// Use getNestedValue to resolve dot-notation paths (e.g., "metadata.description")
|
|
81
|
+
const fieldValue = getNestedValue(item, field);
|
|
82
|
+
if (typeof fieldValue !== "string") {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
const fieldTokens = tokenize(fieldValue);
|
|
86
|
+
// Check if any field token matches (exact or prefix)
|
|
87
|
+
return fieldTokens.some((ft) => ft === qt || ft.startsWith(qt));
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
if (!allTokensMatch)
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
else if (key in item) {
|
|
94
|
+
const itemValue = item[key];
|
|
95
|
+
// Shape-mirroring: If the filter value is a plain object with no $-prefixed keys
|
|
96
|
+
// and the item value is also a plain object, recurse into nested matching
|
|
97
|
+
if (isValidWhereClause(value) &&
|
|
98
|
+
!isFilterOperatorObject(value, customOperators) &&
|
|
99
|
+
isValidWhereClause(itemValue)) {
|
|
100
|
+
// Recurse into nested object matching
|
|
101
|
+
if (!matchesWhere(itemValue, value, customOperators)) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if (!matchesFilter(itemValue, value, customOperators)) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else if (isDotPath(key)) {
|
|
110
|
+
// Dot-notation fallback: resolve nested value via path
|
|
111
|
+
const resolvedValue = getNestedValue(item, key);
|
|
112
|
+
if (!matchesFilter(resolvedValue, value, customOperators)) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// Field doesn't exist in item
|
|
118
|
+
if (isValidWhereClause(value)) {
|
|
119
|
+
const ops = value;
|
|
120
|
+
if ("$eq" in ops && ops.$eq === undefined) {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
else if ("$ne" in ops && ops.$ne === undefined) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
const operatorKeys = [
|
|
127
|
+
"$eq",
|
|
128
|
+
"$ne",
|
|
129
|
+
"$in",
|
|
130
|
+
"$nin",
|
|
131
|
+
"$gt",
|
|
132
|
+
"$gte",
|
|
133
|
+
"$lt",
|
|
134
|
+
"$lte",
|
|
135
|
+
"$startsWith",
|
|
136
|
+
"$endsWith",
|
|
137
|
+
"$contains",
|
|
138
|
+
"$all",
|
|
139
|
+
"$size",
|
|
140
|
+
"$search",
|
|
141
|
+
];
|
|
142
|
+
const logicalOperatorKeys = ["$or", "$and", "$not"];
|
|
143
|
+
const hasOperators = Object.keys(ops).some((k) => operatorKeys.includes(k));
|
|
144
|
+
const hasLogicalOperators = Object.keys(ops).some((k) => logicalOperatorKeys.includes(k));
|
|
145
|
+
if (hasOperators || hasLogicalOperators)
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
if (value !== undefined)
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Apply a where clause filter as a Stream combinator.
|
|
156
|
+
* Returns a function that transforms Stream<T> → Stream<T>, keeping only items matching the where clause.
|
|
157
|
+
*
|
|
158
|
+
* Supports all field-level operators ($eq, $ne, $gt, $gte, $lt, $lte, $in, $nin,
|
|
159
|
+
* $startsWith, $endsWith, $contains, $all, $size), custom operators (via customOperators map),
|
|
160
|
+
* and logical operators ($or, $and, $not).
|
|
161
|
+
*/
|
|
162
|
+
export const applyFilter = (where, customOperators) => (stream) => {
|
|
163
|
+
if (!where || !isValidWhereClause(where))
|
|
164
|
+
return stream;
|
|
165
|
+
return Stream.filter(stream, (item) => matchesWhere(item, where, customOperators));
|
|
166
|
+
};
|
|
167
|
+
//# sourceMappingURL=filter-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-stream.js","sourceRoot":"","sources":["../../../src/operations/query/filter-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare function isValidWhereClause(where: unknown): where is Record<string, unknown>;
|
|
2
|
+
export declare function filterData<T extends Record<string, unknown>>(data: T[], where: unknown, allData?: Record<string, unknown[]>, relationships?: Record<string, {
|
|
3
|
+
type: string;
|
|
4
|
+
target: string;
|
|
5
|
+
foreignKey?: string;
|
|
6
|
+
}>, collectionName?: string, config?: Record<string, {
|
|
7
|
+
relationships: Record<string, {
|
|
8
|
+
type: string;
|
|
9
|
+
target: string;
|
|
10
|
+
foreignKey?: string;
|
|
11
|
+
}>;
|
|
12
|
+
}>): T[];
|
|
13
|
+
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/operations/query/filter.ts"],"names":[],"mappings":"AAKA,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,OAAO,GACZ,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAElC;AAGD,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,IAAI,EAAE,CAAC,EAAE,EACT,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EACnC,aAAa,CAAC,EAAE,MAAM,CACrB,MAAM,EACN;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CACrD,EACD,cAAc,CAAC,EAAE,MAAM,EACvB,MAAM,CAAC,EAAE,MAAM,CACd,MAAM,EACN;IACC,aAAa,EAAE,MAAM,CACpB,MAAM,EACN;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CACrD,CAAC;CACF,CACD,GACC,CAAC,EAAE,CA4TL"}
|