UNPKG

nestjs-appwrite

Version:

Easier Appwrite integration for your NestJS application.

85 lines (84 loc) 4.29 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var AppwriteCoreModule_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.AppwriteCoreModule = void 0; const common_1 = require("@nestjs/common"); const node_appwrite_1 = require("node-appwrite"); const appwrite_constants_1 = require("./appwrite.constants"); const secret_store_service_1 = require("./service/secret-store.service"); const env_vars_store_service_1 = require("./service/env-vars-store.service"); const parameter_store_service_1 = require("./service/parameter-store.service"); const access_token_guard_1 = require("./guard/access-token.guard"); let AppwriteCoreModule = AppwriteCoreModule_1 = class AppwriteCoreModule { static forRoot(options) { const storeServiceProvider = { provide: secret_store_service_1.SecretStoreService, useClass: options.useEnvVarsForSecrets ? env_vars_store_service_1.EnvVarsStoreService : parameter_store_service_1.ParameterStoreService, }; const configProvider = { provide: appwrite_constants_1.CONFIG_PROVIDER_NAME, useValue: { APPWRITE_ENDPOINT: options.endpoint, APPWRITE_PROJECT_ID: options.projectId, APPWRITE_DATABASE_ID: options.databaseId, AWS_REGION: options.awsRegion, DELETE_REMOVED_ATTRIBUTES: options.deleteRemovedAttributes, } }; const appwriteApiKeyName = options.appwriteApiKeyName ?? 'appwrite_api_key'; const connectionProvider = { provide: appwrite_constants_1.CLIENT_PROVIDER_NAME, useFactory: async (storeService) => { const apiKey = await storeService.getSecretString(appwriteApiKeyName); if (!apiKey) { this.logger.error(`Unable to find Appwrite API key for name ${appwriteApiKeyName}`); } if (options.showEnvironmentVars) { this.logger.log(`Connecting to Appwrite with endpoint ${options.endpoint} and project ${options.projectId}`); this.logger.log(`With API key ${apiKey}`); this.logger.log(`With database ${options.databaseId}`); this.logger.log(`Using store service ${storeService.constructor.name}`); } return new node_appwrite_1.Client() .setEndpoint(options.endpoint) .setProject(options.projectId) .setKey(apiKey ?? ''); }, inject: [secret_store_service_1.SecretStoreService], }; const accessTokenGuardProvider = { provide: access_token_guard_1.AccessTokenGuard, useFactory: (storeService, config) => { return new access_token_guard_1.AccessTokenGuard(storeService, config); }, inject: [secret_store_service_1.SecretStoreService, appwrite_constants_1.CONFIG_PROVIDER_NAME] }; return { module: AppwriteCoreModule_1, providers: [ storeServiceProvider, configProvider, connectionProvider, accessTokenGuardProvider, ], exports: [ storeServiceProvider, configProvider, connectionProvider, accessTokenGuardProvider, ], }; } }; exports.AppwriteCoreModule = AppwriteCoreModule; AppwriteCoreModule.logger = new common_1.Logger(AppwriteCoreModule_1.name); exports.AppwriteCoreModule = AppwriteCoreModule = AppwriteCoreModule_1 = __decorate([ (0, common_1.Global)(), (0, common_1.Module)({}) ], AppwriteCoreModule);