@venizia/ignis 0.1.1-9 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base/controllers/grpc/abstract.d.ts +5 -1
- package/dist/base/controllers/grpc/abstract.d.ts.map +1 -1
- package/dist/base/controllers/grpc/abstract.js +5 -1
- package/dist/base/controllers/grpc/abstract.js.map +1 -1
- package/dist/base/controllers/grpc/adapter.d.ts +2 -1
- package/dist/base/controllers/grpc/adapter.d.ts.map +1 -1
- package/dist/base/controllers/grpc/adapter.js +10 -2
- package/dist/base/controllers/grpc/adapter.js.map +1 -1
- package/dist/base/controllers/grpc/common/types.d.ts +20 -0
- package/dist/base/controllers/grpc/common/types.d.ts.map +1 -1
- package/dist/base/datasources/common/types.d.ts +11 -2
- package/dist/base/datasources/common/types.d.ts.map +1 -1
- package/dist/base/datasources/common/types.js +11 -2
- package/dist/base/datasources/common/types.js.map +1 -1
- package/dist/base/metadata/persistents.d.ts.map +1 -1
- package/dist/base/metadata/persistents.js +8 -0
- package/dist/base/metadata/persistents.js.map +1 -1
- package/dist/base/middlewares/app-error/app-error.middleware.d.ts +4 -0
- package/dist/base/middlewares/app-error/app-error.middleware.d.ts.map +1 -1
- package/dist/base/middlewares/app-error/app-error.middleware.js +10 -2
- package/dist/base/middlewares/app-error/app-error.middleware.js.map +1 -1
- package/dist/base/middlewares/common/errors.d.ts +18 -0
- package/dist/base/middlewares/common/errors.d.ts.map +1 -0
- package/dist/base/middlewares/common/errors.js +13 -0
- package/dist/base/middlewares/common/errors.js.map +1 -0
- package/dist/base/middlewares/common/index.d.ts +2 -0
- package/dist/base/middlewares/common/index.d.ts.map +1 -0
- package/dist/base/middlewares/common/index.js +18 -0
- package/dist/base/middlewares/common/index.js.map +1 -0
- package/dist/base/middlewares/index.d.ts +1 -0
- package/dist/base/middlewares/index.d.ts.map +1 -1
- package/dist/base/middlewares/index.js +1 -0
- package/dist/base/middlewares/index.js.map +1 -1
- package/dist/base/middlewares/request-spy/request-spy.middleware.d.ts.map +1 -1
- package/dist/base/middlewares/request-spy/request-spy.middleware.js +2 -1
- package/dist/base/middlewares/request-spy/request-spy.middleware.js.map +1 -1
- package/dist/base/repositories/common/constants.d.ts +12 -0
- package/dist/base/repositories/common/constants.d.ts.map +1 -1
- package/dist/base/repositories/common/constants.js +13 -1
- package/dist/base/repositories/common/constants.js.map +1 -1
- package/dist/base/repositories/common/errors.d.ts +18 -0
- package/dist/base/repositories/common/errors.d.ts.map +1 -0
- package/dist/base/repositories/common/errors.js +13 -0
- package/dist/base/repositories/common/errors.js.map +1 -0
- package/dist/base/repositories/common/index.d.ts +3 -1
- package/dist/base/repositories/common/index.d.ts.map +1 -1
- package/dist/base/repositories/common/index.js +3 -1
- package/dist/base/repositories/common/index.js.map +1 -1
- package/dist/base/repositories/common/types.d.ts +33 -8
- package/dist/base/repositories/common/types.d.ts.map +1 -1
- package/dist/base/repositories/common/types.js +1 -1
- package/dist/base/repositories/common/types.js.map +1 -1
- package/dist/base/repositories/core/abstract.d.ts +29 -7
- package/dist/base/repositories/core/abstract.d.ts.map +1 -1
- package/dist/base/repositories/core/abstract.js +31 -8
- package/dist/base/repositories/core/abstract.js.map +1 -1
- package/dist/base/repositories/query-schemas/index.d.ts +3 -7
- package/dist/base/repositories/query-schemas/index.d.ts.map +1 -1
- package/dist/base/repositories/query-schemas/index.js +10 -21
- package/dist/base/repositories/query-schemas/index.js.map +1 -1
- package/dist/components/auth/authenticate/common/errors.d.ts +91 -0
- package/dist/components/auth/authenticate/common/errors.d.ts.map +1 -0
- package/dist/components/auth/authenticate/common/errors.js +80 -0
- package/dist/components/auth/authenticate/common/errors.js.map +1 -0
- package/dist/components/auth/authenticate/common/index.d.ts +1 -0
- package/dist/components/auth/authenticate/common/index.d.ts.map +1 -1
- package/dist/components/auth/authenticate/common/index.js +1 -0
- package/dist/components/auth/authenticate/common/index.js.map +1 -1
- package/dist/components/auth/authenticate/common/types.d.ts +7 -1
- package/dist/components/auth/authenticate/common/types.d.ts.map +1 -1
- package/dist/components/auth/authenticate/providers/authentication.provider.d.ts.map +1 -1
- package/dist/components/auth/authenticate/providers/authentication.provider.js +8 -6
- package/dist/components/auth/authenticate/providers/authentication.provider.js.map +1 -1
- package/dist/components/auth/authenticate/services/basic/service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/basic/service.js +5 -5
- package/dist/components/auth/authenticate/services/basic/service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/abstract.service.d.ts +4 -3
- package/dist/components/auth/authenticate/services/bearer/abstract.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/abstract.service.js +11 -9
- package/dist/components/auth/authenticate/services/bearer/abstract.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js +1 -0
- package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js +1 -0
- package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jws.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jws.service.js +1 -0
- package/dist/components/auth/authenticate/services/bearer/jws.service.js.map +1 -1
- package/dist/components/auth/authorize/common/errors.d.ts +51 -0
- package/dist/components/auth/authorize/common/errors.d.ts.map +1 -0
- package/dist/components/auth/authorize/common/errors.js +43 -0
- package/dist/components/auth/authorize/common/errors.js.map +1 -0
- package/dist/components/auth/authorize/common/index.d.ts +1 -0
- package/dist/components/auth/authorize/common/index.d.ts.map +1 -1
- package/dist/components/auth/authorize/common/index.js +1 -0
- package/dist/components/auth/authorize/common/index.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts.map +1 -1
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.js +1 -1
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.js.map +1 -1
- package/dist/components/auth/authorize/providers/authorization.provider.d.ts.map +1 -1
- package/dist/components/auth/authorize/providers/authorization.provider.js +6 -4
- package/dist/components/auth/authorize/providers/authorization.provider.js.map +1 -1
- package/dist/components/controller/grpc/common/types.d.ts +4 -0
- package/dist/components/controller/grpc/common/types.d.ts.map +1 -1
- package/dist/components/controller/grpc/common/types.js.map +1 -1
- package/dist/components/controller/grpc/grpc.component.d.ts.map +1 -1
- package/dist/components/controller/grpc/grpc.component.js +6 -0
- package/dist/components/controller/grpc/grpc.component.js.map +1 -1
- package/dist/components/mail/common/errors.d.ts +35 -0
- package/dist/components/mail/common/errors.d.ts.map +1 -0
- package/dist/components/mail/common/errors.js +24 -0
- package/dist/components/mail/common/errors.js.map +1 -0
- package/dist/components/mail/common/index.d.ts +1 -0
- package/dist/components/mail/common/index.d.ts.map +1 -1
- package/dist/components/mail/common/index.js +1 -0
- package/dist/components/mail/common/index.js.map +1 -1
- package/dist/components/mail/common/types.d.ts +14 -1
- package/dist/components/mail/common/types.d.ts.map +1 -1
- package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.d.ts +6 -2
- package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.d.ts.map +1 -1
- package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.js +4 -3
- package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.js.map +1 -1
- package/dist/components/mail/helpers/transporters/nodemail-transporter.helper.d.ts +6 -2
- package/dist/components/mail/helpers/transporters/nodemail-transporter.helper.d.ts.map +1 -1
- package/dist/components/mail/helpers/transporters/nodemail-transporter.helper.js +4 -3
- package/dist/components/mail/helpers/transporters/nodemail-transporter.helper.js.map +1 -1
- package/dist/components/mail/providers/mail-transporter.provider.js +2 -2
- package/dist/components/mail/providers/mail-transporter.provider.js.map +1 -1
- package/dist/components/mail/services/mail.service.d.ts.map +1 -1
- package/dist/components/mail/services/mail.service.js +3 -6
- package/dist/components/mail/services/mail.service.js.map +1 -1
- package/dist/components/mail/services/template.service.d.ts.map +1 -1
- package/dist/components/mail/services/template.service.js +2 -4
- package/dist/components/mail/services/template.service.js.map +1 -1
- package/dist/components/static-asset/common/errors.d.ts +66 -0
- package/dist/components/static-asset/common/errors.d.ts.map +1 -0
- package/dist/components/static-asset/common/errors.js +55 -0
- package/dist/components/static-asset/common/errors.js.map +1 -0
- package/dist/components/static-asset/common/index.d.ts +1 -0
- package/dist/components/static-asset/common/index.d.ts.map +1 -1
- package/dist/components/static-asset/common/index.js +1 -0
- package/dist/components/static-asset/common/index.js.map +1 -1
- package/dist/components/static-asset/common/types.d.ts +2 -2
- package/dist/components/static-asset/common/types.d.ts.map +1 -1
- package/dist/components/static-asset/controller/factory.d.ts.map +1 -1
- package/dist/components/static-asset/controller/factory.js +18 -60
- package/dist/components/static-asset/controller/factory.js.map +1 -1
- package/dist/components/static-asset/repositories/base.repository.d.ts +3 -3
- package/dist/components/static-asset/repositories/base.repository.d.ts.map +1 -1
- package/dist/components/static-asset/repositories/base.repository.js +2 -2
- package/dist/components/static-asset/repositories/base.repository.js.map +1 -1
- package/dist/connectors/meilisearch/connector.d.ts.map +1 -1
- package/dist/connectors/meilisearch/connector.js +2 -2
- package/dist/connectors/meilisearch/connector.js.map +1 -1
- package/dist/connectors/meilisearch/repositories/dialect/query-dialect.d.ts +27 -6
- package/dist/connectors/meilisearch/repositories/dialect/query-dialect.d.ts.map +1 -1
- package/dist/connectors/meilisearch/repositories/dialect/query-dialect.js +181 -64
- package/dist/connectors/meilisearch/repositories/dialect/query-dialect.js.map +1 -1
- package/dist/connectors/postgres/datasources/abstract.d.ts +11 -34
- package/dist/connectors/postgres/datasources/abstract.d.ts.map +1 -1
- package/dist/connectors/postgres/datasources/abstract.js +16 -128
- package/dist/connectors/postgres/datasources/abstract.js.map +1 -1
- package/dist/connectors/postgres/datasources/base.d.ts +9 -15
- package/dist/connectors/postgres/datasources/base.d.ts.map +1 -1
- package/dist/connectors/postgres/datasources/base.js +20 -94
- package/dist/connectors/postgres/datasources/base.js.map +1 -1
- package/dist/connectors/postgres/datasources/common/guards.d.ts +4 -1
- package/dist/connectors/postgres/datasources/common/guards.d.ts.map +1 -1
- package/dist/connectors/postgres/datasources/common/guards.js +6 -2
- package/dist/connectors/postgres/datasources/common/guards.js.map +1 -1
- package/dist/connectors/postgres/datasources/common/types.d.ts +19 -19
- package/dist/connectors/postgres/datasources/common/types.d.ts.map +1 -1
- package/dist/connectors/postgres/datasources/common/types.js.map +1 -1
- package/dist/connectors/postgres/datasources/index.d.ts +1 -2
- package/dist/connectors/postgres/datasources/index.d.ts.map +1 -1
- package/dist/connectors/postgres/datasources/index.js +6 -6
- package/dist/connectors/postgres/datasources/index.js.map +1 -1
- package/dist/connectors/postgres/drivers/driver.d.ts +10 -32
- package/dist/connectors/postgres/drivers/driver.d.ts.map +1 -1
- package/dist/connectors/postgres/drivers/node-postgres.d.ts +3 -3
- package/dist/connectors/postgres/drivers/node-postgres.d.ts.map +1 -1
- package/dist/connectors/postgres/drivers/node-postgres.js +2 -1
- package/dist/connectors/postgres/drivers/node-postgres.js.map +1 -1
- package/dist/connectors/postgres/drivers/pglite.d.ts +49 -0
- package/dist/connectors/postgres/drivers/pglite.d.ts.map +1 -0
- package/dist/connectors/postgres/drivers/pglite.js +126 -0
- package/dist/connectors/postgres/drivers/pglite.js.map +1 -0
- package/dist/connectors/postgres/drivers/postgres-js.d.ts +3 -3
- package/dist/connectors/postgres/models/base.d.ts +1 -28
- package/dist/connectors/postgres/models/base.d.ts.map +1 -1
- package/dist/connectors/postgres/models/base.js +2 -40
- package/dist/connectors/postgres/models/base.js.map +1 -1
- package/dist/connectors/postgres/models/common/types.d.ts +1 -3
- package/dist/connectors/postgres/models/common/types.d.ts.map +1 -1
- package/dist/connectors/postgres/models/common/types.js +4 -4
- package/dist/connectors/postgres/models/common/types.js.map +1 -1
- package/dist/connectors/postgres/models/enrichers/data-type.enricher.d.ts.map +1 -1
- package/dist/connectors/postgres/models/enrichers/data-type.enricher.js +9 -6
- package/dist/connectors/postgres/models/enrichers/data-type.enricher.js.map +1 -1
- package/dist/connectors/postgres/models/enrichers/tz.enricher.d.ts +1 -3
- package/dist/connectors/postgres/models/enrichers/tz.enricher.d.ts.map +1 -1
- package/dist/connectors/postgres/models/enrichers/tz.enricher.js +2 -2
- package/dist/connectors/postgres/models/enrichers/tz.enricher.js.map +1 -1
- package/dist/connectors/postgres/repositories/common/shared.d.ts +2 -3
- package/dist/connectors/postgres/repositories/common/shared.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/common/shared.js +4 -11
- package/dist/connectors/postgres/repositories/common/shared.js.map +1 -1
- package/dist/connectors/postgres/repositories/common/types.d.ts +13 -35
- package/dist/connectors/postgres/repositories/common/types.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/core/base.d.ts +12 -243
- package/dist/connectors/postgres/repositories/core/base.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/core/base.js +9 -194
- package/dist/connectors/postgres/repositories/core/base.js.map +1 -1
- package/dist/connectors/postgres/repositories/core/default.d.ts +7 -5
- package/dist/connectors/postgres/repositories/core/default.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/core/default.js +5 -5
- package/dist/connectors/postgres/repositories/core/default.js.map +1 -1
- package/dist/connectors/postgres/repositories/core/index.d.ts +2 -7
- package/dist/connectors/postgres/repositories/core/index.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/core/index.js +2 -14
- package/dist/connectors/postgres/repositories/core/index.js.map +1 -1
- package/dist/connectors/postgres/repositories/core/persistable.d.ts +7 -179
- package/dist/connectors/postgres/repositories/core/persistable.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/core/persistable.js +5 -180
- package/dist/connectors/postgres/repositories/core/persistable.js.map +1 -1
- package/dist/connectors/postgres/repositories/core/readable.d.ts +7 -161
- package/dist/connectors/postgres/repositories/core/readable.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/core/readable.js +5 -210
- package/dist/connectors/postgres/repositories/core/readable.js.map +1 -1
- package/dist/connectors/postgres/repositories/core/soft-deletable.d.ts +15 -110
- package/dist/connectors/postgres/repositories/core/soft-deletable.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/core/soft-deletable.js +5 -79
- package/dist/connectors/postgres/repositories/core/soft-deletable.js.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/filter.d.ts +18 -84
- package/dist/connectors/postgres/repositories/dialect/filter.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/filter.js +17 -490
- package/dist/connectors/postgres/repositories/dialect/filter.js.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/index.d.ts +1 -0
- package/dist/connectors/postgres/repositories/dialect/index.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/index.js +1 -0
- package/dist/connectors/postgres/repositories/dialect/index.js.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/query-dialect.d.ts +23 -0
- package/dist/connectors/postgres/repositories/dialect/query-dialect.d.ts.map +1 -0
- package/dist/connectors/postgres/repositories/dialect/query-dialect.js +28 -0
- package/dist/connectors/postgres/repositories/dialect/query-dialect.js.map +1 -0
- package/dist/connectors/postgres/repositories/dialect/relation.d.ts +1 -10
- package/dist/connectors/postgres/repositories/dialect/relation.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/relation.js +4 -39
- package/dist/connectors/postgres/repositories/dialect/relation.js.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/update.d.ts +18 -21
- package/dist/connectors/postgres/repositories/dialect/update.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/update.js +17 -113
- package/dist/connectors/postgres/repositories/dialect/update.js.map +1 -1
- package/dist/connectors/postgres/repositories/executor.d.ts +31 -0
- package/dist/connectors/postgres/repositories/executor.d.ts.map +1 -0
- package/dist/connectors/postgres/repositories/executor.js +158 -0
- package/dist/connectors/postgres/repositories/executor.js.map +1 -0
- package/dist/connectors/postgres/repositories/index.d.ts +1 -0
- package/dist/connectors/postgres/repositories/index.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/index.js +3 -0
- package/dist/connectors/postgres/repositories/index.js.map +1 -1
- package/dist/connectors/relational/datasources/abstract.d.ts +71 -0
- package/dist/connectors/relational/datasources/abstract.d.ts.map +1 -0
- package/dist/connectors/relational/datasources/abstract.js +173 -0
- package/dist/connectors/relational/datasources/abstract.js.map +1 -0
- package/dist/connectors/relational/datasources/base.d.ts +22 -0
- package/dist/connectors/relational/datasources/base.d.ts.map +1 -0
- package/dist/connectors/relational/datasources/base.js +99 -0
- package/dist/connectors/relational/datasources/base.js.map +1 -0
- package/dist/connectors/relational/datasources/common/guards.d.ts +5 -0
- package/dist/connectors/relational/datasources/common/guards.d.ts.map +1 -0
- package/dist/connectors/relational/datasources/common/guards.js +9 -0
- package/dist/connectors/relational/datasources/common/guards.js.map +1 -0
- package/dist/connectors/relational/datasources/common/index.d.ts +3 -0
- package/dist/connectors/relational/datasources/common/index.d.ts.map +1 -0
- package/dist/connectors/relational/datasources/common/index.js +19 -0
- package/dist/connectors/relational/datasources/common/index.js.map +1 -0
- package/dist/connectors/relational/datasources/common/types.d.ts +24 -0
- package/dist/connectors/relational/datasources/common/types.d.ts.map +1 -0
- package/dist/connectors/relational/datasources/common/types.js +3 -0
- package/dist/connectors/relational/datasources/common/types.js.map +1 -0
- package/dist/connectors/relational/datasources/index.d.ts +4 -0
- package/dist/connectors/relational/datasources/index.d.ts.map +1 -0
- package/dist/connectors/relational/datasources/index.js +20 -0
- package/dist/connectors/relational/datasources/index.js.map +1 -0
- package/dist/connectors/relational/drivers/driver.d.ts +31 -0
- package/dist/connectors/relational/drivers/driver.d.ts.map +1 -0
- package/dist/connectors/relational/drivers/driver.js +3 -0
- package/dist/connectors/relational/drivers/driver.js.map +1 -0
- package/dist/connectors/relational/drivers/index.d.ts +2 -0
- package/dist/connectors/relational/drivers/index.d.ts.map +1 -0
- package/dist/connectors/relational/drivers/index.js +18 -0
- package/dist/connectors/relational/drivers/index.js.map +1 -0
- package/dist/connectors/relational/index.d.ts +5 -0
- package/dist/connectors/relational/index.d.ts.map +1 -0
- package/dist/connectors/relational/index.js +21 -0
- package/dist/connectors/relational/index.js.map +1 -0
- package/dist/connectors/relational/models/base.d.ts +29 -0
- package/dist/connectors/relational/models/base.d.ts.map +1 -0
- package/dist/connectors/relational/models/base.js +44 -0
- package/dist/connectors/relational/models/base.js.map +1 -0
- package/dist/connectors/relational/models/common/index.d.ts +2 -0
- package/dist/connectors/relational/models/common/index.d.ts.map +1 -0
- package/dist/connectors/relational/models/common/index.js +18 -0
- package/dist/connectors/relational/models/common/index.js.map +1 -0
- package/dist/connectors/relational/models/common/types.d.ts +30 -0
- package/dist/connectors/relational/models/common/types.d.ts.map +1 -0
- package/dist/connectors/relational/models/common/types.js +8 -0
- package/dist/connectors/relational/models/common/types.js.map +1 -0
- package/dist/connectors/relational/models/index.d.ts +3 -0
- package/dist/connectors/relational/models/index.d.ts.map +1 -0
- package/dist/connectors/relational/models/index.js +19 -0
- package/dist/connectors/relational/models/index.js.map +1 -0
- package/dist/connectors/relational/repositories/common/executor.d.ts +69 -0
- package/dist/connectors/relational/repositories/common/executor.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/common/executor.js +3 -0
- package/dist/connectors/relational/repositories/common/executor.js.map +1 -0
- package/dist/connectors/relational/repositories/common/index.d.ts +4 -0
- package/dist/connectors/relational/repositories/common/index.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/common/index.js +20 -0
- package/dist/connectors/relational/repositories/common/index.js.map +1 -0
- package/dist/connectors/relational/repositories/common/shared.d.ts +4 -0
- package/dist/connectors/relational/repositories/common/shared.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/common/shared.js +15 -0
- package/dist/connectors/relational/repositories/common/shared.js.map +1 -0
- package/dist/connectors/relational/repositories/common/types.d.ts +66 -0
- package/dist/connectors/relational/repositories/common/types.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/common/types.js +3 -0
- package/dist/connectors/relational/repositories/common/types.js.map +1 -0
- package/dist/connectors/relational/repositories/core/base.d.ts +233 -0
- package/dist/connectors/relational/repositories/core/base.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/core/base.js +185 -0
- package/dist/connectors/relational/repositories/core/base.js.map +1 -0
- package/dist/connectors/relational/repositories/core/default.d.ts +9 -0
- package/dist/connectors/relational/repositories/core/default.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/core/default.js +9 -0
- package/dist/connectors/relational/repositories/core/default.js.map +1 -0
- package/dist/connectors/relational/repositories/core/index.d.ts +6 -0
- package/dist/connectors/relational/repositories/core/index.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/core/index.js +22 -0
- package/dist/connectors/relational/repositories/core/index.js.map +1 -0
- package/dist/connectors/relational/repositories/core/persistable.d.ts +181 -0
- package/dist/connectors/relational/repositories/core/persistable.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/core/persistable.js +185 -0
- package/dist/connectors/relational/repositories/core/persistable.js.map +1 -0
- package/dist/connectors/relational/repositories/core/readable.d.ts +164 -0
- package/dist/connectors/relational/repositories/core/readable.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/core/readable.js +207 -0
- package/dist/connectors/relational/repositories/core/readable.js.map +1 -0
- package/dist/connectors/relational/repositories/core/soft-deletable.d.ts +119 -0
- package/dist/connectors/relational/repositories/core/soft-deletable.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/core/soft-deletable.js +85 -0
- package/dist/connectors/relational/repositories/core/soft-deletable.js.map +1 -0
- package/dist/connectors/relational/repositories/dialect/filter.d.ts +191 -0
- package/dist/connectors/relational/repositories/dialect/filter.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/dialect/filter.js +570 -0
- package/dist/connectors/relational/repositories/dialect/filter.js.map +1 -0
- package/dist/connectors/relational/repositories/dialect/index.d.ts +5 -0
- package/dist/connectors/relational/repositories/dialect/index.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/dialect/index.js +23 -0
- package/dist/connectors/relational/repositories/dialect/index.js.map +1 -0
- package/dist/connectors/{postgres → relational}/repositories/dialect/internal/json-utils.d.ts +4 -1
- package/dist/connectors/relational/repositories/dialect/internal/json-utils.d.ts.map +1 -0
- package/dist/connectors/{postgres → relational}/repositories/dialect/internal/json-utils.js +5 -2
- package/dist/connectors/relational/repositories/dialect/internal/json-utils.js.map +1 -0
- package/dist/connectors/relational/repositories/dialect/relation.d.ts +11 -0
- package/dist/connectors/relational/repositories/dialect/relation.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/dialect/relation.js +43 -0
- package/dist/connectors/relational/repositories/dialect/relation.js.map +1 -0
- package/dist/connectors/relational/repositories/dialect/update.d.ts +38 -0
- package/dist/connectors/relational/repositories/dialect/update.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/dialect/update.js +92 -0
- package/dist/connectors/relational/repositories/dialect/update.js.map +1 -0
- package/dist/connectors/relational/repositories/index.d.ts +4 -0
- package/dist/connectors/relational/repositories/index.d.ts.map +1 -0
- package/dist/connectors/relational/repositories/index.js +20 -0
- package/dist/connectors/relational/repositories/index.js.map +1 -0
- package/dist/connectors/search/common/errors.d.ts +54 -0
- package/dist/connectors/search/common/errors.d.ts.map +1 -0
- package/dist/connectors/search/common/errors.js +40 -0
- package/dist/connectors/search/common/errors.js.map +1 -0
- package/dist/connectors/search/common/index.d.ts +2 -0
- package/dist/connectors/search/common/index.d.ts.map +1 -0
- package/dist/connectors/search/common/index.js +18 -0
- package/dist/connectors/search/common/index.js.map +1 -0
- package/dist/connectors/search/index.d.ts +1 -0
- package/dist/connectors/search/index.d.ts.map +1 -1
- package/dist/connectors/search/index.js +1 -0
- package/dist/connectors/search/index.js.map +1 -1
- package/dist/connectors/search/internal/search-connector-internal.d.ts.map +1 -1
- package/dist/connectors/search/internal/search-connector-internal.js +2 -2
- package/dist/connectors/search/internal/search-connector-internal.js.map +1 -1
- package/dist/connectors/search/models/define-search-collection.d.ts.map +1 -1
- package/dist/connectors/search/models/define-search-collection.js +25 -2
- package/dist/connectors/search/models/define-search-collection.js.map +1 -1
- package/dist/connectors/search/models/types.d.ts +1 -0
- package/dist/connectors/search/models/types.d.ts.map +1 -1
- package/dist/connectors/search/repositories/common/dialect-helpers.d.ts +63 -2
- package/dist/connectors/search/repositories/common/dialect-helpers.d.ts.map +1 -1
- package/dist/connectors/search/repositories/common/dialect-helpers.js +120 -3
- package/dist/connectors/search/repositories/common/dialect-helpers.js.map +1 -1
- package/dist/connectors/search/repositories/common/types.d.ts +75 -0
- package/dist/connectors/search/repositories/common/types.d.ts.map +1 -1
- package/dist/connectors/search/repositories/common/types.js +21 -0
- package/dist/connectors/search/repositories/common/types.js.map +1 -1
- package/dist/connectors/search/repositories/core/base.d.ts +52 -4
- package/dist/connectors/search/repositories/core/base.d.ts.map +1 -1
- package/dist/connectors/search/repositories/core/base.js +96 -16
- package/dist/connectors/search/repositories/core/base.js.map +1 -1
- package/dist/connectors/search/repositories/core/persistable.d.ts +14 -0
- package/dist/connectors/search/repositories/core/persistable.d.ts.map +1 -1
- package/dist/connectors/search/repositories/core/persistable.js +26 -6
- package/dist/connectors/search/repositories/core/persistable.js.map +1 -1
- package/dist/connectors/search/repositories/core/readable.d.ts +26 -3
- package/dist/connectors/search/repositories/core/readable.d.ts.map +1 -1
- package/dist/connectors/search/repositories/core/readable.js +74 -22
- package/dist/connectors/search/repositories/core/readable.js.map +1 -1
- package/dist/connectors/sqlite/datasources/abstract.d.ts +16 -0
- package/dist/connectors/sqlite/datasources/abstract.d.ts.map +1 -0
- package/dist/connectors/sqlite/datasources/abstract.js +23 -0
- package/dist/connectors/sqlite/datasources/abstract.js.map +1 -0
- package/dist/connectors/sqlite/datasources/base.d.ts +30 -0
- package/dist/connectors/sqlite/datasources/base.d.ts.map +1 -0
- package/dist/connectors/sqlite/datasources/base.js +78 -0
- package/dist/connectors/sqlite/datasources/base.js.map +1 -0
- package/dist/connectors/sqlite/datasources/common/guards.d.ts +8 -0
- package/dist/connectors/sqlite/datasources/common/guards.d.ts.map +1 -0
- package/dist/connectors/sqlite/datasources/common/guards.js +13 -0
- package/dist/connectors/sqlite/datasources/common/guards.js.map +1 -0
- package/dist/connectors/sqlite/datasources/common/index.d.ts +3 -0
- package/dist/connectors/sqlite/datasources/common/index.d.ts.map +1 -0
- package/dist/connectors/sqlite/datasources/common/index.js +19 -0
- package/dist/connectors/sqlite/datasources/common/index.js.map +1 -0
- package/dist/connectors/sqlite/datasources/common/types.d.ts +48 -0
- package/dist/connectors/sqlite/datasources/common/types.d.ts.map +1 -0
- package/dist/connectors/sqlite/datasources/common/types.js +18 -0
- package/dist/connectors/sqlite/datasources/common/types.js.map +1 -0
- package/dist/connectors/sqlite/datasources/index.d.ts +4 -0
- package/dist/connectors/sqlite/datasources/index.d.ts.map +1 -0
- package/dist/connectors/sqlite/datasources/index.js +20 -0
- package/dist/connectors/sqlite/datasources/index.js.map +1 -0
- package/dist/connectors/sqlite/drivers/driver.d.ts +20 -0
- package/dist/connectors/sqlite/drivers/driver.d.ts.map +1 -0
- package/dist/connectors/sqlite/drivers/driver.js +3 -0
- package/dist/connectors/sqlite/drivers/driver.js.map +1 -0
- package/dist/connectors/sqlite/drivers/index.d.ts +2 -0
- package/dist/connectors/sqlite/drivers/index.d.ts.map +1 -0
- package/dist/connectors/sqlite/drivers/index.js +18 -0
- package/dist/connectors/sqlite/drivers/index.js.map +1 -0
- package/dist/connectors/sqlite/drivers/libsql.d.ts +53 -0
- package/dist/connectors/sqlite/drivers/libsql.d.ts.map +1 -0
- package/dist/connectors/sqlite/drivers/libsql.js +151 -0
- package/dist/connectors/sqlite/drivers/libsql.js.map +1 -0
- package/dist/connectors/sqlite/index.d.ts +5 -0
- package/dist/connectors/sqlite/index.d.ts.map +1 -0
- package/dist/connectors/sqlite/index.js +21 -0
- package/dist/connectors/sqlite/index.js.map +1 -0
- package/dist/connectors/sqlite/models/base.d.ts +10 -0
- package/dist/connectors/sqlite/models/base.d.ts.map +1 -0
- package/dist/connectors/sqlite/models/base.js +13 -0
- package/dist/connectors/sqlite/models/base.js.map +1 -0
- package/dist/connectors/sqlite/models/common/columns.d.ts +18 -0
- package/dist/connectors/sqlite/models/common/columns.d.ts.map +1 -0
- package/dist/connectors/sqlite/models/common/columns.js +46 -0
- package/dist/connectors/sqlite/models/common/columns.js.map +1 -0
- package/dist/connectors/sqlite/models/common/index.d.ts +3 -0
- package/dist/connectors/sqlite/models/common/index.d.ts.map +1 -0
- package/dist/connectors/sqlite/models/common/index.js +19 -0
- package/dist/connectors/sqlite/models/common/index.js.map +1 -0
- package/dist/connectors/sqlite/models/common/types.d.ts +88 -0
- package/dist/connectors/sqlite/models/common/types.d.ts.map +1 -0
- package/dist/connectors/sqlite/models/common/types.js +8 -0
- package/dist/connectors/sqlite/models/common/types.js.map +1 -0
- package/dist/connectors/sqlite/models/enrichers/data-type.enricher.d.ts +22 -0
- package/dist/connectors/sqlite/models/enrichers/data-type.enricher.d.ts.map +1 -0
- package/dist/connectors/sqlite/models/enrichers/data-type.enricher.js +41 -0
- package/dist/connectors/sqlite/models/enrichers/data-type.enricher.js.map +1 -0
- package/dist/connectors/sqlite/models/enrichers/id.enricher.d.ts +25 -0
- package/dist/connectors/sqlite/models/enrichers/id.enricher.d.ts.map +1 -0
- package/dist/connectors/sqlite/models/enrichers/id.enricher.js +37 -0
- package/dist/connectors/sqlite/models/enrichers/id.enricher.js.map +1 -0
- package/dist/connectors/sqlite/models/enrichers/index.d.ts +6 -0
- package/dist/connectors/sqlite/models/enrichers/index.d.ts.map +1 -0
- package/dist/connectors/sqlite/models/enrichers/index.js +22 -0
- package/dist/connectors/sqlite/models/enrichers/index.js.map +1 -0
- package/dist/connectors/sqlite/models/enrichers/principal.enricher.d.ts +23 -0
- package/dist/connectors/sqlite/models/enrichers/principal.enricher.d.ts.map +1 -0
- package/dist/connectors/sqlite/models/enrichers/principal.enricher.js +49 -0
- package/dist/connectors/sqlite/models/enrichers/principal.enricher.js.map +1 -0
- package/dist/connectors/sqlite/models/enrichers/tz.enricher.d.ts +26 -0
- package/dist/connectors/sqlite/models/enrichers/tz.enricher.d.ts.map +1 -0
- package/dist/connectors/sqlite/models/enrichers/tz.enricher.js +36 -0
- package/dist/connectors/sqlite/models/enrichers/tz.enricher.js.map +1 -0
- package/dist/connectors/sqlite/models/enrichers/user-audit.enricher.d.ts +14 -0
- package/dist/connectors/sqlite/models/enrichers/user-audit.enricher.d.ts.map +1 -0
- package/dist/connectors/sqlite/models/enrichers/user-audit.enricher.js +70 -0
- package/dist/connectors/sqlite/models/enrichers/user-audit.enricher.js.map +1 -0
- package/dist/connectors/sqlite/models/index.d.ts +4 -0
- package/dist/connectors/sqlite/models/index.d.ts.map +1 -0
- package/dist/connectors/sqlite/models/index.js +20 -0
- package/dist/connectors/sqlite/models/index.js.map +1 -0
- package/dist/connectors/sqlite/repositories/common/index.d.ts +2 -0
- package/dist/connectors/sqlite/repositories/common/index.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/common/index.js +18 -0
- package/dist/connectors/sqlite/repositories/common/index.js.map +1 -0
- package/dist/connectors/sqlite/repositories/common/types.d.ts +15 -0
- package/dist/connectors/sqlite/repositories/common/types.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/common/types.js +3 -0
- package/dist/connectors/sqlite/repositories/common/types.js.map +1 -0
- package/dist/connectors/sqlite/repositories/core/base.d.ts +14 -0
- package/dist/connectors/sqlite/repositories/core/base.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/core/base.js +13 -0
- package/dist/connectors/sqlite/repositories/core/base.js.map +1 -0
- package/dist/connectors/sqlite/repositories/core/default.d.ts +13 -0
- package/dist/connectors/sqlite/repositories/core/default.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/core/default.js +12 -0
- package/dist/connectors/sqlite/repositories/core/default.js.map +1 -0
- package/dist/connectors/sqlite/repositories/core/index.d.ts +6 -0
- package/dist/connectors/sqlite/repositories/core/index.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/core/index.js +22 -0
- package/dist/connectors/sqlite/repositories/core/index.js.map +1 -0
- package/dist/connectors/sqlite/repositories/core/persistable.d.ts +12 -0
- package/dist/connectors/sqlite/repositories/core/persistable.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/core/persistable.js +11 -0
- package/dist/connectors/sqlite/repositories/core/persistable.js.map +1 -0
- package/dist/connectors/sqlite/repositories/core/readable.d.ts +10 -0
- package/dist/connectors/sqlite/repositories/core/readable.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/core/readable.js +9 -0
- package/dist/connectors/sqlite/repositories/core/readable.js.map +1 -0
- package/dist/connectors/sqlite/repositories/core/soft-deletable.d.ts +27 -0
- package/dist/connectors/sqlite/repositories/core/soft-deletable.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/core/soft-deletable.js +13 -0
- package/dist/connectors/sqlite/repositories/core/soft-deletable.js.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/filter.d.ts +43 -0
- package/dist/connectors/sqlite/repositories/dialect/filter.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/filter.js +71 -0
- package/dist/connectors/sqlite/repositories/dialect/filter.js.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/index.d.ts +5 -0
- package/dist/connectors/sqlite/repositories/dialect/index.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/index.js +21 -0
- package/dist/connectors/sqlite/repositories/dialect/index.js.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/internal/json-column.d.ts +14 -0
- package/dist/connectors/sqlite/repositories/dialect/internal/json-column.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/internal/json-column.js +22 -0
- package/dist/connectors/sqlite/repositories/dialect/internal/json-column.js.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/internal/json-path.d.ts +22 -0
- package/dist/connectors/sqlite/repositories/dialect/internal/json-path.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/internal/json-path.js +45 -0
- package/dist/connectors/sqlite/repositories/dialect/internal/json-path.js.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/query-dialect.d.ts +23 -0
- package/dist/connectors/sqlite/repositories/dialect/query-dialect.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/query-dialect.js +28 -0
- package/dist/connectors/sqlite/repositories/dialect/query-dialect.js.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/query.d.ts +42 -0
- package/dist/connectors/sqlite/repositories/dialect/query.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/query.js +103 -0
- package/dist/connectors/sqlite/repositories/dialect/query.js.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/update.d.ts +27 -0
- package/dist/connectors/sqlite/repositories/dialect/update.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/dialect/update.js +46 -0
- package/dist/connectors/sqlite/repositories/dialect/update.js.map +1 -0
- package/dist/connectors/sqlite/repositories/executor.d.ts +40 -0
- package/dist/connectors/sqlite/repositories/executor.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/executor.js +162 -0
- package/dist/connectors/sqlite/repositories/executor.js.map +1 -0
- package/dist/connectors/sqlite/repositories/index.d.ts +5 -0
- package/dist/connectors/sqlite/repositories/index.d.ts.map +1 -0
- package/dist/connectors/sqlite/repositories/index.js +23 -0
- package/dist/connectors/sqlite/repositories/index.js.map +1 -0
- package/dist/connectors/typesense/compiler.d.ts.map +1 -1
- package/dist/connectors/typesense/compiler.js +30 -0
- package/dist/connectors/typesense/compiler.js.map +1 -1
- package/dist/connectors/typesense/connector.d.ts +21 -0
- package/dist/connectors/typesense/connector.d.ts.map +1 -1
- package/dist/connectors/typesense/connector.js +205 -28
- package/dist/connectors/typesense/connector.js.map +1 -1
- package/dist/connectors/typesense/internal/connector-internal.d.ts +33 -0
- package/dist/connectors/typesense/internal/connector-internal.d.ts.map +1 -1
- package/dist/connectors/typesense/internal/connector-internal.js +47 -1
- package/dist/connectors/typesense/internal/connector-internal.js.map +1 -1
- package/dist/connectors/typesense/repositories/common/types.d.ts +7 -0
- package/dist/connectors/typesense/repositories/common/types.d.ts.map +1 -1
- package/dist/connectors/typesense/repositories/dialect/query-dialect.d.ts +28 -7
- package/dist/connectors/typesense/repositories/dialect/query-dialect.d.ts.map +1 -1
- package/dist/connectors/typesense/repositories/dialect/query-dialect.js +227 -84
- package/dist/connectors/typesense/repositories/dialect/query-dialect.js.map +1 -1
- package/dist/helpers/inversion/common/types.d.ts +9 -0
- package/dist/helpers/inversion/common/types.d.ts.map +1 -1
- package/dist/helpers/inversion/mixins/repository.mixin.d.ts +18 -4
- package/dist/helpers/inversion/mixins/repository.mixin.d.ts.map +1 -1
- package/dist/helpers/inversion/mixins/repository.mixin.js +25 -8
- package/dist/helpers/inversion/mixins/repository.mixin.js.map +1 -1
- package/package.json +48 -20
- package/dist/base/repositories/common/operators.d.ts +0 -49
- package/dist/base/repositories/common/operators.d.ts.map +0 -1
- package/dist/base/repositories/common/operators.js +0 -121
- package/dist/base/repositories/common/operators.js.map +0 -1
- package/dist/base/repositories/query-schemas/fields.d.ts +0 -6
- package/dist/base/repositories/query-schemas/fields.d.ts.map +0 -1
- package/dist/base/repositories/query-schemas/fields.js +0 -17
- package/dist/base/repositories/query-schemas/fields.js.map +0 -1
- package/dist/base/repositories/query-schemas/filter.d.ts +0 -23
- package/dist/base/repositories/query-schemas/filter.d.ts.map +0 -1
- package/dist/base/repositories/query-schemas/filter.js +0 -72
- package/dist/base/repositories/query-schemas/filter.js.map +0 -1
- package/dist/base/repositories/query-schemas/limit.d.ts +0 -4
- package/dist/base/repositories/query-schemas/limit.d.ts.map +0 -1
- package/dist/base/repositories/query-schemas/limit.js +0 -12
- package/dist/base/repositories/query-schemas/limit.js.map +0 -1
- package/dist/base/repositories/query-schemas/offset.d.ts +0 -4
- package/dist/base/repositories/query-schemas/offset.d.ts.map +0 -1
- package/dist/base/repositories/query-schemas/offset.js +0 -12
- package/dist/base/repositories/query-schemas/offset.js.map +0 -1
- package/dist/base/repositories/query-schemas/order-by.d.ts +0 -4
- package/dist/base/repositories/query-schemas/order-by.d.ts.map +0 -1
- package/dist/base/repositories/query-schemas/order-by.js +0 -18
- package/dist/base/repositories/query-schemas/order-by.js.map +0 -1
- package/dist/base/repositories/query-schemas/skip.d.ts +0 -4
- package/dist/base/repositories/query-schemas/skip.d.ts.map +0 -1
- package/dist/base/repositories/query-schemas/skip.js +0 -12
- package/dist/base/repositories/query-schemas/skip.js.map +0 -1
- package/dist/base/repositories/query-schemas/where.d.ts +0 -9
- package/dist/base/repositories/query-schemas/where.d.ts.map +0 -1
- package/dist/base/repositories/query-schemas/where.js +0 -27
- package/dist/base/repositories/query-schemas/where.js.map +0 -1
- package/dist/connectors/postgres/repositories/dialect/internal/json-utils.d.ts.map +0 -1
- package/dist/connectors/postgres/repositories/dialect/internal/json-utils.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type TFields } from '@venizia/ignis-filter';
|
|
2
|
+
import type { ISearchCompileCapabilities, TCompiledWhere } from './types';
|
|
2
3
|
/** Dialect-shared pure helpers, shared once rather than byte-copied per dialect; not barrel-exported, not part of the connector's public surface. */
|
|
3
4
|
/** skip/offset -> 1-based page number. Requires a page size, and the skip must land on a page boundary. */
|
|
4
5
|
export declare const toSearchPage: (opts: {
|
|
@@ -9,6 +10,66 @@ export declare const toSearchPage: (opts: {
|
|
|
9
10
|
export declare const toFieldsCsv: (opts: {
|
|
10
11
|
fields: TFields;
|
|
11
12
|
}) => string;
|
|
12
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* A `{ gte: 1 }`-style operator map: non-null, non-array, non-Date, at least one key, and EVERY
|
|
15
|
+
* key a known operator. The every-key test mirrors the relational reference
|
|
16
|
+
* (relational/repositories/dialect/filter.ts:546-559) rather than accepting any non-empty object.
|
|
17
|
+
*
|
|
18
|
+
* Without it `{ meta: { foo: 1 } }` read as an operator map and reported "does not support
|
|
19
|
+
* operator 'foo'", naming a key the caller never meant as an operator; it now falls through to
|
|
20
|
+
* the value path and is rejected for what it actually is - an object where a scalar belongs.
|
|
21
|
+
*/
|
|
13
22
|
export declare const isOperatorObject: (value: unknown) => value is Record<string, unknown>;
|
|
23
|
+
/**
|
|
24
|
+
* AND of two compiled clauses: `matchNone` absorbs, `matchAll` is the identity. This is the
|
|
25
|
+
* algebra string-joining could not express, and the reason an empty permission disjunction now
|
|
26
|
+
* survives into the query instead of evaporating out of it.
|
|
27
|
+
*/
|
|
28
|
+
export declare const andCompiled: (left: TCompiledWhere, right: TCompiledWhere, joiner: string) => TCompiledWhere;
|
|
29
|
+
/** OR of two compiled clauses - the dual of `andCompiled`: `matchAll` absorbs, `matchNone` is the identity. */
|
|
30
|
+
export declare const orCompiled: (left: TCompiledWhere, right: TCompiledWhere, joiner: string) => TCompiledWhere;
|
|
31
|
+
/** Folds a clause list, seeded with that operator's IDENTITY so an empty list lands on it: `and: []` -> matchAll (vacuously true), `or: []` -> matchNone (absorbing false). */
|
|
32
|
+
export declare const reduceCompiled: (opts: {
|
|
33
|
+
clauses: TCompiledWhere[];
|
|
34
|
+
isDisjunction: boolean;
|
|
35
|
+
joiner: string;
|
|
36
|
+
}) => TCompiledWhere;
|
|
37
|
+
/** Parenthesises a compiled group; the absorbing outcomes carry no string to wrap. */
|
|
38
|
+
export declare const parenthesize: (compiled: TCompiledWhere) => TCompiledWhere;
|
|
39
|
+
/** Wraps a filter string as a compiled clause. */
|
|
40
|
+
export declare const toFilterClause: (filterBy: string) => TCompiledWhere;
|
|
41
|
+
/**
|
|
42
|
+
* Rejects a field name the collection does not declare, mirroring the relational reference which
|
|
43
|
+
* resolves every name against the table's columns and throws `Column NOT FOUND`
|
|
44
|
+
* (relational/repositories/dialect/filter.ts:377-382 for `where`, :423-428 for `order`). Without it
|
|
45
|
+
* the name compiles verbatim and the ENGINE's rejection surfaces as an infrastructure failure
|
|
46
|
+
* rather than a 400 naming the field.
|
|
47
|
+
*
|
|
48
|
+
* ONE judgment, shared by both paths a caller can name a field from - `where` and `order` - so the
|
|
49
|
+
* two cannot drift into disagreeing about what exists. `method` only labels the message with the
|
|
50
|
+
* path that asked; it never changes the answer.
|
|
51
|
+
*
|
|
52
|
+
* Absent `fields` means unvalidated, not "no fields": an entity carrying no collection definition
|
|
53
|
+
* must compile exactly as it did before this check existed.
|
|
54
|
+
*
|
|
55
|
+
* Membership is the WHOLE judgment - a dotted name is not special. Under Typesense's
|
|
56
|
+
* `enable_nested_fields` a dotted name is an ordinary field name, so `merchantName.en` passes when
|
|
57
|
+
* declared and `metadata.foo` fails when not, for the only reason that is true of it.
|
|
58
|
+
*
|
|
59
|
+
* Hidden fields stay filterable on purpose - `FilterBuilder` does not consult `hiddenProperties`
|
|
60
|
+
* either, and diverging from the reference is not this change's business.
|
|
61
|
+
*/
|
|
62
|
+
export declare const assertKnownField: (opts: {
|
|
63
|
+
field: string;
|
|
64
|
+
engine: string;
|
|
65
|
+
capabilities?: ISearchCompileCapabilities;
|
|
66
|
+
method?: string;
|
|
67
|
+
}) => void;
|
|
68
|
+
/** Rejects an operator this engine cannot express, naming BOTH so the caller knows it is the engine choice - not the operator - that decides it. */
|
|
69
|
+
export declare const throwUnsupportedOperator: (opts: {
|
|
70
|
+
operator: string;
|
|
71
|
+
field: string;
|
|
72
|
+
engine: string;
|
|
73
|
+
reason?: string;
|
|
74
|
+
}) => never;
|
|
14
75
|
//# sourceMappingURL=dialect-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialect-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/connectors/search/repositories/common/dialect-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"dialect-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/connectors/search/repositories/common/dialect-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrE,OAAO,KAAK,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG1E,qJAAqJ;AAErJ,2GAA2G;AAC3G,eAAO,MAAM,YAAY,GAAI,MAAM;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,KAAG,MAkBrE,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,WAAW,GAAI,MAAM;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,KAAG,MAevD,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAWhF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GACtB,MAAM,cAAc,EACpB,OAAO,cAAc,EACrB,QAAQ,MAAM,KACb,cAoBF,CAAC;AAEF,+GAA+G;AAC/G,eAAO,MAAM,UAAU,GACrB,MAAM,cAAc,EACpB,OAAO,cAAc,EACrB,QAAQ,MAAM,KACb,cAoBF,CAAC;AAEF,+KAA+K;AAC/K,eAAO,MAAM,cAAc,GAAI,MAAM;IACnC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,KAAG,cAQH,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,YAAY,GAAI,UAAU,cAAc,KAAG,cAG1C,CAAC;AAEf,kDAAkD;AAClD,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM,KAAG,cAGhD,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAG,IAWH,CAAC;AAEF,oJAAoJ;AACpJ,eAAO,MAAM,wBAAwB,GAAI,MAAM;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAG,KAOH,CAAC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isOperatorObject = exports.toFieldsCsv = exports.toSearchPage = void 0;
|
|
3
|
+
exports.throwUnsupportedOperator = exports.assertKnownField = exports.toFilterClause = exports.parenthesize = exports.reduceCompiled = exports.orCompiled = exports.andCompiled = exports.isOperatorObject = exports.toFieldsCsv = exports.toSearchPage = void 0;
|
|
4
|
+
const ignis_filter_1 = require("@venizia/ignis-filter");
|
|
4
5
|
const ignis_helpers_1 = require("@venizia/ignis-helpers");
|
|
6
|
+
const errors_1 = require("../../../../connectors/search/common/errors");
|
|
7
|
+
const types_1 = require("./types");
|
|
5
8
|
/** Dialect-shared pure helpers, shared once rather than byte-copied per dialect; not barrel-exported, not part of the connector's public surface. */
|
|
6
9
|
/** skip/offset -> 1-based page number. Requires a page size, and the skip must land on a page boundary. */
|
|
7
10
|
const toSearchPage = (opts) => {
|
|
@@ -34,12 +37,126 @@ const toFieldsCsv = (opts) => {
|
|
|
34
37
|
return included.join(',');
|
|
35
38
|
};
|
|
36
39
|
exports.toFieldsCsv = toFieldsCsv;
|
|
37
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* A `{ gte: 1 }`-style operator map: non-null, non-array, non-Date, at least one key, and EVERY
|
|
42
|
+
* key a known operator. The every-key test mirrors the relational reference
|
|
43
|
+
* (relational/repositories/dialect/filter.ts:546-559) rather than accepting any non-empty object.
|
|
44
|
+
*
|
|
45
|
+
* Without it `{ meta: { foo: 1 } }` read as an operator map and reported "does not support
|
|
46
|
+
* operator 'foo'", naming a key the caller never meant as an operator; it now falls through to
|
|
47
|
+
* the value path and is rejected for what it actually is - an object where a scalar belongs.
|
|
48
|
+
*/
|
|
38
49
|
const isOperatorObject = (value) => {
|
|
39
50
|
if (value === null || Array.isArray(value) || typeof value !== 'object') {
|
|
40
51
|
return false;
|
|
41
52
|
}
|
|
42
|
-
|
|
53
|
+
const keys = Object.keys(value);
|
|
54
|
+
if (keys.length === 0) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return keys.every(key => ignis_filter_1.QueryOperators.isValid(key));
|
|
43
58
|
};
|
|
44
59
|
exports.isOperatorObject = isOperatorObject;
|
|
60
|
+
/**
|
|
61
|
+
* AND of two compiled clauses: `matchNone` absorbs, `matchAll` is the identity. This is the
|
|
62
|
+
* algebra string-joining could not express, and the reason an empty permission disjunction now
|
|
63
|
+
* survives into the query instead of evaporating out of it.
|
|
64
|
+
*/
|
|
65
|
+
const andCompiled = (left, right, joiner) => {
|
|
66
|
+
if (left.outcome === types_1.SearchFilterOutcomes.MATCH_NONE ||
|
|
67
|
+
right.outcome === types_1.SearchFilterOutcomes.MATCH_NONE) {
|
|
68
|
+
return { outcome: types_1.SearchFilterOutcomes.MATCH_NONE };
|
|
69
|
+
}
|
|
70
|
+
if (left.outcome === types_1.SearchFilterOutcomes.MATCH_ALL) {
|
|
71
|
+
return right;
|
|
72
|
+
}
|
|
73
|
+
if (right.outcome === types_1.SearchFilterOutcomes.MATCH_ALL) {
|
|
74
|
+
return left;
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
outcome: types_1.SearchFilterOutcomes.FILTER,
|
|
78
|
+
filterBy: `${left.filterBy}${joiner}${right.filterBy}`,
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
exports.andCompiled = andCompiled;
|
|
82
|
+
/** OR of two compiled clauses - the dual of `andCompiled`: `matchAll` absorbs, `matchNone` is the identity. */
|
|
83
|
+
const orCompiled = (left, right, joiner) => {
|
|
84
|
+
if (left.outcome === types_1.SearchFilterOutcomes.MATCH_ALL ||
|
|
85
|
+
right.outcome === types_1.SearchFilterOutcomes.MATCH_ALL) {
|
|
86
|
+
return { outcome: types_1.SearchFilterOutcomes.MATCH_ALL };
|
|
87
|
+
}
|
|
88
|
+
if (left.outcome === types_1.SearchFilterOutcomes.MATCH_NONE) {
|
|
89
|
+
return right;
|
|
90
|
+
}
|
|
91
|
+
if (right.outcome === types_1.SearchFilterOutcomes.MATCH_NONE) {
|
|
92
|
+
return left;
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
outcome: types_1.SearchFilterOutcomes.FILTER,
|
|
96
|
+
filterBy: `${left.filterBy}${joiner}${right.filterBy}`,
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
exports.orCompiled = orCompiled;
|
|
100
|
+
/** Folds a clause list, seeded with that operator's IDENTITY so an empty list lands on it: `and: []` -> matchAll (vacuously true), `or: []` -> matchNone (absorbing false). */
|
|
101
|
+
const reduceCompiled = (opts) => {
|
|
102
|
+
const { clauses, isDisjunction, joiner } = opts;
|
|
103
|
+
const combine = isDisjunction ? exports.orCompiled : exports.andCompiled;
|
|
104
|
+
const identity = isDisjunction
|
|
105
|
+
? { outcome: types_1.SearchFilterOutcomes.MATCH_NONE }
|
|
106
|
+
: { outcome: types_1.SearchFilterOutcomes.MATCH_ALL };
|
|
107
|
+
return clauses.reduce((accumulated, clause) => combine(accumulated, clause, joiner), identity);
|
|
108
|
+
};
|
|
109
|
+
exports.reduceCompiled = reduceCompiled;
|
|
110
|
+
/** Parenthesises a compiled group; the absorbing outcomes carry no string to wrap. */
|
|
111
|
+
const parenthesize = (compiled) => compiled.outcome === types_1.SearchFilterOutcomes.FILTER
|
|
112
|
+
? { outcome: types_1.SearchFilterOutcomes.FILTER, filterBy: `(${compiled.filterBy})` }
|
|
113
|
+
: compiled;
|
|
114
|
+
exports.parenthesize = parenthesize;
|
|
115
|
+
/** Wraps a filter string as a compiled clause. */
|
|
116
|
+
const toFilterClause = (filterBy) => ({
|
|
117
|
+
outcome: types_1.SearchFilterOutcomes.FILTER,
|
|
118
|
+
filterBy,
|
|
119
|
+
});
|
|
120
|
+
exports.toFilterClause = toFilterClause;
|
|
121
|
+
/**
|
|
122
|
+
* Rejects a field name the collection does not declare, mirroring the relational reference which
|
|
123
|
+
* resolves every name against the table's columns and throws `Column NOT FOUND`
|
|
124
|
+
* (relational/repositories/dialect/filter.ts:377-382 for `where`, :423-428 for `order`). Without it
|
|
125
|
+
* the name compiles verbatim and the ENGINE's rejection surfaces as an infrastructure failure
|
|
126
|
+
* rather than a 400 naming the field.
|
|
127
|
+
*
|
|
128
|
+
* ONE judgment, shared by both paths a caller can name a field from - `where` and `order` - so the
|
|
129
|
+
* two cannot drift into disagreeing about what exists. `method` only labels the message with the
|
|
130
|
+
* path that asked; it never changes the answer.
|
|
131
|
+
*
|
|
132
|
+
* Absent `fields` means unvalidated, not "no fields": an entity carrying no collection definition
|
|
133
|
+
* must compile exactly as it did before this check existed.
|
|
134
|
+
*
|
|
135
|
+
* Membership is the WHOLE judgment - a dotted name is not special. Under Typesense's
|
|
136
|
+
* `enable_nested_fields` a dotted name is an ordinary field name, so `merchantName.en` passes when
|
|
137
|
+
* declared and `metadata.foo` fails when not, for the only reason that is true of it.
|
|
138
|
+
*
|
|
139
|
+
* Hidden fields stay filterable on purpose - `FilterBuilder` does not consult `hiddenProperties`
|
|
140
|
+
* either, and diverging from the reference is not this change's business.
|
|
141
|
+
*/
|
|
142
|
+
const assertKnownField = (opts) => {
|
|
143
|
+
const { field, engine, capabilities, method = 'compileWhere' } = opts;
|
|
144
|
+
if (!capabilities?.fields || capabilities.fields.has(field)) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
throw (0, ignis_helpers_1.getError)({
|
|
148
|
+
error: errors_1.SearchErrors.UNKNOWN_FIELD,
|
|
149
|
+
message: `[${engine}QueryDialect][${method}] search() Field NOT FOUND | field: '${field}' | engine: '${engine}' | the collection definition declares no such field`,
|
|
150
|
+
});
|
|
151
|
+
};
|
|
152
|
+
exports.assertKnownField = assertKnownField;
|
|
153
|
+
/** Rejects an operator this engine cannot express, naming BOTH so the caller knows it is the engine choice - not the operator - that decides it. */
|
|
154
|
+
const throwUnsupportedOperator = (opts) => {
|
|
155
|
+
const { operator, field, engine, reason } = opts;
|
|
156
|
+
throw (0, ignis_helpers_1.getError)({
|
|
157
|
+
error: errors_1.SearchErrors.UNSUPPORTED_OPERATOR,
|
|
158
|
+
message: `[${engine}QueryDialect][compileWhere] search() does not support operator '${operator}' | operator: '${operator}' | engine: '${engine}' | field: '${field}'${reason ? ` | ${reason}` : ''}`,
|
|
159
|
+
});
|
|
160
|
+
};
|
|
161
|
+
exports.throwUnsupportedOperator = throwUnsupportedOperator;
|
|
45
162
|
//# sourceMappingURL=dialect-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialect-helpers.js","sourceRoot":"","sources":["../../../../../src/connectors/search/repositories/common/dialect-helpers.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"dialect-helpers.js","sourceRoot":"","sources":["../../../../../src/connectors/search/repositories/common/dialect-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
import type { TFilter, TWhere } from '../../../../base/repositories/common';
|
|
2
|
+
import type { TConstValue } from '@venizia/ignis-helpers';
|
|
2
3
|
import type { SearchModes, TSearchInput } from './constants';
|
|
4
|
+
/**
|
|
5
|
+
* What a `where` tree compiled down to. A filter STRING cannot express the two absorbing
|
|
6
|
+
* outcomes: `''` is indistinguishable from "no constraint", which is why an empty `or` used to
|
|
7
|
+
* compile to a filter byte-identical to the unscoped query - widening the very clause meant to
|
|
8
|
+
* narrow it. The relational branch has always had this vocabulary (`sql\`false\`` vs `undefined`,
|
|
9
|
+
* relational/repositories/dialect/filter.ts:637-641); this is that vocabulary for the search branch.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SearchFilterOutcomes {
|
|
12
|
+
/** A real filter expression the engine should run. */
|
|
13
|
+
static readonly FILTER = "filter";
|
|
14
|
+
/** Vacuously true - impose no constraint. */
|
|
15
|
+
static readonly MATCH_ALL = "matchAll";
|
|
16
|
+
/** Absorbing false - can never match, so the engine must not be asked. */
|
|
17
|
+
static readonly MATCH_NONE = "matchNone";
|
|
18
|
+
static readonly SCHEME_SET: Set<string>;
|
|
19
|
+
static isValid(input: string): input is TSearchFilterOutcome;
|
|
20
|
+
}
|
|
21
|
+
export type TSearchFilterOutcome = TConstValue<typeof SearchFilterOutcomes>;
|
|
22
|
+
export type TCompiledWhere = {
|
|
23
|
+
outcome: typeof SearchFilterOutcomes.FILTER;
|
|
24
|
+
filterBy: string;
|
|
25
|
+
} | {
|
|
26
|
+
outcome: typeof SearchFilterOutcomes.MATCH_ALL;
|
|
27
|
+
} | {
|
|
28
|
+
outcome: typeof SearchFilterOutcomes.MATCH_NONE;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Query-time capabilities a dialect compiles against. Passed per call, never stored: every
|
|
32
|
+
* datasource shares ONE dialect instance (`typesense/datasources/datasource.ts:29` holds it in a
|
|
33
|
+
* static), so a dialect that remembered a collection would answer the next collection's query
|
|
34
|
+
* with the previous one's fields.
|
|
35
|
+
*/
|
|
36
|
+
export interface ISearchCompileCapabilities {
|
|
37
|
+
/**
|
|
38
|
+
* Field names the collection declares. ABSENT means "unvalidated" - an entity carrying no
|
|
39
|
+
* collection definition must still compile, exactly as it did before field checking existed.
|
|
40
|
+
*/
|
|
41
|
+
fields?: ReadonlySet<string>;
|
|
42
|
+
}
|
|
3
43
|
/** Search-engine query parameters translated from a repository-level TFilter. Only the cross-engine intersection lives here - an engine's own tuning knobs go on its own extension. Field names stay camelCase; wire format is produced only at the dialect's `toWireParams` boundary. */
|
|
4
44
|
export interface ISearchQuery {
|
|
5
45
|
/** Full-text search term. Use '*' for pure filter listings. */
|
|
@@ -26,16 +66,51 @@ export interface ISearchQuery {
|
|
|
26
66
|
groupMissingValues?: boolean;
|
|
27
67
|
/** Engine-native wire parameters, merged last into `toWireParams` output verbatim and unvalidated; keys use the engine's own vocabulary (`num_typos`, not `numTypos`). */
|
|
28
68
|
engineParams?: Record<string, unknown>;
|
|
69
|
+
/** The `where` compiled to an absorbing false: no query can match, so the repository answers empty WITHOUT calling the engine. Internal - `toWireParams` strips it, so it never reaches the wire. */
|
|
70
|
+
matchNone?: boolean;
|
|
29
71
|
}
|
|
30
72
|
/** Translates repository-level `TFilter`/`TWhere` into a search-engine-specific query. */
|
|
31
73
|
export interface ISearchQueryDialect {
|
|
32
74
|
build(opts: {
|
|
33
75
|
filter?: TFilter;
|
|
34
76
|
hiddenFields?: string[];
|
|
77
|
+
capabilities?: ISearchCompileCapabilities;
|
|
35
78
|
}): ISearchQuery;
|
|
79
|
+
/**
|
|
80
|
+
* @deprecated Use `compileWhere`, which can express the absorbing outcomes a filter STRING
|
|
81
|
+
* cannot. This signature has no representation for "matches nothing" - it returned `''`, which
|
|
82
|
+
* the caller could not tell from "no constraint", so an empty `or` widened the query it was
|
|
83
|
+
* meant to narrow. It now THROWS on that input rather than answering wrongly.
|
|
84
|
+
*/
|
|
36
85
|
toWhere(opts: {
|
|
37
86
|
where: TWhere;
|
|
38
87
|
}): string;
|
|
88
|
+
/**
|
|
89
|
+
* Compiles a `where` tree, resolving what a filter string cannot express. `capabilities` is
|
|
90
|
+
* per-call, never retained - one dialect instance serves every datasource.
|
|
91
|
+
*/
|
|
92
|
+
compileWhere(opts: {
|
|
93
|
+
where: TWhere;
|
|
94
|
+
capabilities?: ISearchCompileCapabilities;
|
|
95
|
+
}): TCompiledWhere;
|
|
96
|
+
/**
|
|
97
|
+
* Whether this engine can express `operator` at all. Published by the dialect rather than
|
|
98
|
+
* hand-copied by callers, so it cannot drift from the engine's own `switch`; every member of
|
|
99
|
+
* `QueryOperators.SCHEME_SET` has an answer, which is what stops a new engine from silently
|
|
100
|
+
* leaving one unclassified.
|
|
101
|
+
*/
|
|
102
|
+
canExpress(opts: {
|
|
103
|
+
operator: string;
|
|
104
|
+
}): boolean;
|
|
105
|
+
/**
|
|
106
|
+
* ANDs already-compiled clauses using this engine's own conjunction, honouring the absorbing
|
|
107
|
+
* outcomes. The repository needs this to combine a caller clause with a repository-owned one it
|
|
108
|
+
* compiled SEPARATELY - the joiner belongs to the engine, so the dialect supplies it rather
|
|
109
|
+
* than the caller guessing `&&` versus `AND`.
|
|
110
|
+
*/
|
|
111
|
+
conjoin(opts: {
|
|
112
|
+
clauses: TCompiledWhere[];
|
|
113
|
+
}): TCompiledWhere;
|
|
39
114
|
/** Writes every engine-specific consequence of a non-raw search input onto `query` (mode dispatch, vector clause, tuning knobs) - keeping `ReadableSearchRepository` engine-free. */
|
|
40
115
|
applySearchInput(opts: {
|
|
41
116
|
query: ISearchQuery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/connectors/search/repositories/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7D,0RAA0R;AAC1R,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,0KAA0K;IAC1K,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/connectors/search/repositories/common/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SearchFilterOutcomes = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* What a `where` tree compiled down to. A filter STRING cannot express the two absorbing
|
|
6
|
+
* outcomes: `''` is indistinguishable from "no constraint", which is why an empty `or` used to
|
|
7
|
+
* compile to a filter byte-identical to the unscoped query - widening the very clause meant to
|
|
8
|
+
* narrow it. The relational branch has always had this vocabulary (`sql\`false\`` vs `undefined`,
|
|
9
|
+
* relational/repositories/dialect/filter.ts:637-641); this is that vocabulary for the search branch.
|
|
10
|
+
*/
|
|
11
|
+
class SearchFilterOutcomes {
|
|
12
|
+
/** A real filter expression the engine should run. */
|
|
13
|
+
static { this.FILTER = 'filter'; }
|
|
14
|
+
/** Vacuously true - impose no constraint. */
|
|
15
|
+
static { this.MATCH_ALL = 'matchAll'; }
|
|
16
|
+
/** Absorbing false - can never match, so the engine must not be asked. */
|
|
17
|
+
static { this.MATCH_NONE = 'matchNone'; }
|
|
18
|
+
static { this.SCHEME_SET = new Set([this.FILTER, this.MATCH_ALL, this.MATCH_NONE]); }
|
|
19
|
+
static isValid(input) {
|
|
20
|
+
return this.SCHEME_SET.has(input);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.SearchFilterOutcomes = SearchFilterOutcomes;
|
|
3
24
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/connectors/search/repositories/common/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/connectors/search/repositories/common/types.ts"],"names":[],"mappings":";;;AAIA;;;;;;GAMG;AACH,MAAa,oBAAoB;IAC/B,sDAAsD;aACtC,WAAM,GAAG,QAAQ,CAAC;IAClC,6CAA6C;aAC7B,cAAS,GAAG,UAAU,CAAC;IACvC,0EAA0E;aAC1D,eAAU,GAAG,WAAW,CAAC;aAEzB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAErF,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAZH,oDAaC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { ITransaction } from '../../../../base/datasources';
|
|
2
|
-
import type { TFilter, TLockOptions } from '../../../../base/repositories/common';
|
|
2
|
+
import type { TFilter, TLockOptions, TWhere } from '../../../../base/repositories/common';
|
|
3
3
|
import { AbstractRepository } from '../../../../base/repositories/core';
|
|
4
4
|
import type { AbstractSearchDataSource } from '../../../../connectors/search/datasources';
|
|
5
5
|
import type { BaseSearchEntity } from '../../../../connectors/search/models';
|
|
6
6
|
import type { TClass } from '@venizia/ignis-helpers';
|
|
7
|
-
import type { ISearchQuery, ISearchQueryDialect } from '../../../../connectors/search/repositories/common';
|
|
7
|
+
import type { ISearchQuery, ISearchQueryDialect, TCompiledWhere } from '../../../../connectors/search/repositories/common';
|
|
8
8
|
/** Search-repository plumbing on `AbstractRepository`. `TDataSource` carries the concrete connector type through `this.connector`, so a concretely-bound repository reaches its engine's verbs uncast while an engine-agnostic one is forced to write `connector.alias?.…`. */
|
|
9
9
|
export declare abstract class SearchBaseRepository<TDocument extends object = object, TDataSource extends AbstractSearchDataSource = AbstractSearchDataSource> extends AbstractRepository<TDocument, TDocument> {
|
|
10
10
|
constructor(dataSource?: TDataSource, opts?: {
|
|
@@ -33,11 +33,59 @@ export declare abstract class SearchBaseRepository<TDocument extends object = ob
|
|
|
33
33
|
protected assertNoLock(opts?: {
|
|
34
34
|
lock?: TLockOptions;
|
|
35
35
|
}): void;
|
|
36
|
-
|
|
36
|
+
private _collectionFields?;
|
|
37
|
+
/**
|
|
38
|
+
* Field names the collection declares, or undefined when it declares none - which means
|
|
39
|
+
* "unvalidated", not "no fields": an entity carrying no `ISearchCollectionDefinition` must
|
|
40
|
+
* compile exactly as it did before field checking existed.
|
|
41
|
+
*
|
|
42
|
+
* Read from the entity's own typed `schema` rather than by casting into `entity.constructor`;
|
|
43
|
+
* `BaseSearchEntity.schema` is instance-side and already an `ISearchCollectionDefinition`.
|
|
44
|
+
* Memoized per repository instance - the definition is frozen after boot.
|
|
45
|
+
*/
|
|
46
|
+
protected get collectionFields(): ReadonlySet<string> | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Builds a dialect-translated query, always stripping hiddenFields.
|
|
49
|
+
*
|
|
50
|
+
* The caller's `where` and the repository-owned `defaultWhere` are compiled SEPARATELY and
|
|
51
|
+
* combined after, rather than merged into one tree first. Merging first makes the two
|
|
52
|
+
* indistinguishable, and the repository's own clause would then have to satisfy the
|
|
53
|
+
* caller-facing field check: `SprocketDocument` in integration-wiring.test.ts declares
|
|
54
|
+
* [title, secretCode] but carries `defaultFilter: { where: { isActive: true } }`, so every
|
|
55
|
+
* request through it would 400 ITSELF. Compiling separately makes the trust boundary a matter
|
|
56
|
+
* of WHICH CALL IS MADE, which - unlike a flag threaded through the recursion - cannot be wrong
|
|
57
|
+
* at a nested level.
|
|
58
|
+
*/
|
|
37
59
|
protected buildQuery(opts: {
|
|
38
60
|
filter?: TFilter;
|
|
39
61
|
shouldSkipDefaultFilter?: boolean;
|
|
40
62
|
}): ISearchQuery;
|
|
41
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Refuses a caller-supplied page larger than this model allows.
|
|
65
|
+
*
|
|
66
|
+
* POLICY, and the counterweight to a guardrail this tier removed: an engine used to refuse more
|
|
67
|
+
* than 250 hits per page, so an unreasonable `limit` failed fast and cheap. Now that such a page
|
|
68
|
+
* is served, something has to decide when it is unreasonable, and the framework would otherwise
|
|
69
|
+
* be less safe than before it could satisfy the request.
|
|
70
|
+
*
|
|
71
|
+
* It lives in `buildQuery` because that is the one point BOTH `find()` and `search()` pass
|
|
72
|
+
* through - enforcing in `find()` alone would leave `search()` as a way around it, which is not
|
|
73
|
+
* a ceiling. `mode: 'raw'` bypasses `buildQuery` and therefore bypasses this deliberately: raw
|
|
74
|
+
* is the documented escape hatch and its callers own the consequences. They still cannot exceed
|
|
75
|
+
* the connector's physical ceiling, which is the intended layering - policy is opt-out-able,
|
|
76
|
+
* physics is not.
|
|
77
|
+
*/
|
|
78
|
+
protected assertLimitWithinCeiling(opts: {
|
|
79
|
+
limit?: number;
|
|
80
|
+
}): void;
|
|
81
|
+
/**
|
|
82
|
+
* Compiles the caller clause (field-checked) and the repository-owned default clause
|
|
83
|
+
* (unchecked), then ANDs them via the dialect - `defaultWhere` first, preserving the order the
|
|
84
|
+
* previous `{ and: [defaultWhere, where] }` merge produced.
|
|
85
|
+
*/
|
|
86
|
+
protected compileEffectiveWhere(opts: {
|
|
87
|
+
where?: TWhere;
|
|
88
|
+
defaultWhere?: TWhere;
|
|
89
|
+
}): TCompiledWhere;
|
|
42
90
|
}
|
|
43
91
|
//# sourceMappingURL=base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/connectors/search/repositories/core/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/connectors/search/repositories/core/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAI9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACf,MAAM,yCAAyC,CAAC;AAGjD,+QAA+Q;AAC/Q,8BAAsB,oBAAoB,CACxC,SAAS,SAAS,MAAM,GAAG,MAAM,EACjC,WAAW,SAAS,wBAAwB,GAAG,wBAAwB,CACvE,SAAQ,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC;gBAE9C,UAAU,CAAC,EAAE,WAAW,EACxB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAA;KAAE;IAKnE,IAAa,UAAU,IAAI,WAAW,CAErC;IAED,IAAa,UAAU,CAAC,KAAK,EAAE,WAAW,EAEzC;IAED,IAAa,MAAM,IAAI,gBAAgB,CAEtC;IAED,IAAa,MAAM,CAAC,KAAK,EAAE,gBAAgB,EAE1C;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAEjE;IAED,SAAS,KAAK,YAAY,IAAI,mBAAmB,CAEhD;IAED,IAAI,WAAW,IAAI,WAAW,CAAC,aAAa,CAAC,CAE5C;IAEQ,aAAa,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,WAAW,CAAA;KAAE,GAAG,IAAI;IAI/D,yMAAyM;IACzM,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC;IAgB7C,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;IAQrD,qQAAqQ;IACrQ,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI;IAY1E,uIAAuI;IACvI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI;IAY5D,OAAO,CAAC,iBAAiB,CAAC,CAAc;IAExC;;;;;;;;OAQG;IACH,SAAS,KAAK,gBAAgB,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAOhE;IAED;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE;QACzB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,uBAAuB,CAAC,EAAE,OAAO,CAAC;KACnC,GAAG,YAAY;IAoChB;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,wBAAwB,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAclE;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,cAAc;CAiBjG"}
|
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SearchBaseRepository = void 0;
|
|
4
4
|
const core_1 = require("../../../../base/repositories/core");
|
|
5
|
+
const common_1 = require("../../../../base/repositories/common");
|
|
6
|
+
const common_2 = require("../../../../connectors/search/common");
|
|
7
|
+
const ignis_helpers_1 = require("@venizia/ignis-helpers");
|
|
5
8
|
const utilities_1 = require("../../../../utilities");
|
|
9
|
+
const common_3 = require("../../../../connectors/search/repositories/common");
|
|
6
10
|
/** Search-repository plumbing on `AbstractRepository`. `TDataSource` carries the concrete connector type through `this.connector`, so a concretely-bound repository reaches its engine's verbs uncast while an engine-agnostic one is forced to write `connector.alias?.…`. */
|
|
7
11
|
class SearchBaseRepository extends core_1.AbstractRepository {
|
|
8
12
|
constructor(dataSource, opts) {
|
|
@@ -75,30 +79,106 @@ class SearchBaseRepository extends core_1.AbstractRepository {
|
|
|
75
79
|
logger: this.logger,
|
|
76
80
|
});
|
|
77
81
|
}
|
|
78
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Field names the collection declares, or undefined when it declares none - which means
|
|
84
|
+
* "unvalidated", not "no fields": an entity carrying no `ISearchCollectionDefinition` must
|
|
85
|
+
* compile exactly as it did before field checking existed.
|
|
86
|
+
*
|
|
87
|
+
* Read from the entity's own typed `schema` rather than by casting into `entity.constructor`;
|
|
88
|
+
* `BaseSearchEntity.schema` is instance-side and already an `ISearchCollectionDefinition`.
|
|
89
|
+
* Memoized per repository instance - the definition is frozen after boot.
|
|
90
|
+
*/
|
|
91
|
+
get collectionFields() {
|
|
92
|
+
if (!this._collectionFields) {
|
|
93
|
+
const fields = this.entity?.schema?.fields;
|
|
94
|
+
this._collectionFields = new Set((fields ?? []).map(field => field.name));
|
|
95
|
+
}
|
|
96
|
+
return this._collectionFields.size > 0 ? this._collectionFields : undefined;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Builds a dialect-translated query, always stripping hiddenFields.
|
|
100
|
+
*
|
|
101
|
+
* The caller's `where` and the repository-owned `defaultWhere` are compiled SEPARATELY and
|
|
102
|
+
* combined after, rather than merged into one tree first. Merging first makes the two
|
|
103
|
+
* indistinguishable, and the repository's own clause would then have to satisfy the
|
|
104
|
+
* caller-facing field check: `SprocketDocument` in integration-wiring.test.ts declares
|
|
105
|
+
* [title, secretCode] but carries `defaultFilter: { where: { isActive: true } }`, so every
|
|
106
|
+
* request through it would 400 ITSELF. Compiling separately makes the trust boundary a matter
|
|
107
|
+
* of WHICH CALL IS MADE, which - unlike a flag threaded through the recursion - cannot be wrong
|
|
108
|
+
* at a nested level.
|
|
109
|
+
*/
|
|
79
110
|
buildQuery(opts) {
|
|
80
111
|
const { filter, shouldSkipDefaultFilter } = opts;
|
|
81
112
|
const defaultWhere = shouldSkipDefaultFilter ? undefined : this.defaultWhere;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
: undefined;
|
|
88
|
-
return this.queryDialect.build({
|
|
89
|
-
filter: effectiveFilter,
|
|
113
|
+
this.assertLimitWithinCeiling({ limit: filter?.limit });
|
|
114
|
+
// `where` is withheld from `build` and compiled below: handing it over merged would field-check
|
|
115
|
+
// the repository's own clause along with the caller's.
|
|
116
|
+
const query = this.queryDialect.build({
|
|
117
|
+
filter: filter ? { ...filter, where: undefined } : undefined,
|
|
90
118
|
hiddenFields: this.hiddenFields,
|
|
119
|
+
capabilities: { fields: this.collectionFields },
|
|
120
|
+
});
|
|
121
|
+
const compiled = this.compileEffectiveWhere({ where: filter?.where, defaultWhere });
|
|
122
|
+
switch (compiled.outcome) {
|
|
123
|
+
case common_3.SearchFilterOutcomes.FILTER: {
|
|
124
|
+
query.filterBy = compiled.filterBy;
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
case common_3.SearchFilterOutcomes.MATCH_NONE: {
|
|
128
|
+
query.matchNone = true;
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
case common_3.SearchFilterOutcomes.MATCH_ALL:
|
|
132
|
+
default: {
|
|
133
|
+
// Vacuously true - nothing to set and nothing to short-circuit. Spelled out rather than
|
|
134
|
+
// left as an unwritten else, so all three outcomes are visibly accounted for.
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return query;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Refuses a caller-supplied page larger than this model allows.
|
|
142
|
+
*
|
|
143
|
+
* POLICY, and the counterweight to a guardrail this tier removed: an engine used to refuse more
|
|
144
|
+
* than 250 hits per page, so an unreasonable `limit` failed fast and cheap. Now that such a page
|
|
145
|
+
* is served, something has to decide when it is unreasonable, and the framework would otherwise
|
|
146
|
+
* be less safe than before it could satisfy the request.
|
|
147
|
+
*
|
|
148
|
+
* It lives in `buildQuery` because that is the one point BOTH `find()` and `search()` pass
|
|
149
|
+
* through - enforcing in `find()` alone would leave `search()` as a way around it, which is not
|
|
150
|
+
* a ceiling. `mode: 'raw'` bypasses `buildQuery` and therefore bypasses this deliberately: raw
|
|
151
|
+
* is the documented escape hatch and its callers own the consequences. They still cannot exceed
|
|
152
|
+
* the connector's physical ceiling, which is the intended layering - policy is opt-out-able,
|
|
153
|
+
* physics is not.
|
|
154
|
+
*/
|
|
155
|
+
assertLimitWithinCeiling(opts) {
|
|
156
|
+
const { limit } = opts;
|
|
157
|
+
const ceiling = this.maxLimit ?? common_1.DEFAULT_MAX_LIMIT;
|
|
158
|
+
if (limit === undefined || limit <= ceiling) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
throw (0, ignis_helpers_1.getError)({
|
|
162
|
+
error: common_2.SearchErrors.PAGE_TOO_LARGE,
|
|
163
|
+
message: `[${this.constructor.name}][buildQuery] Requested page exceeds this model's limit | collection: '${this.collectionName}' | requested: ${limit} | maximum: ${ceiling} | raise it with @model settings.maxLimit if larger pages are genuinely needed`,
|
|
91
164
|
});
|
|
92
165
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
166
|
+
/**
|
|
167
|
+
* Compiles the caller clause (field-checked) and the repository-owned default clause
|
|
168
|
+
* (unchecked), then ANDs them via the dialect - `defaultWhere` first, preserving the order the
|
|
169
|
+
* previous `{ and: [defaultWhere, where] }` merge produced.
|
|
170
|
+
*/
|
|
171
|
+
compileEffectiveWhere(opts) {
|
|
172
|
+
const { where, defaultWhere } = opts;
|
|
173
|
+
const dialect = this.queryDialect;
|
|
174
|
+
const clauses = [];
|
|
175
|
+
if (defaultWhere) {
|
|
176
|
+
clauses.push(dialect.compileWhere({ where: defaultWhere }));
|
|
97
177
|
}
|
|
98
|
-
if (
|
|
99
|
-
|
|
178
|
+
if (where) {
|
|
179
|
+
clauses.push(dialect.compileWhere({ where, capabilities: { fields: this.collectionFields } }));
|
|
100
180
|
}
|
|
101
|
-
return {
|
|
181
|
+
return dialect.conjoin({ clauses });
|
|
102
182
|
}
|
|
103
183
|
}
|
|
104
184
|
exports.SearchBaseRepository = SearchBaseRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/connectors/search/repositories/core/base.ts"],"names":[],"mappings":";;;AAEA,mDAA8D;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/connectors/search/repositories/core/base.ts"],"names":[],"mappings":"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"}
|