@event-driven-io/pongo 0.16.7 → 0.16.8

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/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts","../src/commandLine/configFile.ts","../src/commandLine/migrate.ts","../src/commandLine/shell.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { configCommand, migrateCommand, shellCommand } from './commandLine';\n\nconst program = new Command();\n\nprogram.name('pongo').description('CLI tool for Pongo');\n\nprogram.addCommand(configCommand);\nprogram.addCommand(migrateCommand);\nprogram.addCommand(shellCommand);\n\nprogram.parse(process.argv);\n\nexport default program;\n","import { Command } from 'commander';\nimport fs from 'node:fs';\nimport {\n objectEntries,\n toDbSchemaMetadata,\n type PongoDbSchemaMetadata,\n type PongoSchemaConfig,\n} from '../core';\n\nconst formatTypeName = (input: string): string => {\n if (input.length === 0) {\n return input;\n }\n\n let formatted = input.charAt(0).toUpperCase() + input.slice(1);\n\n if (formatted.endsWith('s')) {\n formatted = formatted.slice(0, -1);\n }\n\n return formatted;\n};\n\nconst sampleConfig = (collectionNames: string[] = ['users']) => {\n const types = collectionNames\n .map(\n (name) =>\n `export type ${formatTypeName(name)} = { name: string; description: string; date: Date }`,\n )\n .join('\\n');\n\n const collections = collectionNames\n .map(\n (name) =>\n ` ${name}: pongoSchema.collection<${formatTypeName(name)}>('${name}'),`,\n )\n .join('\\n');\n\n return `import { pongoSchema } from '@event-driven-io/pongo';\n\n${types}\n\nexport default {\n schema: pongoSchema.client({\n database: pongoSchema.db({\n${collections}\n }),\n }),\n};`;\n};\n\nconst missingDefaultExport = `Error: Config should contain default export, e.g.\\n\\n${sampleConfig()}`;\nconst missingSchema = `Error: Config should contain schema property, e.g.\\n\\n${sampleConfig()}`;\nconst missingDbs = `Error: Config should have at least a single database defined, e.g.\\n\\n${sampleConfig()}`;\nconst missingDefaultDb = `Error: Config should have a default database defined (without name or or with default database name), e.g.\\n\\n${sampleConfig()}`;\nconst missingCollections = `Error: Database should have defined at least one collection, e.g.\\n\\n${sampleConfig()}`;\n\nexport const loadConfigFile = async (\n configPath: string,\n): Promise<PongoDbSchemaMetadata> => {\n const configUrl = new URL(configPath, `file://${process.cwd()}/`);\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const imported: Partial<{ default: PongoSchemaConfig }> = await import(\n configUrl.href\n );\n\n const parsed = parseDefaultDbSchema(imported);\n\n if (typeof parsed === 'string') {\n console.error(parsed);\n process.exit(1);\n }\n\n return parsed;\n } catch {\n console.error(`Error: Couldn't load file: ${configUrl.href}`);\n process.exit(1);\n }\n};\n\nexport const generateConfigFile = (\n configPath: string,\n collectionNames: string[],\n): void => {\n try {\n fs.writeFileSync(configPath, sampleConfig(collectionNames), 'utf8');\n console.log(`Configuration file stored at: ${configPath}`);\n } catch (error) {\n console.error(`Error: Couldn't store config file: ${configPath}!`);\n console.error(error);\n process.exit(1);\n }\n};\n\nexport const parseDefaultDbSchema = (\n imported: Partial<{ default: PongoSchemaConfig }>,\n): PongoDbSchemaMetadata | string => {\n if (!imported.default) {\n return missingDefaultExport;\n }\n\n if (!imported.default.schema) {\n return missingSchema;\n }\n\n if (!imported.default.schema.dbs) {\n return missingDbs;\n }\n\n const dbs = objectEntries(imported.default.schema.dbs).map((db) => db[1]);\n\n const defaultDb = dbs.find((db) => db.name === undefined);\n\n if (!defaultDb) {\n return missingDefaultDb;\n }\n\n if (!defaultDb.collections) {\n return missingCollections;\n }\n\n const collections = objectEntries(defaultDb.collections).map((col) => col[1]);\n\n if (collections.length === 0) {\n return missingCollections;\n }\n\n return toDbSchemaMetadata(defaultDb);\n};\n\ntype SampleConfigOptions =\n | {\n collection: string[];\n print?: boolean;\n }\n | {\n collection: string[];\n generate?: boolean;\n file?: string;\n };\n\nexport const configCommand = new Command('config').description(\n 'Manage Pongo configuration',\n);\n\nconfigCommand\n .command('sample')\n .description('Generate or print sample configuration')\n .option(\n '-col, --collection <name>',\n 'Specify the collection name',\n (value: string, previous: string[]) => {\n // Accumulate collection names into an array (explicitly typing `previous` as `string[]`)\n return previous.concat([value]);\n },\n [] as string[],\n )\n .option(\n '-f, --file <path>',\n 'Path to configuration file with collection list',\n )\n .option('-g, --generate', 'Generate sample config file')\n .option('-p, --print', 'Print sample config file')\n .action((options: SampleConfigOptions) => {\n const collectionNames =\n options.collection.length > 0 ? options.collection : ['users'];\n\n if (!('print' in options) && !('generate' in options)) {\n console.error(\n 'Error: Please provide either:\\n--print param to print sample config or\\n--generate to generate sample config file',\n );\n process.exit(1);\n }\n\n if ('print' in options) {\n console.log(`${sampleConfig(collectionNames)}`);\n } else if ('generate' in options) {\n if (!options.file) {\n console.error(\n 'Error: You need to provide a config file through a --file',\n );\n process.exit(1);\n }\n\n generateConfigFile(options.file, collectionNames);\n }\n });\n","import {\n combineMigrations,\n dumbo,\n migrationTableSchemaComponent,\n runPostgreSQLMigrations,\n} from '@event-driven-io/dumbo';\nimport { Command } from 'commander';\nimport { pongoCollectionSchemaComponent } from '../core';\nimport { loadConfigFile } from './configFile';\n\ninterface MigrateRunOptions {\n collection: string[];\n connectionString: string;\n config?: string;\n dryRun?: boolean;\n}\n\ninterface MigrateSqlOptions {\n print?: boolean;\n write?: string;\n config?: string;\n collection: string[];\n}\n\nexport const migrateCommand = new Command('migrate').description(\n 'Manage database migrations',\n);\n\nmigrateCommand\n .command('run')\n .description('Run database migrations')\n .option(\n '-cs, --connection-string <string>',\n 'Connection string for the database',\n )\n .option(\n '-col, --collection <name>',\n 'Specify the collection name',\n (value: string, previous: string[]) => {\n // Accumulate collection names into an array (explicitly typing `previous` as `string[]`)\n return previous.concat([value]);\n },\n [] as string[],\n )\n .option('-f, --config <path>', 'Path to configuration file with Pongo config')\n .option('-dr, --dryRun', 'Perform dry run without commiting changes', false)\n .action(async (options: MigrateRunOptions) => {\n const { collection, dryRun } = options;\n const connectionString =\n options.connectionString ?? process.env.DB_CONNECTION_STRING;\n let collectionNames: string[];\n\n if (!connectionString) {\n console.error(\n 'Error: Connection string is required. Provide it either as a \"--connection-string\" parameter or through the DB_CONNECTION_STRING environment variable.' +\n '\\nFor instance: --connection-string postgresql://postgres:postgres@localhost:5432/postgres',\n );\n process.exit(1);\n }\n\n if (options.config) {\n const config = await loadConfigFile(options.config);\n\n collectionNames = config.collections.map((c) => c.name);\n } else if (collection) {\n collectionNames = collection;\n } else {\n console.error(\n 'Error: You need to provide at least one collection name. Provide it either through \"--config\" file or as a \"--collection\" parameter.',\n );\n process.exit(1);\n }\n\n const pool = dumbo({ connectionString });\n\n const migrations = collectionNames.flatMap((collectionsName) =>\n pongoCollectionSchemaComponent(collectionsName).migrations({\n connector: 'PostgreSQL:pg', // TODO: Provide connector here\n }),\n );\n\n await runPostgreSQLMigrations(pool, migrations, {\n dryRun,\n });\n });\n\nmigrateCommand\n .command('sql')\n .description('Generate SQL for database migration')\n .option(\n '-col, --collection <name>',\n 'Specify the collection name',\n (value: string, previous: string[]) => {\n // Accumulate collection names into an array (explicitly typing `previous` as `string[]`)\n return previous.concat([value]);\n },\n [] as string[],\n )\n .option('-f, --config <path>', 'Path to configuration file with Pongo config')\n .option('--print', 'Print the SQL to the console (default)', true)\n //.option('--write <filename>', 'Write the SQL to a specified file')\n .action(async (options: MigrateSqlOptions) => {\n const { collection } = options;\n\n let collectionNames: string[];\n\n if (options.config) {\n const config = await loadConfigFile(options.config);\n\n collectionNames = config.collections.map((c) => c.name);\n } else if (collection) {\n collectionNames = collection;\n } else {\n console.error(\n 'Error: You need to provide at least one collection name. Provide it either through \"--config\" file or as a \"--collection\" parameter.',\n );\n process.exit(1);\n }\n\n const coreMigrations = migrationTableSchemaComponent.migrations({\n connector: 'PostgreSQL:pg',\n });\n const migrations = [\n ...coreMigrations,\n ...collectionNames.flatMap((collectionName) =>\n pongoCollectionSchemaComponent(collectionName).migrations({\n connector: 'PostgreSQL:pg', // TODO: Provide connector here\n }),\n ),\n ];\n\n console.log('Printing SQL:');\n console.log(combineMigrations(...migrations));\n });\n","import {\n checkConnection,\n color,\n LogLevel,\n LogStyle,\n prettyJson,\n SQL,\n type MigrationStyle,\n} from '@event-driven-io/dumbo';\nimport Table from 'cli-table3';\nimport { Command } from 'commander';\nimport repl from 'node:repl';\nimport {\n pongoClient,\n pongoSchema,\n type PongoClient,\n type PongoCollectionSchema,\n type PongoDb,\n} from '../core';\n\nlet pongo: PongoClient;\n\nconst calculateColumnWidths = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n results: any[],\n columnNames: string[],\n): number[] => {\n const columnWidths = columnNames.map((col) => {\n const maxWidth = Math.max(\n col.length, // Header size\n ...results.map((result) =>\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n result[col] ? String(result[col]).length : 0,\n ),\n );\n return maxWidth + 2; // Add padding\n });\n return columnWidths;\n};\n\nlet shouldDisplayResultsAsTable = false;\n\nconst printResultsAsTable = (print?: boolean) =>\n (shouldDisplayResultsAsTable = print === undefined || print === true);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst printOutput = (obj: any): string =>\n Array.isArray(obj) && shouldDisplayResultsAsTable\n ? displayResultsAsTable(obj)\n : prettyJson(obj);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst displayResultsAsTable = (results: any[]): string => {\n if (results.length === 0) {\n return color.yellow('No documents found.');\n }\n\n const columnNames = results\n\n .flatMap((result) =>\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n typeof result === 'object' ? Object.keys(result) : typeof result,\n )\n .filter((value, index, array) => array.indexOf(value) === index);\n\n const columnWidths = calculateColumnWidths(results, columnNames);\n\n const table = new Table({\n head: columnNames.map((col) => color.cyan(col)),\n colWidths: columnWidths,\n });\n\n results.forEach((result) => {\n table.push(\n columnNames.map((col) =>\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n result[col] !== undefined\n ? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n Array.isArray(result[col])\n ? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n displayResultsAsTable(result[col])\n : // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n prettyJson(result[col])\n : typeof result === 'object'\n ? ''\n : result != undefined && result != undefined\n ? prettyJson(result)\n : '',\n ),\n );\n });\n\n return table.toString();\n};\n\nconst setLogLevel = (logLevel: string) => {\n process.env.DUMBO_LOG_LEVEL = logLevel;\n};\n\nconst setLogStyle = (logLevel: string) => {\n process.env.DUMBO_LOG_STYLE = logLevel;\n};\n\nconst prettifyLogs = (logLevel?: string) => {\n if (logLevel !== undefined) setLogLevel(logLevel);\n setLogStyle(LogStyle.PRETTY);\n};\n\nconst startRepl = async (options: {\n logging: {\n printOptions: boolean;\n logLevel: LogLevel;\n logStyle: LogStyle;\n };\n schema: {\n database: string;\n collections: string[];\n autoMigration: MigrationStyle;\n };\n connectionString: string | undefined;\n}) => {\n // TODO: This will change when we have proper tracing and logging config\n // For now, that's enough\n setLogLevel(process.env.DUMBO_LOG_LEVEL ?? options.logging.logLevel);\n setLogStyle(process.env.DUMBO_LOG_STYLE ?? options.logging.logStyle);\n\n console.log(color.green('Starting Pongo Shell (version: 0.16.7)'));\n\n if (options.logging.printOptions) {\n console.log(color.green('With Options:'));\n console.log(prettyJson(options));\n }\n\n const connectionString =\n options.connectionString ??\n process.env.DB_CONNECTION_STRING ??\n 'postgresql://postgres:postgres@localhost:5432/postgres';\n\n if (!(options.connectionString ?? process.env.DB_CONNECTION_STRING)) {\n console.log(\n color.yellow(\n `No connection string provided, using: 'postgresql://postgres:postgres@localhost:5432/postgres'`,\n ),\n );\n }\n\n const connectionCheck = await checkConnection(connectionString);\n\n if (!connectionCheck.successful) {\n if (connectionCheck.errorType === 'ConnectionRefused') {\n console.error(\n color.red(\n `Connection was refused. Check if the PostgreSQL server is running and accessible.`,\n ),\n );\n } else if (connectionCheck.errorType === 'Authentication') {\n console.error(\n color.red(\n `Authentication failed. Check the username and password in the connection string.`,\n ),\n );\n } else {\n console.error(color.red('Error connecting to PostgreSQL server'));\n }\n console.log(color.red('Exiting Pongo Shell...'));\n process.exit();\n }\n\n console.log(color.green(`Successfully connected`));\n console.log(color.green('Use db.<collection>.<method>() to query.'));\n\n const shell = repl.start({\n prompt: color.green('pongo> '),\n useGlobal: true,\n breakEvalOnSigint: true,\n writer: printOutput,\n });\n\n let db: PongoDb;\n\n if (options.schema.collections.length > 0) {\n const collectionsSchema: Record<string, PongoCollectionSchema> = {};\n\n for (const collectionName of options.schema.collections) {\n collectionsSchema[collectionName] =\n pongoSchema.collection(collectionName);\n }\n\n const schema = pongoSchema.client({\n database: pongoSchema.db(options.schema.database, collectionsSchema),\n });\n\n const typedClient = pongoClient(connectionString, {\n schema: {\n definition: schema,\n autoMigration: options.schema.autoMigration,\n },\n });\n\n db = typedClient.database;\n\n for (const collectionName of options.schema.collections) {\n shell.context[collectionName] = typedClient.database[collectionName];\n }\n\n pongo = typedClient;\n } else {\n pongo = pongoClient(connectionString, {\n schema: { autoMigration: options.schema.autoMigration },\n });\n\n db = pongo.db(options.schema.database);\n }\n\n shell.context.pongo = pongo;\n shell.context.db = db;\n\n // helpers\n shell.context.SQL = SQL;\n shell.context.setLogLevel = setLogLevel;\n shell.context.setLogStyle = setLogStyle;\n shell.context.prettifyLogs = prettifyLogs;\n shell.context.printResultsAsTable = printResultsAsTable;\n shell.context.LogStyle = LogStyle;\n shell.context.LogLevel = LogLevel;\n\n // Intercept REPL output to display results as a table if they are arrays\n shell.on('exit', async () => {\n await teardown();\n process.exit();\n });\n\n shell.on('SIGINT', async () => {\n await teardown();\n process.exit();\n });\n};\n\nconst teardown = async () => {\n console.log(color.yellow('Exiting Pongo Shell...'));\n await pongo.close();\n};\n\nprocess.on('uncaughtException', teardown);\nprocess.on('SIGINT', teardown);\n\ninterface ShellOptions {\n database: string;\n collection: string[];\n connectionString?: string;\n disableAutoMigrations: boolean;\n logStyle?: string;\n logLevel?: string;\n prettyLog?: boolean;\n printOptions?: boolean;\n}\n\nconst shellCommand = new Command('shell')\n .description('Start an interactive Pongo shell')\n .option(\n '-cs, --connectionString <string>',\n 'Connection string for the database',\n )\n .option('-db, --database <string>', 'Database name to connect', 'postgres')\n .option(\n '-col, --collection <name>',\n 'Specify the collection name',\n (value: string, previous: string[]) => {\n // Accumulate collection names into an array (explicitly typing `previous` as `string[]`)\n return previous.concat([value]);\n },\n [] as string[],\n )\n .option(\n '-no-migrations, --disable-auto-migrations',\n 'Disable automatic migrations',\n )\n .option('-o, --print-options', 'Print shell options')\n .option(\n '-ll, --log-level <logLevel>',\n 'Log level: DISABLED, INFO, LOG, WARN, ERROR',\n 'DISABLED',\n )\n .option('-ls, --log-style', 'Log style: RAW, PRETTY', 'RAW')\n .option('-p, --pretty-log', 'Turn on logging with prettified output')\n .action(async (options: ShellOptions) => {\n const { collection, database } = options;\n const connectionString = options.connectionString;\n\n await startRepl({\n logging: {\n printOptions: options.printOptions === true,\n logStyle: options.prettyLog\n ? LogStyle.PRETTY\n : ((options.logStyle as LogStyle | undefined) ?? LogStyle.RAW),\n logLevel: options.logLevel\n ? (options.logLevel as LogLevel)\n : options.prettyLog\n ? LogLevel.INFO\n : LogLevel.DISABLED,\n },\n schema: {\n collections: collection,\n database,\n autoMigration: options.disableAutoMigrations\n ? 'None'\n : 'CreateOrUpdate',\n },\n connectionString,\n });\n });\n\nexport { shellCommand };\n"],"mappings":"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","names":["Command","Command","Command","Command","Command","Command"]}
1
+ {"version":3,"sources":["../src/cli.ts","../src/commandLine/configFile.ts","../src/commandLine/migrate.ts","../src/commandLine/shell.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { configCommand, migrateCommand, shellCommand } from './commandLine';\n\nconst program = new Command();\n\nprogram.name('pongo').description('CLI tool for Pongo');\n\nprogram.addCommand(configCommand);\nprogram.addCommand(migrateCommand);\nprogram.addCommand(shellCommand);\n\nprogram.parse(process.argv);\n\nexport default program;\n","import { Command } from 'commander';\nimport fs from 'node:fs';\nimport {\n objectEntries,\n toDbSchemaMetadata,\n type PongoDbSchemaMetadata,\n type PongoSchemaConfig,\n} from '../core';\n\nconst formatTypeName = (input: string): string => {\n if (input.length === 0) {\n return input;\n }\n\n let formatted = input.charAt(0).toUpperCase() + input.slice(1);\n\n if (formatted.endsWith('s')) {\n formatted = formatted.slice(0, -1);\n }\n\n return formatted;\n};\n\nconst sampleConfig = (collectionNames: string[] = ['users']) => {\n const types = collectionNames\n .map(\n (name) =>\n `export type ${formatTypeName(name)} = { name: string; description: string; date: Date }`,\n )\n .join('\\n');\n\n const collections = collectionNames\n .map(\n (name) =>\n ` ${name}: pongoSchema.collection<${formatTypeName(name)}>('${name}'),`,\n )\n .join('\\n');\n\n return `import { pongoSchema } from '@event-driven-io/pongo';\n\n${types}\n\nexport default {\n schema: pongoSchema.client({\n database: pongoSchema.db({\n${collections}\n }),\n }),\n};`;\n};\n\nconst missingDefaultExport = `Error: Config should contain default export, e.g.\\n\\n${sampleConfig()}`;\nconst missingSchema = `Error: Config should contain schema property, e.g.\\n\\n${sampleConfig()}`;\nconst missingDbs = `Error: Config should have at least a single database defined, e.g.\\n\\n${sampleConfig()}`;\nconst missingDefaultDb = `Error: Config should have a default database defined (without name or or with default database name), e.g.\\n\\n${sampleConfig()}`;\nconst missingCollections = `Error: Database should have defined at least one collection, e.g.\\n\\n${sampleConfig()}`;\n\nexport const loadConfigFile = async (\n configPath: string,\n): Promise<PongoDbSchemaMetadata> => {\n const configUrl = new URL(configPath, `file://${process.cwd()}/`);\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const imported: Partial<{ default: PongoSchemaConfig }> = await import(\n configUrl.href\n );\n\n const parsed = parseDefaultDbSchema(imported);\n\n if (typeof parsed === 'string') {\n console.error(parsed);\n process.exit(1);\n }\n\n return parsed;\n } catch {\n console.error(`Error: Couldn't load file: ${configUrl.href}`);\n process.exit(1);\n }\n};\n\nexport const generateConfigFile = (\n configPath: string,\n collectionNames: string[],\n): void => {\n try {\n fs.writeFileSync(configPath, sampleConfig(collectionNames), 'utf8');\n console.log(`Configuration file stored at: ${configPath}`);\n } catch (error) {\n console.error(`Error: Couldn't store config file: ${configPath}!`);\n console.error(error);\n process.exit(1);\n }\n};\n\nexport const parseDefaultDbSchema = (\n imported: Partial<{ default: PongoSchemaConfig }>,\n): PongoDbSchemaMetadata | string => {\n if (!imported.default) {\n return missingDefaultExport;\n }\n\n if (!imported.default.schema) {\n return missingSchema;\n }\n\n if (!imported.default.schema.dbs) {\n return missingDbs;\n }\n\n const dbs = objectEntries(imported.default.schema.dbs).map((db) => db[1]);\n\n const defaultDb = dbs.find((db) => db.name === undefined);\n\n if (!defaultDb) {\n return missingDefaultDb;\n }\n\n if (!defaultDb.collections) {\n return missingCollections;\n }\n\n const collections = objectEntries(defaultDb.collections).map((col) => col[1]);\n\n if (collections.length === 0) {\n return missingCollections;\n }\n\n return toDbSchemaMetadata(defaultDb);\n};\n\ntype SampleConfigOptions =\n | {\n collection: string[];\n print?: boolean;\n }\n | {\n collection: string[];\n generate?: boolean;\n file?: string;\n };\n\nexport const configCommand = new Command('config').description(\n 'Manage Pongo configuration',\n);\n\nconfigCommand\n .command('sample')\n .description('Generate or print sample configuration')\n .option(\n '-col, --collection <name>',\n 'Specify the collection name',\n (value: string, previous: string[]) => {\n // Accumulate collection names into an array (explicitly typing `previous` as `string[]`)\n return previous.concat([value]);\n },\n [] as string[],\n )\n .option(\n '-f, --file <path>',\n 'Path to configuration file with collection list',\n )\n .option('-g, --generate', 'Generate sample config file')\n .option('-p, --print', 'Print sample config file')\n .action((options: SampleConfigOptions) => {\n const collectionNames =\n options.collection.length > 0 ? options.collection : ['users'];\n\n if (!('print' in options) && !('generate' in options)) {\n console.error(\n 'Error: Please provide either:\\n--print param to print sample config or\\n--generate to generate sample config file',\n );\n process.exit(1);\n }\n\n if ('print' in options) {\n console.log(`${sampleConfig(collectionNames)}`);\n } else if ('generate' in options) {\n if (!options.file) {\n console.error(\n 'Error: You need to provide a config file through a --file',\n );\n process.exit(1);\n }\n\n generateConfigFile(options.file, collectionNames);\n }\n });\n","import {\n combineMigrations,\n dumbo,\n migrationTableSchemaComponent,\n runPostgreSQLMigrations,\n} from '@event-driven-io/dumbo';\nimport { Command } from 'commander';\nimport { pongoCollectionSchemaComponent } from '../core';\nimport { loadConfigFile } from './configFile';\n\ninterface MigrateRunOptions {\n collection: string[];\n connectionString: string;\n config?: string;\n dryRun?: boolean;\n}\n\ninterface MigrateSqlOptions {\n print?: boolean;\n write?: string;\n config?: string;\n collection: string[];\n}\n\nexport const migrateCommand = new Command('migrate').description(\n 'Manage database migrations',\n);\n\nmigrateCommand\n .command('run')\n .description('Run database migrations')\n .option(\n '-cs, --connection-string <string>',\n 'Connection string for the database',\n )\n .option(\n '-col, --collection <name>',\n 'Specify the collection name',\n (value: string, previous: string[]) => {\n // Accumulate collection names into an array (explicitly typing `previous` as `string[]`)\n return previous.concat([value]);\n },\n [] as string[],\n )\n .option('-f, --config <path>', 'Path to configuration file with Pongo config')\n .option('-dr, --dryRun', 'Perform dry run without commiting changes', false)\n .action(async (options: MigrateRunOptions) => {\n const { collection, dryRun } = options;\n const connectionString =\n options.connectionString ?? process.env.DB_CONNECTION_STRING;\n let collectionNames: string[];\n\n if (!connectionString) {\n console.error(\n 'Error: Connection string is required. Provide it either as a \"--connection-string\" parameter or through the DB_CONNECTION_STRING environment variable.' +\n '\\nFor instance: --connection-string postgresql://postgres:postgres@localhost:5432/postgres',\n );\n process.exit(1);\n }\n\n if (options.config) {\n const config = await loadConfigFile(options.config);\n\n collectionNames = config.collections.map((c) => c.name);\n } else if (collection) {\n collectionNames = collection;\n } else {\n console.error(\n 'Error: You need to provide at least one collection name. Provide it either through \"--config\" file or as a \"--collection\" parameter.',\n );\n process.exit(1);\n }\n\n const pool = dumbo({ connectionString });\n\n const migrations = collectionNames.flatMap((collectionsName) =>\n pongoCollectionSchemaComponent(collectionsName).migrations({\n connector: 'PostgreSQL:pg', // TODO: Provide connector here\n }),\n );\n\n await runPostgreSQLMigrations(pool, migrations, {\n dryRun,\n });\n });\n\nmigrateCommand\n .command('sql')\n .description('Generate SQL for database migration')\n .option(\n '-col, --collection <name>',\n 'Specify the collection name',\n (value: string, previous: string[]) => {\n // Accumulate collection names into an array (explicitly typing `previous` as `string[]`)\n return previous.concat([value]);\n },\n [] as string[],\n )\n .option('-f, --config <path>', 'Path to configuration file with Pongo config')\n .option('--print', 'Print the SQL to the console (default)', true)\n //.option('--write <filename>', 'Write the SQL to a specified file')\n .action(async (options: MigrateSqlOptions) => {\n const { collection } = options;\n\n let collectionNames: string[];\n\n if (options.config) {\n const config = await loadConfigFile(options.config);\n\n collectionNames = config.collections.map((c) => c.name);\n } else if (collection) {\n collectionNames = collection;\n } else {\n console.error(\n 'Error: You need to provide at least one collection name. Provide it either through \"--config\" file or as a \"--collection\" parameter.',\n );\n process.exit(1);\n }\n\n const coreMigrations = migrationTableSchemaComponent.migrations({\n connector: 'PostgreSQL:pg',\n });\n const migrations = [\n ...coreMigrations,\n ...collectionNames.flatMap((collectionName) =>\n pongoCollectionSchemaComponent(collectionName).migrations({\n connector: 'PostgreSQL:pg', // TODO: Provide connector here\n }),\n ),\n ];\n\n console.log('Printing SQL:');\n console.log(combineMigrations(...migrations));\n });\n","import {\n checkConnection,\n color,\n LogLevel,\n LogStyle,\n prettyJson,\n SQL,\n type MigrationStyle,\n} from '@event-driven-io/dumbo';\nimport Table from 'cli-table3';\nimport { Command } from 'commander';\nimport repl from 'node:repl';\nimport {\n pongoClient,\n pongoSchema,\n type PongoClient,\n type PongoCollectionSchema,\n type PongoDb,\n} from '../core';\n\nlet pongo: PongoClient;\n\nconst calculateColumnWidths = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n results: any[],\n columnNames: string[],\n): number[] => {\n const columnWidths = columnNames.map((col) => {\n const maxWidth = Math.max(\n col.length, // Header size\n ...results.map((result) =>\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n result[col] ? String(result[col]).length : 0,\n ),\n );\n return maxWidth + 2; // Add padding\n });\n return columnWidths;\n};\n\nlet shouldDisplayResultsAsTable = false;\n\nconst printResultsAsTable = (print?: boolean) =>\n (shouldDisplayResultsAsTable = print === undefined || print === true);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst printOutput = (obj: any): string =>\n Array.isArray(obj) && shouldDisplayResultsAsTable\n ? displayResultsAsTable(obj)\n : prettyJson(obj);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst displayResultsAsTable = (results: any[]): string => {\n if (results.length === 0) {\n return color.yellow('No documents found.');\n }\n\n const columnNames = results\n\n .flatMap((result) =>\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n typeof result === 'object' ? Object.keys(result) : typeof result,\n )\n .filter((value, index, array) => array.indexOf(value) === index);\n\n const columnWidths = calculateColumnWidths(results, columnNames);\n\n const table = new Table({\n head: columnNames.map((col) => color.cyan(col)),\n colWidths: columnWidths,\n });\n\n results.forEach((result) => {\n table.push(\n columnNames.map((col) =>\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n result[col] !== undefined\n ? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n Array.isArray(result[col])\n ? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n displayResultsAsTable(result[col])\n : // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n prettyJson(result[col])\n : typeof result === 'object'\n ? ''\n : result != undefined && result != undefined\n ? prettyJson(result)\n : '',\n ),\n );\n });\n\n return table.toString();\n};\n\nconst setLogLevel = (logLevel: string) => {\n process.env.DUMBO_LOG_LEVEL = logLevel;\n};\n\nconst setLogStyle = (logLevel: string) => {\n process.env.DUMBO_LOG_STYLE = logLevel;\n};\n\nconst prettifyLogs = (logLevel?: string) => {\n if (logLevel !== undefined) setLogLevel(logLevel);\n setLogStyle(LogStyle.PRETTY);\n};\n\nconst startRepl = async (options: {\n logging: {\n printOptions: boolean;\n logLevel: LogLevel;\n logStyle: LogStyle;\n };\n schema: {\n database: string;\n collections: string[];\n autoMigration: MigrationStyle;\n };\n connectionString: string | undefined;\n}) => {\n // TODO: This will change when we have proper tracing and logging config\n // For now, that's enough\n setLogLevel(process.env.DUMBO_LOG_LEVEL ?? options.logging.logLevel);\n setLogStyle(process.env.DUMBO_LOG_STYLE ?? options.logging.logStyle);\n\n console.log(color.green('Starting Pongo Shell (version: 0.16.8)'));\n\n if (options.logging.printOptions) {\n console.log(color.green('With Options:'));\n console.log(prettyJson(options));\n }\n\n const connectionString =\n options.connectionString ??\n process.env.DB_CONNECTION_STRING ??\n 'postgresql://postgres:postgres@localhost:5432/postgres';\n\n if (!(options.connectionString ?? process.env.DB_CONNECTION_STRING)) {\n console.log(\n color.yellow(\n `No connection string provided, using: 'postgresql://postgres:postgres@localhost:5432/postgres'`,\n ),\n );\n }\n\n const connectionCheck = await checkConnection(connectionString);\n\n if (!connectionCheck.successful) {\n if (connectionCheck.errorType === 'ConnectionRefused') {\n console.error(\n color.red(\n `Connection was refused. Check if the PostgreSQL server is running and accessible.`,\n ),\n );\n } else if (connectionCheck.errorType === 'Authentication') {\n console.error(\n color.red(\n `Authentication failed. Check the username and password in the connection string.`,\n ),\n );\n } else {\n console.error(color.red('Error connecting to PostgreSQL server'));\n }\n console.log(color.red('Exiting Pongo Shell...'));\n process.exit();\n }\n\n console.log(color.green(`Successfully connected`));\n console.log(color.green('Use db.<collection>.<method>() to query.'));\n\n const shell = repl.start({\n prompt: color.green('pongo> '),\n useGlobal: true,\n breakEvalOnSigint: true,\n writer: printOutput,\n });\n\n let db: PongoDb;\n\n if (options.schema.collections.length > 0) {\n const collectionsSchema: Record<string, PongoCollectionSchema> = {};\n\n for (const collectionName of options.schema.collections) {\n collectionsSchema[collectionName] =\n pongoSchema.collection(collectionName);\n }\n\n const schema = pongoSchema.client({\n database: pongoSchema.db(options.schema.database, collectionsSchema),\n });\n\n const typedClient = pongoClient(connectionString, {\n schema: {\n definition: schema,\n autoMigration: options.schema.autoMigration,\n },\n });\n\n db = typedClient.database;\n\n for (const collectionName of options.schema.collections) {\n shell.context[collectionName] = typedClient.database[collectionName];\n }\n\n pongo = typedClient;\n } else {\n pongo = pongoClient(connectionString, {\n schema: { autoMigration: options.schema.autoMigration },\n });\n\n db = pongo.db(options.schema.database);\n }\n\n shell.context.pongo = pongo;\n shell.context.db = db;\n\n // helpers\n shell.context.SQL = SQL;\n shell.context.setLogLevel = setLogLevel;\n shell.context.setLogStyle = setLogStyle;\n shell.context.prettifyLogs = prettifyLogs;\n shell.context.printResultsAsTable = printResultsAsTable;\n shell.context.LogStyle = LogStyle;\n shell.context.LogLevel = LogLevel;\n\n // Intercept REPL output to display results as a table if they are arrays\n shell.on('exit', async () => {\n await teardown();\n process.exit();\n });\n\n shell.on('SIGINT', async () => {\n await teardown();\n process.exit();\n });\n};\n\nconst teardown = async () => {\n console.log(color.yellow('Exiting Pongo Shell...'));\n await pongo.close();\n};\n\nprocess.on('uncaughtException', teardown);\nprocess.on('SIGINT', teardown);\n\ninterface ShellOptions {\n database: string;\n collection: string[];\n connectionString?: string;\n disableAutoMigrations: boolean;\n logStyle?: string;\n logLevel?: string;\n prettyLog?: boolean;\n printOptions?: boolean;\n}\n\nconst shellCommand = new Command('shell')\n .description('Start an interactive Pongo shell')\n .option(\n '-cs, --connectionString <string>',\n 'Connection string for the database',\n )\n .option('-db, --database <string>', 'Database name to connect', 'postgres')\n .option(\n '-col, --collection <name>',\n 'Specify the collection name',\n (value: string, previous: string[]) => {\n // Accumulate collection names into an array (explicitly typing `previous` as `string[]`)\n return previous.concat([value]);\n },\n [] as string[],\n )\n .option(\n '-no-migrations, --disable-auto-migrations',\n 'Disable automatic migrations',\n )\n .option('-o, --print-options', 'Print shell options')\n .option(\n '-ll, --log-level <logLevel>',\n 'Log level: DISABLED, INFO, LOG, WARN, ERROR',\n 'DISABLED',\n )\n .option('-ls, --log-style', 'Log style: RAW, PRETTY', 'RAW')\n .option('-p, --pretty-log', 'Turn on logging with prettified output')\n .action(async (options: ShellOptions) => {\n const { collection, database } = options;\n const connectionString = options.connectionString;\n\n await startRepl({\n logging: {\n printOptions: options.printOptions === true,\n logStyle: options.prettyLog\n ? LogStyle.PRETTY\n : ((options.logStyle as LogStyle | undefined) ?? LogStyle.RAW),\n logLevel: options.logLevel\n ? (options.logLevel as LogLevel)\n : options.prettyLog\n ? LogLevel.INFO\n : LogLevel.DISABLED,\n },\n schema: {\n collections: collection,\n database,\n autoMigration: options.disableAutoMigrations\n ? 'None'\n : 'CreateOrUpdate',\n },\n connectionString,\n });\n });\n\nexport { shellCommand };\n"],"mappings":"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","names":["Command","Command","Command","Command","Command","Command"]}
package/dist/index.cjs CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
 
38
38
 
39
- var _chunkAH4TCORKcjs = require('./chunk-AH4TCORK.cjs');
39
+ var _chunkNA3ELYRRcjs = require('./chunk-NA3ELYRR.cjs');
40
40
 
41
41
 
42
42
 
@@ -75,5 +75,5 @@ var _chunkAH4TCORKcjs = require('./chunk-AH4TCORK.cjs');
75
75
 
76
76
 
77
77
 
78
- exports.ConcurrencyError = _chunkAH4TCORKcjs.ConcurrencyError; exports.DOCUMENT_DOES_NOT_EXIST = _chunkAH4TCORKcjs.DOCUMENT_DOES_NOT_EXIST; exports.DOCUMENT_EXISTS = _chunkAH4TCORKcjs.DOCUMENT_EXISTS; exports.NO_CONCURRENCY_CHECK = _chunkAH4TCORKcjs.NO_CONCURRENCY_CHECK; exports.ObjectId = _chunkAH4TCORKcjs.ObjectId; exports.OperatorMap = _chunkAH4TCORKcjs.OperatorMap; exports.PongoError = _chunkAH4TCORKcjs.PongoError; exports.QueryOperators = _chunkAH4TCORKcjs.QueryOperators; exports.clientToDbOptions = _chunkAH4TCORKcjs.clientToDbOptions; exports.deepEquals = _chunkAH4TCORKcjs.deepEquals; exports.expectedVersion = _chunkAH4TCORKcjs.expectedVersion; exports.expectedVersionValue = _chunkAH4TCORKcjs.expectedVersionValue; exports.getPongoDb = _chunkAH4TCORKcjs.getPongoDb; exports.hasOperators = _chunkAH4TCORKcjs.hasOperators; exports.isEquatable = _chunkAH4TCORKcjs.isEquatable; exports.isGeneralExpectedDocumentVersion = _chunkAH4TCORKcjs.isGeneralExpectedDocumentVersion; exports.isNumber = _chunkAH4TCORKcjs.isNumber; exports.isOperator = _chunkAH4TCORKcjs.isOperator; exports.isPostgresClientOptions = _chunkAH4TCORKcjs.isPostgresClientOptions; exports.isString = _chunkAH4TCORKcjs.isString; exports.objectEntries = _chunkAH4TCORKcjs.objectEntries; exports.operationResult = _chunkAH4TCORKcjs.operationResult; exports.pongoClient = _chunkAH4TCORKcjs.pongoClient; exports.pongoCollection = _chunkAH4TCORKcjs.pongoCollection; exports.pongoCollectionPostgreSQLMigrations = _chunkAH4TCORKcjs.pongoCollectionPostgreSQLMigrations; exports.pongoCollectionSchemaComponent = _chunkAH4TCORKcjs.pongoCollectionSchemaComponent; exports.pongoDbSchemaComponent = _chunkAH4TCORKcjs.pongoDbSchemaComponent; exports.pongoSchema = _chunkAH4TCORKcjs.pongoSchema; exports.pongoSession = _chunkAH4TCORKcjs.pongoSession; exports.pongoTransaction = _chunkAH4TCORKcjs.pongoTransaction; exports.postgresDb = _chunkAH4TCORKcjs.postgresDb; exports.postgresSQLBuilder = _chunkAH4TCORKcjs.postgresSQLBuilder; exports.proxyClientWithSchema = _chunkAH4TCORKcjs.proxyClientWithSchema; exports.proxyPongoDbWithSchema = _chunkAH4TCORKcjs.proxyPongoDbWithSchema; exports.toClientSchemaMetadata = _chunkAH4TCORKcjs.toClientSchemaMetadata; exports.toDbSchemaMetadata = _chunkAH4TCORKcjs.toDbSchemaMetadata; exports.transactionExecutorOrDefault = _chunkAH4TCORKcjs.transactionExecutorOrDefault;
78
+ exports.ConcurrencyError = _chunkNA3ELYRRcjs.ConcurrencyError; exports.DOCUMENT_DOES_NOT_EXIST = _chunkNA3ELYRRcjs.DOCUMENT_DOES_NOT_EXIST; exports.DOCUMENT_EXISTS = _chunkNA3ELYRRcjs.DOCUMENT_EXISTS; exports.NO_CONCURRENCY_CHECK = _chunkNA3ELYRRcjs.NO_CONCURRENCY_CHECK; exports.ObjectId = _chunkNA3ELYRRcjs.ObjectId; exports.OperatorMap = _chunkNA3ELYRRcjs.OperatorMap; exports.PongoError = _chunkNA3ELYRRcjs.PongoError; exports.QueryOperators = _chunkNA3ELYRRcjs.QueryOperators; exports.clientToDbOptions = _chunkNA3ELYRRcjs.clientToDbOptions; exports.deepEquals = _chunkNA3ELYRRcjs.deepEquals; exports.expectedVersion = _chunkNA3ELYRRcjs.expectedVersion; exports.expectedVersionValue = _chunkNA3ELYRRcjs.expectedVersionValue; exports.getPongoDb = _chunkNA3ELYRRcjs.getPongoDb; exports.hasOperators = _chunkNA3ELYRRcjs.hasOperators; exports.isEquatable = _chunkNA3ELYRRcjs.isEquatable; exports.isGeneralExpectedDocumentVersion = _chunkNA3ELYRRcjs.isGeneralExpectedDocumentVersion; exports.isNumber = _chunkNA3ELYRRcjs.isNumber; exports.isOperator = _chunkNA3ELYRRcjs.isOperator; exports.isPostgresClientOptions = _chunkNA3ELYRRcjs.isPostgresClientOptions; exports.isString = _chunkNA3ELYRRcjs.isString; exports.objectEntries = _chunkNA3ELYRRcjs.objectEntries; exports.operationResult = _chunkNA3ELYRRcjs.operationResult; exports.pongoClient = _chunkNA3ELYRRcjs.pongoClient; exports.pongoCollection = _chunkNA3ELYRRcjs.pongoCollection; exports.pongoCollectionPostgreSQLMigrations = _chunkNA3ELYRRcjs.pongoCollectionPostgreSQLMigrations; exports.pongoCollectionSchemaComponent = _chunkNA3ELYRRcjs.pongoCollectionSchemaComponent; exports.pongoDbSchemaComponent = _chunkNA3ELYRRcjs.pongoDbSchemaComponent; exports.pongoSchema = _chunkNA3ELYRRcjs.pongoSchema; exports.pongoSession = _chunkNA3ELYRRcjs.pongoSession; exports.pongoTransaction = _chunkNA3ELYRRcjs.pongoTransaction; exports.postgresDb = _chunkNA3ELYRRcjs.postgresDb; exports.postgresSQLBuilder = _chunkNA3ELYRRcjs.postgresSQLBuilder; exports.proxyClientWithSchema = _chunkNA3ELYRRcjs.proxyClientWithSchema; exports.proxyPongoDbWithSchema = _chunkNA3ELYRRcjs.proxyPongoDbWithSchema; exports.toClientSchemaMetadata = _chunkNA3ELYRRcjs.toClientSchemaMetadata; exports.toDbSchemaMetadata = _chunkNA3ELYRRcjs.toDbSchemaMetadata; exports.transactionExecutorOrDefault = _chunkNA3ELYRRcjs.transactionExecutorOrDefault;
79
79
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.cts CHANGED
@@ -1,23 +1,26 @@
1
1
  import { Dumbo, SQLMigration, SQL, MigrationStyle, SchemaComponent, SQLExecutor } from '@event-driven-io/dumbo';
2
- import { P as PongoDocument, a as PongoDb, O as OptionalUnlessRequiredIdAndVersion, b as PongoFilter, c as PongoUpdate, U as UpdateOneOptions, W as WithoutId, R as ReplaceOneOptions, D as DeleteOneOptions, d as PongoCollection, C as CollectionOperationOptions, e as PongoTransactionOptions, f as PongoSession, g as PongoDbTransaction } from './pongoClient-CF1GiWGx.cjs';
3
- export { $ as $inc, h as $push, i as $set, j as $unset, A as AllowedDbClientOptions, k as AlternativeType, l as CollectionsMap, m as Condition, n as DBsMap, o as DOCUMENT_DOES_NOT_EXIST, p as DOCUMENT_EXISTS, q as DeleteManyOptions, r as Document, s as DocumentHandler, E as EnhancedOmit, t as ExpectedDocumentVersion, u as ExpectedDocumentVersionGeneral, v as ExpectedDocumentVersionValue, H as HandleOptions, w as HasId, I as InferIdType, x as InsertManyOptions, y as InsertOneOptions, N as NO_CONCURRENCY_CHECK, z as NonObjectIdLikeDocument, B as NotPooledPongoOptions, F as ObjectId, G as ObjectIdLike, J as OperationResult, K as OptionalId, L as OptionalUnlessRequiredId, M as OptionalUnlessRequiredVersion, Q as OptionalVersion, S as PongoClient, T as PongoClientOptions, V as PongoClientSchema, X as PongoClientSchemaMetadata, Y as PongoClientWithSchema, Z as PongoCollectionSchema, _ as PongoCollectionSchemaMetadata, a0 as PongoDbClientOptions, a1 as PongoDbSchema, a2 as PongoDbSchemaMetadata, a3 as PongoDbWithSchema, a4 as PongoDeleteManyResult, a5 as PongoDeleteResult, a6 as PongoFilterOperator, a7 as PongoHandleResult, a8 as PongoInsertManyResult, a9 as PongoInsertOneResult, aa as PongoSchemaConfig, ab as PongoUpdateManyResult, ac as PongoUpdateResult, ad as PooledPongoClientOptions, ae as PostgresDbClientOptions, af as RegExpOrString, ag as RootFilterOperators, ah as UpdateManyOptions, ai as WithId, aj as WithIdAndVersion, ak as WithVersion, al as WithoutIdAndVersion, am as WithoutVersion, an as clientToDbOptions, ao as expectedVersion, ap as expectedVersionValue, aq as getPongoDb, ar as isGeneralExpectedDocumentVersion, as as isPostgresClientOptions, at as operationResult, au as pongoClient, av as pongoDbSchemaComponent, aw as pongoSchema, ax as postgresDb, ay as proxyClientWithSchema, az as proxyPongoDbWithSchema, aA as toClientSchemaMetadata, aB as toDbSchemaMetadata } from './pongoClient-CF1GiWGx.cjs';
2
+ import { P as PongoDocument, a as PongoDb, O as OptionalUnlessRequiredIdAndVersion, b as PongoFilter, c as PongoUpdate, U as UpdateOneOptions, W as WithoutId, R as ReplaceOneOptions, D as DeleteOneOptions, d as PongoCollection, C as CollectionOperationOptions, e as PongoTransactionOptions, f as PongoSession, g as PongoDbTransaction } from './pongoClient-CML2ZSy3.cjs';
3
+ export { $ as $inc, h as $push, i as $set, j as $unset, A as AllowedDbClientOptions, k as AlternativeType, l as CollectionsMap, m as Condition, n as DBsMap, o as DOCUMENT_DOES_NOT_EXIST, p as DOCUMENT_EXISTS, q as DeleteManyOptions, r as Document, s as DocumentHandler, E as EnhancedOmit, t as ExpectedDocumentVersion, u as ExpectedDocumentVersionGeneral, v as ExpectedDocumentVersionValue, H as HandleOptions, w as HasId, I as InferIdType, x as InsertManyOptions, y as InsertOneOptions, N as NO_CONCURRENCY_CHECK, z as NonObjectIdLikeDocument, B as NotPooledPongoOptions, F as ObjectId, G as ObjectIdLike, J as OperationResult, K as OptionalId, L as OptionalUnlessRequiredId, M as OptionalUnlessRequiredVersion, Q as OptionalVersion, S as PongoClient, T as PongoClientOptions, V as PongoClientSchema, X as PongoClientSchemaMetadata, Y as PongoClientWithSchema, Z as PongoCollectionSchema, _ as PongoCollectionSchemaMetadata, a0 as PongoDBCollectionOptions, a1 as PongoDbClientOptions, a2 as PongoDbSchema, a3 as PongoDbSchemaMetadata, a4 as PongoDbWithSchema, a5 as PongoDeleteManyResult, a6 as PongoDeleteResult, a7 as PongoFilterOperator, a8 as PongoHandleResult, a9 as PongoInsertManyResult, aa as PongoInsertOneResult, ab as PongoSchemaConfig, ac as PongoUpdateManyResult, ad as PongoUpdateResult, ae as PooledPongoClientOptions, af as PostgresDbClientOptions, ag as RegExpOrString, ah as RootFilterOperators, ai as UpdateManyOptions, aj as WithId, ak as WithIdAndVersion, al as WithVersion, am as WithoutIdAndVersion, an as WithoutVersion, ao as clientToDbOptions, ap as expectedVersion, aq as expectedVersionValue, ar as getPongoDb, as as isGeneralExpectedDocumentVersion, at as isPostgresClientOptions, au as operationResult, av as pongoClient, aw as pongoDbSchemaComponent, ax as pongoSchema, ay as postgresDb, az as proxyClientWithSchema, aA as proxyPongoDbWithSchema, aB as toClientSchemaMetadata, aC as toDbSchemaMetadata } from './pongoClient-CML2ZSy3.cjs';
4
4
  import 'pg';
5
5
 
6
- type PongoCollectionOptions<T extends PongoDocument = PongoDocument, ConnectorType extends string = string> = {
6
+ type PongoCollectionOptions<T extends PongoDocument = PongoDocument, ConnectorType extends string = string, Payload extends PongoDocument = T> = {
7
7
  db: PongoDb<ConnectorType>;
8
8
  collectionName: string;
9
9
  pool: Dumbo;
10
10
  sqlBuilder: PongoCollectionSQLBuilder;
11
11
  schema?: {
12
12
  autoMigration?: MigrationStyle;
13
- upcast?: (document: Record<string, unknown>) => T;
13
+ versioning?: {
14
+ upcast?: (doc: Payload) => T;
15
+ downcast?: (doc: T) => Payload;
16
+ };
14
17
  };
15
18
  errors?: {
16
19
  throwOnOperationFailures?: boolean;
17
20
  };
18
21
  };
19
22
  declare const transactionExecutorOrDefault: <ConnectorType extends string = string>(db: PongoDb<ConnectorType>, options: CollectionOperationOptions | undefined, defaultSqlExecutor: SQLExecutor) => Promise<SQLExecutor>;
20
- declare const pongoCollection: <T extends PongoDocument, ConnectorType extends string = string>({ db, collectionName, pool, sqlBuilder: SqlFor, schema, errors, }: PongoCollectionOptions<T, ConnectorType>) => PongoCollection<T>;
23
+ declare const pongoCollection: <T extends PongoDocument, ConnectorType extends string = string, Payload extends PongoDocument = T>({ db, collectionName, pool, sqlBuilder: SqlFor, schema, errors, }: PongoCollectionOptions<T, ConnectorType, Payload>) => PongoCollection<T>;
21
24
  declare const pongoCollectionSchemaComponent: (collectionName: string) => SchemaComponent;
22
25
  type PongoCollectionSQLBuilder = {
23
26
  migrations: () => SQLMigration[];
package/dist/index.d.ts CHANGED
@@ -1,23 +1,26 @@
1
1
  import { Dumbo, SQLMigration, SQL, MigrationStyle, SchemaComponent, SQLExecutor } from '@event-driven-io/dumbo';
2
- import { P as PongoDocument, a as PongoDb, O as OptionalUnlessRequiredIdAndVersion, b as PongoFilter, c as PongoUpdate, U as UpdateOneOptions, W as WithoutId, R as ReplaceOneOptions, D as DeleteOneOptions, d as PongoCollection, C as CollectionOperationOptions, e as PongoTransactionOptions, f as PongoSession, g as PongoDbTransaction } from './pongoClient-CF1GiWGx.js';
3
- export { $ as $inc, h as $push, i as $set, j as $unset, A as AllowedDbClientOptions, k as AlternativeType, l as CollectionsMap, m as Condition, n as DBsMap, o as DOCUMENT_DOES_NOT_EXIST, p as DOCUMENT_EXISTS, q as DeleteManyOptions, r as Document, s as DocumentHandler, E as EnhancedOmit, t as ExpectedDocumentVersion, u as ExpectedDocumentVersionGeneral, v as ExpectedDocumentVersionValue, H as HandleOptions, w as HasId, I as InferIdType, x as InsertManyOptions, y as InsertOneOptions, N as NO_CONCURRENCY_CHECK, z as NonObjectIdLikeDocument, B as NotPooledPongoOptions, F as ObjectId, G as ObjectIdLike, J as OperationResult, K as OptionalId, L as OptionalUnlessRequiredId, M as OptionalUnlessRequiredVersion, Q as OptionalVersion, S as PongoClient, T as PongoClientOptions, V as PongoClientSchema, X as PongoClientSchemaMetadata, Y as PongoClientWithSchema, Z as PongoCollectionSchema, _ as PongoCollectionSchemaMetadata, a0 as PongoDbClientOptions, a1 as PongoDbSchema, a2 as PongoDbSchemaMetadata, a3 as PongoDbWithSchema, a4 as PongoDeleteManyResult, a5 as PongoDeleteResult, a6 as PongoFilterOperator, a7 as PongoHandleResult, a8 as PongoInsertManyResult, a9 as PongoInsertOneResult, aa as PongoSchemaConfig, ab as PongoUpdateManyResult, ac as PongoUpdateResult, ad as PooledPongoClientOptions, ae as PostgresDbClientOptions, af as RegExpOrString, ag as RootFilterOperators, ah as UpdateManyOptions, ai as WithId, aj as WithIdAndVersion, ak as WithVersion, al as WithoutIdAndVersion, am as WithoutVersion, an as clientToDbOptions, ao as expectedVersion, ap as expectedVersionValue, aq as getPongoDb, ar as isGeneralExpectedDocumentVersion, as as isPostgresClientOptions, at as operationResult, au as pongoClient, av as pongoDbSchemaComponent, aw as pongoSchema, ax as postgresDb, ay as proxyClientWithSchema, az as proxyPongoDbWithSchema, aA as toClientSchemaMetadata, aB as toDbSchemaMetadata } from './pongoClient-CF1GiWGx.js';
2
+ import { P as PongoDocument, a as PongoDb, O as OptionalUnlessRequiredIdAndVersion, b as PongoFilter, c as PongoUpdate, U as UpdateOneOptions, W as WithoutId, R as ReplaceOneOptions, D as DeleteOneOptions, d as PongoCollection, C as CollectionOperationOptions, e as PongoTransactionOptions, f as PongoSession, g as PongoDbTransaction } from './pongoClient-CML2ZSy3.js';
3
+ export { $ as $inc, h as $push, i as $set, j as $unset, A as AllowedDbClientOptions, k as AlternativeType, l as CollectionsMap, m as Condition, n as DBsMap, o as DOCUMENT_DOES_NOT_EXIST, p as DOCUMENT_EXISTS, q as DeleteManyOptions, r as Document, s as DocumentHandler, E as EnhancedOmit, t as ExpectedDocumentVersion, u as ExpectedDocumentVersionGeneral, v as ExpectedDocumentVersionValue, H as HandleOptions, w as HasId, I as InferIdType, x as InsertManyOptions, y as InsertOneOptions, N as NO_CONCURRENCY_CHECK, z as NonObjectIdLikeDocument, B as NotPooledPongoOptions, F as ObjectId, G as ObjectIdLike, J as OperationResult, K as OptionalId, L as OptionalUnlessRequiredId, M as OptionalUnlessRequiredVersion, Q as OptionalVersion, S as PongoClient, T as PongoClientOptions, V as PongoClientSchema, X as PongoClientSchemaMetadata, Y as PongoClientWithSchema, Z as PongoCollectionSchema, _ as PongoCollectionSchemaMetadata, a0 as PongoDBCollectionOptions, a1 as PongoDbClientOptions, a2 as PongoDbSchema, a3 as PongoDbSchemaMetadata, a4 as PongoDbWithSchema, a5 as PongoDeleteManyResult, a6 as PongoDeleteResult, a7 as PongoFilterOperator, a8 as PongoHandleResult, a9 as PongoInsertManyResult, aa as PongoInsertOneResult, ab as PongoSchemaConfig, ac as PongoUpdateManyResult, ad as PongoUpdateResult, ae as PooledPongoClientOptions, af as PostgresDbClientOptions, ag as RegExpOrString, ah as RootFilterOperators, ai as UpdateManyOptions, aj as WithId, ak as WithIdAndVersion, al as WithVersion, am as WithoutIdAndVersion, an as WithoutVersion, ao as clientToDbOptions, ap as expectedVersion, aq as expectedVersionValue, ar as getPongoDb, as as isGeneralExpectedDocumentVersion, at as isPostgresClientOptions, au as operationResult, av as pongoClient, aw as pongoDbSchemaComponent, ax as pongoSchema, ay as postgresDb, az as proxyClientWithSchema, aA as proxyPongoDbWithSchema, aB as toClientSchemaMetadata, aC as toDbSchemaMetadata } from './pongoClient-CML2ZSy3.js';
4
4
  import 'pg';
5
5
 
6
- type PongoCollectionOptions<T extends PongoDocument = PongoDocument, ConnectorType extends string = string> = {
6
+ type PongoCollectionOptions<T extends PongoDocument = PongoDocument, ConnectorType extends string = string, Payload extends PongoDocument = T> = {
7
7
  db: PongoDb<ConnectorType>;
8
8
  collectionName: string;
9
9
  pool: Dumbo;
10
10
  sqlBuilder: PongoCollectionSQLBuilder;
11
11
  schema?: {
12
12
  autoMigration?: MigrationStyle;
13
- upcast?: (document: Record<string, unknown>) => T;
13
+ versioning?: {
14
+ upcast?: (doc: Payload) => T;
15
+ downcast?: (doc: T) => Payload;
16
+ };
14
17
  };
15
18
  errors?: {
16
19
  throwOnOperationFailures?: boolean;
17
20
  };
18
21
  };
19
22
  declare const transactionExecutorOrDefault: <ConnectorType extends string = string>(db: PongoDb<ConnectorType>, options: CollectionOperationOptions | undefined, defaultSqlExecutor: SQLExecutor) => Promise<SQLExecutor>;
20
- declare const pongoCollection: <T extends PongoDocument, ConnectorType extends string = string>({ db, collectionName, pool, sqlBuilder: SqlFor, schema, errors, }: PongoCollectionOptions<T, ConnectorType>) => PongoCollection<T>;
23
+ declare const pongoCollection: <T extends PongoDocument, ConnectorType extends string = string, Payload extends PongoDocument = T>({ db, collectionName, pool, sqlBuilder: SqlFor, schema, errors, }: PongoCollectionOptions<T, ConnectorType, Payload>) => PongoCollection<T>;
21
24
  declare const pongoCollectionSchemaComponent: (collectionName: string) => SchemaComponent;
22
25
  type PongoCollectionSQLBuilder = {
23
26
  migrations: () => SQLMigration[];
package/dist/index.js CHANGED
@@ -36,7 +36,7 @@ import {
36
36
  toClientSchemaMetadata,
37
37
  toDbSchemaMetadata,
38
38
  transactionExecutorOrDefault
39
- } from "./chunk-D5HFWGFR.js";
39
+ } from "./chunk-2YS3A7WH.js";
40
40
  export {
41
41
  ConcurrencyError,
42
42
  DOCUMENT_DOES_NOT_EXIST,
@@ -37,12 +37,23 @@ interface PongoSession {
37
37
  abortTransaction(): Promise<void>;
38
38
  withTransaction<T = unknown>(fn: (session: PongoSession) => Promise<T>, options?: PongoTransactionOptions): Promise<T>;
39
39
  }
40
+ type PongoDBCollectionOptions<T extends PongoDocument, Payload extends PongoDocument = T> = {
41
+ schema?: {
42
+ versioning?: {
43
+ upcast?: (document: Payload) => T;
44
+ downcast?: (document: T) => Payload;
45
+ };
46
+ };
47
+ errors?: {
48
+ throwOnOperationFailures?: boolean;
49
+ };
50
+ };
40
51
  interface PongoDb<ConnectorType extends string = string> extends DatabaseTransactionFactory<ConnectorType> {
41
52
  get connectorType(): ConnectorType;
42
53
  get databaseName(): string;
43
54
  connect(): Promise<void>;
44
55
  close(): Promise<void>;
45
- collection<T extends PongoDocument>(name: string): PongoCollection<T>;
56
+ collection<T extends PongoDocument, Payload extends PongoDocument = T>(name: string, options?: PongoDBCollectionOptions<T, Payload>): PongoCollection<T>;
46
57
  collections(): ReadonlyArray<PongoCollection<PongoDocument>>;
47
58
  readonly schema: Readonly<{
48
59
  component: SchemaComponent;
@@ -355,4 +366,4 @@ declare const clientToDbOptions: <DbClientOptions extends AllowedDbClientOptions
355
366
  clientOptions: PongoClientOptions;
356
367
  }) => DbClientOptions;
357
368
 
358
- export { type $inc as $, type AllowedDbClientOptions as A, type NotPooledPongoOptions as B, type CollectionOperationOptions as C, type DeleteOneOptions as D, type EnhancedOmit as E, ObjectId as F, type ObjectIdLike as G, type HandleOptions as H, type InferIdType as I, type OperationResult as J, type OptionalId as K, type OptionalUnlessRequiredId as L, type OptionalUnlessRequiredVersion as M, NO_CONCURRENCY_CHECK as N, type OptionalUnlessRequiredIdAndVersion as O, type PongoDocument as P, type OptionalVersion as Q, type ReplaceOneOptions as R, type PongoClient as S, type PongoClientOptions as T, type UpdateOneOptions as U, type PongoClientSchema as V, type WithoutId as W, type PongoClientSchemaMetadata as X, type PongoClientWithSchema as Y, type PongoCollectionSchema as Z, type PongoCollectionSchemaMetadata as _, type PongoDb as a, type PongoDbClientOptions as a0, type PongoDbSchema as a1, type PongoDbSchemaMetadata as a2, type PongoDbWithSchema as a3, type PongoDeleteManyResult as a4, type PongoDeleteResult as a5, type PongoFilterOperator as a6, type PongoHandleResult as a7, type PongoInsertManyResult as a8, type PongoInsertOneResult as a9, toClientSchemaMetadata as aA, toDbSchemaMetadata as aB, type PongoSchemaConfig as aa, type PongoUpdateManyResult as ab, type PongoUpdateResult as ac, type PooledPongoClientOptions as ad, type PostgresDbClientOptions as ae, type RegExpOrString as af, type RootFilterOperators as ag, type UpdateManyOptions as ah, type WithId as ai, type WithIdAndVersion as aj, type WithVersion as ak, type WithoutIdAndVersion as al, type WithoutVersion as am, clientToDbOptions as an, expectedVersion as ao, expectedVersionValue as ap, getPongoDb as aq, isGeneralExpectedDocumentVersion as ar, isPostgresClientOptions as as, operationResult as at, pongoClient as au, pongoDbSchemaComponent as av, pongoSchema as aw, postgresDb as ax, proxyClientWithSchema as ay, proxyPongoDbWithSchema as az, type PongoFilter as b, type PongoUpdate as c, type PongoCollection as d, type PongoTransactionOptions as e, type PongoSession as f, type PongoDbTransaction as g, type $push as h, type $set as i, type $unset as j, type AlternativeType as k, type CollectionsMap as l, type Condition as m, type DBsMap as n, DOCUMENT_DOES_NOT_EXIST as o, DOCUMENT_EXISTS as p, type DeleteManyOptions as q, type Document as r, type DocumentHandler as s, type ExpectedDocumentVersion as t, type ExpectedDocumentVersionGeneral as u, type ExpectedDocumentVersionValue as v, type HasId as w, type InsertManyOptions as x, type InsertOneOptions as y, type NonObjectIdLikeDocument as z };
369
+ export { type $inc as $, type AllowedDbClientOptions as A, type NotPooledPongoOptions as B, type CollectionOperationOptions as C, type DeleteOneOptions as D, type EnhancedOmit as E, ObjectId as F, type ObjectIdLike as G, type HandleOptions as H, type InferIdType as I, type OperationResult as J, type OptionalId as K, type OptionalUnlessRequiredId as L, type OptionalUnlessRequiredVersion as M, NO_CONCURRENCY_CHECK as N, type OptionalUnlessRequiredIdAndVersion as O, type PongoDocument as P, type OptionalVersion as Q, type ReplaceOneOptions as R, type PongoClient as S, type PongoClientOptions as T, type UpdateOneOptions as U, type PongoClientSchema as V, type WithoutId as W, type PongoClientSchemaMetadata as X, type PongoClientWithSchema as Y, type PongoCollectionSchema as Z, type PongoCollectionSchemaMetadata as _, type PongoDb as a, type PongoDBCollectionOptions as a0, type PongoDbClientOptions as a1, type PongoDbSchema as a2, type PongoDbSchemaMetadata as a3, type PongoDbWithSchema as a4, type PongoDeleteManyResult as a5, type PongoDeleteResult as a6, type PongoFilterOperator as a7, type PongoHandleResult as a8, type PongoInsertManyResult as a9, proxyPongoDbWithSchema as aA, toClientSchemaMetadata as aB, toDbSchemaMetadata as aC, type PongoInsertOneResult as aa, type PongoSchemaConfig as ab, type PongoUpdateManyResult as ac, type PongoUpdateResult as ad, type PooledPongoClientOptions as ae, type PostgresDbClientOptions as af, type RegExpOrString as ag, type RootFilterOperators as ah, type UpdateManyOptions as ai, type WithId as aj, type WithIdAndVersion as ak, type WithVersion as al, type WithoutIdAndVersion as am, type WithoutVersion as an, clientToDbOptions as ao, expectedVersion as ap, expectedVersionValue as aq, getPongoDb as ar, isGeneralExpectedDocumentVersion as as, isPostgresClientOptions as at, operationResult as au, pongoClient as av, pongoDbSchemaComponent as aw, pongoSchema as ax, postgresDb as ay, proxyClientWithSchema as az, type PongoFilter as b, type PongoUpdate as c, type PongoCollection as d, type PongoTransactionOptions as e, type PongoSession as f, type PongoDbTransaction as g, type $push as h, type $set as i, type $unset as j, type AlternativeType as k, type CollectionsMap as l, type Condition as m, type DBsMap as n, DOCUMENT_DOES_NOT_EXIST as o, DOCUMENT_EXISTS as p, type DeleteManyOptions as q, type Document as r, type DocumentHandler as s, type ExpectedDocumentVersion as t, type ExpectedDocumentVersionGeneral as u, type ExpectedDocumentVersionValue as v, type HasId as w, type InsertManyOptions as x, type InsertOneOptions as y, type NonObjectIdLikeDocument as z };
@@ -37,12 +37,23 @@ interface PongoSession {
37
37
  abortTransaction(): Promise<void>;
38
38
  withTransaction<T = unknown>(fn: (session: PongoSession) => Promise<T>, options?: PongoTransactionOptions): Promise<T>;
39
39
  }
40
+ type PongoDBCollectionOptions<T extends PongoDocument, Payload extends PongoDocument = T> = {
41
+ schema?: {
42
+ versioning?: {
43
+ upcast?: (document: Payload) => T;
44
+ downcast?: (document: T) => Payload;
45
+ };
46
+ };
47
+ errors?: {
48
+ throwOnOperationFailures?: boolean;
49
+ };
50
+ };
40
51
  interface PongoDb<ConnectorType extends string = string> extends DatabaseTransactionFactory<ConnectorType> {
41
52
  get connectorType(): ConnectorType;
42
53
  get databaseName(): string;
43
54
  connect(): Promise<void>;
44
55
  close(): Promise<void>;
45
- collection<T extends PongoDocument>(name: string): PongoCollection<T>;
56
+ collection<T extends PongoDocument, Payload extends PongoDocument = T>(name: string, options?: PongoDBCollectionOptions<T, Payload>): PongoCollection<T>;
46
57
  collections(): ReadonlyArray<PongoCollection<PongoDocument>>;
47
58
  readonly schema: Readonly<{
48
59
  component: SchemaComponent;
@@ -355,4 +366,4 @@ declare const clientToDbOptions: <DbClientOptions extends AllowedDbClientOptions
355
366
  clientOptions: PongoClientOptions;
356
367
  }) => DbClientOptions;
357
368
 
358
- export { type $inc as $, type AllowedDbClientOptions as A, type NotPooledPongoOptions as B, type CollectionOperationOptions as C, type DeleteOneOptions as D, type EnhancedOmit as E, ObjectId as F, type ObjectIdLike as G, type HandleOptions as H, type InferIdType as I, type OperationResult as J, type OptionalId as K, type OptionalUnlessRequiredId as L, type OptionalUnlessRequiredVersion as M, NO_CONCURRENCY_CHECK as N, type OptionalUnlessRequiredIdAndVersion as O, type PongoDocument as P, type OptionalVersion as Q, type ReplaceOneOptions as R, type PongoClient as S, type PongoClientOptions as T, type UpdateOneOptions as U, type PongoClientSchema as V, type WithoutId as W, type PongoClientSchemaMetadata as X, type PongoClientWithSchema as Y, type PongoCollectionSchema as Z, type PongoCollectionSchemaMetadata as _, type PongoDb as a, type PongoDbClientOptions as a0, type PongoDbSchema as a1, type PongoDbSchemaMetadata as a2, type PongoDbWithSchema as a3, type PongoDeleteManyResult as a4, type PongoDeleteResult as a5, type PongoFilterOperator as a6, type PongoHandleResult as a7, type PongoInsertManyResult as a8, type PongoInsertOneResult as a9, toClientSchemaMetadata as aA, toDbSchemaMetadata as aB, type PongoSchemaConfig as aa, type PongoUpdateManyResult as ab, type PongoUpdateResult as ac, type PooledPongoClientOptions as ad, type PostgresDbClientOptions as ae, type RegExpOrString as af, type RootFilterOperators as ag, type UpdateManyOptions as ah, type WithId as ai, type WithIdAndVersion as aj, type WithVersion as ak, type WithoutIdAndVersion as al, type WithoutVersion as am, clientToDbOptions as an, expectedVersion as ao, expectedVersionValue as ap, getPongoDb as aq, isGeneralExpectedDocumentVersion as ar, isPostgresClientOptions as as, operationResult as at, pongoClient as au, pongoDbSchemaComponent as av, pongoSchema as aw, postgresDb as ax, proxyClientWithSchema as ay, proxyPongoDbWithSchema as az, type PongoFilter as b, type PongoUpdate as c, type PongoCollection as d, type PongoTransactionOptions as e, type PongoSession as f, type PongoDbTransaction as g, type $push as h, type $set as i, type $unset as j, type AlternativeType as k, type CollectionsMap as l, type Condition as m, type DBsMap as n, DOCUMENT_DOES_NOT_EXIST as o, DOCUMENT_EXISTS as p, type DeleteManyOptions as q, type Document as r, type DocumentHandler as s, type ExpectedDocumentVersion as t, type ExpectedDocumentVersionGeneral as u, type ExpectedDocumentVersionValue as v, type HasId as w, type InsertManyOptions as x, type InsertOneOptions as y, type NonObjectIdLikeDocument as z };
369
+ export { type $inc as $, type AllowedDbClientOptions as A, type NotPooledPongoOptions as B, type CollectionOperationOptions as C, type DeleteOneOptions as D, type EnhancedOmit as E, ObjectId as F, type ObjectIdLike as G, type HandleOptions as H, type InferIdType as I, type OperationResult as J, type OptionalId as K, type OptionalUnlessRequiredId as L, type OptionalUnlessRequiredVersion as M, NO_CONCURRENCY_CHECK as N, type OptionalUnlessRequiredIdAndVersion as O, type PongoDocument as P, type OptionalVersion as Q, type ReplaceOneOptions as R, type PongoClient as S, type PongoClientOptions as T, type UpdateOneOptions as U, type PongoClientSchema as V, type WithoutId as W, type PongoClientSchemaMetadata as X, type PongoClientWithSchema as Y, type PongoCollectionSchema as Z, type PongoCollectionSchemaMetadata as _, type PongoDb as a, type PongoDBCollectionOptions as a0, type PongoDbClientOptions as a1, type PongoDbSchema as a2, type PongoDbSchemaMetadata as a3, type PongoDbWithSchema as a4, type PongoDeleteManyResult as a5, type PongoDeleteResult as a6, type PongoFilterOperator as a7, type PongoHandleResult as a8, type PongoInsertManyResult as a9, proxyPongoDbWithSchema as aA, toClientSchemaMetadata as aB, toDbSchemaMetadata as aC, type PongoInsertOneResult as aa, type PongoSchemaConfig as ab, type PongoUpdateManyResult as ac, type PongoUpdateResult as ad, type PooledPongoClientOptions as ae, type PostgresDbClientOptions as af, type RegExpOrString as ag, type RootFilterOperators as ah, type UpdateManyOptions as ai, type WithId as aj, type WithIdAndVersion as ak, type WithVersion as al, type WithoutIdAndVersion as am, type WithoutVersion as an, clientToDbOptions as ao, expectedVersion as ap, expectedVersionValue as aq, getPongoDb as ar, isGeneralExpectedDocumentVersion as as, isPostgresClientOptions as at, operationResult as au, pongoClient as av, pongoDbSchemaComponent as aw, pongoSchema as ax, postgresDb as ay, proxyClientWithSchema as az, type PongoFilter as b, type PongoUpdate as c, type PongoCollection as d, type PongoTransactionOptions as e, type PongoSession as f, type PongoDbTransaction as g, type $push as h, type $set as i, type $unset as j, type AlternativeType as k, type CollectionsMap as l, type Condition as m, type DBsMap as n, DOCUMENT_DOES_NOT_EXIST as o, DOCUMENT_EXISTS as p, type DeleteManyOptions as q, type Document as r, type DocumentHandler as s, type ExpectedDocumentVersion as t, type ExpectedDocumentVersionGeneral as u, type ExpectedDocumentVersionValue as v, type HasId as w, type InsertManyOptions as x, type InsertOneOptions as y, type NonObjectIdLikeDocument as z };
package/dist/shim.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
2
2
 
3
3
 
4
- var _chunkAH4TCORKcjs = require('./chunk-AH4TCORK.cjs');
4
+ var _chunkNA3ELYRRcjs = require('./chunk-NA3ELYRR.cjs');
5
5
 
6
6
  // src/mongo/findCursor.ts
7
7
  var FindCursor = (_class = class {
@@ -289,8 +289,10 @@ var Db = class {
289
289
  get databaseName() {
290
290
  return this.pongoDb.databaseName;
291
291
  }
292
- collection(collectionName) {
293
- return new Collection(this.pongoDb.collection(collectionName));
292
+ collection(collectionName, options) {
293
+ return new Collection(
294
+ this.pongoDb.collection(collectionName, options)
295
+ );
294
296
  }
295
297
  };
296
298
 
@@ -298,7 +300,7 @@ var Db = class {
298
300
  var MongoClient = class {
299
301
 
300
302
  constructor(connectionString, options = {}) {
301
- this.pongoClient = _chunkAH4TCORKcjs.pongoClient.call(void 0, connectionString, options);
303
+ this.pongoClient = _chunkNA3ELYRRcjs.pongoClient.call(void 0, connectionString, options);
302
304
  }
303
305
  async connect() {
304
306
  await this.pongoClient.connect();
@@ -311,12 +313,12 @@ var MongoClient = class {
311
313
  return new Db(this.pongoClient.db(dbName));
312
314
  }
313
315
  startSession(_options) {
314
- return _chunkAH4TCORKcjs.pongoSession.call(void 0, );
316
+ return _chunkNA3ELYRRcjs.pongoSession.call(void 0, );
315
317
  }
316
318
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
317
319
  async withSession(optionsOrExecutor, executor) {
318
320
  const callback = typeof optionsOrExecutor === "function" ? optionsOrExecutor : executor;
319
- const session = _chunkAH4TCORKcjs.pongoSession.call(void 0, );
321
+ const session = _chunkNA3ELYRRcjs.pongoSession.call(void 0, );
320
322
  try {
321
323
  return await callback(session);
322
324
  } finally {
package/dist/shim.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/Pongo/Pongo/src/packages/pongo/dist/shim.cjs","../src/mongo/findCursor.ts","../src/mongo/mongoDb.ts","../src/mongo/mongoCollection.ts","../src/mongo/mongoClient.ts"],"names":[],"mappings":"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","file":"/home/runner/work/Pongo/Pongo/src/packages/pongo/dist/shim.cjs","sourcesContent":[null,"export class FindCursor<T> {\n private findDocumentsPromise: Promise<T[]>;\n private documents: T[] | null = null;\n private index: number = 0;\n\n constructor(documents: Promise<T[]>) {\n this.findDocumentsPromise = documents;\n }\n\n async toArray(): Promise<T[]> {\n return this.findDocuments();\n }\n\n async forEach(callback: (doc: T) => void): Promise<void> {\n const docs = await this.findDocuments();\n\n for (const doc of docs) {\n callback(doc);\n }\n return Promise.resolve();\n }\n\n hasNext(): boolean {\n if (this.documents === null) throw Error('Error while fetching documents');\n return this.index < this.documents.length;\n }\n\n async next(): Promise<T | null> {\n const docs = await this.findDocuments();\n return this.hasNext() ? (docs[this.index++] ?? null) : null;\n }\n\n private async findDocuments(): Promise<T[]> {\n this.documents = await this.findDocumentsPromise;\n return this.documents;\n }\n}\n","import {\n Collection as MongoCollection,\n ObjectId,\n type Document,\n} from 'mongodb';\nimport type {\n DocumentHandler,\n HandleOptions,\n PongoDb,\n PongoHandleResult,\n} from '../core';\nimport { Collection } from './mongoCollection';\n\nexport class Db {\n constructor(private pongoDb: PongoDb) {}\n\n get databaseName(): string {\n return this.pongoDb.databaseName;\n }\n\n collection<T extends Document>(\n collectionName: string,\n ): MongoCollection<T> & {\n handle(\n id: ObjectId,\n handle: DocumentHandler<T>,\n options?: HandleOptions,\n ): Promise<PongoHandleResult<T>>;\n } {\n return new Collection<T>(this.pongoDb.collection<T>(collectionName));\n }\n}\n","import type {\n AbstractCursorOptions,\n AggregateOptions,\n AggregationCursor,\n AnyBulkWriteOperation,\n BSONSerializeOptions,\n BulkWriteOptions,\n BulkWriteResult,\n ChangeStream,\n ChangeStreamDocument,\n ChangeStreamOptions,\n CommandOperationOptions,\n CountDocumentsOptions,\n CountOptions,\n CreateIndexesOptions,\n DeleteOptions,\n DeleteResult,\n Document,\n DropCollectionOptions,\n EnhancedOmit,\n EstimatedDocumentCountOptions,\n Filter,\n FindOneAndDeleteOptions,\n FindOneAndReplaceOptions,\n FindOneAndUpdateOptions,\n FindOptions,\n Flatten,\n Hint,\n IndexDescription,\n IndexDescriptionCompact,\n IndexDescriptionInfo,\n IndexInformationOptions,\n IndexSpecification,\n InferIdType,\n InsertManyResult,\n InsertOneOptions,\n InsertOneResult,\n ListIndexesCursor,\n ListSearchIndexesCursor,\n ListSearchIndexesOptions,\n ModifyResult,\n Collection as MongoCollection,\n FindCursor as MongoFindCursor,\n ObjectId,\n OperationOptions,\n OptionalUnlessRequiredId,\n OrderedBulkOperation,\n ReadConcern,\n ReadPreference,\n RenameOptions,\n ReplaceOptions,\n SearchIndexDescription,\n UnorderedBulkOperation,\n UpdateFilter,\n UpdateOptions,\n UpdateResult,\n WithId,\n WithoutId,\n WriteConcern,\n} from 'mongodb';\nimport type { Key } from 'readline';\nimport type {\n CollectionOperationOptions,\n DocumentHandler,\n HandleOptions,\n PongoCollection,\n PongoFilter,\n PongoHandleResult,\n OptionalUnlessRequiredId as PongoOptionalUnlessRequiredId,\n PongoSession,\n PongoUpdate,\n} from '../core';\nimport { FindCursor } from './findCursor';\n\nconst toCollectionOperationOptions = (\n options: OperationOptions | undefined,\n): CollectionOperationOptions | undefined =>\n options?.session\n ? { session: options.session as unknown as PongoSession }\n : undefined;\n\nexport class Collection<T extends Document> implements MongoCollection<T> {\n private collection: PongoCollection<T>;\n\n constructor(collection: PongoCollection<T>) {\n this.collection = collection;\n }\n get dbName(): string {\n return this.collection.dbName;\n }\n get collectionName(): string {\n return this.collection.collectionName;\n }\n get namespace(): string {\n return `${this.dbName}.${this.collectionName}`;\n }\n get readConcern(): ReadConcern | undefined {\n return undefined;\n }\n get readPreference(): ReadPreference | undefined {\n return undefined;\n }\n get bsonOptions(): BSONSerializeOptions {\n return {};\n }\n get writeConcern(): WriteConcern | undefined {\n return undefined;\n }\n get hint(): Hint | undefined {\n return undefined;\n }\n set hint(v: Hint | undefined) {\n throw new Error('Method not implemented.');\n }\n async insertOne(\n doc: OptionalUnlessRequiredId<T>,\n options?: InsertOneOptions | undefined,\n ): Promise<InsertOneResult<T>> {\n const result = await this.collection.insertOne(\n doc as unknown as PongoOptionalUnlessRequiredId<T>,\n toCollectionOperationOptions(options),\n );\n return {\n acknowledged: result.acknowledged,\n insertedId: result.insertedId as unknown as InferIdType<T>,\n };\n }\n async insertMany(\n docs: OptionalUnlessRequiredId<T>[],\n options?: BulkWriteOptions | undefined,\n ): Promise<InsertManyResult<T>> {\n const result = await this.collection.insertMany(\n docs as unknown as PongoOptionalUnlessRequiredId<T>[],\n toCollectionOperationOptions(options),\n );\n return {\n acknowledged: result.acknowledged,\n insertedIds: result.insertedIds as unknown as InferIdType<T>[],\n insertedCount: result.insertedCount,\n };\n }\n bulkWrite(\n _operations: AnyBulkWriteOperation<T>[],\n _options?: BulkWriteOptions | undefined,\n ): Promise<BulkWriteResult> {\n throw new Error('Method not implemented.');\n }\n async updateOne(\n filter: Filter<T>,\n update: Document[] | UpdateFilter<T>,\n options?: UpdateOptions | undefined,\n ): Promise<UpdateResult<T>> {\n const result = await this.collection.updateOne(\n filter as unknown as PongoFilter<T>,\n update as unknown as PongoUpdate<T>,\n toCollectionOperationOptions(options),\n );\n\n return {\n acknowledged: result.acknowledged,\n matchedCount: result.modifiedCount,\n modifiedCount: result.modifiedCount,\n upsertedCount: result.modifiedCount,\n upsertedId: null,\n };\n }\n replaceOne(\n filter: Filter<T>,\n document: WithoutId<T>,\n options?: ReplaceOptions | undefined,\n ): Promise<Document | UpdateResult<T>> {\n return this.collection.replaceOne(\n filter as unknown as PongoFilter<T>,\n document,\n toCollectionOperationOptions(options),\n );\n }\n async updateMany(\n filter: Filter<T>,\n update: Document[] | UpdateFilter<T>,\n options?: UpdateOptions | undefined,\n ): Promise<UpdateResult<T>> {\n const result = await this.collection.updateMany(\n filter as unknown as PongoFilter<T>,\n update as unknown as PongoUpdate<T>,\n toCollectionOperationOptions(options),\n );\n\n return {\n acknowledged: result.acknowledged,\n matchedCount: result.modifiedCount,\n modifiedCount: result.modifiedCount,\n upsertedCount: result.modifiedCount,\n upsertedId: null,\n };\n }\n async deleteOne(\n filter?: Filter<T> | undefined,\n options?: DeleteOptions | undefined,\n ): Promise<DeleteResult> {\n const result = await this.collection.deleteOne(\n filter as PongoFilter<T>,\n toCollectionOperationOptions(options),\n );\n\n return {\n acknowledged: result.acknowledged,\n deletedCount: result.deletedCount,\n };\n }\n async deleteMany(\n filter?: Filter<T> | undefined,\n options?: DeleteOptions | undefined,\n ): Promise<DeleteResult> {\n const result = await this.collection.deleteMany(\n filter as PongoFilter<T>,\n toCollectionOperationOptions(options),\n );\n\n return {\n acknowledged: result.acknowledged,\n deletedCount: result.deletedCount,\n };\n }\n async rename(\n newName: string,\n options?: RenameOptions | undefined,\n ): Promise<Collection<Document>> {\n await this.collection.rename(\n newName,\n toCollectionOperationOptions(options),\n );\n\n return this as unknown as Collection<Document>;\n }\n drop(options?: DropCollectionOptions | undefined): Promise<boolean> {\n return this.collection.drop(toCollectionOperationOptions(options));\n }\n findOne(): Promise<WithId<T> | null>;\n findOne(filter: Filter<T>): Promise<WithId<T> | null>;\n findOne(\n filter: Filter<T>,\n options: FindOptions<Document>,\n ): Promise<WithId<T> | null>;\n findOne<TS = T>(): Promise<TS | null>;\n findOne<TS = T>(filter: Filter<TS>): Promise<TS | null>;\n findOne<TS = T>(\n filter: Filter<TS>,\n options?: FindOptions<Document> | undefined,\n ): Promise<TS | null>;\n async findOne(\n filter?: unknown,\n options?: FindOptions<Document> | undefined,\n ): Promise<import('mongodb').WithId<T> | T | null> {\n return (await this.collection.findOne(\n filter as PongoFilter<T>,\n toCollectionOperationOptions(options),\n )) as T;\n }\n find(): MongoFindCursor<WithId<T>>;\n find(\n filter: Filter<T>,\n options?: FindOptions<Document> | undefined,\n ): MongoFindCursor<WithId<T>>;\n find<T extends Document>(\n filter: Filter<T>,\n options?: FindOptions<Document> | undefined,\n ): MongoFindCursor<T>;\n find(\n filter?: unknown,\n options?: FindOptions<Document> | undefined,\n ): MongoFindCursor<WithId<T>> | MongoFindCursor<T> {\n return new FindCursor(\n this.collection.find(\n filter as PongoFilter<T>,\n toCollectionOperationOptions(options),\n ),\n ) as unknown as MongoFindCursor<T>;\n }\n options(_options?: OperationOptions | undefined): Promise<Document> {\n throw new Error('Method not implemented.');\n }\n isCapped(_options?: OperationOptions | undefined): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n createIndex(\n _indexSpec: IndexSpecification,\n _options?: CreateIndexesOptions | undefined,\n ): Promise<string> {\n throw new Error('Method not implemented.');\n }\n createIndexes(\n _indexSpecs: IndexDescription[],\n _options?: CreateIndexesOptions | undefined,\n ): Promise<string[]> {\n throw new Error('Method not implemented.');\n }\n dropIndex(\n _indexName: string,\n _options?: CommandOperationOptions | undefined,\n ): Promise<Document> {\n throw new Error('Method not implemented.');\n }\n dropIndexes(\n _options?: CommandOperationOptions | undefined,\n ): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n listIndexes(_options?: AbstractCursorOptions | undefined): ListIndexesCursor {\n throw new Error('Method not implemented.');\n }\n indexExists(\n _indexes: string | string[],\n _options?: AbstractCursorOptions | undefined,\n ): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n indexInformation(\n options: IndexInformationOptions & { full: true },\n ): Promise<IndexDescriptionInfo[]>;\n indexInformation(\n options: IndexInformationOptions & { full?: false | undefined },\n ): Promise<IndexDescriptionCompact>;\n indexInformation(\n options: IndexInformationOptions,\n ): Promise<IndexDescriptionCompact | IndexDescriptionInfo[]>;\n indexInformation(): Promise<IndexDescriptionCompact>;\n indexInformation(\n _options?: unknown,\n ):\n | Promise<import('mongodb').IndexDescriptionInfo[]>\n | Promise<import('mongodb').IndexDescriptionCompact>\n | Promise<\n | import('mongodb').IndexDescriptionCompact\n | import('mongodb').IndexDescriptionInfo[]\n > {\n throw new Error('Method not implemented.');\n }\n estimatedDocumentCount(\n options?: EstimatedDocumentCountOptions | undefined,\n ): Promise<number> {\n return this.collection.countDocuments(\n {},\n toCollectionOperationOptions(options),\n );\n }\n countDocuments(\n filter?: Filter<T> | undefined,\n options?: CountDocumentsOptions | undefined,\n ): Promise<number> {\n return this.collection.countDocuments(\n filter as PongoFilter<T>,\n toCollectionOperationOptions(options),\n );\n }\n distinct<Key extends '_id' | keyof EnhancedOmit<T, '_id'>>(\n key: Key,\n ): Promise<Flatten<WithId<T>[Key]>[]>;\n distinct<Key extends '_id' | keyof EnhancedOmit<T, '_id'>>(\n key: Key,\n filter: Filter<T>,\n ): Promise<Flatten<WithId<T>[Key]>[]>;\n distinct<Key extends '_id' | keyof EnhancedOmit<T, '_id'>>(\n key: Key,\n filter: Filter<T>,\n options: CommandOperationOptions,\n ): Promise<Flatten<WithId<T>[Key]>[]>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n distinct(key: string): Promise<any[]>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n distinct(key: string, filter: Filter<T>): Promise<any[]>;\n distinct(\n key: string,\n filter: Filter<T>,\n options: CommandOperationOptions, // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise<any[]>;\n distinct(\n _key: unknown,\n _filter?: unknown,\n _options?: unknown,\n ): // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Promise<any[]>\n | Promise<import('mongodb').Flatten<import('mongodb').WithId<T>[Key]>[]> {\n throw new Error('Method not implemented.');\n }\n indexes(\n options: IndexInformationOptions & { full?: true | undefined },\n ): Promise<IndexDescriptionInfo[]>;\n indexes(\n options: IndexInformationOptions & { full: false },\n ): Promise<IndexDescriptionCompact>;\n indexes(\n options: IndexInformationOptions,\n ): Promise<IndexDescriptionCompact | IndexDescriptionInfo[]>;\n indexes(\n options?: AbstractCursorOptions | undefined,\n ): Promise<IndexDescriptionInfo[]>;\n indexes(\n _options?: unknown,\n ):\n | Promise<import('mongodb').IndexDescriptionInfo[]>\n | Promise<import('mongodb').IndexDescriptionCompact>\n | Promise<\n | import('mongodb').IndexDescriptionCompact\n | import('mongodb').IndexDescriptionInfo[]\n > {\n throw new Error('Method not implemented.');\n }\n findOneAndDelete(\n filter: Filter<T>,\n options: FindOneAndDeleteOptions & { includeResultMetadata: true },\n ): Promise<ModifyResult<T>>;\n findOneAndDelete(\n filter: Filter<T>,\n options: FindOneAndDeleteOptions & { includeResultMetadata: false },\n ): Promise<WithId<T> | null>;\n findOneAndDelete(\n filter: Filter<T>,\n options: FindOneAndDeleteOptions,\n ): Promise<WithId<T> | null>;\n findOneAndDelete(filter: Filter<T>): Promise<WithId<T> | null>;\n findOneAndDelete(\n filter: unknown,\n options?: FindOneAndDeleteOptions,\n ): Promise<WithId<T> | null | ModifyResult<T>> {\n return this.collection.findOneAndDelete(\n filter as PongoFilter<T>,\n toCollectionOperationOptions(options),\n ) as Promise<WithId<T> | null>;\n }\n findOneAndReplace(\n filter: Filter<T>,\n replacement: WithoutId<T>,\n options: FindOneAndReplaceOptions & { includeResultMetadata: true },\n ): Promise<ModifyResult<T>>;\n findOneAndReplace(\n filter: Filter<T>,\n replacement: WithoutId<T>,\n options: FindOneAndReplaceOptions & { includeResultMetadata: false },\n ): Promise<WithId<T> | null>;\n findOneAndReplace(\n filter: Filter<T>,\n replacement: WithoutId<T>,\n options: FindOneAndReplaceOptions,\n ): Promise<WithId<T> | null>;\n findOneAndReplace(\n filter: Filter<T>,\n replacement: WithoutId<T>,\n ): Promise<WithId<T> | null>;\n findOneAndReplace(\n filter: unknown,\n replacement: unknown,\n options?: FindOneAndReplaceOptions | undefined,\n ): Promise<WithId<T> | null | ModifyResult<T>> {\n return this.collection.findOneAndReplace(\n filter as PongoFilter<T>,\n replacement as WithoutId<T>,\n toCollectionOperationOptions(options),\n ) as Promise<WithId<T> | null>;\n }\n findOneAndUpdate(\n filter: Filter<T>,\n update: UpdateFilter<T>,\n options: FindOneAndUpdateOptions & { includeResultMetadata: true },\n ): Promise<ModifyResult<T>>;\n findOneAndUpdate(\n filter: Filter<T>,\n update: UpdateFilter<T>,\n options: FindOneAndUpdateOptions & { includeResultMetadata: false },\n ): Promise<WithId<T> | null>;\n findOneAndUpdate(\n filter: Filter<T>,\n update: UpdateFilter<T>,\n options: FindOneAndUpdateOptions,\n ): Promise<WithId<T> | null>;\n findOneAndUpdate(\n filter: Filter<T>,\n update: UpdateFilter<T>,\n ): Promise<WithId<T> | null>;\n findOneAndUpdate(\n filter: unknown,\n update: unknown,\n options?: FindOneAndUpdateOptions | undefined,\n ): Promise<WithId<T> | null | ModifyResult<T>> {\n return this.collection.findOneAndUpdate(\n filter as PongoFilter<T>,\n update as PongoUpdate<T>,\n toCollectionOperationOptions(options),\n ) as Promise<WithId<T> | null>;\n }\n aggregate<T extends Document = Document>(\n _pipeline?: Document[] | undefined,\n _options?: AggregateOptions | undefined,\n ): AggregationCursor<T> {\n throw new Error('Method not implemented.');\n }\n watch<\n TLocal extends Document = T,\n TChange extends Document = ChangeStreamDocument<TLocal>,\n >(\n _pipeline?: Document[] | undefined,\n _options?: ChangeStreamOptions | undefined,\n ): ChangeStream<TLocal, TChange> {\n throw new Error('Method not implemented.');\n }\n initializeUnorderedBulkOp(\n _options?: BulkWriteOptions | undefined,\n ): UnorderedBulkOperation {\n throw new Error('Method not implemented.');\n }\n initializeOrderedBulkOp(\n _options?: BulkWriteOptions | undefined,\n ): OrderedBulkOperation {\n throw new Error('Method not implemented.');\n }\n count(\n filter?: Filter<T> | undefined,\n options?: CountOptions | undefined,\n ): Promise<number> {\n return this.collection.countDocuments(\n (filter as PongoFilter<T>) ?? {},\n toCollectionOperationOptions(options),\n );\n }\n listSearchIndexes(\n options?: ListSearchIndexesOptions | undefined,\n ): ListSearchIndexesCursor;\n listSearchIndexes(\n name: string,\n options?: ListSearchIndexesOptions | undefined,\n ): ListSearchIndexesCursor;\n listSearchIndexes(\n _name?: unknown,\n _options?: unknown,\n ): import('mongodb').ListSearchIndexesCursor {\n throw new Error('Method not implemented.');\n }\n createSearchIndex(_description: SearchIndexDescription): Promise<string> {\n throw new Error('Method not implemented.');\n }\n createSearchIndexes(\n _descriptions: SearchIndexDescription[],\n ): Promise<string[]> {\n throw new Error('Method not implemented.');\n }\n dropSearchIndex(_name: string): Promise<void> {\n throw new Error('Method not implemented.');\n }\n updateSearchIndex(_name: string, _definition: Document): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n async createCollection(): Promise<void> {\n await this.collection.createCollection();\n }\n async handle(\n id: ObjectId,\n handle: DocumentHandler<T>,\n options?: HandleOptions,\n ): Promise<PongoHandleResult<T>> {\n return this.collection.handle(id.toString(), handle, options);\n }\n}\n","import type { ClientSessionOptions } from 'http2';\nimport type { ClientSession, WithSessionCallback } from 'mongodb';\nimport {\n pongoClient,\n pongoSession,\n type PongoClient,\n type PongoClientOptions,\n} from '../core';\nimport { Db } from './mongoDb';\n\nexport class MongoClient {\n private pongoClient: PongoClient;\n\n constructor(connectionString: string, options: PongoClientOptions = {}) {\n this.pongoClient = pongoClient(connectionString, options);\n }\n\n async connect() {\n await this.pongoClient.connect();\n return this;\n }\n\n async close() {\n await this.pongoClient.close();\n }\n\n db(dbName?: string): Db {\n return new Db(this.pongoClient.db(dbName));\n }\n startSession(_options?: ClientSessionOptions): ClientSession {\n return pongoSession() as unknown as ClientSession;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n withSession<T = any>(_executor: WithSessionCallback<T>): Promise<T>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n withSession<T = any>(\n _options: ClientSessionOptions,\n _executor: WithSessionCallback<T>,\n ): Promise<T>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async withSession<T = any>(\n optionsOrExecutor: ClientSessionOptions | WithSessionCallback<T>,\n executor?: WithSessionCallback<T>,\n ): Promise<T> {\n const callback =\n typeof optionsOrExecutor === 'function' ? optionsOrExecutor : executor!;\n\n const session = pongoSession() as unknown as ClientSession;\n\n try {\n return await callback(session);\n } finally {\n await session.endSession();\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/Pongo/Pongo/src/packages/pongo/dist/shim.cjs","../src/mongo/findCursor.ts","../src/mongo/mongoDb.ts","../src/mongo/mongoCollection.ts","../src/mongo/mongoClient.ts"],"names":[],"mappings":"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","file":"/home/runner/work/Pongo/Pongo/src/packages/pongo/dist/shim.cjs","sourcesContent":[null,"export class FindCursor<T> {\n private findDocumentsPromise: Promise<T[]>;\n private documents: T[] | null = null;\n private index: number = 0;\n\n constructor(documents: Promise<T[]>) {\n this.findDocumentsPromise = documents;\n }\n\n async toArray(): Promise<T[]> {\n return this.findDocuments();\n }\n\n async forEach(callback: (doc: T) => void): Promise<void> {\n const docs = await this.findDocuments();\n\n for (const doc of docs) {\n callback(doc);\n }\n return Promise.resolve();\n }\n\n hasNext(): boolean {\n if (this.documents === null) throw Error('Error while fetching documents');\n return this.index < this.documents.length;\n }\n\n async next(): Promise<T | null> {\n const docs = await this.findDocuments();\n return this.hasNext() ? (docs[this.index++] ?? null) : null;\n }\n\n private async findDocuments(): Promise<T[]> {\n this.documents = await this.findDocumentsPromise;\n return this.documents;\n }\n}\n","import {\n Collection as MongoCollection,\n ObjectId,\n type Document,\n} from 'mongodb';\nimport type {\n DocumentHandler,\n HandleOptions,\n PongoDb,\n PongoDBCollectionOptions,\n PongoHandleResult,\n} from '../core';\nimport { Collection } from './mongoCollection';\n\nexport class Db {\n constructor(private pongoDb: PongoDb) {}\n\n get databaseName(): string {\n return this.pongoDb.databaseName;\n }\n\n collection<T extends Document>(\n collectionName: string,\n options?: PongoDBCollectionOptions<T>,\n ): MongoCollection<T> & {\n handle(\n id: ObjectId,\n handle: DocumentHandler<T>,\n options?: HandleOptions,\n ): Promise<PongoHandleResult<T>>;\n } {\n return new Collection<T>(\n this.pongoDb.collection<T>(collectionName, options),\n );\n }\n}\n","import type {\n AbstractCursorOptions,\n AggregateOptions,\n AggregationCursor,\n AnyBulkWriteOperation,\n BSONSerializeOptions,\n BulkWriteOptions,\n BulkWriteResult,\n ChangeStream,\n ChangeStreamDocument,\n ChangeStreamOptions,\n CommandOperationOptions,\n CountDocumentsOptions,\n CountOptions,\n CreateIndexesOptions,\n DeleteOptions,\n DeleteResult,\n Document,\n DropCollectionOptions,\n EnhancedOmit,\n EstimatedDocumentCountOptions,\n Filter,\n FindOneAndDeleteOptions,\n FindOneAndReplaceOptions,\n FindOneAndUpdateOptions,\n FindOptions,\n Flatten,\n Hint,\n IndexDescription,\n IndexDescriptionCompact,\n IndexDescriptionInfo,\n IndexInformationOptions,\n IndexSpecification,\n InferIdType,\n InsertManyResult,\n InsertOneOptions,\n InsertOneResult,\n ListIndexesCursor,\n ListSearchIndexesCursor,\n ListSearchIndexesOptions,\n ModifyResult,\n Collection as MongoCollection,\n FindCursor as MongoFindCursor,\n ObjectId,\n OperationOptions,\n OptionalUnlessRequiredId,\n OrderedBulkOperation,\n ReadConcern,\n ReadPreference,\n RenameOptions,\n ReplaceOptions,\n SearchIndexDescription,\n UnorderedBulkOperation,\n UpdateFilter,\n UpdateOptions,\n UpdateResult,\n WithId,\n WithoutId,\n WriteConcern,\n} from 'mongodb';\nimport type { Key } from 'readline';\nimport type {\n CollectionOperationOptions,\n DocumentHandler,\n HandleOptions,\n PongoCollection,\n PongoFilter,\n PongoHandleResult,\n OptionalUnlessRequiredId as PongoOptionalUnlessRequiredId,\n PongoSession,\n PongoUpdate,\n} from '../core';\nimport { FindCursor } from './findCursor';\n\nconst toCollectionOperationOptions = (\n options: OperationOptions | undefined,\n): CollectionOperationOptions | undefined =>\n options?.session\n ? { session: options.session as unknown as PongoSession }\n : undefined;\n\nexport class Collection<T extends Document> implements MongoCollection<T> {\n private collection: PongoCollection<T>;\n\n constructor(collection: PongoCollection<T>) {\n this.collection = collection;\n }\n get dbName(): string {\n return this.collection.dbName;\n }\n get collectionName(): string {\n return this.collection.collectionName;\n }\n get namespace(): string {\n return `${this.dbName}.${this.collectionName}`;\n }\n get readConcern(): ReadConcern | undefined {\n return undefined;\n }\n get readPreference(): ReadPreference | undefined {\n return undefined;\n }\n get bsonOptions(): BSONSerializeOptions {\n return {};\n }\n get writeConcern(): WriteConcern | undefined {\n return undefined;\n }\n get hint(): Hint | undefined {\n return undefined;\n }\n set hint(v: Hint | undefined) {\n throw new Error('Method not implemented.');\n }\n async insertOne(\n doc: OptionalUnlessRequiredId<T>,\n options?: InsertOneOptions,\n ): Promise<InsertOneResult<T>> {\n const result = await this.collection.insertOne(\n doc as unknown as PongoOptionalUnlessRequiredId<T>,\n toCollectionOperationOptions(options),\n );\n return {\n acknowledged: result.acknowledged,\n insertedId: result.insertedId as unknown as InferIdType<T>,\n };\n }\n async insertMany(\n docs: OptionalUnlessRequiredId<T>[],\n options?: BulkWriteOptions,\n ): Promise<InsertManyResult<T>> {\n const result = await this.collection.insertMany(\n docs as unknown as PongoOptionalUnlessRequiredId<T>[],\n toCollectionOperationOptions(options),\n );\n return {\n acknowledged: result.acknowledged,\n insertedIds: result.insertedIds as unknown as InferIdType<T>[],\n insertedCount: result.insertedCount,\n };\n }\n bulkWrite(\n _operations: AnyBulkWriteOperation<T>[],\n _options?: BulkWriteOptions,\n ): Promise<BulkWriteResult> {\n throw new Error('Method not implemented.');\n }\n async updateOne(\n filter: Filter<T>,\n update: Document[] | UpdateFilter<T>,\n options?: UpdateOptions,\n ): Promise<UpdateResult<T>> {\n const result = await this.collection.updateOne(\n filter as unknown as PongoFilter<T>,\n update as unknown as PongoUpdate<T>,\n toCollectionOperationOptions(options),\n );\n\n return {\n acknowledged: result.acknowledged,\n matchedCount: result.modifiedCount,\n modifiedCount: result.modifiedCount,\n upsertedCount: result.modifiedCount,\n upsertedId: null,\n };\n }\n replaceOne(\n filter: Filter<T>,\n document: WithoutId<T>,\n options?: ReplaceOptions,\n ): Promise<Document | UpdateResult<T>> {\n return this.collection.replaceOne(\n filter as unknown as PongoFilter<T>,\n document,\n toCollectionOperationOptions(options),\n );\n }\n async updateMany(\n filter: Filter<T>,\n update: Document[] | UpdateFilter<T>,\n options?: UpdateOptions,\n ): Promise<UpdateResult<T>> {\n const result = await this.collection.updateMany(\n filter as unknown as PongoFilter<T>,\n update as unknown as PongoUpdate<T>,\n toCollectionOperationOptions(options),\n );\n\n return {\n acknowledged: result.acknowledged,\n matchedCount: result.modifiedCount,\n modifiedCount: result.modifiedCount,\n upsertedCount: result.modifiedCount,\n upsertedId: null,\n };\n }\n async deleteOne(\n filter?: Filter<T>,\n options?: DeleteOptions,\n ): Promise<DeleteResult> {\n const result = await this.collection.deleteOne(\n filter as PongoFilter<T>,\n toCollectionOperationOptions(options),\n );\n\n return {\n acknowledged: result.acknowledged,\n deletedCount: result.deletedCount,\n };\n }\n async deleteMany(\n filter?: Filter<T>,\n options?: DeleteOptions,\n ): Promise<DeleteResult> {\n const result = await this.collection.deleteMany(\n filter as PongoFilter<T>,\n toCollectionOperationOptions(options),\n );\n\n return {\n acknowledged: result.acknowledged,\n deletedCount: result.deletedCount,\n };\n }\n async rename(\n newName: string,\n options?: RenameOptions,\n ): Promise<Collection<Document>> {\n await this.collection.rename(\n newName,\n toCollectionOperationOptions(options),\n );\n\n return this as unknown as Collection<Document>;\n }\n drop(options?: DropCollectionOptions): Promise<boolean> {\n return this.collection.drop(toCollectionOperationOptions(options));\n }\n findOne(): Promise<WithId<T> | null>;\n findOne(filter: Filter<T>): Promise<WithId<T> | null>;\n findOne(\n filter: Filter<T>,\n options: FindOptions<Document>,\n ): Promise<WithId<T> | null>;\n findOne<TS = T>(): Promise<TS | null>;\n findOne<TS = T>(filter: Filter<TS>): Promise<TS | null>;\n findOne<TS = T>(\n filter: Filter<TS>,\n options?: FindOptions<Document>,\n ): Promise<TS | null>;\n async findOne(\n filter?: unknown,\n options?: FindOptions<Document>,\n ): Promise<import('mongodb').WithId<T> | T | null> {\n return (await this.collection.findOne(\n filter as PongoFilter<T>,\n toCollectionOperationOptions(options),\n )) as T;\n }\n find(): MongoFindCursor<WithId<T>>;\n find(\n filter: Filter<T>,\n options?: FindOptions<Document>,\n ): MongoFindCursor<WithId<T>>;\n find<T extends Document>(\n filter: Filter<T>,\n options?: FindOptions<Document>,\n ): MongoFindCursor<T>;\n find(\n filter?: unknown,\n options?: FindOptions<Document>,\n ): MongoFindCursor<WithId<T>> | MongoFindCursor<T> {\n return new FindCursor(\n this.collection.find(\n filter as PongoFilter<T>,\n toCollectionOperationOptions(options),\n ),\n ) as unknown as MongoFindCursor<T>;\n }\n options(_options?: OperationOptions): Promise<Document> {\n throw new Error('Method not implemented.');\n }\n isCapped(_options?: OperationOptions): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n createIndex(\n _indexSpec: IndexSpecification,\n _options?: CreateIndexesOptions,\n ): Promise<string> {\n throw new Error('Method not implemented.');\n }\n createIndexes(\n _indexSpecs: IndexDescription[],\n _options?: CreateIndexesOptions,\n ): Promise<string[]> {\n throw new Error('Method not implemented.');\n }\n dropIndex(\n _indexName: string,\n _options?: CommandOperationOptions,\n ): Promise<Document> {\n throw new Error('Method not implemented.');\n }\n dropIndexes(_options?: CommandOperationOptions): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n listIndexes(_options?: AbstractCursorOptions): ListIndexesCursor {\n throw new Error('Method not implemented.');\n }\n indexExists(\n _indexes: string | string[],\n _options?: AbstractCursorOptions,\n ): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n indexInformation(\n options: IndexInformationOptions & { full: true },\n ): Promise<IndexDescriptionInfo[]>;\n indexInformation(\n options: IndexInformationOptions & { full?: false | undefined },\n ): Promise<IndexDescriptionCompact>;\n indexInformation(\n options: IndexInformationOptions,\n ): Promise<IndexDescriptionCompact | IndexDescriptionInfo[]>;\n indexInformation(): Promise<IndexDescriptionCompact>;\n indexInformation(\n _options?: unknown,\n ):\n | Promise<import('mongodb').IndexDescriptionInfo[]>\n | Promise<import('mongodb').IndexDescriptionCompact>\n | Promise<\n | import('mongodb').IndexDescriptionCompact\n | import('mongodb').IndexDescriptionInfo[]\n > {\n throw new Error('Method not implemented.');\n }\n estimatedDocumentCount(\n options?: EstimatedDocumentCountOptions,\n ): Promise<number> {\n return this.collection.countDocuments(\n {},\n toCollectionOperationOptions(options),\n );\n }\n countDocuments(\n filter?: Filter<T>,\n options?: CountDocumentsOptions,\n ): Promise<number> {\n return this.collection.countDocuments(\n filter as PongoFilter<T>,\n toCollectionOperationOptions(options),\n );\n }\n distinct<Key extends '_id' | keyof EnhancedOmit<T, '_id'>>(\n key: Key,\n ): Promise<Flatten<WithId<T>[Key]>[]>;\n distinct<Key extends '_id' | keyof EnhancedOmit<T, '_id'>>(\n key: Key,\n filter: Filter<T>,\n ): Promise<Flatten<WithId<T>[Key]>[]>;\n distinct<Key extends '_id' | keyof EnhancedOmit<T, '_id'>>(\n key: Key,\n filter: Filter<T>,\n options: CommandOperationOptions,\n ): Promise<Flatten<WithId<T>[Key]>[]>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n distinct(key: string): Promise<any[]>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n distinct(key: string, filter: Filter<T>): Promise<any[]>;\n distinct(\n key: string,\n filter: Filter<T>,\n options: CommandOperationOptions, // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): Promise<any[]>;\n distinct(\n _key: unknown,\n _filter?: unknown,\n _options?: unknown,\n ): // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | Promise<any[]>\n | Promise<import('mongodb').Flatten<import('mongodb').WithId<T>[Key]>[]> {\n throw new Error('Method not implemented.');\n }\n indexes(\n options: IndexInformationOptions & { full?: true | undefined },\n ): Promise<IndexDescriptionInfo[]>;\n indexes(\n options: IndexInformationOptions & { full: false },\n ): Promise<IndexDescriptionCompact>;\n indexes(\n options: IndexInformationOptions,\n ): Promise<IndexDescriptionCompact | IndexDescriptionInfo[]>;\n indexes(options?: AbstractCursorOptions): Promise<IndexDescriptionInfo[]>;\n indexes(\n _options?: unknown,\n ):\n | Promise<import('mongodb').IndexDescriptionInfo[]>\n | Promise<import('mongodb').IndexDescriptionCompact>\n | Promise<\n | import('mongodb').IndexDescriptionCompact\n | import('mongodb').IndexDescriptionInfo[]\n > {\n throw new Error('Method not implemented.');\n }\n findOneAndDelete(\n filter: Filter<T>,\n options: FindOneAndDeleteOptions & { includeResultMetadata: true },\n ): Promise<ModifyResult<T>>;\n findOneAndDelete(\n filter: Filter<T>,\n options: FindOneAndDeleteOptions & { includeResultMetadata: false },\n ): Promise<WithId<T> | null>;\n findOneAndDelete(\n filter: Filter<T>,\n options: FindOneAndDeleteOptions,\n ): Promise<WithId<T> | null>;\n findOneAndDelete(filter: Filter<T>): Promise<WithId<T> | null>;\n findOneAndDelete(\n filter: unknown,\n options?: FindOneAndDeleteOptions,\n ): Promise<WithId<T> | null | ModifyResult<T>> {\n return this.collection.findOneAndDelete(\n filter as PongoFilter<T>,\n toCollectionOperationOptions(options),\n ) as Promise<WithId<T> | null>;\n }\n findOneAndReplace(\n filter: Filter<T>,\n replacement: WithoutId<T>,\n options: FindOneAndReplaceOptions & { includeResultMetadata: true },\n ): Promise<ModifyResult<T>>;\n findOneAndReplace(\n filter: Filter<T>,\n replacement: WithoutId<T>,\n options: FindOneAndReplaceOptions & { includeResultMetadata: false },\n ): Promise<WithId<T> | null>;\n findOneAndReplace(\n filter: Filter<T>,\n replacement: WithoutId<T>,\n options: FindOneAndReplaceOptions,\n ): Promise<WithId<T> | null>;\n findOneAndReplace(\n filter: Filter<T>,\n replacement: WithoutId<T>,\n ): Promise<WithId<T> | null>;\n findOneAndReplace(\n filter: unknown,\n replacement: unknown,\n options?: FindOneAndReplaceOptions,\n ): Promise<WithId<T> | null | ModifyResult<T>> {\n return this.collection.findOneAndReplace(\n filter as PongoFilter<T>,\n replacement as WithoutId<T>,\n toCollectionOperationOptions(options),\n ) as Promise<WithId<T> | null>;\n }\n findOneAndUpdate(\n filter: Filter<T>,\n update: UpdateFilter<T>,\n options: FindOneAndUpdateOptions & { includeResultMetadata: true },\n ): Promise<ModifyResult<T>>;\n findOneAndUpdate(\n filter: Filter<T>,\n update: UpdateFilter<T>,\n options: FindOneAndUpdateOptions & { includeResultMetadata: false },\n ): Promise<WithId<T> | null>;\n findOneAndUpdate(\n filter: Filter<T>,\n update: UpdateFilter<T>,\n options: FindOneAndUpdateOptions,\n ): Promise<WithId<T> | null>;\n findOneAndUpdate(\n filter: Filter<T>,\n update: UpdateFilter<T>,\n ): Promise<WithId<T> | null>;\n findOneAndUpdate(\n filter: unknown,\n update: unknown,\n options?: FindOneAndUpdateOptions,\n ): Promise<WithId<T> | null | ModifyResult<T>> {\n return this.collection.findOneAndUpdate(\n filter as PongoFilter<T>,\n update as PongoUpdate<T>,\n toCollectionOperationOptions(options),\n ) as Promise<WithId<T> | null>;\n }\n aggregate<T extends Document = Document>(\n _pipeline?: Document[],\n _options?: AggregateOptions,\n ): AggregationCursor<T> {\n throw new Error('Method not implemented.');\n }\n watch<\n TLocal extends Document = T,\n TChange extends Document = ChangeStreamDocument<TLocal>,\n >(\n _pipeline?: Document[],\n _options?: ChangeStreamOptions,\n ): ChangeStream<TLocal, TChange> {\n throw new Error('Method not implemented.');\n }\n initializeUnorderedBulkOp(\n _options?: BulkWriteOptions,\n ): UnorderedBulkOperation {\n throw new Error('Method not implemented.');\n }\n initializeOrderedBulkOp(_options?: BulkWriteOptions): OrderedBulkOperation {\n throw new Error('Method not implemented.');\n }\n count(filter?: Filter<T>, options?: CountOptions): Promise<number> {\n return this.collection.countDocuments(\n (filter as PongoFilter<T>) ?? {},\n toCollectionOperationOptions(options),\n );\n }\n listSearchIndexes(\n options?: ListSearchIndexesOptions,\n ): ListSearchIndexesCursor;\n listSearchIndexes(\n name: string,\n options?: ListSearchIndexesOptions,\n ): ListSearchIndexesCursor;\n listSearchIndexes(\n _name?: unknown,\n _options?: unknown,\n ): import('mongodb').ListSearchIndexesCursor {\n throw new Error('Method not implemented.');\n }\n createSearchIndex(_description: SearchIndexDescription): Promise<string> {\n throw new Error('Method not implemented.');\n }\n createSearchIndexes(\n _descriptions: SearchIndexDescription[],\n ): Promise<string[]> {\n throw new Error('Method not implemented.');\n }\n dropSearchIndex(_name: string): Promise<void> {\n throw new Error('Method not implemented.');\n }\n updateSearchIndex(_name: string, _definition: Document): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n async createCollection(): Promise<void> {\n await this.collection.createCollection();\n }\n async handle(\n id: ObjectId,\n handle: DocumentHandler<T>,\n options?: HandleOptions,\n ): Promise<PongoHandleResult<T>> {\n return this.collection.handle(id.toString(), handle, options);\n }\n}\n","import type { ClientSessionOptions } from 'http2';\nimport type { ClientSession, WithSessionCallback } from 'mongodb';\nimport {\n pongoClient,\n pongoSession,\n type PongoClient,\n type PongoClientOptions,\n} from '../core';\nimport { Db } from './mongoDb';\n\nexport class MongoClient {\n private pongoClient: PongoClient;\n\n constructor(connectionString: string, options: PongoClientOptions = {}) {\n this.pongoClient = pongoClient(connectionString, options);\n }\n\n async connect() {\n await this.pongoClient.connect();\n return this;\n }\n\n async close() {\n await this.pongoClient.close();\n }\n\n db(dbName?: string): Db {\n return new Db(this.pongoClient.db(dbName));\n }\n startSession(_options?: ClientSessionOptions): ClientSession {\n return pongoSession() as unknown as ClientSession;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n withSession<T = any>(_executor: WithSessionCallback<T>): Promise<T>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n withSession<T = any>(\n _options: ClientSessionOptions,\n _executor: WithSessionCallback<T>,\n ): Promise<T>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async withSession<T = any>(\n optionsOrExecutor: ClientSessionOptions | WithSessionCallback<T>,\n executor?: WithSessionCallback<T>,\n ): Promise<T> {\n const callback =\n typeof optionsOrExecutor === 'function' ? optionsOrExecutor : executor!;\n\n const session = pongoSession() as unknown as ClientSession;\n\n try {\n return await callback(session);\n } finally {\n await session.endSession();\n }\n }\n}\n"]}