import { Qenv } from '@push.rocks/qenv'; const testQenv = new Qenv('./', './.nogit/'); import * as cloudly from '../../ts/index.js'; const stopFunctions: Array<() => Promise> = []; export const createCloudly = async () => { const tapToolsNodeMod = await import('@push.rocks/tapbundle/node'); const smartmongo = await tapToolsNodeMod.tapNodeTools.createSmartmongo(); stopFunctions.push(async () => { await smartmongo.stopAndDumpToDir('./.nogit/mongodump'); }); const smarts3 = await tapToolsNodeMod.tapNodeTools.createSmarts3(); await smarts3.createBucket('cloudly-test'); stopFunctions.push(async () => { await smarts3.stop(); }); const cloudlyConfig: cloudly.ICloudlyConfig = { cfToken: await testQenv.getEnvVarOnDemand('CF_TOKEN'), environment: 'integration', letsEncryptEmail: 'test@serve.zone', publicUrl: 'localhost', publicPort: '8080', mongoDescriptor: await smartmongo.getMongoDescriptor(), s3Descriptor: await smarts3.getS3Descriptor(), sslMode: 'none', ...(() => { if (process.env.NPMCI_SECRET01) { return { hetznerToken: process.env.NPMCI_SECRET01 } } })() }; const cloudlyInstance = new cloudly.Cloudly(cloudlyConfig); return cloudlyInstance; } export const stopCloudly = async () => { await Promise.all(stopFunctions.map((stopFunction) => stopFunction())); }; export const getEnvVarOnDemand = async (envVarName: string) => { return testQenv.getEnvVarOnDemand(envVarName); }