@venizia/ignis 0.0.10-5 → 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/dist/base/applications/abstract.d.ts +7 -1
- package/dist/base/applications/abstract.d.ts.map +1 -1
- package/dist/base/applications/abstract.js +81 -9
- package/dist/base/applications/abstract.js.map +1 -1
- package/dist/base/applications/base.d.ts.map +1 -1
- package/dist/base/applications/base.js +0 -13
- package/dist/base/applications/base.js.map +1 -1
- package/dist/base/components/base.d.ts +3 -3
- package/dist/base/components/base.d.ts.map +1 -1
- package/dist/base/controllers/common/types.d.ts.map +1 -1
- package/dist/base/controllers/factory/controller.d.ts +8 -6
- package/dist/base/controllers/factory/controller.d.ts.map +1 -1
- package/dist/base/controllers/factory/controller.js +5 -5
- package/dist/base/controllers/factory/controller.js.map +1 -1
- package/dist/base/controllers/factory/crud/abstract.d.ts +2 -8
- package/dist/base/controllers/factory/crud/abstract.d.ts.map +1 -1
- package/dist/base/controllers/factory/crud/abstract.js +2 -13
- package/dist/base/controllers/factory/crud/abstract.js.map +1 -1
- package/dist/base/controllers/factory/crud/readable.js +4 -4
- package/dist/base/controllers/factory/crud/readable.js.map +1 -1
- package/dist/base/controllers/factory/definition.d.ts +8 -8
- package/dist/base/controllers/factory/definition.d.ts.map +1 -1
- package/dist/base/controllers/factory/definition.js +25 -3
- package/dist/base/controllers/factory/definition.js.map +1 -1
- package/dist/base/controllers/grpc/abstract.d.ts.map +1 -1
- package/dist/base/controllers/grpc/abstract.js +0 -2
- package/dist/base/controllers/grpc/abstract.js.map +1 -1
- package/dist/base/controllers/grpc/adapter.d.ts.map +1 -1
- package/dist/base/controllers/grpc/adapter.js +4 -3
- package/dist/base/controllers/grpc/adapter.js.map +1 -1
- package/dist/base/controllers/rest/abstract.d.ts +7 -2
- package/dist/base/controllers/rest/abstract.d.ts.map +1 -1
- package/dist/base/controllers/rest/abstract.js +23 -7
- package/dist/base/controllers/rest/abstract.js.map +1 -1
- package/dist/base/controllers/rest/base.d.ts +6 -0
- package/dist/base/controllers/rest/base.d.ts.map +1 -1
- package/dist/base/controllers/rest/base.js +12 -0
- package/dist/base/controllers/rest/base.js.map +1 -1
- package/dist/base/datasources/common/types.d.ts +4 -0
- package/dist/base/datasources/common/types.d.ts.map +1 -1
- package/dist/base/datasources/common/types.js +14 -1
- package/dist/base/datasources/common/types.js.map +1 -1
- package/dist/base/metadata/injectors.d.ts +2 -2
- package/dist/base/metadata/injectors.d.ts.map +1 -1
- package/dist/base/metadata/injectors.js.map +1 -1
- package/dist/base/metadata/persistents.d.ts.map +1 -1
- package/dist/base/metadata/persistents.js +11 -4
- package/dist/base/metadata/persistents.js.map +1 -1
- package/dist/base/metadata/routes/common.d.ts +26 -0
- package/dist/base/metadata/routes/common.d.ts.map +1 -0
- package/dist/base/metadata/routes/common.js +40 -0
- package/dist/base/metadata/routes/common.js.map +1 -0
- package/dist/base/metadata/routes/rest.d.ts.map +1 -1
- package/dist/base/metadata/routes/rest.js +4 -0
- package/dist/base/metadata/routes/rest.js.map +1 -1
- package/dist/base/metadata/routes/rpc.d.ts.map +1 -1
- package/dist/base/metadata/routes/rpc.js +4 -0
- package/dist/base/metadata/routes/rpc.js.map +1 -1
- package/dist/base/middlewares/app-error/app-error.middleware.d.ts.map +1 -1
- package/dist/base/middlewares/app-error/app-error.middleware.js +7 -4
- package/dist/base/middlewares/app-error/app-error.middleware.js.map +1 -1
- package/dist/base/middlewares/app-error/database.handler.js +2 -2
- package/dist/base/middlewares/app-error/database.handler.js.map +1 -1
- package/dist/base/middlewares/app-error/definition.d.ts +1 -1
- package/dist/base/middlewares/app-error/definition.d.ts.map +1 -1
- package/dist/base/middlewares/app-error/definition.js +2 -1
- package/dist/base/middlewares/app-error/definition.js.map +1 -1
- package/dist/base/middlewares/app-error/zod.handler.d.ts +1 -1
- package/dist/base/middlewares/app-error/zod.handler.d.ts.map +1 -1
- package/dist/base/middlewares/app-error/zod.handler.js +3 -1
- package/dist/base/middlewares/app-error/zod.handler.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 +8 -8
- package/dist/base/middlewares/request-spy/request-spy.middleware.js.map +1 -1
- package/dist/base/mixins/index.d.ts +0 -3
- package/dist/base/mixins/index.d.ts.map +1 -1
- package/dist/base/mixins/index.js +0 -3
- package/dist/base/mixins/index.js.map +1 -1
- package/dist/base/models/common/types.js +1 -1
- package/dist/base/repositories/common/constants.d.ts +10 -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/types.d.ts +12 -4
- package/dist/base/repositories/common/types.d.ts.map +1 -1
- package/dist/base/repositories/common/types.js +10 -1
- package/dist/base/repositories/common/types.js.map +1 -1
- package/dist/base/repositories/core/abstract.d.ts +6 -8
- package/dist/base/repositories/core/abstract.d.ts.map +1 -1
- package/dist/base/repositories/core/abstract.js +8 -3
- package/dist/base/repositories/core/abstract.js.map +1 -1
- package/dist/base/repositories/query-schemas/filter.js +3 -3
- package/dist/base/repositories/query-schemas/filter.js.map +1 -1
- package/dist/base/repositories/query-schemas/where.js +5 -5
- package/dist/base/repositories/query-schemas/where.js.map +1 -1
- package/dist/base/services/base.d.ts +1 -4
- package/dist/base/services/base.d.ts.map +1 -1
- package/dist/base/services/base.js +1 -5
- package/dist/base/services/base.js.map +1 -1
- package/dist/common/error-codes.d.ts +21 -0
- package/dist/common/error-codes.d.ts.map +1 -0
- package/dist/common/error-codes.js +40 -0
- package/dist/common/error-codes.js.map +1 -0
- package/dist/common/index.d.ts +1 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +1 -0
- package/dist/common/index.js.map +1 -1
- package/dist/components/api-reference/common/constants.d.ts.map +1 -0
- package/dist/components/api-reference/common/constants.js.map +1 -0
- package/dist/components/api-reference/common/index.d.ts.map +1 -0
- package/dist/components/api-reference/common/index.js.map +1 -0
- package/dist/components/api-reference/common/keys.d.ts +9 -0
- package/dist/components/api-reference/common/keys.d.ts.map +1 -0
- package/dist/components/api-reference/common/keys.js +14 -0
- package/dist/components/api-reference/common/keys.js.map +1 -0
- package/dist/components/{swagger → api-reference}/common/types.d.ts +14 -11
- package/dist/components/api-reference/common/types.d.ts.map +1 -0
- package/dist/components/api-reference/common/types.js.map +1 -0
- package/dist/components/api-reference/component.d.ts +12 -0
- package/dist/components/api-reference/component.d.ts.map +1 -0
- package/dist/components/{swagger → api-reference}/component.js +54 -38
- package/dist/components/api-reference/component.js.map +1 -0
- package/dist/components/api-reference/index.d.ts.map +1 -0
- package/dist/components/api-reference/index.js.map +1 -0
- package/dist/components/api-reference/ui-factory.d.ts.map +1 -0
- package/dist/components/api-reference/ui-factory.js.map +1 -0
- package/dist/components/auth/authenticate/common/types.d.ts.map +1 -1
- package/dist/components/auth/authenticate/component.d.ts.map +1 -1
- package/dist/components/auth/authenticate/component.js +1 -8
- package/dist/components/auth/authenticate/component.js.map +1 -1
- package/dist/components/auth/authenticate/controllers/factory.d.ts +8 -1
- package/dist/components/auth/authenticate/controllers/factory.d.ts.map +1 -1
- package/dist/components/auth/authenticate/middlewares/authenticate.middleware.d.ts.map +1 -1
- package/dist/components/auth/authenticate/middlewares/authenticate.middleware.js +0 -1
- package/dist/components/auth/authenticate/middlewares/authenticate.middleware.js.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 +1 -7
- 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 +21 -15
- package/dist/components/auth/authenticate/services/basic/service.js.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/abstract.service.d.ts.map +1 -1
- package/dist/components/auth/authenticate/services/bearer/jwks/abstract.service.js +4 -6
- package/dist/components/auth/authenticate/services/bearer/jwks/abstract.service.js.map +1 -1
- package/dist/components/auth/authenticate/strategies/strategy-registry.d.ts.map +1 -1
- package/dist/components/auth/authenticate/strategies/strategy-registry.js +0 -1
- package/dist/components/auth/authenticate/strategies/strategy-registry.js.map +1 -1
- package/dist/components/auth/authorize/adapters/base-filtered.d.ts +9 -0
- package/dist/components/auth/authorize/adapters/base-filtered.d.ts.map +1 -1
- package/dist/components/auth/authorize/adapters/base-filtered.js +10 -0
- package/dist/components/auth/authorize/adapters/base-filtered.js.map +1 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts.map +1 -1
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.js +35 -21
- package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.js.map +1 -1
- package/dist/components/auth/authorize/adapters/types.d.ts +8 -3
- package/dist/components/auth/authorize/adapters/types.d.ts.map +1 -1
- package/dist/components/auth/authorize/common/resolve-request-domain.d.ts.map +1 -1
- package/dist/components/auth/authorize/common/resolve-request-domain.js +0 -4
- package/dist/components/auth/authorize/common/resolve-request-domain.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts +11 -18
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts.map +1 -1
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.js +18 -27
- package/dist/components/auth/authorize/enforcers/casbin.enforcer.js.map +1 -1
- package/dist/components/auth/authorize/enforcers/enforcer-registry.d.ts.map +1 -1
- package/dist/components/auth/authorize/enforcers/enforcer-registry.js +0 -3
- package/dist/components/auth/authorize/enforcers/enforcer-registry.js.map +1 -1
- package/dist/components/auth/authorize/middlewares/authorize.middleware.d.ts.map +1 -1
- package/dist/components/auth/authorize/middlewares/authorize.middleware.js +0 -1
- package/dist/components/auth/authorize/middlewares/authorize.middleware.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 +4 -12
- package/dist/components/auth/authorize/providers/authorization.provider.js.map +1 -1
- package/dist/components/auth/base/abstract-auth-registry.d.ts.map +1 -1
- package/dist/components/auth/base/abstract-auth-registry.js.map +1 -1
- package/dist/components/auth/context-variables.d.ts.map +1 -1
- package/dist/components/health-check/common/types.d.ts +3 -2
- package/dist/components/health-check/common/types.d.ts.map +1 -1
- package/dist/components/health-check/component.d.ts.map +1 -1
- package/dist/components/health-check/component.js +6 -3
- package/dist/components/health-check/component.js.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/mail/common/constants.d.ts +15 -6
- package/dist/components/mail/common/constants.d.ts.map +1 -1
- package/dist/components/mail/common/constants.js +28 -7
- package/dist/components/mail/common/constants.js.map +1 -1
- package/dist/components/mail/common/types.d.ts +18 -3
- package/dist/components/mail/common/types.d.ts.map +1 -1
- package/dist/components/mail/common/types.js.map +1 -1
- package/dist/components/mail/component.d.ts.map +1 -1
- package/dist/components/mail/component.js +13 -5
- package/dist/components/mail/component.js.map +1 -1
- package/dist/components/mail/helpers/executors/bull-mq-executor.helper.d.ts +13 -16
- package/dist/components/mail/helpers/executors/bull-mq-executor.helper.d.ts.map +1 -1
- package/dist/components/mail/helpers/executors/bull-mq-executor.helper.js +83 -7
- package/dist/components/mail/helpers/executors/bull-mq-executor.helper.js.map +1 -1
- package/dist/components/mail/helpers/executors/direct-executor.helper.d.ts +2 -7
- package/dist/components/mail/helpers/executors/direct-executor.helper.d.ts.map +1 -1
- package/dist/components/mail/helpers/executors/direct-executor.helper.js +2 -1
- package/dist/components/mail/helpers/executors/direct-executor.helper.js.map +1 -1
- package/dist/components/mail/helpers/executors/internal-queue-executor.helper.d.ts +7 -7
- package/dist/components/mail/helpers/executors/internal-queue-executor.helper.d.ts.map +1 -1
- package/dist/components/mail/helpers/executors/internal-queue-executor.helper.js +34 -6
- package/dist/components/mail/helpers/executors/internal-queue-executor.helper.js.map +1 -1
- package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.d.ts +9 -0
- package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.d.ts.map +1 -1
- package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.js +28 -5
- package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.js.map +1 -1
- package/dist/components/mail/helpers/transporters/nodemail-transporter.helper.d.ts +3 -0
- package/dist/components/mail/helpers/transporters/nodemail-transporter.helper.d.ts.map +1 -1
- package/dist/components/mail/helpers/transporters/nodemail-transporter.helper.js +5 -5
- package/dist/components/mail/helpers/transporters/nodemail-transporter.helper.js.map +1 -1
- package/dist/components/mail/services/generator.service.d.ts +1 -1
- package/dist/components/mail/services/generator.service.d.ts.map +1 -1
- package/dist/components/mail/services/generator.service.js.map +1 -1
- package/dist/components/mail/services/mail.service.d.ts +1 -1
- package/dist/components/mail/services/mail.service.d.ts.map +1 -1
- package/dist/components/mail/services/mail.service.js +13 -3
- package/dist/components/mail/services/mail.service.js.map +1 -1
- package/dist/components/socket-io/component.d.ts.map +1 -1
- package/dist/components/socket-io/component.js +0 -1
- package/dist/components/socket-io/component.js.map +1 -1
- package/dist/components/static-asset/common/types.d.ts +2 -0
- package/dist/components/static-asset/common/types.d.ts.map +1 -1
- package/dist/components/static-asset/component.d.ts.map +1 -1
- package/dist/components/static-asset/component.js +6 -9
- package/dist/components/static-asset/component.js.map +1 -1
- package/dist/components/static-asset/controller/factory.d.ts +12 -1
- package/dist/components/static-asset/controller/factory.d.ts.map +1 -1
- package/dist/components/static-asset/controller/factory.js +98 -61
- package/dist/components/static-asset/controller/factory.js.map +1 -1
- package/dist/components/websocket/component.d.ts.map +1 -1
- package/dist/components/websocket/component.js +0 -1
- package/dist/components/websocket/component.js.map +1 -1
- package/dist/components/websocket/handlers/bun.handler.d.ts.map +1 -1
- package/dist/components/websocket/handlers/bun.handler.js +0 -1
- package/dist/components/websocket/handlers/bun.handler.js.map +1 -1
- package/dist/connectors/index.d.ts +0 -1
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +0 -1
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/meilisearch/compiler.d.ts +16 -0
- package/dist/connectors/meilisearch/compiler.d.ts.map +1 -0
- package/dist/connectors/meilisearch/compiler.js +130 -0
- package/dist/connectors/meilisearch/compiler.js.map +1 -0
- package/dist/connectors/meilisearch/connector.d.ts +225 -0
- package/dist/connectors/meilisearch/connector.d.ts.map +1 -0
- package/dist/connectors/meilisearch/connector.js +821 -0
- package/dist/connectors/meilisearch/connector.js.map +1 -0
- package/dist/connectors/meilisearch/datasources/datasource.d.ts +28 -0
- package/dist/connectors/meilisearch/datasources/datasource.d.ts.map +1 -0
- package/dist/connectors/meilisearch/datasources/datasource.js +48 -0
- package/dist/connectors/meilisearch/datasources/datasource.js.map +1 -0
- package/dist/connectors/meilisearch/datasources/index.d.ts.map +1 -0
- package/dist/connectors/meilisearch/datasources/index.js.map +1 -0
- package/dist/connectors/meilisearch/index.d.ts +6 -0
- package/dist/connectors/meilisearch/index.d.ts.map +1 -0
- package/dist/connectors/meilisearch/index.js +22 -0
- package/dist/connectors/meilisearch/index.js.map +1 -0
- package/dist/connectors/meilisearch/internal/connector-internal.d.ts +32 -0
- package/dist/connectors/meilisearch/internal/connector-internal.d.ts.map +1 -0
- package/dist/connectors/meilisearch/internal/connector-internal.js +60 -0
- package/dist/connectors/meilisearch/internal/connector-internal.js.map +1 -0
- package/dist/connectors/meilisearch/internal/index.d.ts +2 -0
- package/dist/connectors/meilisearch/internal/index.d.ts.map +1 -0
- package/dist/connectors/{memory → meilisearch/internal}/index.js +1 -2
- package/dist/connectors/meilisearch/internal/index.js.map +1 -0
- package/dist/connectors/meilisearch/repositories/common/index.d.ts +2 -0
- package/dist/connectors/meilisearch/repositories/common/index.d.ts.map +1 -0
- package/dist/connectors/{memory/repositories → meilisearch/repositories/common}/index.js +1 -1
- package/dist/connectors/meilisearch/repositories/common/index.js.map +1 -0
- package/dist/connectors/meilisearch/repositories/common/types.d.ts +12 -0
- package/dist/connectors/meilisearch/repositories/common/types.d.ts.map +1 -0
- package/dist/connectors/meilisearch/repositories/common/types.js +3 -0
- package/dist/connectors/meilisearch/repositories/common/types.js.map +1 -0
- package/dist/connectors/meilisearch/repositories/dialect/index.d.ts +2 -0
- package/dist/connectors/meilisearch/repositories/dialect/index.d.ts.map +1 -0
- package/dist/connectors/{memory/internal → meilisearch/repositories/dialect}/index.js +1 -1
- package/dist/connectors/meilisearch/repositories/dialect/index.js.map +1 -0
- package/dist/connectors/meilisearch/repositories/dialect/query-dialect.d.ts +45 -0
- package/dist/connectors/meilisearch/repositories/dialect/query-dialect.d.ts.map +1 -0
- package/dist/connectors/meilisearch/repositories/dialect/query-dialect.js +383 -0
- package/dist/connectors/meilisearch/repositories/dialect/query-dialect.js.map +1 -0
- package/dist/connectors/meilisearch/repositories/index.d.ts +3 -0
- package/dist/connectors/meilisearch/repositories/index.d.ts.map +1 -0
- package/dist/connectors/meilisearch/repositories/index.js +19 -0
- package/dist/connectors/meilisearch/repositories/index.js.map +1 -0
- package/dist/connectors/meilisearch/types.d.ts +45 -0
- package/dist/connectors/meilisearch/types.d.ts.map +1 -0
- package/dist/connectors/meilisearch/types.js +30 -0
- package/dist/connectors/meilisearch/types.js.map +1 -0
- package/dist/connectors/postgres/datasources/abstract.d.ts +39 -6
- package/dist/connectors/postgres/datasources/abstract.d.ts.map +1 -1
- package/dist/connectors/postgres/datasources/abstract.js +61 -4
- package/dist/connectors/postgres/datasources/abstract.js.map +1 -1
- package/dist/connectors/postgres/datasources/base.d.ts +2 -1
- package/dist/connectors/postgres/datasources/base.d.ts.map +1 -1
- package/dist/connectors/postgres/datasources/base.js +56 -38
- package/dist/connectors/postgres/datasources/base.js.map +1 -1
- package/dist/connectors/postgres/datasources/common/types.d.ts +28 -8
- package/dist/connectors/postgres/datasources/common/types.d.ts.map +1 -1
- package/dist/connectors/postgres/datasources/common/types.js +0 -1
- package/dist/connectors/postgres/datasources/common/types.js.map +1 -1
- package/dist/connectors/postgres/drivers/driver.d.ts +55 -0
- package/dist/connectors/postgres/drivers/driver.d.ts.map +1 -0
- package/dist/connectors/postgres/drivers/driver.js +3 -0
- package/dist/connectors/postgres/drivers/driver.js.map +1 -0
- package/dist/connectors/postgres/drivers/index.d.ts +3 -0
- package/dist/connectors/postgres/drivers/index.d.ts.map +1 -0
- package/dist/connectors/postgres/drivers/index.js +19 -0
- package/dist/connectors/postgres/drivers/index.js.map +1 -0
- package/dist/connectors/postgres/drivers/node-postgres.d.ts +24 -0
- package/dist/connectors/postgres/drivers/node-postgres.d.ts.map +1 -0
- package/dist/connectors/postgres/drivers/node-postgres.js +63 -0
- package/dist/connectors/postgres/drivers/node-postgres.js.map +1 -0
- package/dist/connectors/postgres/drivers/postgres-js.d.ts +25 -0
- package/dist/connectors/postgres/drivers/postgres-js.d.ts.map +1 -0
- package/dist/connectors/postgres/drivers/postgres-js.js +66 -0
- package/dist/connectors/postgres/drivers/postgres-js.js.map +1 -0
- package/dist/connectors/postgres/drivers/resolve.d.ts +15 -0
- package/dist/connectors/postgres/drivers/resolve.d.ts.map +1 -0
- package/dist/connectors/postgres/drivers/resolve.js +44 -0
- package/dist/connectors/postgres/drivers/resolve.js.map +1 -0
- package/dist/connectors/postgres/index.d.ts +1 -0
- package/dist/connectors/postgres/index.d.ts.map +1 -1
- package/dist/connectors/postgres/index.js +1 -0
- package/dist/connectors/postgres/index.js.map +1 -1
- package/dist/connectors/postgres/models/base.js +1 -1
- package/dist/connectors/postgres/models/common/types.d.ts.map +1 -1
- package/dist/connectors/postgres/models/enrichers/principal.enricher.d.ts.map +1 -1
- package/dist/connectors/postgres/models/enrichers/principal.enricher.js +4 -1
- package/dist/connectors/postgres/models/enrichers/principal.enricher.js.map +1 -1
- package/dist/connectors/postgres/models/enrichers/user-audit.enricher.d.ts.map +1 -1
- package/dist/connectors/postgres/models/enrichers/user-audit.enricher.js +0 -2
- package/dist/connectors/postgres/models/enrichers/user-audit.enricher.js.map +1 -1
- package/dist/connectors/postgres/repositories/common/shared.d.ts +0 -1
- package/dist/connectors/postgres/repositories/common/shared.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/common/shared.js +0 -2
- package/dist/connectors/postgres/repositories/common/shared.js.map +1 -1
- package/dist/connectors/postgres/repositories/common/types.d.ts +2 -6
- package/dist/connectors/postgres/repositories/common/types.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/core/base.d.ts +39 -3
- package/dist/connectors/postgres/repositories/core/base.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/core/base.js +15 -5
- package/dist/connectors/postgres/repositories/core/base.js.map +1 -1
- package/dist/connectors/postgres/repositories/core/index.js +1 -1
- package/dist/connectors/postgres/repositories/core/index.js.map +1 -1
- package/dist/connectors/postgres/repositories/core/persistable.d.ts +7 -2
- package/dist/connectors/postgres/repositories/core/persistable.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/core/persistable.js +11 -19
- package/dist/connectors/postgres/repositories/core/persistable.js.map +1 -1
- package/dist/connectors/postgres/repositories/core/readable.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/core/readable.js +26 -33
- package/dist/connectors/postgres/repositories/core/readable.js.map +1 -1
- package/dist/connectors/postgres/repositories/core/soft-deletable.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/core/soft-deletable.js +2 -8
- package/dist/connectors/postgres/repositories/core/soft-deletable.js.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/filter.d.ts +40 -4
- package/dist/connectors/postgres/repositories/dialect/filter.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/filter.js +178 -13
- package/dist/connectors/postgres/repositories/dialect/filter.js.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/internal/json-utils.d.ts +0 -2
- package/dist/connectors/postgres/repositories/dialect/internal/json-utils.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/internal/json-utils.js +0 -2
- package/dist/connectors/postgres/repositories/dialect/internal/json-utils.js.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/query.d.ts +2 -0
- package/dist/connectors/postgres/repositories/dialect/query.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/query.js +28 -27
- package/dist/connectors/postgres/repositories/dialect/query.js.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/update.d.ts +0 -1
- package/dist/connectors/postgres/repositories/dialect/update.d.ts.map +1 -1
- package/dist/connectors/postgres/repositories/dialect/update.js +0 -1
- package/dist/connectors/postgres/repositories/dialect/update.js.map +1 -1
- package/dist/connectors/postgres/supabase/index.d.ts +4 -0
- package/dist/connectors/postgres/supabase/index.d.ts.map +1 -0
- package/dist/connectors/postgres/supabase/index.js +33 -0
- package/dist/connectors/postgres/supabase/index.js.map +1 -0
- package/dist/connectors/postgres/supabase/pooler.d.ts +27 -0
- package/dist/connectors/postgres/supabase/pooler.d.ts.map +1 -0
- package/dist/connectors/postgres/supabase/pooler.js +38 -0
- package/dist/connectors/postgres/supabase/pooler.js.map +1 -0
- package/dist/connectors/postgres/supabase/rls.d.ts +17 -0
- package/dist/connectors/postgres/supabase/rls.d.ts.map +1 -0
- package/dist/connectors/postgres/supabase/rls.js +35 -0
- package/dist/connectors/postgres/supabase/rls.js.map +1 -0
- package/dist/connectors/search/connector.d.ts +252 -0
- package/dist/connectors/search/connector.d.ts.map +1 -0
- package/dist/connectors/search/connector.js +65 -0
- package/dist/connectors/search/connector.js.map +1 -0
- package/dist/connectors/{typesense → search}/controllers/abstract.d.ts +0 -6
- package/dist/connectors/search/controllers/abstract.d.ts.map +1 -0
- package/dist/connectors/{typesense → search}/controllers/abstract.js +4 -13
- package/dist/connectors/search/controllers/abstract.js.map +1 -0
- package/dist/connectors/{typesense → search}/controllers/definition.d.ts +6 -44
- package/dist/connectors/search/controllers/definition.d.ts.map +1 -0
- package/dist/connectors/{typesense → search}/controllers/definition.js +4 -1
- package/dist/connectors/search/controllers/definition.js.map +1 -0
- package/dist/connectors/{typesense → search}/controllers/factory.d.ts +9 -8
- package/dist/connectors/search/controllers/factory.d.ts.map +1 -0
- package/dist/connectors/{typesense → search}/controllers/factory.js +5 -5
- package/dist/connectors/search/controllers/factory.js.map +1 -0
- package/dist/connectors/search/controllers/index.d.ts +4 -0
- package/dist/connectors/search/controllers/index.d.ts.map +1 -0
- package/dist/connectors/search/controllers/index.js +20 -0
- package/dist/connectors/search/controllers/index.js.map +1 -0
- package/dist/connectors/search/datasources/abstract.d.ts +25 -0
- package/dist/connectors/search/datasources/abstract.d.ts.map +1 -0
- package/dist/connectors/search/datasources/abstract.js.map +1 -0
- package/dist/connectors/search/datasources/base.d.ts +73 -0
- package/dist/connectors/search/datasources/base.d.ts.map +1 -0
- package/dist/connectors/search/datasources/base.js +195 -0
- package/dist/connectors/search/datasources/base.js.map +1 -0
- package/dist/connectors/search/datasources/common/index.d.ts +2 -0
- package/dist/connectors/search/datasources/common/index.d.ts.map +1 -0
- package/dist/connectors/search/datasources/common/index.js +18 -0
- package/dist/connectors/search/datasources/common/index.js.map +1 -0
- package/dist/connectors/search/datasources/common/types.d.ts +8 -0
- package/dist/connectors/search/datasources/common/types.d.ts.map +1 -0
- package/dist/connectors/search/datasources/common/types.js +3 -0
- package/dist/connectors/search/datasources/common/types.js.map +1 -0
- package/dist/connectors/search/datasources/index.d.ts +4 -0
- package/dist/connectors/search/datasources/index.d.ts.map +1 -0
- package/dist/connectors/search/datasources/index.js +20 -0
- package/dist/connectors/search/datasources/index.js.map +1 -0
- package/dist/connectors/search/index.d.ts +6 -0
- package/dist/connectors/search/index.d.ts.map +1 -0
- package/dist/connectors/search/index.js +22 -0
- package/dist/connectors/search/index.js.map +1 -0
- package/dist/connectors/search/internal/index.d.ts +2 -0
- package/dist/connectors/search/internal/index.d.ts.map +1 -0
- package/dist/connectors/search/internal/index.js +18 -0
- package/dist/connectors/search/internal/index.js.map +1 -0
- package/dist/connectors/search/internal/search-connector-internal.d.ts.map +1 -0
- package/dist/connectors/{typesense → search}/internal/search-connector-internal.js +14 -4
- package/dist/connectors/search/internal/search-connector-internal.js.map +1 -0
- package/dist/connectors/search/models/base.d.ts.map +1 -0
- package/dist/connectors/search/models/base.js.map +1 -0
- package/dist/connectors/search/models/define-search-collection.d.ts.map +1 -0
- package/dist/connectors/search/models/define-search-collection.js.map +1 -0
- package/dist/connectors/search/models/index.d.ts.map +1 -0
- package/dist/connectors/search/models/index.js.map +1 -0
- package/dist/connectors/{typesense → search}/models/types.d.ts +11 -11
- package/dist/connectors/search/models/types.d.ts.map +1 -0
- package/dist/connectors/{typesense → search}/models/types.js +1 -1
- package/dist/connectors/search/models/types.js.map +1 -0
- package/dist/connectors/search/models/zod-derivation.d.ts.map +1 -0
- package/dist/connectors/{typesense → search}/models/zod-derivation.js +5 -2
- package/dist/connectors/search/models/zod-derivation.js.map +1 -0
- package/dist/connectors/{typesense → search}/repositories/common/constants.d.ts +9 -58
- package/dist/connectors/search/repositories/common/constants.d.ts.map +1 -0
- package/dist/connectors/{typesense → search}/repositories/common/constants.js +17 -20
- package/dist/connectors/search/repositories/common/constants.js.map +1 -0
- package/dist/connectors/search/repositories/common/dialect-helpers.d.ts +19 -0
- package/dist/connectors/search/repositories/common/dialect-helpers.d.ts.map +1 -0
- package/dist/connectors/search/repositories/common/dialect-helpers.js +50 -0
- package/dist/connectors/search/repositories/common/dialect-helpers.js.map +1 -0
- package/dist/connectors/search/repositories/common/index.d.ts +3 -0
- package/dist/connectors/search/repositories/common/index.d.ts.map +1 -0
- package/dist/connectors/search/repositories/common/index.js +19 -0
- package/dist/connectors/search/repositories/common/index.js.map +1 -0
- package/dist/connectors/search/repositories/common/types.d.ts +60 -0
- package/dist/connectors/search/repositories/common/types.d.ts.map +1 -0
- package/dist/connectors/search/repositories/common/types.js +3 -0
- package/dist/connectors/search/repositories/common/types.js.map +1 -0
- package/dist/connectors/search/repositories/core/base.d.ts +56 -0
- package/dist/connectors/search/repositories/core/base.d.ts.map +1 -0
- package/dist/connectors/{typesense → search}/repositories/core/base.js +27 -3
- package/dist/connectors/search/repositories/core/base.js.map +1 -0
- package/dist/connectors/search/repositories/core/default.d.ts +6 -0
- package/dist/connectors/search/repositories/core/default.d.ts.map +1 -0
- package/dist/connectors/search/repositories/core/default.js.map +1 -0
- package/dist/connectors/search/repositories/core/index.d.ts.map +1 -0
- package/dist/connectors/search/repositories/core/index.js.map +1 -0
- package/dist/connectors/{typesense → search}/repositories/core/persistable.d.ts +27 -35
- package/dist/connectors/search/repositories/core/persistable.d.ts.map +1 -0
- package/dist/connectors/{typesense → search}/repositories/core/persistable.js +47 -39
- package/dist/connectors/search/repositories/core/persistable.js.map +1 -0
- package/dist/connectors/{typesense → search}/repositories/core/readable.d.ts +20 -46
- package/dist/connectors/search/repositories/core/readable.d.ts.map +1 -0
- package/dist/connectors/search/repositories/core/readable.js +130 -0
- package/dist/connectors/search/repositories/core/readable.js.map +1 -0
- package/dist/connectors/search/repositories/index.d.ts +3 -0
- package/dist/connectors/search/repositories/index.d.ts.map +1 -0
- package/dist/connectors/search/repositories/index.js +19 -0
- package/dist/connectors/search/repositories/index.js.map +1 -0
- package/dist/connectors/typesense/compiler.d.ts +1 -1
- package/dist/connectors/typesense/compiler.d.ts.map +1 -1
- package/dist/connectors/typesense/compiler.js +9 -2
- package/dist/connectors/typesense/compiler.js.map +1 -1
- package/dist/connectors/typesense/connector.d.ts +11 -207
- package/dist/connectors/typesense/connector.d.ts.map +1 -1
- package/dist/connectors/typesense/connector.js +53 -64
- package/dist/connectors/typesense/connector.js.map +1 -1
- package/dist/connectors/typesense/controllers/index.d.ts +1 -3
- package/dist/connectors/typesense/controllers/index.d.ts.map +1 -1
- package/dist/connectors/typesense/controllers/index.js +1 -3
- package/dist/connectors/typesense/controllers/index.js.map +1 -1
- package/dist/connectors/typesense/datasources/datasource.d.ts +26 -14
- package/dist/connectors/typesense/datasources/datasource.d.ts.map +1 -1
- package/dist/connectors/typesense/datasources/datasource.js +10 -31
- package/dist/connectors/typesense/datasources/datasource.js.map +1 -1
- package/dist/connectors/typesense/datasources/index.d.ts +0 -2
- package/dist/connectors/typesense/datasources/index.d.ts.map +1 -1
- package/dist/connectors/typesense/datasources/index.js +0 -2
- package/dist/connectors/typesense/datasources/index.js.map +1 -1
- package/dist/connectors/typesense/index.d.ts +1 -2
- package/dist/connectors/typesense/index.d.ts.map +1 -1
- package/dist/connectors/typesense/index.js +3 -2
- package/dist/connectors/typesense/index.js.map +1 -1
- package/dist/connectors/typesense/internal/index.d.ts +0 -1
- package/dist/connectors/typesense/internal/index.d.ts.map +1 -1
- package/dist/connectors/typesense/internal/index.js +0 -1
- package/dist/connectors/typesense/internal/index.js.map +1 -1
- package/dist/connectors/typesense/repositories/common/index.d.ts +0 -1
- package/dist/connectors/typesense/repositories/common/index.d.ts.map +1 -1
- package/dist/connectors/typesense/repositories/common/index.js +0 -1
- package/dist/connectors/typesense/repositories/common/index.js.map +1 -1
- package/dist/connectors/typesense/repositories/common/types.d.ts +10 -63
- package/dist/connectors/typesense/repositories/common/types.d.ts.map +1 -1
- package/dist/connectors/typesense/repositories/dialect/query-dialect.d.ts +21 -16
- package/dist/connectors/typesense/repositories/dialect/query-dialect.d.ts.map +1 -1
- package/dist/connectors/typesense/repositories/dialect/query-dialect.js +124 -71
- package/dist/connectors/typesense/repositories/dialect/query-dialect.js.map +1 -1
- package/dist/connectors/typesense/repositories/index.d.ts +1 -1
- package/dist/connectors/typesense/repositories/index.d.ts.map +1 -1
- package/dist/connectors/typesense/repositories/index.js +2 -1
- package/dist/connectors/typesense/repositories/index.js.map +1 -1
- package/dist/connectors/typesense/types.d.ts +1 -8
- package/dist/connectors/typesense/types.d.ts.map +1 -1
- package/dist/connectors/typesense/types.js.map +1 -1
- package/dist/helpers/inversion/common/types.d.ts +0 -1
- package/dist/helpers/inversion/common/types.d.ts.map +1 -1
- package/dist/helpers/inversion/index.d.ts +1 -1
- package/dist/helpers/inversion/index.d.ts.map +1 -1
- package/dist/helpers/inversion/index.js +1 -2
- package/dist/helpers/inversion/index.js.map +1 -1
- package/dist/helpers/inversion/mixins/controllers/controller.d.ts +5 -5
- package/dist/helpers/inversion/mixins/controllers/controller.js +1 -1
- package/dist/helpers/inversion/mixins/controllers/grpc.d.ts +5 -9
- package/dist/helpers/inversion/mixins/controllers/grpc.d.ts.map +1 -1
- package/dist/helpers/inversion/mixins/controllers/grpc.js +5 -5
- package/dist/helpers/inversion/mixins/controllers/grpc.js.map +1 -1
- package/dist/helpers/inversion/mixins/controllers/rest.d.ts +5 -9
- package/dist/helpers/inversion/mixins/controllers/rest.d.ts.map +1 -1
- package/dist/helpers/inversion/mixins/controllers/rest.js +6 -5
- package/dist/helpers/inversion/mixins/controllers/rest.js.map +1 -1
- package/dist/helpers/inversion/mixins/datasource.mixin.d.ts +5 -5
- package/dist/helpers/inversion/mixins/datasource.mixin.d.ts.map +1 -1
- package/dist/helpers/inversion/mixins/datasource.mixin.js +1 -2
- package/dist/helpers/inversion/mixins/datasource.mixin.js.map +1 -1
- package/dist/helpers/inversion/mixins/model.mixin.d.ts +5 -5
- package/dist/helpers/inversion/mixins/model.mixin.d.ts.map +1 -1
- package/dist/helpers/inversion/mixins/model.mixin.js +2 -2
- package/dist/helpers/inversion/mixins/model.mixin.js.map +1 -1
- package/dist/helpers/inversion/mixins/repository.mixin.d.ts +17 -7
- package/dist/helpers/inversion/mixins/repository.mixin.d.ts.map +1 -1
- package/dist/helpers/inversion/mixins/repository.mixin.js +35 -30
- package/dist/helpers/inversion/mixins/repository.mixin.js.map +1 -1
- package/dist/helpers/inversion/registry.d.ts +42 -39
- package/dist/helpers/inversion/registry.d.ts.map +1 -1
- package/dist/helpers/inversion/registry.js +2 -3
- package/dist/helpers/inversion/registry.js.map +1 -1
- package/dist/utilities/drizzle-result.utility.d.ts +9 -0
- package/dist/utilities/drizzle-result.utility.d.ts.map +1 -0
- package/dist/utilities/drizzle-result.utility.js +59 -0
- package/dist/utilities/drizzle-result.utility.js.map +1 -0
- package/dist/utilities/error.utility.d.ts.map +1 -1
- package/dist/utilities/error.utility.js +2 -1
- package/dist/utilities/error.utility.js.map +1 -1
- package/dist/utilities/index.d.ts +3 -2
- package/dist/utilities/index.d.ts.map +1 -1
- package/dist/utilities/index.js +3 -2
- package/dist/utilities/index.js.map +1 -1
- package/dist/utilities/network.utility.d.ts.map +1 -1
- package/dist/utilities/network.utility.js +0 -1
- package/dist/utilities/network.utility.js.map +1 -1
- package/package.json +49 -19
- package/dist/base/mixins/component.mixin.d.ts +0 -88
- package/dist/base/mixins/component.mixin.d.ts.map +0 -1
- package/dist/base/mixins/component.mixin.js +0 -40
- package/dist/base/mixins/component.mixin.js.map +0 -1
- package/dist/base/mixins/repository.mixin.d.ts +0 -92
- package/dist/base/mixins/repository.mixin.d.ts.map +0 -1
- package/dist/base/mixins/repository.mixin.js +0 -51
- package/dist/base/mixins/repository.mixin.js.map +0 -1
- package/dist/base/mixins/service.mixin.d.ts +0 -89
- package/dist/base/mixins/service.mixin.d.ts.map +0 -1
- package/dist/base/mixins/service.mixin.js +0 -19
- package/dist/base/mixins/service.mixin.js.map +0 -1
- package/dist/components/swagger/common/constants.d.ts.map +0 -1
- package/dist/components/swagger/common/constants.js.map +0 -1
- package/dist/components/swagger/common/index.d.ts.map +0 -1
- package/dist/components/swagger/common/index.js.map +0 -1
- package/dist/components/swagger/common/keys.d.ts +0 -4
- package/dist/components/swagger/common/keys.d.ts.map +0 -1
- package/dist/components/swagger/common/keys.js +0 -8
- package/dist/components/swagger/common/keys.js.map +0 -1
- package/dist/components/swagger/common/types.d.ts.map +0 -1
- package/dist/components/swagger/common/types.js.map +0 -1
- package/dist/components/swagger/component.d.ts +0 -8
- package/dist/components/swagger/component.d.ts.map +0 -1
- package/dist/components/swagger/component.js.map +0 -1
- package/dist/components/swagger/index.d.ts.map +0 -1
- package/dist/components/swagger/index.js.map +0 -1
- package/dist/components/swagger/ui-factory.d.ts.map +0 -1
- package/dist/components/swagger/ui-factory.js.map +0 -1
- package/dist/connectors/memory/datasources/datasource.d.ts +0 -35
- package/dist/connectors/memory/datasources/datasource.d.ts.map +0 -1
- package/dist/connectors/memory/datasources/datasource.js +0 -51
- package/dist/connectors/memory/datasources/datasource.js.map +0 -1
- package/dist/connectors/memory/datasources/index.d.ts.map +0 -1
- package/dist/connectors/memory/datasources/index.js.map +0 -1
- package/dist/connectors/memory/index.d.ts +0 -3
- package/dist/connectors/memory/index.d.ts.map +0 -1
- package/dist/connectors/memory/index.js.map +0 -1
- package/dist/connectors/memory/internal/index.d.ts +0 -2
- package/dist/connectors/memory/internal/index.d.ts.map +0 -1
- package/dist/connectors/memory/internal/index.js.map +0 -1
- package/dist/connectors/memory/internal/where-matcher.d.ts +0 -13
- package/dist/connectors/memory/internal/where-matcher.d.ts.map +0 -1
- package/dist/connectors/memory/internal/where-matcher.js +0 -326
- package/dist/connectors/memory/internal/where-matcher.js.map +0 -1
- package/dist/connectors/memory/repositories/index.d.ts +0 -2
- package/dist/connectors/memory/repositories/index.d.ts.map +0 -1
- package/dist/connectors/memory/repositories/index.js.map +0 -1
- package/dist/connectors/memory/repositories/repository.d.ts +0 -175
- package/dist/connectors/memory/repositories/repository.d.ts.map +0 -1
- package/dist/connectors/memory/repositories/repository.js +0 -345
- package/dist/connectors/memory/repositories/repository.js.map +0 -1
- package/dist/connectors/typesense/controllers/abstract.d.ts.map +0 -1
- package/dist/connectors/typesense/controllers/abstract.js.map +0 -1
- package/dist/connectors/typesense/controllers/definition.d.ts.map +0 -1
- package/dist/connectors/typesense/controllers/definition.js.map +0 -1
- package/dist/connectors/typesense/controllers/factory.d.ts.map +0 -1
- package/dist/connectors/typesense/controllers/factory.js.map +0 -1
- package/dist/connectors/typesense/datasources/abstract.d.ts +0 -16
- package/dist/connectors/typesense/datasources/abstract.d.ts.map +0 -1
- package/dist/connectors/typesense/datasources/abstract.js.map +0 -1
- package/dist/connectors/typesense/datasources/base.d.ts +0 -40
- package/dist/connectors/typesense/datasources/base.d.ts.map +0 -1
- package/dist/connectors/typesense/datasources/base.js +0 -102
- package/dist/connectors/typesense/datasources/base.js.map +0 -1
- package/dist/connectors/typesense/internal/search-connector-internal.d.ts.map +0 -1
- package/dist/connectors/typesense/internal/search-connector-internal.js.map +0 -1
- package/dist/connectors/typesense/models/base.d.ts.map +0 -1
- package/dist/connectors/typesense/models/base.js.map +0 -1
- package/dist/connectors/typesense/models/define-search-collection.d.ts.map +0 -1
- package/dist/connectors/typesense/models/define-search-collection.js.map +0 -1
- package/dist/connectors/typesense/models/index.d.ts.map +0 -1
- package/dist/connectors/typesense/models/index.js.map +0 -1
- package/dist/connectors/typesense/models/types.d.ts.map +0 -1
- package/dist/connectors/typesense/models/types.js.map +0 -1
- package/dist/connectors/typesense/models/zod-derivation.d.ts.map +0 -1
- package/dist/connectors/typesense/models/zod-derivation.js.map +0 -1
- package/dist/connectors/typesense/repositories/common/constants.d.ts.map +0 -1
- package/dist/connectors/typesense/repositories/common/constants.js.map +0 -1
- package/dist/connectors/typesense/repositories/core/base.d.ts +0 -47
- package/dist/connectors/typesense/repositories/core/base.d.ts.map +0 -1
- package/dist/connectors/typesense/repositories/core/base.js.map +0 -1
- package/dist/connectors/typesense/repositories/core/default.d.ts +0 -5
- package/dist/connectors/typesense/repositories/core/default.d.ts.map +0 -1
- package/dist/connectors/typesense/repositories/core/default.js.map +0 -1
- package/dist/connectors/typesense/repositories/core/index.d.ts.map +0 -1
- package/dist/connectors/typesense/repositories/core/index.js.map +0 -1
- package/dist/connectors/typesense/repositories/core/persistable.d.ts.map +0 -1
- package/dist/connectors/typesense/repositories/core/persistable.js.map +0 -1
- package/dist/connectors/typesense/repositories/core/readable.d.ts.map +0 -1
- package/dist/connectors/typesense/repositories/core/readable.js +0 -260
- package/dist/connectors/typesense/repositories/core/readable.js.map +0 -1
- /package/dist/components/{swagger → api-reference}/common/constants.d.ts +0 -0
- /package/dist/components/{swagger → api-reference}/common/constants.js +0 -0
- /package/dist/components/{swagger → api-reference}/common/index.d.ts +0 -0
- /package/dist/components/{swagger → api-reference}/common/index.js +0 -0
- /package/dist/components/{swagger → api-reference}/common/types.js +0 -0
- /package/dist/components/{swagger → api-reference}/index.d.ts +0 -0
- /package/dist/components/{swagger → api-reference}/index.js +0 -0
- /package/dist/components/{swagger → api-reference}/ui-factory.d.ts +0 -0
- /package/dist/components/{swagger → api-reference}/ui-factory.js +0 -0
- /package/dist/connectors/{memory → meilisearch}/datasources/index.d.ts +0 -0
- /package/dist/connectors/{memory → meilisearch}/datasources/index.js +0 -0
- /package/dist/connectors/{typesense → search}/datasources/abstract.js +0 -0
- /package/dist/connectors/{typesense → search}/internal/search-connector-internal.d.ts +0 -0
- /package/dist/connectors/{typesense → search}/models/base.d.ts +0 -0
- /package/dist/connectors/{typesense → search}/models/base.js +0 -0
- /package/dist/connectors/{typesense → search}/models/define-search-collection.d.ts +0 -0
- /package/dist/connectors/{typesense → search}/models/define-search-collection.js +0 -0
- /package/dist/connectors/{typesense → search}/models/index.d.ts +0 -0
- /package/dist/connectors/{typesense → search}/models/index.js +0 -0
- /package/dist/connectors/{typesense → search}/models/zod-derivation.d.ts +0 -0
- /package/dist/connectors/{typesense → search}/repositories/core/default.js +0 -0
- /package/dist/connectors/{typesense → search}/repositories/core/index.d.ts +0 -0
- /package/dist/connectors/{typesense → search}/repositories/core/index.js +0 -0
|
@@ -0,0 +1,821 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MeilisearchConnector = void 0;
|
|
4
|
+
const common_1 = require("../../common");
|
|
5
|
+
const search_1 = require("../../connectors/search");
|
|
6
|
+
const internal_1 = require("../../connectors/search/internal");
|
|
7
|
+
const ignis_helpers_1 = require("@venizia/ignis-helpers");
|
|
8
|
+
const ignis_helpers_2 = require("@venizia/ignis-helpers");
|
|
9
|
+
const meilisearch_1 = require("meilisearch");
|
|
10
|
+
const internal_2 = require("./internal");
|
|
11
|
+
const types_1 = require("./types");
|
|
12
|
+
const DEFAULT_TASK_TIMEOUT_MS = 5 * 60_000;
|
|
13
|
+
const DEFAULT_TASK_INTERVAL_MS = 50;
|
|
14
|
+
/** Ceiling for the exponential poll backoff - one poll per second once a task runs long. */
|
|
15
|
+
const MAX_TASK_INTERVAL_MS = 1000;
|
|
16
|
+
const isRecord = (value) => {
|
|
17
|
+
return typeof value === 'object' && value !== null;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Meilisearch's reserved RESPONSE keys - metadata the engine attaches to a hit. Listed explicitly
|
|
21
|
+
* rather than matched by `_` prefix, because `_geo` is a stored DOCUMENT field (the only name
|
|
22
|
+
* Meilisearch accepts for a geo field) and prefix-stripping would delete it from every hit.
|
|
23
|
+
*/
|
|
24
|
+
const RESERVED_HIT_KEYS = new Set([
|
|
25
|
+
'_formatted',
|
|
26
|
+
'_matchesPosition',
|
|
27
|
+
'_rankingScore',
|
|
28
|
+
'_rankingScoreDetails',
|
|
29
|
+
'_vectors',
|
|
30
|
+
'_federation',
|
|
31
|
+
'_geoDistance',
|
|
32
|
+
]);
|
|
33
|
+
/** Strips Meilisearch's reserved response metadata, leaving the caller's own document intact. */
|
|
34
|
+
const extractDocument = (hit) => {
|
|
35
|
+
const document = {};
|
|
36
|
+
for (const [key, value] of Object.entries(hit)) {
|
|
37
|
+
if (RESERVED_HIT_KEYS.has(key)) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
document[key] = value;
|
|
41
|
+
}
|
|
42
|
+
return document;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Maps a Meilisearch search response onto the neutral `ISearchResult`. `totalHits` (the exhaustive
|
|
46
|
+
* page/hitsPerPage mode) is preferred; `estimatedTotalHits` is approximate, and saying so is what
|
|
47
|
+
* `isFoundExact` exists for. Wire keys are read via bracket string access, never as identifiers.
|
|
48
|
+
*/
|
|
49
|
+
const mapSearchResult = (raw) => {
|
|
50
|
+
if (!isRecord(raw)) {
|
|
51
|
+
return { found: 0, isFoundExact: true };
|
|
52
|
+
}
|
|
53
|
+
const totalHits = raw['totalHits'];
|
|
54
|
+
const isFoundExact = typeof totalHits === 'number';
|
|
55
|
+
const estimated = raw['estimatedTotalHits'];
|
|
56
|
+
const result = {
|
|
57
|
+
found: isFoundExact ? totalHits : typeof estimated === 'number' ? estimated : 0,
|
|
58
|
+
isFoundExact,
|
|
59
|
+
};
|
|
60
|
+
if (typeof raw['processingTimeMs'] === 'number') {
|
|
61
|
+
result.searchTimeMs = raw['processingTimeMs'];
|
|
62
|
+
}
|
|
63
|
+
if (isRecord(raw['facetDistribution'])) {
|
|
64
|
+
result.facetCounts = [raw['facetDistribution']];
|
|
65
|
+
}
|
|
66
|
+
if (Array.isArray(raw['hits'])) {
|
|
67
|
+
result.hits = raw['hits'].filter(isRecord).map(hit => {
|
|
68
|
+
const entry = { document: extractDocument(hit) };
|
|
69
|
+
if (hit['_formatted'] !== undefined) {
|
|
70
|
+
entry.highlight = hit['_formatted'];
|
|
71
|
+
}
|
|
72
|
+
if (typeof hit['_rankingScore'] === 'number') {
|
|
73
|
+
entry.score = hit['_rankingScore'];
|
|
74
|
+
}
|
|
75
|
+
return entry;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
return result;
|
|
79
|
+
};
|
|
80
|
+
/** Adapts the SDK client onto the structural view this connector needs. */
|
|
81
|
+
const adaptClient = (sdk) => {
|
|
82
|
+
// The SDK's task/index return types carry more detail than this connector reads, so each delegate
|
|
83
|
+
// widens to AnyType at the seam rather than restating the SDK's shapes.
|
|
84
|
+
const client = sdk;
|
|
85
|
+
return {
|
|
86
|
+
index: (uid) => client.index(uid),
|
|
87
|
+
createIndex: (uid, options) => client.createIndex(uid, options),
|
|
88
|
+
getIndex: (uid) => client.getIndex(uid),
|
|
89
|
+
getIndexes: () => client.getIndexes(),
|
|
90
|
+
deleteIndex: (uid) => client.deleteIndex(uid),
|
|
91
|
+
swapIndexes: (pairs) => client.swapIndexes(pairs),
|
|
92
|
+
// The one real divergence: the SDK exposes getTask under `client.tasks`, not at the root.
|
|
93
|
+
getTask: (taskUid) => client.tasks.getTask(taskUid),
|
|
94
|
+
health: () => client.health(),
|
|
95
|
+
multiSearch: (params) => client.multiSearch(params),
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
/** Meilisearch-backed search connector. Every write awaits its task, so `create()` resolves only once the document is retrievable. */
|
|
99
|
+
class MeilisearchConnector extends search_1.BaseSearchConnector {
|
|
100
|
+
constructor(opts) {
|
|
101
|
+
super({
|
|
102
|
+
scope: opts.scope ?? MeilisearchConnector.name,
|
|
103
|
+
identifier: opts.identifier ?? opts.name,
|
|
104
|
+
});
|
|
105
|
+
this.primaryKeyByCollection = new Map();
|
|
106
|
+
this.collection = {
|
|
107
|
+
create: opts => this.createCollection(opts),
|
|
108
|
+
ensure: opts => this.ensureCollection(opts),
|
|
109
|
+
get: opts => this.getCollection(opts),
|
|
110
|
+
list: () => this.listCollections(),
|
|
111
|
+
exists: opts => this.collectionExists(opts),
|
|
112
|
+
patchSchema: () => this.patchCollectionSchema(),
|
|
113
|
+
delete: opts => this.deleteCollection(opts),
|
|
114
|
+
};
|
|
115
|
+
/** Meilisearch has no alias layer; a zero-downtime reindex swaps two index uids atomically. */
|
|
116
|
+
this.swap = {
|
|
117
|
+
indexes: opts => this.swapIndexes(opts),
|
|
118
|
+
};
|
|
119
|
+
/** A flat per-index dictionary. There is no named, linkable synonym-set resource. */
|
|
120
|
+
this.synonyms = {
|
|
121
|
+
set: opts => this.setSynonyms(opts),
|
|
122
|
+
get: opts => this.getSynonyms(opts),
|
|
123
|
+
reset: opts => this.resetSynonyms(opts),
|
|
124
|
+
};
|
|
125
|
+
this.document = {
|
|
126
|
+
get: (opts) => this.getDocument(opts),
|
|
127
|
+
count: opts => this.countDocuments(opts),
|
|
128
|
+
create: (opts) => this.createDocument(opts),
|
|
129
|
+
upsert: (opts) => this.upsertDocument(opts),
|
|
130
|
+
update: (opts) => this.updateDocument(opts),
|
|
131
|
+
updateBy: (opts) => this.updateByFilter(opts),
|
|
132
|
+
delete: opts => this.deleteDocument(opts),
|
|
133
|
+
deleteBy: opts => this.deleteByFilter(opts),
|
|
134
|
+
deleteAll: opts => this.deleteAllDocuments(opts),
|
|
135
|
+
import: (opts) => this.importDocuments(opts),
|
|
136
|
+
export: opts => this.exportDocuments(opts),
|
|
137
|
+
};
|
|
138
|
+
this.taskTimeoutMs = opts.taskTimeoutMs ?? DEFAULT_TASK_TIMEOUT_MS;
|
|
139
|
+
this.taskIntervalMs = opts.taskIntervalMs ?? DEFAULT_TASK_INTERVAL_MS;
|
|
140
|
+
try {
|
|
141
|
+
if (opts.client) {
|
|
142
|
+
this.client = opts.client;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
this.rawClient = new meilisearch_1.Meilisearch({ host: opts.host, apiKey: opts.apiKey });
|
|
146
|
+
this.client = adaptClient(this.rawClient);
|
|
147
|
+
}
|
|
148
|
+
opts.onInitialized?.({ name: opts.name });
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
this.logger
|
|
152
|
+
.for('constructor')
|
|
153
|
+
.error('Failed to initialize Meilisearch client | error: %s', internal_1.SearchConnectorInternal.describeError({ error }));
|
|
154
|
+
opts.onError?.({ name: opts.name, error });
|
|
155
|
+
throw error;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/** The raw SDK client - the escape hatch for anything this connector does not model (fire-and-forget writes, federation, facet search). */
|
|
159
|
+
getClient() {
|
|
160
|
+
if (!this.rawClient) {
|
|
161
|
+
throw (0, ignis_helpers_2.getError)({
|
|
162
|
+
message: `[${MeilisearchConnector.name}] No raw client available - this connector was constructed with an injected client.`,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
return this.rawClient;
|
|
166
|
+
}
|
|
167
|
+
isNotFoundError(opts) {
|
|
168
|
+
return internal_2.MeilisearchInternal.isNotFoundError(opts);
|
|
169
|
+
}
|
|
170
|
+
async getHealth() {
|
|
171
|
+
const rs = await this.runEngineCall({
|
|
172
|
+
method: this.getHealth.name,
|
|
173
|
+
run: async () => {
|
|
174
|
+
const health = await this.client.health();
|
|
175
|
+
return { ok: health.status === 'available' };
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
return rs;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Every Meilisearch write returns a task uid and is invisible to search until the task reaches
|
|
182
|
+
* `succeeded`. The SDK's own `waitForTask` defaults to a 5 s timeout - far too short for a bulk
|
|
183
|
+
* import - so the connector polls itself against a caller-configured ceiling.
|
|
184
|
+
*/
|
|
185
|
+
async waitForTask(opts) {
|
|
186
|
+
const { taskUid, method } = opts;
|
|
187
|
+
const deadline = Date.now() + this.taskTimeoutMs;
|
|
188
|
+
// Exponential backoff: a fast task still resolves in the first poll or two, but a long-running
|
|
189
|
+
// one is not polled ~20x/s for its whole duration - the interval doubles up to a 1 s ceiling.
|
|
190
|
+
let intervalMs = this.taskIntervalMs;
|
|
191
|
+
for (;;) {
|
|
192
|
+
const task = await this.client.getTask(taskUid);
|
|
193
|
+
if (task.status === types_1.MeilisearchTaskStatuses.SUCCEEDED) {
|
|
194
|
+
return task;
|
|
195
|
+
}
|
|
196
|
+
if (types_1.MeilisearchTaskStatuses.isTerminal(task.status)) {
|
|
197
|
+
this.logger
|
|
198
|
+
.for(method)
|
|
199
|
+
.error('Task did not succeed | uid: %s | status: %s | error: %s', taskUid, task.status, internal_1.SearchConnectorInternal.describeError({ error: task.error }));
|
|
200
|
+
internal_1.SearchConnectorInternal.wrapDependencyError({
|
|
201
|
+
method,
|
|
202
|
+
error: task.error ?? task.status,
|
|
203
|
+
logger: this.logger,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
if (Date.now() >= deadline) {
|
|
207
|
+
throw (0, ignis_helpers_2.getError)({
|
|
208
|
+
statusCode: ignis_helpers_2.HTTP.ResultCodes.RS_5.GatewayTimeout,
|
|
209
|
+
messageCode: common_1.SearchErrorCodes.TASK_TIMEOUT,
|
|
210
|
+
message: `[${method}] Search engine task timed out after ${this.taskTimeoutMs}ms.`,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
await new Promise(resolve => setTimeout(resolve, intervalMs));
|
|
214
|
+
intervalMs = Math.min(intervalMs * 2, MAX_TASK_INTERVAL_MS);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Every Meilisearch write returns a task uid and only becomes visible once that task succeeds. This
|
|
219
|
+
* runs the write, awaits its task to completion, and returns the FINISHED task - callers that read
|
|
220
|
+
* `details` (e.g. deleteByFilter's `deletedDocuments`) get the terminal record.
|
|
221
|
+
*/
|
|
222
|
+
async awaitWrite(opts) {
|
|
223
|
+
const { method, run } = opts;
|
|
224
|
+
const enqueued = await run();
|
|
225
|
+
return this.waitForTask({ taskUid: enqueued.taskUid, method });
|
|
226
|
+
}
|
|
227
|
+
async createCollection(opts) {
|
|
228
|
+
const { schema } = opts;
|
|
229
|
+
this.assertNonEmpty({ value: schema.uid, name: 'uid', method: this.createCollection.name });
|
|
230
|
+
await this.runEngineCall({
|
|
231
|
+
method: this.createCollection.name,
|
|
232
|
+
run: async () => {
|
|
233
|
+
await this.awaitWrite({
|
|
234
|
+
method: this.createCollection.name,
|
|
235
|
+
run: () => this.client.createIndex(schema.uid, { primaryKey: schema.primaryKey }),
|
|
236
|
+
});
|
|
237
|
+
this.logger.for(this.createCollection.name).info('Created index | uid: %s', schema.uid);
|
|
238
|
+
},
|
|
239
|
+
tolerate: {
|
|
240
|
+
when: error => internal_2.MeilisearchInternal.isAlreadyExistsError({ error }),
|
|
241
|
+
handle: () => {
|
|
242
|
+
this.logger
|
|
243
|
+
.for(this.createCollection.name)
|
|
244
|
+
.info('Index already exists, skipping | uid: %s', schema.uid);
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
});
|
|
248
|
+
if (schema.primaryKey) {
|
|
249
|
+
this.primaryKeyByCollection.set(schema.uid, schema.primaryKey);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/** Create-if-absent, then apply settings. Both steps await their task, so the index is queryable on return. */
|
|
253
|
+
async ensureCollection(opts) {
|
|
254
|
+
const { schema } = opts;
|
|
255
|
+
await this.createCollection(opts);
|
|
256
|
+
await this.runEngineCall({
|
|
257
|
+
method: this.ensureCollection.name,
|
|
258
|
+
run: async () => {
|
|
259
|
+
await this.awaitWrite({
|
|
260
|
+
method: this.ensureCollection.name,
|
|
261
|
+
run: () => this.client.index(schema.uid).updateSettings(schema.settings),
|
|
262
|
+
});
|
|
263
|
+
},
|
|
264
|
+
});
|
|
265
|
+
return schema;
|
|
266
|
+
}
|
|
267
|
+
async getCollection(opts) {
|
|
268
|
+
const { name } = opts;
|
|
269
|
+
this.assertNonEmpty({ value: name, name: 'collection', method: this.getCollection.name });
|
|
270
|
+
const rs = await this.runEngineCall({
|
|
271
|
+
method: this.getCollection.name,
|
|
272
|
+
run: () => this.client.getIndex(name),
|
|
273
|
+
tolerate: this.notFoundTolerance({
|
|
274
|
+
method: this.getCollection.name,
|
|
275
|
+
subject: `Collection '${name}'`,
|
|
276
|
+
}),
|
|
277
|
+
});
|
|
278
|
+
return rs;
|
|
279
|
+
}
|
|
280
|
+
async listCollections() {
|
|
281
|
+
const rs = await this.runEngineCall({
|
|
282
|
+
method: this.listCollections.name,
|
|
283
|
+
run: async () => {
|
|
284
|
+
const page = await this.client.getIndexes();
|
|
285
|
+
return page.results;
|
|
286
|
+
},
|
|
287
|
+
});
|
|
288
|
+
return rs;
|
|
289
|
+
}
|
|
290
|
+
async collectionExists(opts) {
|
|
291
|
+
const { name } = opts;
|
|
292
|
+
const rs = await this.runEngineCall({
|
|
293
|
+
method: this.collectionExists.name,
|
|
294
|
+
run: async () => {
|
|
295
|
+
await this.client.getIndex(name);
|
|
296
|
+
return true;
|
|
297
|
+
},
|
|
298
|
+
tolerate: this.notFoundFallback({
|
|
299
|
+
method: this.collectionExists.name,
|
|
300
|
+
message: 'Index not found, treating as absent | uid: %s',
|
|
301
|
+
args: [name],
|
|
302
|
+
fallback: false,
|
|
303
|
+
}),
|
|
304
|
+
});
|
|
305
|
+
return rs;
|
|
306
|
+
}
|
|
307
|
+
/** Meilisearch is schemaless: there is no field schema to patch. Settings are applied by ensureCollection. */
|
|
308
|
+
patchCollectionSchema() {
|
|
309
|
+
throw (0, ignis_helpers_2.getError)({
|
|
310
|
+
statusCode: ignis_helpers_2.HTTP.ResultCodes.RS_5.NotImplemented,
|
|
311
|
+
messageCode: common_1.CoreErrorCodes.NOT_SUPPORTED,
|
|
312
|
+
message: `[${MeilisearchConnector.name}] Field-schema patching is not supported - Meilisearch is schemaless; change index settings via ensureCollection instead.`,
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
async deleteCollection(opts) {
|
|
316
|
+
const { name } = opts;
|
|
317
|
+
const rs = await this.runEngineCall({
|
|
318
|
+
method: this.deleteCollection.name,
|
|
319
|
+
run: async () => {
|
|
320
|
+
await this.awaitWrite({
|
|
321
|
+
method: this.deleteCollection.name,
|
|
322
|
+
run: () => this.client.deleteIndex(name),
|
|
323
|
+
});
|
|
324
|
+
return true;
|
|
325
|
+
},
|
|
326
|
+
tolerate: this.notFoundFallback({
|
|
327
|
+
method: this.deleteCollection.name,
|
|
328
|
+
message: 'Index not found, treating as already deleted | uid: %s',
|
|
329
|
+
args: [name],
|
|
330
|
+
fallback: false,
|
|
331
|
+
}),
|
|
332
|
+
});
|
|
333
|
+
return rs;
|
|
334
|
+
}
|
|
335
|
+
async swapIndexes(opts) {
|
|
336
|
+
const { pairs } = opts;
|
|
337
|
+
await this.runEngineCall({
|
|
338
|
+
method: this.swapIndexes.name,
|
|
339
|
+
run: async () => {
|
|
340
|
+
await this.awaitWrite({
|
|
341
|
+
method: this.swapIndexes.name,
|
|
342
|
+
run: () => this.client.swapIndexes(pairs.map(indexes => ({ indexes }))),
|
|
343
|
+
});
|
|
344
|
+
this.logger
|
|
345
|
+
.for(this.swapIndexes.name)
|
|
346
|
+
.info('Swapped index pair(s) | count: %s', pairs.length);
|
|
347
|
+
},
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
async setSynonyms(opts) {
|
|
351
|
+
const { collection, items } = opts;
|
|
352
|
+
const dictionary = {};
|
|
353
|
+
for (const entry of items) {
|
|
354
|
+
if (entry.root) {
|
|
355
|
+
dictionary[entry.root] = entry.synonyms;
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
for (const term of entry.synonyms) {
|
|
359
|
+
dictionary[term] = entry.synonyms.filter(other => other !== term);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
await this.runEngineCall({
|
|
363
|
+
method: this.setSynonyms.name,
|
|
364
|
+
run: async () => {
|
|
365
|
+
await this.awaitWrite({
|
|
366
|
+
method: this.setSynonyms.name,
|
|
367
|
+
run: () => this.client.index(collection).updateSynonyms(dictionary),
|
|
368
|
+
});
|
|
369
|
+
},
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
async getSynonyms(opts) {
|
|
373
|
+
const { collection } = opts;
|
|
374
|
+
const rs = await this.runEngineCall({
|
|
375
|
+
method: this.getSynonyms.name,
|
|
376
|
+
run: async () => {
|
|
377
|
+
const settings = await this.client.index(collection).getSettings();
|
|
378
|
+
const dictionary = settings['synonyms'];
|
|
379
|
+
if (!isRecord(dictionary)) {
|
|
380
|
+
return [];
|
|
381
|
+
}
|
|
382
|
+
return Object.entries(dictionary).map(([id, synonyms]) => ({
|
|
383
|
+
id,
|
|
384
|
+
synonyms: Array.isArray(synonyms) ? synonyms : [],
|
|
385
|
+
}));
|
|
386
|
+
},
|
|
387
|
+
});
|
|
388
|
+
return rs;
|
|
389
|
+
}
|
|
390
|
+
async resetSynonyms(opts) {
|
|
391
|
+
const { collection } = opts;
|
|
392
|
+
await this.runEngineCall({
|
|
393
|
+
method: this.resetSynonyms.name,
|
|
394
|
+
run: async () => {
|
|
395
|
+
await this.awaitWrite({
|
|
396
|
+
method: this.resetSynonyms.name,
|
|
397
|
+
run: () => this.client.index(collection).resetSynonyms(),
|
|
398
|
+
});
|
|
399
|
+
},
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
async getDocument(opts) {
|
|
403
|
+
const { collection, id } = opts;
|
|
404
|
+
this.assertNonEmpty({ value: collection, name: 'collection', method: this.getDocument.name });
|
|
405
|
+
this.assertNonEmpty({ value: id, name: 'document id', method: this.getDocument.name });
|
|
406
|
+
const rs = await this.runEngineCall({
|
|
407
|
+
method: this.getDocument.name,
|
|
408
|
+
run: async () => {
|
|
409
|
+
const document = (await this.client.index(collection).getDocument(id));
|
|
410
|
+
return document;
|
|
411
|
+
},
|
|
412
|
+
tolerate: this.notFoundTolerance({
|
|
413
|
+
method: this.getDocument.name,
|
|
414
|
+
subject: `Document '${id}' in collection '${collection}'`,
|
|
415
|
+
}),
|
|
416
|
+
});
|
|
417
|
+
return rs;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Exact and uncapped. `pagination.maxTotalHits` bounds the SEARCH route only - Meilisearch's own
|
|
421
|
+
* documentation states it "has no effect on the get documents" endpoints - so reading `total` from
|
|
422
|
+
* `documents/fetch` is what keeps `count()` from quietly lying on large filtered sets.
|
|
423
|
+
*/
|
|
424
|
+
async countDocuments(opts) {
|
|
425
|
+
const { collection, filterBy } = opts;
|
|
426
|
+
this.assertNonEmpty({
|
|
427
|
+
value: collection,
|
|
428
|
+
name: 'collection',
|
|
429
|
+
method: this.countDocuments.name,
|
|
430
|
+
});
|
|
431
|
+
const rs = await this.runEngineCall({
|
|
432
|
+
method: this.countDocuments.name,
|
|
433
|
+
run: async () => {
|
|
434
|
+
const params = { limit: 0 };
|
|
435
|
+
if (filterBy) {
|
|
436
|
+
params['filter'] = filterBy;
|
|
437
|
+
}
|
|
438
|
+
const page = await this.client.index(collection).getDocuments(params);
|
|
439
|
+
return page.total;
|
|
440
|
+
},
|
|
441
|
+
});
|
|
442
|
+
return rs;
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Create-only, matching the neutral contract (and Typesense, whose `documents().create()` rejects a
|
|
446
|
+
* duplicate id). Meilisearch has no conditional insert - `addDocuments` is add-or-REPLACE - so the id
|
|
447
|
+
* is checked first. That check is NOT atomic: two concurrent creates of the same id can both pass it,
|
|
448
|
+
* and the second write wins. Callers needing last-write-wins should use `upsert` and say so.
|
|
449
|
+
*/
|
|
450
|
+
async createDocument(opts) {
|
|
451
|
+
const { collection, document } = opts;
|
|
452
|
+
this.assertNonEmpty({
|
|
453
|
+
value: collection,
|
|
454
|
+
name: 'collection',
|
|
455
|
+
method: this.createDocument.name,
|
|
456
|
+
});
|
|
457
|
+
const primaryKey = await this.resolvePrimaryKey({ collection });
|
|
458
|
+
const id = document[primaryKey];
|
|
459
|
+
if (id !== undefined && (await this.documentExists({ collection, id: String(id) }))) {
|
|
460
|
+
throw (0, ignis_helpers_2.getError)({
|
|
461
|
+
statusCode: ignis_helpers_2.HTTP.ResultCodes.RS_4.Conflict,
|
|
462
|
+
messageCode: common_1.SearchErrorCodes.ALREADY_EXISTS,
|
|
463
|
+
message: `[${this.createDocument.name}] Document '${String(id)}' already exists in collection '${collection}'.`,
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
return this.upsertDocument(opts);
|
|
467
|
+
}
|
|
468
|
+
async documentExists(opts) {
|
|
469
|
+
const { collection, id } = opts;
|
|
470
|
+
const rs = await this.runEngineCall({
|
|
471
|
+
method: this.documentExists.name,
|
|
472
|
+
run: async () => {
|
|
473
|
+
await this.client.index(collection).getDocument(id);
|
|
474
|
+
return true;
|
|
475
|
+
},
|
|
476
|
+
tolerate: this.notFoundFallback({
|
|
477
|
+
method: this.documentExists.name,
|
|
478
|
+
message: 'Document not found, treating as absent | collection: %s | id: %s',
|
|
479
|
+
args: [collection, id],
|
|
480
|
+
fallback: false,
|
|
481
|
+
}),
|
|
482
|
+
});
|
|
483
|
+
return rs;
|
|
484
|
+
}
|
|
485
|
+
/** Add-or-replace by primary key. Awaits the task, so the document is retrievable when this resolves. */
|
|
486
|
+
async upsertDocument(opts) {
|
|
487
|
+
const { collection, document } = opts;
|
|
488
|
+
this.assertNonEmpty({
|
|
489
|
+
value: collection,
|
|
490
|
+
name: 'collection',
|
|
491
|
+
method: this.upsertDocument.name,
|
|
492
|
+
});
|
|
493
|
+
await this.runEngineCall({
|
|
494
|
+
method: this.upsertDocument.name,
|
|
495
|
+
run: async () => {
|
|
496
|
+
await this.awaitWrite({
|
|
497
|
+
method: this.upsertDocument.name,
|
|
498
|
+
run: () => this.client.index(collection).addDocuments([document]),
|
|
499
|
+
});
|
|
500
|
+
},
|
|
501
|
+
});
|
|
502
|
+
return document;
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Merge-update by primary key: fields absent from the patch are preserved. Meilisearch's write
|
|
506
|
+
* returns only a task, never the row, so the merged document must be read back - one extra round
|
|
507
|
+
* trip versus Typesense, and NOT atomic: a concurrent write landing between the task succeeding and
|
|
508
|
+
* this read means the returned document is not necessarily what this call wrote.
|
|
509
|
+
*/
|
|
510
|
+
async updateDocument(opts) {
|
|
511
|
+
const { collection, id, document } = opts;
|
|
512
|
+
this.assertNonEmpty({
|
|
513
|
+
value: collection,
|
|
514
|
+
name: 'collection',
|
|
515
|
+
method: this.updateDocument.name,
|
|
516
|
+
});
|
|
517
|
+
this.assertNonEmpty({ value: id, name: 'document id', method: this.updateDocument.name });
|
|
518
|
+
const primaryKey = await this.resolvePrimaryKey({ collection });
|
|
519
|
+
// Meilisearch's updateDocuments is add-or-update, so a missing id would silently upsert; the
|
|
520
|
+
// neutral contract (and Typesense) throws 404 instead. Existence is checked before any write.
|
|
521
|
+
if (!(await this.documentExists({ collection, id }))) {
|
|
522
|
+
internal_1.SearchConnectorInternal.throwNotFoundError({
|
|
523
|
+
method: this.updateDocument.name,
|
|
524
|
+
subject: `Document '${id}' in collection '${collection}'`,
|
|
525
|
+
});
|
|
526
|
+
}
|
|
527
|
+
await this.runEngineCall({
|
|
528
|
+
method: this.updateDocument.name,
|
|
529
|
+
// `[primaryKey]: id` last: the path id is authoritative, so a patch carrying its own primary
|
|
530
|
+
// key cannot redirect the write onto a different row.
|
|
531
|
+
run: () => this.awaitWrite({
|
|
532
|
+
method: this.updateDocument.name,
|
|
533
|
+
run: () => this.client.index(collection).updateDocuments([{ ...document, [primaryKey]: id }]),
|
|
534
|
+
}),
|
|
535
|
+
});
|
|
536
|
+
return this.getDocument({ collection, id });
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Meilisearch has no update-by-filter endpoint. `documents/edit` would do it server-side, but it is
|
|
540
|
+
* gated behind an experimental flag, is documented as breaking between minor versions, and has an
|
|
541
|
+
* open correctness bug - so this pages ids out of the uncapped `documents/fetch` route and merges
|
|
542
|
+
* them back in batches. NOT atomic: a concurrent write to a matched document may be overwritten.
|
|
543
|
+
*/
|
|
544
|
+
async updateByFilter(opts) {
|
|
545
|
+
const { collection, document, filterBy } = opts;
|
|
546
|
+
this.assertNonEmpty({
|
|
547
|
+
value: collection,
|
|
548
|
+
name: 'collection',
|
|
549
|
+
method: this.updateByFilter.name,
|
|
550
|
+
});
|
|
551
|
+
this.assertNonEmpty({ value: filterBy, name: 'filterBy', method: this.updateByFilter.name });
|
|
552
|
+
const primaryKey = await this.resolvePrimaryKey({ collection });
|
|
553
|
+
const rs = await this.runEngineCall({
|
|
554
|
+
method: this.updateByFilter.name,
|
|
555
|
+
run: async () => {
|
|
556
|
+
const ids = await this.collectMatchingIds({ collection, filterBy, primaryKey });
|
|
557
|
+
for (let index = 0; index < ids.length; index += types_1.MEILISEARCH_DEFAULT_UPDATE_BATCH_SIZE) {
|
|
558
|
+
const batch = ids.slice(index, index + types_1.MEILISEARCH_DEFAULT_UPDATE_BATCH_SIZE);
|
|
559
|
+
// `[primaryKey]: id` last: each matched row keeps its own id even if the patch carries one.
|
|
560
|
+
const documents = batch.map(id => ({ ...document, [primaryKey]: id }));
|
|
561
|
+
await this.awaitWrite({
|
|
562
|
+
method: this.updateByFilter.name,
|
|
563
|
+
run: () => this.client.index(collection).updateDocuments(documents),
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
this.logger
|
|
567
|
+
.for(this.updateByFilter.name)
|
|
568
|
+
.info('Updated documents by filter | collection: %s | count: %s', collection, ids.length);
|
|
569
|
+
return { updatedCount: ids.length };
|
|
570
|
+
},
|
|
571
|
+
});
|
|
572
|
+
return rs;
|
|
573
|
+
}
|
|
574
|
+
/** Walks `documents/fetch` until exhausted. Not bounded by `pagination.maxTotalHits`. */
|
|
575
|
+
async fetchAllDocuments(opts) {
|
|
576
|
+
const { collection, filterBy, fields } = opts;
|
|
577
|
+
const rows = [];
|
|
578
|
+
let offset = 0;
|
|
579
|
+
for (;;) {
|
|
580
|
+
const params = {
|
|
581
|
+
limit: types_1.MEILISEARCH_DEFAULT_FETCH_PAGE_SIZE,
|
|
582
|
+
offset,
|
|
583
|
+
};
|
|
584
|
+
if (filterBy) {
|
|
585
|
+
params['filter'] = filterBy;
|
|
586
|
+
}
|
|
587
|
+
if (fields?.length) {
|
|
588
|
+
params['fields'] = fields;
|
|
589
|
+
}
|
|
590
|
+
const page = await this.client.index(collection).getDocuments(params);
|
|
591
|
+
rows.push(...page.results);
|
|
592
|
+
offset += types_1.MEILISEARCH_DEFAULT_FETCH_PAGE_SIZE;
|
|
593
|
+
if (offset >= page.total || page.results.length === 0) {
|
|
594
|
+
return rows;
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
async collectMatchingIds(opts) {
|
|
599
|
+
const { collection, filterBy, primaryKey } = opts;
|
|
600
|
+
const ids = [];
|
|
601
|
+
const rows = await this.fetchAllDocuments({
|
|
602
|
+
collection,
|
|
603
|
+
filterBy,
|
|
604
|
+
fields: [primaryKey],
|
|
605
|
+
});
|
|
606
|
+
for (const row of rows) {
|
|
607
|
+
if (isRecord(row) && row[primaryKey] !== undefined) {
|
|
608
|
+
ids.push(String(row[primaryKey]));
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
return ids;
|
|
612
|
+
}
|
|
613
|
+
async deleteDocument(opts) {
|
|
614
|
+
const { collection, id } = opts;
|
|
615
|
+
const rs = await this.runEngineCall({
|
|
616
|
+
method: this.deleteDocument.name,
|
|
617
|
+
run: async () => {
|
|
618
|
+
await this.awaitWrite({
|
|
619
|
+
method: this.deleteDocument.name,
|
|
620
|
+
run: () => this.client.index(collection).deleteDocument(id),
|
|
621
|
+
});
|
|
622
|
+
return true;
|
|
623
|
+
},
|
|
624
|
+
tolerate: this.notFoundFallback({
|
|
625
|
+
method: this.deleteDocument.name,
|
|
626
|
+
message: 'Document not found, returning false | collection: %s | id: %s',
|
|
627
|
+
args: [collection, id],
|
|
628
|
+
fallback: false,
|
|
629
|
+
}),
|
|
630
|
+
});
|
|
631
|
+
return rs;
|
|
632
|
+
}
|
|
633
|
+
/**
|
|
634
|
+
* Delete-by-filter IS native here (unlike update-by-filter). The count is read from the FINISHED
|
|
635
|
+
* task's `details.deletedDocuments` - a pre-count would be wrong in both directions if a concurrent
|
|
636
|
+
* write added or removed a matching document between counting and deleting.
|
|
637
|
+
*/
|
|
638
|
+
async deleteByFilter(opts) {
|
|
639
|
+
const { collection, filterBy } = opts;
|
|
640
|
+
this.assertNonEmpty({ value: filterBy, name: 'filterBy', method: this.deleteByFilter.name });
|
|
641
|
+
const rs = await this.runEngineCall({
|
|
642
|
+
method: this.deleteByFilter.name,
|
|
643
|
+
run: async () => {
|
|
644
|
+
const task = await this.awaitWrite({
|
|
645
|
+
method: this.deleteByFilter.name,
|
|
646
|
+
run: () => this.client.index(collection).deleteDocuments({ filter: filterBy }),
|
|
647
|
+
});
|
|
648
|
+
const deleted = task.details?.['deletedDocuments'];
|
|
649
|
+
if (typeof deleted !== 'number') {
|
|
650
|
+
throw (0, ignis_helpers_2.getError)({
|
|
651
|
+
message: `[${this.deleteByFilter.name}] Task ${task.taskUid} reported no deletedDocuments count | collection: ${collection}`,
|
|
652
|
+
});
|
|
653
|
+
}
|
|
654
|
+
return deleted;
|
|
655
|
+
},
|
|
656
|
+
});
|
|
657
|
+
return rs;
|
|
658
|
+
}
|
|
659
|
+
async deleteAllDocuments(opts) {
|
|
660
|
+
const { collection } = opts;
|
|
661
|
+
const rs = await this.runEngineCall({
|
|
662
|
+
method: this.deleteAllDocuments.name,
|
|
663
|
+
run: async () => {
|
|
664
|
+
await this.awaitWrite({
|
|
665
|
+
method: this.deleteAllDocuments.name,
|
|
666
|
+
run: () => this.client.index(collection).deleteAllDocuments(),
|
|
667
|
+
});
|
|
668
|
+
return true;
|
|
669
|
+
},
|
|
670
|
+
});
|
|
671
|
+
return rs;
|
|
672
|
+
}
|
|
673
|
+
/**
|
|
674
|
+
* Batches through addDocuments, awaiting each batch's task before starting the next. Meilisearch
|
|
675
|
+
* import is batch-atomic, so `count.fail` is structurally always 0: a batch either lands whole or
|
|
676
|
+
* throws. A thrown import means the batches after the failure point did not land - the error's
|
|
677
|
+
* `details` carry `processedCount` so callers can resume from there.
|
|
678
|
+
*/
|
|
679
|
+
async importDocuments(opts) {
|
|
680
|
+
const { collection, documents, batchSize } = opts;
|
|
681
|
+
const size = batchSize ?? types_1.MEILISEARCH_DEFAULT_UPDATE_BATCH_SIZE;
|
|
682
|
+
const rs = await this.runEngineCall({
|
|
683
|
+
method: this.importDocuments.name,
|
|
684
|
+
run: async () => {
|
|
685
|
+
const responses = [];
|
|
686
|
+
let processedCount = 0;
|
|
687
|
+
for (let index = 0; index < documents.length; index += size) {
|
|
688
|
+
const batch = documents.slice(index, index + size);
|
|
689
|
+
try {
|
|
690
|
+
const task = await this.awaitWrite({
|
|
691
|
+
method: this.importDocuments.name,
|
|
692
|
+
run: () => this.client.index(collection).addDocuments(batch),
|
|
693
|
+
});
|
|
694
|
+
responses.push(task);
|
|
695
|
+
processedCount += batch.length;
|
|
696
|
+
}
|
|
697
|
+
catch (error) {
|
|
698
|
+
// Earlier batches are already persisted server-side, so EVERY failure carries partial
|
|
699
|
+
// progress - callers decide to resume from processedCount or retry the whole import.
|
|
700
|
+
const details = { totalCount: documents.length, processedCount };
|
|
701
|
+
// An error the framework already shaped (waitForTask's 504 task_timeout, its
|
|
702
|
+
// task-failed 503, a sanitized 4xx) keeps its statusCode/messageCode - re-wrapping
|
|
703
|
+
// would erase those semantics behind a generic 503. Progress is merged onto it.
|
|
704
|
+
if ((0, ignis_helpers_1.isApplicationError)(error)) {
|
|
705
|
+
error.extra = {
|
|
706
|
+
...error.extra,
|
|
707
|
+
details: { ...error.extra?.['details'], ...details },
|
|
708
|
+
};
|
|
709
|
+
throw error;
|
|
710
|
+
}
|
|
711
|
+
internal_1.SearchConnectorInternal.wrapDependencyError({
|
|
712
|
+
method: this.importDocuments.name,
|
|
713
|
+
error,
|
|
714
|
+
logger: this.logger,
|
|
715
|
+
details,
|
|
716
|
+
});
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
this.logger
|
|
720
|
+
.for(this.importDocuments.name)
|
|
721
|
+
.info('Imported documents | collection: %s | ok: %s', collection, documents.length);
|
|
722
|
+
// A task that did not succeed already threw, so every document in a resolved import landed.
|
|
723
|
+
return { count: { success: documents.length, fail: 0 }, responses };
|
|
724
|
+
},
|
|
725
|
+
});
|
|
726
|
+
return rs;
|
|
727
|
+
}
|
|
728
|
+
/** Newline-delimited JSON, matching the Typesense connector's export contract. */
|
|
729
|
+
async exportDocuments(opts) {
|
|
730
|
+
const { collection, filterBy, includeFields } = opts;
|
|
731
|
+
const rs = await this.runEngineCall({
|
|
732
|
+
method: this.exportDocuments.name,
|
|
733
|
+
run: async () => {
|
|
734
|
+
// Pages to exhaustion. A single fetch would silently truncate at the page size, which for an
|
|
735
|
+
// export - the primitive people back up and reindex with - is data loss without an error.
|
|
736
|
+
const rows = await this.fetchAllDocuments({
|
|
737
|
+
collection,
|
|
738
|
+
...(filterBy ? { filterBy } : {}),
|
|
739
|
+
...(includeFields?.length ? { fields: includeFields } : {}),
|
|
740
|
+
});
|
|
741
|
+
return rows.map(row => JSON.stringify(row)).join('\n');
|
|
742
|
+
},
|
|
743
|
+
});
|
|
744
|
+
return rs;
|
|
745
|
+
}
|
|
746
|
+
async search(opts) {
|
|
747
|
+
const { collection, params } = opts;
|
|
748
|
+
const rs = await this.runEngineCall({
|
|
749
|
+
method: this.search.name,
|
|
750
|
+
run: async () => {
|
|
751
|
+
const wire = isRecord(params) ? params : {};
|
|
752
|
+
const { q, ...rest } = wire;
|
|
753
|
+
const raw = await this.client
|
|
754
|
+
.index(collection)
|
|
755
|
+
.search(typeof q === 'string' && q !== '*' ? q : null, rest);
|
|
756
|
+
return mapSearchResult(raw);
|
|
757
|
+
},
|
|
758
|
+
tolerate: {
|
|
759
|
+
when: error => internal_2.MeilisearchInternal.isNotFoundError({ error }),
|
|
760
|
+
handle: () => {
|
|
761
|
+
this.logger
|
|
762
|
+
.for(this.search.name)
|
|
763
|
+
.warn('Search on missing collection, returning empty | name: %s', collection);
|
|
764
|
+
return { found: 0, isFoundExact: true, hits: [] };
|
|
765
|
+
},
|
|
766
|
+
},
|
|
767
|
+
});
|
|
768
|
+
return rs;
|
|
769
|
+
}
|
|
770
|
+
/**
|
|
771
|
+
* Batched, non-federated: N queries in one round trip, N result sets back. `commonParams` are
|
|
772
|
+
* defaults - a per-query param always wins over them, so a query's own `q` is never clobbered.
|
|
773
|
+
*/
|
|
774
|
+
async multiSearch(opts) {
|
|
775
|
+
const { searches, union: isUnion, commonParams, options } = opts;
|
|
776
|
+
if (isUnion) {
|
|
777
|
+
throw (0, ignis_helpers_2.getError)({
|
|
778
|
+
statusCode: ignis_helpers_2.HTTP.ResultCodes.RS_5.NotImplemented,
|
|
779
|
+
messageCode: common_1.CoreErrorCodes.NOT_SUPPORTED,
|
|
780
|
+
message: `[${MeilisearchConnector.name}] Union multi-search is not supported - Meilisearch merges results through its federation option, which this connector does not model.`,
|
|
781
|
+
});
|
|
782
|
+
}
|
|
783
|
+
const rs = await this.runEngineCall({
|
|
784
|
+
method: this.multiSearch.name,
|
|
785
|
+
run: () => {
|
|
786
|
+
const common = isRecord(commonParams) ? commonParams : {};
|
|
787
|
+
const queries = searches.filter(isRecord).map(entry => {
|
|
788
|
+
const { collection, ...rest } = entry;
|
|
789
|
+
// `common` first: a per-query param overrides the shared default, never the reverse.
|
|
790
|
+
return { indexUid: collection, q: '', ...common, ...rest };
|
|
791
|
+
});
|
|
792
|
+
return this.client.multiSearch({ queries, ...(isRecord(options) ? options : {}) });
|
|
793
|
+
},
|
|
794
|
+
});
|
|
795
|
+
return rs;
|
|
796
|
+
}
|
|
797
|
+
/** Meilisearch infers the primary key from the first document; the compiler pins it, and the index reports it. */
|
|
798
|
+
async resolvePrimaryKey(opts) {
|
|
799
|
+
const { collection } = opts;
|
|
800
|
+
const cached = this.primaryKeyByCollection.get(collection);
|
|
801
|
+
if (cached) {
|
|
802
|
+
return cached;
|
|
803
|
+
}
|
|
804
|
+
// Wrapped so a raw getIndex failure is sanitized here rather than escaping through whichever
|
|
805
|
+
// write (create/update/updateBy) triggered the lookup and leaking engine detail.
|
|
806
|
+
const index = await this.runEngineCall({
|
|
807
|
+
method: this.resolvePrimaryKey.name,
|
|
808
|
+
run: () => this.client.getIndex(collection),
|
|
809
|
+
});
|
|
810
|
+
const primaryKey = isRecord(index) ? index['primaryKey'] : undefined;
|
|
811
|
+
if (typeof primaryKey !== 'string' || primaryKey.length === 0) {
|
|
812
|
+
throw (0, ignis_helpers_2.getError)({
|
|
813
|
+
message: `[${this.resolvePrimaryKey.name}] Collection '${collection}' has no primary key - Meilisearch cannot merge-update without one.`,
|
|
814
|
+
});
|
|
815
|
+
}
|
|
816
|
+
this.primaryKeyByCollection.set(collection, primaryKey);
|
|
817
|
+
return primaryKey;
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
exports.MeilisearchConnector = MeilisearchConnector;
|
|
821
|
+
//# sourceMappingURL=connector.js.map
|