nestjs-appwrite
Version:
Easier Appwrite integration for your NestJS application.
85 lines (84 loc) • 4.29 kB
JavaScript
;
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);