@event-driven-io/emmett-testcontainers 0.43.0-beta.28 → 0.43.0-beta.29
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/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -116,7 +116,7 @@ const logger = (options) => {
|
|
|
116
116
|
const noopLogger = logger({ event: () => {} });
|
|
117
117
|
|
|
118
118
|
//#endregion
|
|
119
|
-
//#region ../almanac/dist/spanLogEvent-
|
|
119
|
+
//#region ../almanac/dist/spanLogEvent-ByQosuDu.js
|
|
120
120
|
const bigIntReplacer = (_key, value) => {
|
|
121
121
|
return typeof value === "bigint" ? value.toString() : value;
|
|
122
122
|
};
|
|
@@ -202,7 +202,7 @@ const jsonSerializer = (options) => {
|
|
|
202
202
|
const JSONSerializer = Object.assign(jsonSerializer(), { from: (options) => options?.serialization?.serializer ?? (options?.serialization?.options ? jsonSerializer(options?.serialization?.options) : JSONSerializer) });
|
|
203
203
|
|
|
204
204
|
//#endregion
|
|
205
|
-
//#region ../almanac/dist/console-
|
|
205
|
+
//#region ../almanac/dist/console-Bn5yW7XZ.js
|
|
206
206
|
const consoleMethodFor = (level) => {
|
|
207
207
|
switch (level) {
|
|
208
208
|
case "fatal":
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["GenericContainer","Wait","AbstractStartedContainer","EventStoreDBClient","EventStoreDBClient","MongoDBContainer","PostgreSqlContainer"],"sources":["../../almanac/dist/logger-DnrSjS8d.js","../../almanac/dist/spanLogEvent-DxTi1Li5.js","../../almanac/dist/console-DQ8X0Jo1.js","../src/eventStore/eventStoreDBContainer.ts","../src/eventStore/index.ts","../src/mongodb/mongoDBContainer.ts","../src/postgresql/postgreSQLContainer.ts"],"sourcesContent":["//#region src/loggers/logger.ts\nconst LogLevel = {\n\tdefault: \"info\",\n\tsilent: \"silent\",\n\ttrace: \"trace\",\n\tdebug: \"debug\",\n\tinfo: \"info\",\n\twarn: \"warn\",\n\terror: \"error\",\n\tfatal: \"fatal\"\n};\nconst shouldLog = (logLevel, definedLogLevel) => {\n\tdefinedLogLevel ??= LogLevel.default;\n\tswitch (definedLogLevel) {\n\t\tcase \"fatal\": return logLevel === LogLevel.fatal;\n\t\tcase \"error\": return [LogLevel.fatal, LogLevel.error].includes(logLevel);\n\t\tcase \"warn\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn\n\t\t].includes(logLevel);\n\t\tcase \"info\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn,\n\t\t\tLogLevel.info\n\t\t].includes(logLevel);\n\t\tcase \"debug\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn,\n\t\t\tLogLevel.info,\n\t\t\tLogLevel.debug\n\t\t].includes(logLevel);\n\t\tcase \"trace\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn,\n\t\t\tLogLevel.info,\n\t\t\tLogLevel.debug,\n\t\t\tLogLevel.trace\n\t\t].includes(logLevel);\n\t\tcase \"silent\": return false;\n\t}\n};\nconst logEvent = (eventName, data, eventMetadata) => {\n\treturn {\n\t\tname: eventName,\n\t\tdata,\n\t\tmetadata: {\n\t\t\t...eventMetadata,\n\t\t\ttimestamp: eventMetadata.timestamp ?? Date.now()\n\t\t}\n\t};\n};\nconst message = (level, body, data, eventMetadata) => {\n\tif (data === void 0) return logEvent(body, { body }, {\n\t\tlevel,\n\t\t...eventMetadata\n\t});\n\tconst eventData = { body };\n\tif (data.error !== void 0) eventData.error = data.error;\n\tif (data.attributes !== void 0) eventData.attributes = data.attributes;\n\treturn logEvent(body, eventData, {\n\t\tlevel,\n\t\t...eventMetadata\n\t});\n};\nconst forLevel = (level) => (msgOrObj, msgOrMetadata, eventMetadata) => {\n\tif (typeof msgOrObj === \"string\") return logEvent(msgOrObj, { body: msgOrObj }, {\n\t\tlevel,\n\t\t...typeof msgOrMetadata === \"string\" ? eventMetadata : msgOrMetadata\n\t});\n\tconst msg = typeof msgOrMetadata === \"string\" ? msgOrMetadata : void 0;\n\tconst overrides = eventMetadata ?? (typeof msgOrMetadata === \"string\" ? void 0 : msgOrMetadata);\n\tif (msgOrObj instanceof Error) return logEvent(msg ?? \"\", {\n\t\terror: msgOrObj,\n\t\tbody: msg\n\t}, {\n\t\tlevel,\n\t\t...overrides\n\t});\n\tconst { eventName, ...attributes } = msgOrObj;\n\treturn logEvent(typeof eventName === \"string\" ? eventName : msg ?? \"\", {\n\t\tattributes,\n\t\tbody: msg\n\t}, {\n\t\tlevel,\n\t\t...overrides\n\t});\n};\nconst LogEvent = Object.assign(logEvent, {\n\tmessage,\n\tfatal: forLevel(\"fatal\"),\n\terror: forLevel(\"error\"),\n\twarn: forLevel(\"warn\"),\n\tinfo: forLevel(\"info\"),\n\tdebug: forLevel(\"debug\"),\n\ttrace: forLevel(\"trace\"),\n\tsilent: forLevel(\"silent\")\n});\nconst logger = (options) => {\n\tconst { event: sink, minLevel } = options;\n\treturn (event) => {\n\t\tif (event.metadata.level === \"silent\" || !shouldLog(event.metadata.level, minLevel)) return;\n\t\tsink(event);\n\t};\n};\nconst noopLogger = logger({ event: () => {} });\n\n//#endregion\nexport { shouldLog as a, noopLogger as i, LogLevel as n, logger as r, LogEvent as t };\n//# sourceMappingURL=logger-DnrSjS8d.js.map","import { i as noopLogger } from \"./logger-DnrSjS8d.js\";\n\n//#region src/serialization/json/jsonSerializer.ts\nconst bigIntReplacer = (_key, value) => {\n\treturn typeof value === \"bigint\" ? value.toString() : value;\n};\nconst dateReplacer = (_key, value) => {\n\treturn value instanceof Date ? value.toISOString() : value;\n};\nconst errorReplacer = (_key, value) => value instanceof Error ? {\n\ttype: value.constructor.name || \"error\",\n\tmessage: value.message,\n\tstack: value.stack\n} : value;\nconst isFirstLetterNumeric = (str) => {\n\tconst c = str.charCodeAt(0);\n\treturn c >= 48 && c <= 57;\n};\nconst isFirstLetterNumericOrMinus = (str) => {\n\tconst c = str.charCodeAt(0);\n\treturn c >= 48 && c <= 57 || c === 45;\n};\nconst bigIntReviver = (_key, value, context) => {\n\tif (typeof value === \"number\" && Number.isInteger(value) && !Number.isSafeInteger(value)) try {\n\t\treturn BigInt(context?.source ?? value.toString());\n\t} catch {\n\t\treturn value;\n\t}\n\tif (typeof value === \"string\" && value.length > 15) {\n\t\tif (isFirstLetterNumericOrMinus(value)) {\n\t\t\tconst num = Number(value);\n\t\t\tif (Number.isFinite(num) && !Number.isSafeInteger(num)) try {\n\t\t\t\treturn BigInt(value);\n\t\t\t} catch {}\n\t\t}\n\t}\n\treturn value;\n};\nconst dateReviver = (_key, value) => {\n\tif (typeof value === \"string\" && value.length === 24 && isFirstLetterNumeric(value) && value[10] === \"T\" && value[23] === \"Z\") {\n\t\tconst date = new Date(value);\n\t\tif (!isNaN(date.getTime())) return date;\n\t}\n\treturn value;\n};\nconst composeJSONReplacers = (...replacers) => {\n\tconst filteredReplacers = replacers.filter((r) => r !== void 0);\n\tif (filteredReplacers.length === 0) return void 0;\n\treturn (key, value) => filteredReplacers.reduce((accValue, replacer) => replacer(key, accValue), value);\n};\nconst composeJSONRevivers = (...revivers) => {\n\tconst filteredRevivers = revivers.filter((r) => r !== void 0);\n\tif (filteredRevivers.length === 0) return void 0;\n\treturn (key, value, context) => filteredRevivers.reduce((accValue, reviver) => reviver(key, accValue, context), value);\n};\nconst JSONReplacer = (opts) => composeJSONReplacers(opts?.replacer, opts?.failOnBigIntSerialization !== true ? JSONReplacers.bigInt : void 0, opts?.useDefaultDateSerialization !== true ? JSONReplacers.date : void 0, opts?.skipErrorSerialization !== true ? JSONReplacers.error : void 0);\nconst JSONReviver = (opts) => composeJSONRevivers(opts?.reviver, opts?.parseBigInts === true ? JSONRevivers.bigInt : void 0, opts?.parseDates === true ? JSONRevivers.date : void 0);\nconst JSONReplacers = {\n\tbigInt: bigIntReplacer,\n\tdate: dateReplacer,\n\terror: errorReplacer\n};\nconst JSONRevivers = {\n\tbigInt: bigIntReviver,\n\tdate: dateReviver\n};\nconst jsonSerializer = (options) => {\n\tconst defaultReplacer = JSONReplacer(options);\n\tconst defaultReviver = JSONReviver(options);\n\tconst defaultFormat = options?.format ?? \"compact\";\n\tconst defaultSafe = options?.safe ?? false;\n\treturn {\n\t\tserialize: (object, serializerOptions) => {\n\t\t\tconst replacer = serializerOptions ? JSONReplacer(serializerOptions) : defaultReplacer;\n\t\t\tconst indent = (serializerOptions?.format ?? defaultFormat) === \"pretty\" ? 2 : void 0;\n\t\t\tif (serializerOptions?.safe ?? defaultSafe) try {\n\t\t\t\treturn JSON.stringify(object, replacer, indent);\n\t\t\t} catch (e) {\n\t\t\t\treturn `{\"__serializationError\":${JSON.stringify(String(e))}}`;\n\t\t\t}\n\t\t\treturn JSON.stringify(object, replacer, indent);\n\t\t},\n\t\tdeserialize: (payload, deserializerOptions) => JSON.parse(payload, deserializerOptions ? JSONReviver(deserializerOptions) : defaultReviver)\n\t};\n};\nconst JSONSerializer = Object.assign(jsonSerializer(), { from: (options) => options?.serialization?.serializer ?? (options?.serialization?.options ? jsonSerializer(options?.serialization?.options) : JSONSerializer) });\n\n//#endregion\n//#region src/loggers/formatters/otelLogFormatter.ts\nconst SEVERITY_NUMBER = {\n\tsilent: 0,\n\ttrace: 1,\n\tdebug: 5,\n\tinfo: 9,\n\twarn: 13,\n\terror: 17,\n\tfatal: 21\n};\nconst severityNumberFor = (level) => SEVERITY_NUMBER[level];\nconst severityTextFor = (level) => level.toUpperCase();\nconst OtelLogFormatter = {\n\tformat: (event, options) => JSONSerializer.serialize(OtelLogFormatter.toOtelLog(event), options),\n\ttoOtelLog: ({ name: eventName, data, metadata }) => {\n\t\tconst attributes = { ...data.attributes ?? {} };\n\t\tif (data.error) {\n\t\t\tattributes[\"exception.type\"] = data.error.name;\n\t\t\tattributes[\"exception.message\"] = data.error.message;\n\t\t\tif (data.error.stack) attributes[\"exception.stacktrace\"] = data.error.stack;\n\t\t}\n\t\tconst log = {\n\t\t\ttimestamp: metadata.timestamp,\n\t\t\tseverityNumber: severityNumberFor(metadata.level),\n\t\t\tseverityText: severityTextFor(metadata.level)\n\t\t};\n\t\tif (eventName) log.eventName = eventName;\n\t\tif (metadata.traceId !== void 0) log.traceId = metadata.traceId;\n\t\tif (metadata.spanId !== void 0) log.spanId = metadata.spanId;\n\t\tif (data.body !== void 0) log.body = data.body;\n\t\tif (Object.keys(attributes).length) log.attributes = attributes;\n\t\treturn log;\n\t}\n};\n\n//#endregion\n//#region src/loggers/formatters/simpleFormatter.ts\nconst SimpleLogFormatter = { format: (event, _options) => {\n\tconst message = event.data.body ?? (event.name ? event.name : void 0);\n\treturn message !== void 0 ? `[${event.metadata.level}] ${message}` : `[${event.metadata.level}]`;\n} };\n\n//#endregion\n//#region src/tracers/span.ts\nconst noopSpan = {\n\tsetAttributes: () => {},\n\tspanContext: () => ({\n\t\ttraceId: \"\",\n\t\tspanId: \"\"\n\t}),\n\taddLink: () => {},\n\tlog: noopLogger\n};\n\n//#endregion\n//#region src/tracers/compositeTracer.ts\nconst compositeTracer = (...tracers) => ({ startSpan: async (name, fn, options) => {\n\tif (tracers.length === 0) return fn(noopSpan);\n\tconst nest = (index, collectedSpans) => {\n\t\tif (index >= tracers.length) return fn(compositeSpan(collectedSpans));\n\t\treturn tracers[index].startSpan(name, async (span) => nest(index + 1, [...collectedSpans, span]), options);\n\t};\n\treturn nest(0, []);\n} });\nconst compositeSpan = (spans) => ({\n\tsetAttributes: (attrs) => spans.forEach((s) => s.setAttributes(attrs)),\n\tspanContext: () => (spans[0] ?? noopSpan).spanContext(),\n\taddLink: (link) => spans.forEach((s) => s.addLink(link)),\n\tlog: (event) => spans.forEach((s) => s.log(event))\n});\n\n//#endregion\n//#region src/tracers/traceContextGenerator.ts\nconst randomHex = (bytes) => {\n\tconst arr = new Uint8Array(bytes);\n\tglobalThis.crypto.getRandomValues(arr);\n\treturn Array.from(arr, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n};\nconst defaultTraceContextGenerator = {\n\tgenerateTraceId: () => randomHex(16),\n\tgenerateSpanId: () => randomHex(8)\n};\n\n//#endregion\n//#region src/tracers/tracer.ts\nconst noTracing = { startSpan: async (_name, fn, _options) => fn(noopSpan) };\nconst noopTracer = () => noTracing;\n\n//#endregion\n//#region src/tracers/spanLogEvent.ts\nconst logEventForSpan = (event, context) => {\n\tconst traceId = event.metadata.traceId ?? context.traceId;\n\tconst spanId = event.metadata.spanId ?? context.spanId;\n\tif (traceId === event.metadata.traceId && spanId === event.metadata.spanId) return event;\n\tconst metadata = {\n\t\t...event.metadata,\n\t\ttraceId,\n\t\tspanId\n\t};\n\treturn {\n\t\tname: event.name,\n\t\tdata: event.data,\n\t\tmetadata\n\t};\n};\n\n//#endregion\nexport { noopSpan as a, severityTextFor as c, compositeTracer as i, JSONSerializer as l, noopTracer as n, SimpleLogFormatter as o, defaultTraceContextGenerator as r, OtelLogFormatter as s, logEventForSpan as t };\n//# sourceMappingURL=spanLogEvent-DxTi1Li5.js.map","import { l as JSONSerializer, o as SimpleLogFormatter, r as defaultTraceContextGenerator, s as OtelLogFormatter, t as logEventForSpan } from \"./spanLogEvent-DxTi1Li5.js\";\nimport { i as noopLogger, r as logger } from \"./logger-DnrSjS8d.js\";\n\n//#region src/providers/console/consoleLogger.ts\nconst consoleMethodFor = (level) => {\n\tswitch (level) {\n\t\tcase \"fatal\":\n\t\tcase \"error\": return console.error;\n\t\tcase \"warn\": return console.warn;\n\t\tcase \"debug\": return console.debug;\n\t\tcase \"trace\": return console.trace;\n\t\tdefault: return console.log;\n\t}\n};\nconst consoleLogger = logger({ event: (event) => {\n\tconst write = consoleMethodFor(event.metadata.level);\n\tconst extra = event.data.error ?? (event.data.attributes && Object.keys(event.data.attributes).length ? event.data.attributes : void 0);\n\tif (event.data.body !== void 0 && extra !== void 0) write(event.data.body, extra);\n\telse if (event.data.body !== void 0) write(event.data.body);\n\telse if (extra !== void 0) write(extra);\n\telse write(\"\");\n} });\n\n//#endregion\n//#region src/providers/console/consoleSpanLogSink.ts\nconst createConsoleSpanLogSink = (format) => {\n\tconst serializerOptions = {\n\t\tformat: format === \"simple\" || void 0 ? \"compact\" : format,\n\t\tsafe: true\n\t};\n\treturn format === \"simple\" ? (event) => console.log(SimpleLogFormatter.format(event, serializerOptions)) : (event) => console.log(OtelLogFormatter.format(event, serializerOptions));\n};\n\n//#endregion\n//#region src/providers/console/consoleSpanLogger.ts\nconst ConsoleFormat = {\n\tcompact: \"compact\",\n\tpretty: \"pretty\",\n\tSIMPLE: \"simple\"\n};\nconst consoleSpanLogger = (options) => logger({\n\tminLevel: options?.logLevel,\n\tevent: createConsoleSpanLogSink(options?.format)\n});\n\n//#endregion\n//#region src/providers/console/consoleTracer.ts\nconst consoleTracer = (options) => {\n\tconst mode = options?.mode ?? \"compact\";\n\tconst suppressLogs = options?.suppressLogs ?? false;\n\tconst traceContextGenerator = options?.traceContextGenerator ?? defaultTraceContextGenerator;\n\tconst sink = createConsoleSpanLogSink(mode);\n\tconst log = suppressLogs ? noopLogger : logger({\n\t\tminLevel: options?.logLevel,\n\t\tevent: sink\n\t});\n\treturn { startSpan: async (name, fn, spanOptions) => {\n\t\tconst traceId = traceContextGenerator.generateTraceId();\n\t\tconst spanId = traceContextGenerator.generateSpanId();\n\t\tconst context = {\n\t\t\ttraceId,\n\t\t\tspanId\n\t\t};\n\t\tconst startMs = Date.now();\n\t\tconst attributes = { ...spanOptions?.attributes };\n\t\tconst links = [...spanOptions?.links ?? []];\n\t\tconst span = {\n\t\t\tspanContext: () => context,\n\t\t\tsetAttributes: (attrs) => Object.assign(attributes, attrs),\n\t\t\taddLink: (link) => links.push(link),\n\t\t\tlog: (event) => log(logEventForSpan(event, context))\n\t\t};\n\t\tlet ok = true;\n\t\tlet spanError;\n\t\ttry {\n\t\t\treturn await fn(span);\n\t\t} catch (e) {\n\t\t\tok = false;\n\t\t\tspanError = e instanceof Error ? e : new Error(String(e));\n\t\t\tthrow e;\n\t\t} finally {\n\t\t\tconst durationMs = Date.now() - startMs;\n\t\t\tif (mode === \"simple\") console.log(`[span] ${name} (${durationMs}ms)${ok ? \"\" : \" [failed]\"}`);\n\t\t\telse {\n\t\t\t\tconst summary = {\n\t\t\t\t\tname,\n\t\t\t\t\ttraceId,\n\t\t\t\t\tspanId,\n\t\t\t\t\t...spanOptions?.parent?.spanId ? { parentSpanId: spanOptions.parent.spanId } : {},\n\t\t\t\t\tstartTimeUnixNano: (BigInt(startMs) * 1000000n).toString(),\n\t\t\t\t\tendTimeUnixNano: (BigInt(startMs + durationMs) * 1000000n).toString(),\n\t\t\t\t\tattributes,\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tcode: ok ? \"OK\" : \"ERROR\",\n\t\t\t\t\t\t...spanError !== void 0 ? { message: spanError.message } : {}\n\t\t\t\t\t},\n\t\t\t\t\tlinks\n\t\t\t\t};\n\t\t\t\tconsole.log(JSONSerializer.serialize(summary, {\n\t\t\t\t\tformat: mode === \"pretty\" ? \"pretty\" : \"compact\",\n\t\t\t\t\tsafe: true\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t} };\n};\n\n//#endregion\nexport { consoleLogger as i, ConsoleFormat as n, consoleSpanLogger as r, consoleTracer as t };\n//# sourceMappingURL=console-DQ8X0Jo1.js.map","import { LogEvent } from '@event-driven-io/almanac';\nimport { consoleLogger } from '@event-driven-io/almanac/console';\nimport { InProcessLock } from '@event-driven-io/emmett';\nimport { EventStoreDBClient } from '@eventstore/db-client';\nimport {\n AbstractStartedContainer,\n GenericContainer,\n Wait,\n type StartedTestContainer,\n} from 'testcontainers';\nimport type { Environment } from 'testcontainers/build/types';\n\nexport const EVENTSTOREDB_PORT = 2113;\nexport const EVENTSTOREDB_IMAGE_NAME = 'eventstore/eventstore';\nexport const EVENTSTOREDB_IMAGE_TAG = '24.10.0-bookworm-slim';\nexport const EVENTSTOREDB_ARM64_IMAGE_TAG = '24.10.0-alpha-arm64v8';\n\nexport const EVENTSTOREDB_DEFAULT_IMAGE = `${EVENTSTOREDB_IMAGE_NAME}:${process.arch !== 'arm64' ? EVENTSTOREDB_IMAGE_TAG : EVENTSTOREDB_ARM64_IMAGE_TAG}`;\n\nexport type EventStoreDBContainerOptions = {\n disableProjections?: boolean;\n isSecure?: boolean;\n useFileStorage?: boolean;\n withReuse?: boolean;\n};\n\nexport const defaultEventStoreDBContainerOptions: EventStoreDBContainerOptions =\n {\n disableProjections: false,\n isSecure: false,\n useFileStorage: false,\n withReuse: false,\n };\n\nexport class EventStoreDBContainer extends GenericContainer {\n constructor(\n image = EVENTSTOREDB_DEFAULT_IMAGE,\n options: EventStoreDBContainerOptions = defaultEventStoreDBContainerOptions,\n ) {\n super(image);\n\n const environment: Environment = {\n ...(!options.disableProjections\n ? {\n EVENTSTORE_RUN_PROJECTIONS: 'ALL',\n }\n : {}),\n ...(!options.isSecure\n ? {\n EVENTSTORE_INSECURE: 'true',\n }\n : {}),\n ...(options.useFileStorage\n ? {\n EVENTSTORE_MEM_DB: 'false',\n EVENTSTORE_DB: '/data/integration-tests',\n }\n : {}),\n EVENTSTORE_CLUSTER_SIZE: '1',\n EVENTSTORE_START_STANDARD_PROJECTIONS: 'true',\n EVENTSTORE_NODE_PORT: `${EVENTSTOREDB_PORT}`,\n EVENTSTORE_ENABLE_ATOM_PUB_OVER_HTTP: 'true',\n };\n\n this.withEnvironment(environment).withExposedPorts(EVENTSTOREDB_PORT);\n\n if (options.withReuse) this.withReuse();\n\n this.withWaitStrategy(\n Wait.forAll([Wait.forHealthCheck(), Wait.forListeningPorts()]),\n );\n }\n\n async start(): Promise<StartedEventStoreDBContainer> {\n return new StartedEventStoreDBContainer(await super.start());\n }\n}\n\nexport class StartedEventStoreDBContainer extends AbstractStartedContainer {\n constructor(container: StartedTestContainer) {\n super(container);\n }\n\n getConnectionString(): string {\n return `esdb://${this.getHost()}:${this.getMappedPort(2113)}?tls=false`;\n }\n\n getClient(): EventStoreDBClient {\n return EventStoreDBClient.connectionString(this.getConnectionString());\n }\n}\n\nlet container: EventStoreDBContainer | null = null;\nlet startedContainer: StartedEventStoreDBContainer | null = null;\nlet startedCount = 0;\nconst lock = InProcessLock();\n\nexport const getSharedEventStoreDBTestContainer = () =>\n lock.withAcquire(\n async () => {\n if (startedContainer) return startedContainer;\n\n if (!container)\n container = new EventStoreDBContainer(EVENTSTOREDB_DEFAULT_IMAGE);\n\n startedContainer = await container.start();\n startedCount++;\n\n container.withLogConsumer((stream) =>\n stream\n .on('data', (line) => consoleLogger(LogEvent.info(String(line))))\n .on('err', (line) => consoleLogger(LogEvent.error(String(line))))\n .on('end', () => consoleLogger(LogEvent.info('Stream closed'))),\n );\n\n return startedContainer;\n },\n { lockId: 'SharedEventStoreDBTestContainer' },\n );\n\nexport const getSharedTestEventStoreDBClient = async () => {\n return (await getSharedEventStoreDBTestContainer()).getClient();\n};\n\nexport const releaseSharedEventStoreDBTestContainer = () =>\n lock.withAcquire(\n async () => {\n const containerToStop = startedContainer;\n if (containerToStop && --startedCount === 0) {\n try {\n startedContainer = null;\n container = null;\n await containerToStop.stop();\n } catch {\n /* do nothing */\n }\n }\n },\n { lockId: 'SharedEventStoreDBTestContainer' },\n );\n","import { EventStoreDBClient } from '@eventstore/db-client';\nimport type { StartedEventStoreDBContainer } from './eventStoreDBContainer';\nimport { EventStoreDBContainer } from './eventStoreDBContainer';\n\nexport * from './eventStoreDBContainer';\n\nlet esdbContainer: StartedEventStoreDBContainer;\n\nexport const getEventStoreDBTestClient = async (\n useTestContainers = false,\n): Promise<EventStoreDBClient> => {\n let connectionString;\n\n if (useTestContainers) {\n if (!esdbContainer)\n esdbContainer = await new EventStoreDBContainer().start();\n\n connectionString = esdbContainer.getConnectionString();\n } else {\n // await compose.upAll();\n connectionString = 'esdb://localhost:2113?tls=false';\n }\n\n // That's how EventStoreDB client is setup\n // We're taking the connection string from container\n return EventStoreDBClient.connectionString(connectionString);\n};\n","import { MongoDBContainer } from '@testcontainers/mongodb';\n\nexport const getMongoDBContainer = (\n options: { version: string } = { version: '6.0.1' },\n) => {\n return new MongoDBContainer(`mongo:${options.version}`);\n};\n\nexport const getMongoDBStartedContainer = async (\n options: { version: string } = { version: '6.0.1' },\n) => {\n const container = getMongoDBContainer(options);\n return container.start();\n};\n","import { PostgreSqlContainer } from '@testcontainers/postgresql';\n\nexport const getPostgreSQLContainer = (\n options: { version: string } = { version: '18.1' },\n) => {\n return new PostgreSqlContainer(`postgres:${options.version}`);\n};\n\nexport const getPostgreSQLStartedContainer = async (\n options: { version: string } = { version: '18.1' },\n) => {\n const container = getPostgreSQLContainer(options);\n return container.start();\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["GenericContainer","Wait","AbstractStartedContainer","EventStoreDBClient","EventStoreDBClient","MongoDBContainer","PostgreSqlContainer"],"sources":["../../almanac/dist/logger-DnrSjS8d.js","../../almanac/dist/spanLogEvent-ByQosuDu.js","../../almanac/dist/console-Bn5yW7XZ.js","../src/eventStore/eventStoreDBContainer.ts","../src/eventStore/index.ts","../src/mongodb/mongoDBContainer.ts","../src/postgresql/postgreSQLContainer.ts"],"sourcesContent":["//#region src/loggers/logger.ts\nconst LogLevel = {\n\tdefault: \"info\",\n\tsilent: \"silent\",\n\ttrace: \"trace\",\n\tdebug: \"debug\",\n\tinfo: \"info\",\n\twarn: \"warn\",\n\terror: \"error\",\n\tfatal: \"fatal\"\n};\nconst shouldLog = (logLevel, definedLogLevel) => {\n\tdefinedLogLevel ??= LogLevel.default;\n\tswitch (definedLogLevel) {\n\t\tcase \"fatal\": return logLevel === LogLevel.fatal;\n\t\tcase \"error\": return [LogLevel.fatal, LogLevel.error].includes(logLevel);\n\t\tcase \"warn\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn\n\t\t].includes(logLevel);\n\t\tcase \"info\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn,\n\t\t\tLogLevel.info\n\t\t].includes(logLevel);\n\t\tcase \"debug\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn,\n\t\t\tLogLevel.info,\n\t\t\tLogLevel.debug\n\t\t].includes(logLevel);\n\t\tcase \"trace\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn,\n\t\t\tLogLevel.info,\n\t\t\tLogLevel.debug,\n\t\t\tLogLevel.trace\n\t\t].includes(logLevel);\n\t\tcase \"silent\": return false;\n\t}\n};\nconst logEvent = (eventName, data, eventMetadata) => {\n\treturn {\n\t\tname: eventName,\n\t\tdata,\n\t\tmetadata: {\n\t\t\t...eventMetadata,\n\t\t\ttimestamp: eventMetadata.timestamp ?? Date.now()\n\t\t}\n\t};\n};\nconst message = (level, body, data, eventMetadata) => {\n\tif (data === void 0) return logEvent(body, { body }, {\n\t\tlevel,\n\t\t...eventMetadata\n\t});\n\tconst eventData = { body };\n\tif (data.error !== void 0) eventData.error = data.error;\n\tif (data.attributes !== void 0) eventData.attributes = data.attributes;\n\treturn logEvent(body, eventData, {\n\t\tlevel,\n\t\t...eventMetadata\n\t});\n};\nconst forLevel = (level) => (msgOrObj, msgOrMetadata, eventMetadata) => {\n\tif (typeof msgOrObj === \"string\") return logEvent(msgOrObj, { body: msgOrObj }, {\n\t\tlevel,\n\t\t...typeof msgOrMetadata === \"string\" ? eventMetadata : msgOrMetadata\n\t});\n\tconst msg = typeof msgOrMetadata === \"string\" ? msgOrMetadata : void 0;\n\tconst overrides = eventMetadata ?? (typeof msgOrMetadata === \"string\" ? void 0 : msgOrMetadata);\n\tif (msgOrObj instanceof Error) return logEvent(msg ?? \"\", {\n\t\terror: msgOrObj,\n\t\tbody: msg\n\t}, {\n\t\tlevel,\n\t\t...overrides\n\t});\n\tconst { eventName, ...attributes } = msgOrObj;\n\treturn logEvent(typeof eventName === \"string\" ? eventName : msg ?? \"\", {\n\t\tattributes,\n\t\tbody: msg\n\t}, {\n\t\tlevel,\n\t\t...overrides\n\t});\n};\nconst LogEvent = Object.assign(logEvent, {\n\tmessage,\n\tfatal: forLevel(\"fatal\"),\n\terror: forLevel(\"error\"),\n\twarn: forLevel(\"warn\"),\n\tinfo: forLevel(\"info\"),\n\tdebug: forLevel(\"debug\"),\n\ttrace: forLevel(\"trace\"),\n\tsilent: forLevel(\"silent\")\n});\nconst logger = (options) => {\n\tconst { event: sink, minLevel } = options;\n\treturn (event) => {\n\t\tif (event.metadata.level === \"silent\" || !shouldLog(event.metadata.level, minLevel)) return;\n\t\tsink(event);\n\t};\n};\nconst noopLogger = logger({ event: () => {} });\n\n//#endregion\nexport { shouldLog as a, noopLogger as i, LogLevel as n, logger as r, LogEvent as t };\n//# sourceMappingURL=logger-DnrSjS8d.js.map","import { i as noopLogger } from \"./logger-DnrSjS8d.js\";\n\n//#region src/serialization/json/jsonSerializer.ts\nconst bigIntReplacer = (_key, value) => {\n\treturn typeof value === \"bigint\" ? value.toString() : value;\n};\nconst dateReplacer = (_key, value) => {\n\treturn value instanceof Date ? value.toISOString() : value;\n};\nconst errorReplacer = (_key, value) => value instanceof Error ? {\n\ttype: value.constructor.name || \"error\",\n\tmessage: value.message,\n\tstack: value.stack\n} : value;\nconst isFirstLetterNumeric = (str) => {\n\tconst c = str.charCodeAt(0);\n\treturn c >= 48 && c <= 57;\n};\nconst isFirstLetterNumericOrMinus = (str) => {\n\tconst c = str.charCodeAt(0);\n\treturn c >= 48 && c <= 57 || c === 45;\n};\nconst bigIntReviver = (_key, value, context) => {\n\tif (typeof value === \"number\" && Number.isInteger(value) && !Number.isSafeInteger(value)) try {\n\t\treturn BigInt(context?.source ?? value.toString());\n\t} catch {\n\t\treturn value;\n\t}\n\tif (typeof value === \"string\" && value.length > 15) {\n\t\tif (isFirstLetterNumericOrMinus(value)) {\n\t\t\tconst num = Number(value);\n\t\t\tif (Number.isFinite(num) && !Number.isSafeInteger(num)) try {\n\t\t\t\treturn BigInt(value);\n\t\t\t} catch {}\n\t\t}\n\t}\n\treturn value;\n};\nconst dateReviver = (_key, value) => {\n\tif (typeof value === \"string\" && value.length === 24 && isFirstLetterNumeric(value) && value[10] === \"T\" && value[23] === \"Z\") {\n\t\tconst date = new Date(value);\n\t\tif (!isNaN(date.getTime())) return date;\n\t}\n\treturn value;\n};\nconst composeJSONReplacers = (...replacers) => {\n\tconst filteredReplacers = replacers.filter((r) => r !== void 0);\n\tif (filteredReplacers.length === 0) return void 0;\n\treturn (key, value) => filteredReplacers.reduce((accValue, replacer) => replacer(key, accValue), value);\n};\nconst composeJSONRevivers = (...revivers) => {\n\tconst filteredRevivers = revivers.filter((r) => r !== void 0);\n\tif (filteredRevivers.length === 0) return void 0;\n\treturn (key, value, context) => filteredRevivers.reduce((accValue, reviver) => reviver(key, accValue, context), value);\n};\nconst JSONReplacer = (opts) => composeJSONReplacers(opts?.replacer, opts?.failOnBigIntSerialization !== true ? JSONReplacers.bigInt : void 0, opts?.useDefaultDateSerialization !== true ? JSONReplacers.date : void 0, opts?.skipErrorSerialization !== true ? JSONReplacers.error : void 0);\nconst JSONReviver = (opts) => composeJSONRevivers(opts?.reviver, opts?.parseBigInts === true ? JSONRevivers.bigInt : void 0, opts?.parseDates === true ? JSONRevivers.date : void 0);\nconst JSONReplacers = {\n\tbigInt: bigIntReplacer,\n\tdate: dateReplacer,\n\terror: errorReplacer\n};\nconst JSONRevivers = {\n\tbigInt: bigIntReviver,\n\tdate: dateReviver\n};\nconst jsonSerializer = (options) => {\n\tconst defaultReplacer = JSONReplacer(options);\n\tconst defaultReviver = JSONReviver(options);\n\tconst defaultFormat = options?.format ?? \"compact\";\n\tconst defaultSafe = options?.safe ?? false;\n\treturn {\n\t\tserialize: (object, serializerOptions) => {\n\t\t\tconst replacer = serializerOptions ? JSONReplacer(serializerOptions) : defaultReplacer;\n\t\t\tconst indent = (serializerOptions?.format ?? defaultFormat) === \"pretty\" ? 2 : void 0;\n\t\t\tif (serializerOptions?.safe ?? defaultSafe) try {\n\t\t\t\treturn JSON.stringify(object, replacer, indent);\n\t\t\t} catch (e) {\n\t\t\t\treturn `{\"__serializationError\":${JSON.stringify(String(e))}}`;\n\t\t\t}\n\t\t\treturn JSON.stringify(object, replacer, indent);\n\t\t},\n\t\tdeserialize: (payload, deserializerOptions) => JSON.parse(payload, deserializerOptions ? JSONReviver(deserializerOptions) : defaultReviver)\n\t};\n};\nconst JSONSerializer = Object.assign(jsonSerializer(), { from: (options) => options?.serialization?.serializer ?? (options?.serialization?.options ? jsonSerializer(options?.serialization?.options) : JSONSerializer) });\n\n//#endregion\n//#region src/loggers/formatters/otelLogFormatter.ts\nconst SEVERITY_NUMBER = {\n\tsilent: 0,\n\ttrace: 1,\n\tdebug: 5,\n\tinfo: 9,\n\twarn: 13,\n\terror: 17,\n\tfatal: 21\n};\nconst severityNumberFor = (level) => SEVERITY_NUMBER[level];\nconst severityTextFor = (level) => level.toUpperCase();\nconst OtelLogFormatter = {\n\tformat: (event, options) => JSONSerializer.serialize(OtelLogFormatter.toOtelLog(event), options),\n\ttoOtelLog: ({ name: eventName, data, metadata }) => {\n\t\tconst attributes = { ...data.attributes ?? {} };\n\t\tif (data.error) {\n\t\t\tattributes[\"exception.type\"] = data.error.name;\n\t\t\tattributes[\"exception.message\"] = data.error.message;\n\t\t\tif (data.error.stack) attributes[\"exception.stacktrace\"] = data.error.stack;\n\t\t}\n\t\tconst log = {\n\t\t\ttimestamp: metadata.timestamp,\n\t\t\tseverityNumber: severityNumberFor(metadata.level),\n\t\t\tseverityText: severityTextFor(metadata.level)\n\t\t};\n\t\tif (eventName) log.eventName = eventName;\n\t\tif (metadata.traceId !== void 0) log.traceId = metadata.traceId;\n\t\tif (metadata.spanId !== void 0) log.spanId = metadata.spanId;\n\t\tif (data.body !== void 0) log.body = data.body;\n\t\tif (Object.keys(attributes).length) log.attributes = attributes;\n\t\treturn log;\n\t}\n};\n\n//#endregion\n//#region src/loggers/formatters/simpleFormatter.ts\nconst SimpleLogFormatter = { format: (event, _options) => {\n\tconst message = event.data.body ?? (event.name ? event.name : void 0);\n\treturn message !== void 0 ? `[${event.metadata.level}] ${message}` : `[${event.metadata.level}]`;\n} };\n\n//#endregion\n//#region src/tracers/span.ts\nconst noopSpan = {\n\tsetAttributes: () => {},\n\tspanContext: () => ({\n\t\ttraceId: \"\",\n\t\tspanId: \"\"\n\t}),\n\taddLink: () => {},\n\tlog: noopLogger\n};\n\n//#endregion\n//#region src/tracers/compositeTracer.ts\nconst compositeTracer = (...tracers) => ({ startSpan: async (name, fn, options) => {\n\tif (tracers.length === 0) return fn(noopSpan);\n\tconst nest = (index, collectedSpans) => {\n\t\tif (index >= tracers.length) return fn(compositeSpan(collectedSpans));\n\t\treturn tracers[index].startSpan(name, async (span) => nest(index + 1, [...collectedSpans, span]), options);\n\t};\n\treturn nest(0, []);\n} });\nconst compositeSpan = (spans) => ({\n\tsetAttributes: (attrs) => spans.forEach((s) => s.setAttributes(attrs)),\n\tspanContext: () => (spans[0] ?? noopSpan).spanContext(),\n\taddLink: (link) => spans.forEach((s) => s.addLink(link)),\n\tlog: (event) => spans.forEach((s) => s.log(event))\n});\n\n//#endregion\n//#region src/tracers/observabilityContextGenerator.ts\nconst randomHex = (bytes) => {\n\tconst arr = new Uint8Array(bytes);\n\tglobalThis.crypto.getRandomValues(arr);\n\treturn Array.from(arr, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n};\nconst defaultObservabilityContextGenerator = {\n\tgenerateTraceId: () => randomHex(16),\n\tgenerateSpanId: () => randomHex(8),\n\tgenerateMessageId: () => randomHex(16),\n\tgenerateCorrelationId: () => randomHex(16),\n\tgenerateCausationId: () => randomHex(16)\n};\n\n//#endregion\n//#region src/tracers/tracer.ts\nconst noTracing = { startSpan: async (_name, fn, _options) => fn(noopSpan) };\nconst noopTracer = () => noTracing;\n\n//#endregion\n//#region src/tracers/spanLogEvent.ts\nconst logEventForSpan = (event, context) => {\n\tconst traceId = event.metadata.traceId ?? context.traceId;\n\tconst spanId = event.metadata.spanId ?? context.spanId;\n\tif (traceId === event.metadata.traceId && spanId === event.metadata.spanId) return event;\n\tconst metadata = {\n\t\t...event.metadata,\n\t\ttraceId,\n\t\tspanId\n\t};\n\treturn {\n\t\tname: event.name,\n\t\tdata: event.data,\n\t\tmetadata\n\t};\n};\n\n//#endregion\nexport { noopSpan as a, severityTextFor as c, compositeTracer as i, JSONSerializer as l, noopTracer as n, SimpleLogFormatter as o, defaultObservabilityContextGenerator as r, OtelLogFormatter as s, logEventForSpan as t };\n//# sourceMappingURL=spanLogEvent-ByQosuDu.js.map","import { l as JSONSerializer, o as SimpleLogFormatter, r as defaultObservabilityContextGenerator, s as OtelLogFormatter, t as logEventForSpan } from \"./spanLogEvent-ByQosuDu.js\";\nimport { i as noopLogger, r as logger } from \"./logger-DnrSjS8d.js\";\n\n//#region src/providers/console/consoleLogger.ts\nconst consoleMethodFor = (level) => {\n\tswitch (level) {\n\t\tcase \"fatal\":\n\t\tcase \"error\": return console.error;\n\t\tcase \"warn\": return console.warn;\n\t\tcase \"debug\": return console.debug;\n\t\tcase \"trace\": return console.trace;\n\t\tdefault: return console.log;\n\t}\n};\nconst consoleLogger = logger({ event: (event) => {\n\tconst write = consoleMethodFor(event.metadata.level);\n\tconst extra = event.data.error ?? (event.data.attributes && Object.keys(event.data.attributes).length ? event.data.attributes : void 0);\n\tif (event.data.body !== void 0 && extra !== void 0) write(event.data.body, extra);\n\telse if (event.data.body !== void 0) write(event.data.body);\n\telse if (extra !== void 0) write(extra);\n\telse write(\"\");\n} });\n\n//#endregion\n//#region src/providers/console/consoleSpanLogSink.ts\nconst createConsoleSpanLogSink = (format) => {\n\tconst serializerOptions = {\n\t\tformat: format === \"simple\" || void 0 ? \"compact\" : format,\n\t\tsafe: true\n\t};\n\treturn format === \"simple\" ? (event) => console.log(SimpleLogFormatter.format(event, serializerOptions)) : (event) => console.log(OtelLogFormatter.format(event, serializerOptions));\n};\n\n//#endregion\n//#region src/providers/console/consoleSpanLogger.ts\nconst ConsoleFormat = {\n\tcompact: \"compact\",\n\tpretty: \"pretty\",\n\tSIMPLE: \"simple\"\n};\nconst consoleSpanLogger = (options) => logger({\n\tminLevel: options?.logLevel,\n\tevent: createConsoleSpanLogSink(options?.format)\n});\n\n//#endregion\n//#region src/providers/console/consoleTracer.ts\nconst consoleTracer = (options) => {\n\tconst mode = options?.mode ?? \"compact\";\n\tconst suppressLogs = options?.suppressLogs ?? false;\n\tconst contextGenerator = options?.contextGenerator ?? defaultObservabilityContextGenerator;\n\tconst sink = createConsoleSpanLogSink(mode);\n\tconst log = suppressLogs ? noopLogger : logger({\n\t\tminLevel: options?.logLevel,\n\t\tevent: sink\n\t});\n\treturn { startSpan: async (name, fn, spanOptions) => {\n\t\tconst traceId = contextGenerator.generateTraceId();\n\t\tconst spanId = contextGenerator.generateSpanId();\n\t\tconst context = {\n\t\t\ttraceId,\n\t\t\tspanId\n\t\t};\n\t\tconst startMs = Date.now();\n\t\tconst attributes = { ...spanOptions?.attributes };\n\t\tconst links = [...spanOptions?.links ?? []];\n\t\tconst span = {\n\t\t\tspanContext: () => context,\n\t\t\tsetAttributes: (attrs) => Object.assign(attributes, attrs),\n\t\t\taddLink: (link) => links.push(link),\n\t\t\tlog: (event) => log(logEventForSpan(event, context))\n\t\t};\n\t\tlet ok = true;\n\t\tlet spanError;\n\t\ttry {\n\t\t\treturn await fn(span);\n\t\t} catch (e) {\n\t\t\tok = false;\n\t\t\tspanError = e instanceof Error ? e : new Error(String(e));\n\t\t\tthrow e;\n\t\t} finally {\n\t\t\tconst durationMs = Date.now() - startMs;\n\t\t\tif (mode === \"simple\") console.log(`[span] ${name} (${durationMs}ms)${ok ? \"\" : \" [failed]\"}`);\n\t\t\telse {\n\t\t\t\tconst summary = {\n\t\t\t\t\tname,\n\t\t\t\t\ttraceId,\n\t\t\t\t\tspanId,\n\t\t\t\t\t...spanOptions?.parent?.spanId ? { parentSpanId: spanOptions.parent.spanId } : {},\n\t\t\t\t\tstartTimeUnixNano: (BigInt(startMs) * 1000000n).toString(),\n\t\t\t\t\tendTimeUnixNano: (BigInt(startMs + durationMs) * 1000000n).toString(),\n\t\t\t\t\tattributes,\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tcode: ok ? \"OK\" : \"ERROR\",\n\t\t\t\t\t\t...spanError !== void 0 ? { message: spanError.message } : {}\n\t\t\t\t\t},\n\t\t\t\t\tlinks\n\t\t\t\t};\n\t\t\t\tconsole.log(JSONSerializer.serialize(summary, {\n\t\t\t\t\tformat: mode === \"pretty\" ? \"pretty\" : \"compact\",\n\t\t\t\t\tsafe: true\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t} };\n};\n\n//#endregion\nexport { consoleLogger as i, ConsoleFormat as n, consoleSpanLogger as r, consoleTracer as t };\n//# sourceMappingURL=console-Bn5yW7XZ.js.map","import { LogEvent } from '@event-driven-io/almanac';\nimport { consoleLogger } from '@event-driven-io/almanac/console';\nimport { InProcessLock } from '@event-driven-io/emmett';\nimport { EventStoreDBClient } from '@eventstore/db-client';\nimport {\n AbstractStartedContainer,\n GenericContainer,\n Wait,\n type StartedTestContainer,\n} from 'testcontainers';\nimport type { Environment } from 'testcontainers/build/types';\n\nexport const EVENTSTOREDB_PORT = 2113;\nexport const EVENTSTOREDB_IMAGE_NAME = 'eventstore/eventstore';\nexport const EVENTSTOREDB_IMAGE_TAG = '24.10.0-bookworm-slim';\nexport const EVENTSTOREDB_ARM64_IMAGE_TAG = '24.10.0-alpha-arm64v8';\n\nexport const EVENTSTOREDB_DEFAULT_IMAGE = `${EVENTSTOREDB_IMAGE_NAME}:${process.arch !== 'arm64' ? EVENTSTOREDB_IMAGE_TAG : EVENTSTOREDB_ARM64_IMAGE_TAG}`;\n\nexport type EventStoreDBContainerOptions = {\n disableProjections?: boolean;\n isSecure?: boolean;\n useFileStorage?: boolean;\n withReuse?: boolean;\n};\n\nexport const defaultEventStoreDBContainerOptions: EventStoreDBContainerOptions =\n {\n disableProjections: false,\n isSecure: false,\n useFileStorage: false,\n withReuse: false,\n };\n\nexport class EventStoreDBContainer extends GenericContainer {\n constructor(\n image = EVENTSTOREDB_DEFAULT_IMAGE,\n options: EventStoreDBContainerOptions = defaultEventStoreDBContainerOptions,\n ) {\n super(image);\n\n const environment: Environment = {\n ...(!options.disableProjections\n ? {\n EVENTSTORE_RUN_PROJECTIONS: 'ALL',\n }\n : {}),\n ...(!options.isSecure\n ? {\n EVENTSTORE_INSECURE: 'true',\n }\n : {}),\n ...(options.useFileStorage\n ? {\n EVENTSTORE_MEM_DB: 'false',\n EVENTSTORE_DB: '/data/integration-tests',\n }\n : {}),\n EVENTSTORE_CLUSTER_SIZE: '1',\n EVENTSTORE_START_STANDARD_PROJECTIONS: 'true',\n EVENTSTORE_NODE_PORT: `${EVENTSTOREDB_PORT}`,\n EVENTSTORE_ENABLE_ATOM_PUB_OVER_HTTP: 'true',\n };\n\n this.withEnvironment(environment).withExposedPorts(EVENTSTOREDB_PORT);\n\n if (options.withReuse) this.withReuse();\n\n this.withWaitStrategy(\n Wait.forAll([Wait.forHealthCheck(), Wait.forListeningPorts()]),\n );\n }\n\n async start(): Promise<StartedEventStoreDBContainer> {\n return new StartedEventStoreDBContainer(await super.start());\n }\n}\n\nexport class StartedEventStoreDBContainer extends AbstractStartedContainer {\n constructor(container: StartedTestContainer) {\n super(container);\n }\n\n getConnectionString(): string {\n return `esdb://${this.getHost()}:${this.getMappedPort(2113)}?tls=false`;\n }\n\n getClient(): EventStoreDBClient {\n return EventStoreDBClient.connectionString(this.getConnectionString());\n }\n}\n\nlet container: EventStoreDBContainer | null = null;\nlet startedContainer: StartedEventStoreDBContainer | null = null;\nlet startedCount = 0;\nconst lock = InProcessLock();\n\nexport const getSharedEventStoreDBTestContainer = () =>\n lock.withAcquire(\n async () => {\n if (startedContainer) return startedContainer;\n\n if (!container)\n container = new EventStoreDBContainer(EVENTSTOREDB_DEFAULT_IMAGE);\n\n startedContainer = await container.start();\n startedCount++;\n\n container.withLogConsumer((stream) =>\n stream\n .on('data', (line) => consoleLogger(LogEvent.info(String(line))))\n .on('err', (line) => consoleLogger(LogEvent.error(String(line))))\n .on('end', () => consoleLogger(LogEvent.info('Stream closed'))),\n );\n\n return startedContainer;\n },\n { lockId: 'SharedEventStoreDBTestContainer' },\n );\n\nexport const getSharedTestEventStoreDBClient = async () => {\n return (await getSharedEventStoreDBTestContainer()).getClient();\n};\n\nexport const releaseSharedEventStoreDBTestContainer = () =>\n lock.withAcquire(\n async () => {\n const containerToStop = startedContainer;\n if (containerToStop && --startedCount === 0) {\n try {\n startedContainer = null;\n container = null;\n await containerToStop.stop();\n } catch {\n /* do nothing */\n }\n }\n },\n { lockId: 'SharedEventStoreDBTestContainer' },\n );\n","import { EventStoreDBClient } from '@eventstore/db-client';\nimport type { StartedEventStoreDBContainer } from './eventStoreDBContainer';\nimport { EventStoreDBContainer } from './eventStoreDBContainer';\n\nexport * from './eventStoreDBContainer';\n\nlet esdbContainer: StartedEventStoreDBContainer;\n\nexport const getEventStoreDBTestClient = async (\n useTestContainers = false,\n): Promise<EventStoreDBClient> => {\n let connectionString;\n\n if (useTestContainers) {\n if (!esdbContainer)\n esdbContainer = await new EventStoreDBContainer().start();\n\n connectionString = esdbContainer.getConnectionString();\n } else {\n // await compose.upAll();\n connectionString = 'esdb://localhost:2113?tls=false';\n }\n\n // That's how EventStoreDB client is setup\n // We're taking the connection string from container\n return EventStoreDBClient.connectionString(connectionString);\n};\n","import { MongoDBContainer } from '@testcontainers/mongodb';\n\nexport const getMongoDBContainer = (\n options: { version: string } = { version: '6.0.1' },\n) => {\n return new MongoDBContainer(`mongo:${options.version}`);\n};\n\nexport const getMongoDBStartedContainer = async (\n options: { version: string } = { version: '6.0.1' },\n) => {\n const container = getMongoDBContainer(options);\n return container.start();\n};\n","import { PostgreSqlContainer } from '@testcontainers/postgresql';\n\nexport const getPostgreSQLContainer = (\n options: { version: string } = { version: '18.1' },\n) => {\n return new PostgreSqlContainer(`postgres:${options.version}`);\n};\n\nexport const getPostgreSQLStartedContainer = async (\n options: { version: string } = { version: '18.1' },\n) => {\n const container = getPostgreSQLContainer(options);\n return container.start();\n};\n"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -115,7 +115,7 @@ const logger = (options) => {
|
|
|
115
115
|
const noopLogger = logger({ event: () => {} });
|
|
116
116
|
|
|
117
117
|
//#endregion
|
|
118
|
-
//#region ../almanac/dist/spanLogEvent-
|
|
118
|
+
//#region ../almanac/dist/spanLogEvent-ByQosuDu.js
|
|
119
119
|
const bigIntReplacer = (_key, value) => {
|
|
120
120
|
return typeof value === "bigint" ? value.toString() : value;
|
|
121
121
|
};
|
|
@@ -201,7 +201,7 @@ const jsonSerializer = (options) => {
|
|
|
201
201
|
const JSONSerializer = Object.assign(jsonSerializer(), { from: (options) => options?.serialization?.serializer ?? (options?.serialization?.options ? jsonSerializer(options?.serialization?.options) : JSONSerializer) });
|
|
202
202
|
|
|
203
203
|
//#endregion
|
|
204
|
-
//#region ../almanac/dist/console-
|
|
204
|
+
//#region ../almanac/dist/console-Bn5yW7XZ.js
|
|
205
205
|
const consoleMethodFor = (level) => {
|
|
206
206
|
switch (level) {
|
|
207
207
|
case "fatal":
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../almanac/dist/logger-DnrSjS8d.js","../../almanac/dist/spanLogEvent-DxTi1Li5.js","../../almanac/dist/console-DQ8X0Jo1.js","../src/eventStore/eventStoreDBContainer.ts","../src/eventStore/index.ts","../src/mongodb/mongoDBContainer.ts","../src/postgresql/postgreSQLContainer.ts"],"sourcesContent":["//#region src/loggers/logger.ts\nconst LogLevel = {\n\tdefault: \"info\",\n\tsilent: \"silent\",\n\ttrace: \"trace\",\n\tdebug: \"debug\",\n\tinfo: \"info\",\n\twarn: \"warn\",\n\terror: \"error\",\n\tfatal: \"fatal\"\n};\nconst shouldLog = (logLevel, definedLogLevel) => {\n\tdefinedLogLevel ??= LogLevel.default;\n\tswitch (definedLogLevel) {\n\t\tcase \"fatal\": return logLevel === LogLevel.fatal;\n\t\tcase \"error\": return [LogLevel.fatal, LogLevel.error].includes(logLevel);\n\t\tcase \"warn\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn\n\t\t].includes(logLevel);\n\t\tcase \"info\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn,\n\t\t\tLogLevel.info\n\t\t].includes(logLevel);\n\t\tcase \"debug\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn,\n\t\t\tLogLevel.info,\n\t\t\tLogLevel.debug\n\t\t].includes(logLevel);\n\t\tcase \"trace\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn,\n\t\t\tLogLevel.info,\n\t\t\tLogLevel.debug,\n\t\t\tLogLevel.trace\n\t\t].includes(logLevel);\n\t\tcase \"silent\": return false;\n\t}\n};\nconst logEvent = (eventName, data, eventMetadata) => {\n\treturn {\n\t\tname: eventName,\n\t\tdata,\n\t\tmetadata: {\n\t\t\t...eventMetadata,\n\t\t\ttimestamp: eventMetadata.timestamp ?? Date.now()\n\t\t}\n\t};\n};\nconst message = (level, body, data, eventMetadata) => {\n\tif (data === void 0) return logEvent(body, { body }, {\n\t\tlevel,\n\t\t...eventMetadata\n\t});\n\tconst eventData = { body };\n\tif (data.error !== void 0) eventData.error = data.error;\n\tif (data.attributes !== void 0) eventData.attributes = data.attributes;\n\treturn logEvent(body, eventData, {\n\t\tlevel,\n\t\t...eventMetadata\n\t});\n};\nconst forLevel = (level) => (msgOrObj, msgOrMetadata, eventMetadata) => {\n\tif (typeof msgOrObj === \"string\") return logEvent(msgOrObj, { body: msgOrObj }, {\n\t\tlevel,\n\t\t...typeof msgOrMetadata === \"string\" ? eventMetadata : msgOrMetadata\n\t});\n\tconst msg = typeof msgOrMetadata === \"string\" ? msgOrMetadata : void 0;\n\tconst overrides = eventMetadata ?? (typeof msgOrMetadata === \"string\" ? void 0 : msgOrMetadata);\n\tif (msgOrObj instanceof Error) return logEvent(msg ?? \"\", {\n\t\terror: msgOrObj,\n\t\tbody: msg\n\t}, {\n\t\tlevel,\n\t\t...overrides\n\t});\n\tconst { eventName, ...attributes } = msgOrObj;\n\treturn logEvent(typeof eventName === \"string\" ? eventName : msg ?? \"\", {\n\t\tattributes,\n\t\tbody: msg\n\t}, {\n\t\tlevel,\n\t\t...overrides\n\t});\n};\nconst LogEvent = Object.assign(logEvent, {\n\tmessage,\n\tfatal: forLevel(\"fatal\"),\n\terror: forLevel(\"error\"),\n\twarn: forLevel(\"warn\"),\n\tinfo: forLevel(\"info\"),\n\tdebug: forLevel(\"debug\"),\n\ttrace: forLevel(\"trace\"),\n\tsilent: forLevel(\"silent\")\n});\nconst logger = (options) => {\n\tconst { event: sink, minLevel } = options;\n\treturn (event) => {\n\t\tif (event.metadata.level === \"silent\" || !shouldLog(event.metadata.level, minLevel)) return;\n\t\tsink(event);\n\t};\n};\nconst noopLogger = logger({ event: () => {} });\n\n//#endregion\nexport { shouldLog as a, noopLogger as i, LogLevel as n, logger as r, LogEvent as t };\n//# sourceMappingURL=logger-DnrSjS8d.js.map","import { i as noopLogger } from \"./logger-DnrSjS8d.js\";\n\n//#region src/serialization/json/jsonSerializer.ts\nconst bigIntReplacer = (_key, value) => {\n\treturn typeof value === \"bigint\" ? value.toString() : value;\n};\nconst dateReplacer = (_key, value) => {\n\treturn value instanceof Date ? value.toISOString() : value;\n};\nconst errorReplacer = (_key, value) => value instanceof Error ? {\n\ttype: value.constructor.name || \"error\",\n\tmessage: value.message,\n\tstack: value.stack\n} : value;\nconst isFirstLetterNumeric = (str) => {\n\tconst c = str.charCodeAt(0);\n\treturn c >= 48 && c <= 57;\n};\nconst isFirstLetterNumericOrMinus = (str) => {\n\tconst c = str.charCodeAt(0);\n\treturn c >= 48 && c <= 57 || c === 45;\n};\nconst bigIntReviver = (_key, value, context) => {\n\tif (typeof value === \"number\" && Number.isInteger(value) && !Number.isSafeInteger(value)) try {\n\t\treturn BigInt(context?.source ?? value.toString());\n\t} catch {\n\t\treturn value;\n\t}\n\tif (typeof value === \"string\" && value.length > 15) {\n\t\tif (isFirstLetterNumericOrMinus(value)) {\n\t\t\tconst num = Number(value);\n\t\t\tif (Number.isFinite(num) && !Number.isSafeInteger(num)) try {\n\t\t\t\treturn BigInt(value);\n\t\t\t} catch {}\n\t\t}\n\t}\n\treturn value;\n};\nconst dateReviver = (_key, value) => {\n\tif (typeof value === \"string\" && value.length === 24 && isFirstLetterNumeric(value) && value[10] === \"T\" && value[23] === \"Z\") {\n\t\tconst date = new Date(value);\n\t\tif (!isNaN(date.getTime())) return date;\n\t}\n\treturn value;\n};\nconst composeJSONReplacers = (...replacers) => {\n\tconst filteredReplacers = replacers.filter((r) => r !== void 0);\n\tif (filteredReplacers.length === 0) return void 0;\n\treturn (key, value) => filteredReplacers.reduce((accValue, replacer) => replacer(key, accValue), value);\n};\nconst composeJSONRevivers = (...revivers) => {\n\tconst filteredRevivers = revivers.filter((r) => r !== void 0);\n\tif (filteredRevivers.length === 0) return void 0;\n\treturn (key, value, context) => filteredRevivers.reduce((accValue, reviver) => reviver(key, accValue, context), value);\n};\nconst JSONReplacer = (opts) => composeJSONReplacers(opts?.replacer, opts?.failOnBigIntSerialization !== true ? JSONReplacers.bigInt : void 0, opts?.useDefaultDateSerialization !== true ? JSONReplacers.date : void 0, opts?.skipErrorSerialization !== true ? JSONReplacers.error : void 0);\nconst JSONReviver = (opts) => composeJSONRevivers(opts?.reviver, opts?.parseBigInts === true ? JSONRevivers.bigInt : void 0, opts?.parseDates === true ? JSONRevivers.date : void 0);\nconst JSONReplacers = {\n\tbigInt: bigIntReplacer,\n\tdate: dateReplacer,\n\terror: errorReplacer\n};\nconst JSONRevivers = {\n\tbigInt: bigIntReviver,\n\tdate: dateReviver\n};\nconst jsonSerializer = (options) => {\n\tconst defaultReplacer = JSONReplacer(options);\n\tconst defaultReviver = JSONReviver(options);\n\tconst defaultFormat = options?.format ?? \"compact\";\n\tconst defaultSafe = options?.safe ?? false;\n\treturn {\n\t\tserialize: (object, serializerOptions) => {\n\t\t\tconst replacer = serializerOptions ? JSONReplacer(serializerOptions) : defaultReplacer;\n\t\t\tconst indent = (serializerOptions?.format ?? defaultFormat) === \"pretty\" ? 2 : void 0;\n\t\t\tif (serializerOptions?.safe ?? defaultSafe) try {\n\t\t\t\treturn JSON.stringify(object, replacer, indent);\n\t\t\t} catch (e) {\n\t\t\t\treturn `{\"__serializationError\":${JSON.stringify(String(e))}}`;\n\t\t\t}\n\t\t\treturn JSON.stringify(object, replacer, indent);\n\t\t},\n\t\tdeserialize: (payload, deserializerOptions) => JSON.parse(payload, deserializerOptions ? JSONReviver(deserializerOptions) : defaultReviver)\n\t};\n};\nconst JSONSerializer = Object.assign(jsonSerializer(), { from: (options) => options?.serialization?.serializer ?? (options?.serialization?.options ? jsonSerializer(options?.serialization?.options) : JSONSerializer) });\n\n//#endregion\n//#region src/loggers/formatters/otelLogFormatter.ts\nconst SEVERITY_NUMBER = {\n\tsilent: 0,\n\ttrace: 1,\n\tdebug: 5,\n\tinfo: 9,\n\twarn: 13,\n\terror: 17,\n\tfatal: 21\n};\nconst severityNumberFor = (level) => SEVERITY_NUMBER[level];\nconst severityTextFor = (level) => level.toUpperCase();\nconst OtelLogFormatter = {\n\tformat: (event, options) => JSONSerializer.serialize(OtelLogFormatter.toOtelLog(event), options),\n\ttoOtelLog: ({ name: eventName, data, metadata }) => {\n\t\tconst attributes = { ...data.attributes ?? {} };\n\t\tif (data.error) {\n\t\t\tattributes[\"exception.type\"] = data.error.name;\n\t\t\tattributes[\"exception.message\"] = data.error.message;\n\t\t\tif (data.error.stack) attributes[\"exception.stacktrace\"] = data.error.stack;\n\t\t}\n\t\tconst log = {\n\t\t\ttimestamp: metadata.timestamp,\n\t\t\tseverityNumber: severityNumberFor(metadata.level),\n\t\t\tseverityText: severityTextFor(metadata.level)\n\t\t};\n\t\tif (eventName) log.eventName = eventName;\n\t\tif (metadata.traceId !== void 0) log.traceId = metadata.traceId;\n\t\tif (metadata.spanId !== void 0) log.spanId = metadata.spanId;\n\t\tif (data.body !== void 0) log.body = data.body;\n\t\tif (Object.keys(attributes).length) log.attributes = attributes;\n\t\treturn log;\n\t}\n};\n\n//#endregion\n//#region src/loggers/formatters/simpleFormatter.ts\nconst SimpleLogFormatter = { format: (event, _options) => {\n\tconst message = event.data.body ?? (event.name ? event.name : void 0);\n\treturn message !== void 0 ? `[${event.metadata.level}] ${message}` : `[${event.metadata.level}]`;\n} };\n\n//#endregion\n//#region src/tracers/span.ts\nconst noopSpan = {\n\tsetAttributes: () => {},\n\tspanContext: () => ({\n\t\ttraceId: \"\",\n\t\tspanId: \"\"\n\t}),\n\taddLink: () => {},\n\tlog: noopLogger\n};\n\n//#endregion\n//#region src/tracers/compositeTracer.ts\nconst compositeTracer = (...tracers) => ({ startSpan: async (name, fn, options) => {\n\tif (tracers.length === 0) return fn(noopSpan);\n\tconst nest = (index, collectedSpans) => {\n\t\tif (index >= tracers.length) return fn(compositeSpan(collectedSpans));\n\t\treturn tracers[index].startSpan(name, async (span) => nest(index + 1, [...collectedSpans, span]), options);\n\t};\n\treturn nest(0, []);\n} });\nconst compositeSpan = (spans) => ({\n\tsetAttributes: (attrs) => spans.forEach((s) => s.setAttributes(attrs)),\n\tspanContext: () => (spans[0] ?? noopSpan).spanContext(),\n\taddLink: (link) => spans.forEach((s) => s.addLink(link)),\n\tlog: (event) => spans.forEach((s) => s.log(event))\n});\n\n//#endregion\n//#region src/tracers/traceContextGenerator.ts\nconst randomHex = (bytes) => {\n\tconst arr = new Uint8Array(bytes);\n\tglobalThis.crypto.getRandomValues(arr);\n\treturn Array.from(arr, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n};\nconst defaultTraceContextGenerator = {\n\tgenerateTraceId: () => randomHex(16),\n\tgenerateSpanId: () => randomHex(8)\n};\n\n//#endregion\n//#region src/tracers/tracer.ts\nconst noTracing = { startSpan: async (_name, fn, _options) => fn(noopSpan) };\nconst noopTracer = () => noTracing;\n\n//#endregion\n//#region src/tracers/spanLogEvent.ts\nconst logEventForSpan = (event, context) => {\n\tconst traceId = event.metadata.traceId ?? context.traceId;\n\tconst spanId = event.metadata.spanId ?? context.spanId;\n\tif (traceId === event.metadata.traceId && spanId === event.metadata.spanId) return event;\n\tconst metadata = {\n\t\t...event.metadata,\n\t\ttraceId,\n\t\tspanId\n\t};\n\treturn {\n\t\tname: event.name,\n\t\tdata: event.data,\n\t\tmetadata\n\t};\n};\n\n//#endregion\nexport { noopSpan as a, severityTextFor as c, compositeTracer as i, JSONSerializer as l, noopTracer as n, SimpleLogFormatter as o, defaultTraceContextGenerator as r, OtelLogFormatter as s, logEventForSpan as t };\n//# sourceMappingURL=spanLogEvent-DxTi1Li5.js.map","import { l as JSONSerializer, o as SimpleLogFormatter, r as defaultTraceContextGenerator, s as OtelLogFormatter, t as logEventForSpan } from \"./spanLogEvent-DxTi1Li5.js\";\nimport { i as noopLogger, r as logger } from \"./logger-DnrSjS8d.js\";\n\n//#region src/providers/console/consoleLogger.ts\nconst consoleMethodFor = (level) => {\n\tswitch (level) {\n\t\tcase \"fatal\":\n\t\tcase \"error\": return console.error;\n\t\tcase \"warn\": return console.warn;\n\t\tcase \"debug\": return console.debug;\n\t\tcase \"trace\": return console.trace;\n\t\tdefault: return console.log;\n\t}\n};\nconst consoleLogger = logger({ event: (event) => {\n\tconst write = consoleMethodFor(event.metadata.level);\n\tconst extra = event.data.error ?? (event.data.attributes && Object.keys(event.data.attributes).length ? event.data.attributes : void 0);\n\tif (event.data.body !== void 0 && extra !== void 0) write(event.data.body, extra);\n\telse if (event.data.body !== void 0) write(event.data.body);\n\telse if (extra !== void 0) write(extra);\n\telse write(\"\");\n} });\n\n//#endregion\n//#region src/providers/console/consoleSpanLogSink.ts\nconst createConsoleSpanLogSink = (format) => {\n\tconst serializerOptions = {\n\t\tformat: format === \"simple\" || void 0 ? \"compact\" : format,\n\t\tsafe: true\n\t};\n\treturn format === \"simple\" ? (event) => console.log(SimpleLogFormatter.format(event, serializerOptions)) : (event) => console.log(OtelLogFormatter.format(event, serializerOptions));\n};\n\n//#endregion\n//#region src/providers/console/consoleSpanLogger.ts\nconst ConsoleFormat = {\n\tcompact: \"compact\",\n\tpretty: \"pretty\",\n\tSIMPLE: \"simple\"\n};\nconst consoleSpanLogger = (options) => logger({\n\tminLevel: options?.logLevel,\n\tevent: createConsoleSpanLogSink(options?.format)\n});\n\n//#endregion\n//#region src/providers/console/consoleTracer.ts\nconst consoleTracer = (options) => {\n\tconst mode = options?.mode ?? \"compact\";\n\tconst suppressLogs = options?.suppressLogs ?? false;\n\tconst traceContextGenerator = options?.traceContextGenerator ?? defaultTraceContextGenerator;\n\tconst sink = createConsoleSpanLogSink(mode);\n\tconst log = suppressLogs ? noopLogger : logger({\n\t\tminLevel: options?.logLevel,\n\t\tevent: sink\n\t});\n\treturn { startSpan: async (name, fn, spanOptions) => {\n\t\tconst traceId = traceContextGenerator.generateTraceId();\n\t\tconst spanId = traceContextGenerator.generateSpanId();\n\t\tconst context = {\n\t\t\ttraceId,\n\t\t\tspanId\n\t\t};\n\t\tconst startMs = Date.now();\n\t\tconst attributes = { ...spanOptions?.attributes };\n\t\tconst links = [...spanOptions?.links ?? []];\n\t\tconst span = {\n\t\t\tspanContext: () => context,\n\t\t\tsetAttributes: (attrs) => Object.assign(attributes, attrs),\n\t\t\taddLink: (link) => links.push(link),\n\t\t\tlog: (event) => log(logEventForSpan(event, context))\n\t\t};\n\t\tlet ok = true;\n\t\tlet spanError;\n\t\ttry {\n\t\t\treturn await fn(span);\n\t\t} catch (e) {\n\t\t\tok = false;\n\t\t\tspanError = e instanceof Error ? e : new Error(String(e));\n\t\t\tthrow e;\n\t\t} finally {\n\t\t\tconst durationMs = Date.now() - startMs;\n\t\t\tif (mode === \"simple\") console.log(`[span] ${name} (${durationMs}ms)${ok ? \"\" : \" [failed]\"}`);\n\t\t\telse {\n\t\t\t\tconst summary = {\n\t\t\t\t\tname,\n\t\t\t\t\ttraceId,\n\t\t\t\t\tspanId,\n\t\t\t\t\t...spanOptions?.parent?.spanId ? { parentSpanId: spanOptions.parent.spanId } : {},\n\t\t\t\t\tstartTimeUnixNano: (BigInt(startMs) * 1000000n).toString(),\n\t\t\t\t\tendTimeUnixNano: (BigInt(startMs + durationMs) * 1000000n).toString(),\n\t\t\t\t\tattributes,\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tcode: ok ? \"OK\" : \"ERROR\",\n\t\t\t\t\t\t...spanError !== void 0 ? { message: spanError.message } : {}\n\t\t\t\t\t},\n\t\t\t\t\tlinks\n\t\t\t\t};\n\t\t\t\tconsole.log(JSONSerializer.serialize(summary, {\n\t\t\t\t\tformat: mode === \"pretty\" ? \"pretty\" : \"compact\",\n\t\t\t\t\tsafe: true\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t} };\n};\n\n//#endregion\nexport { consoleLogger as i, ConsoleFormat as n, consoleSpanLogger as r, consoleTracer as t };\n//# sourceMappingURL=console-DQ8X0Jo1.js.map","import { LogEvent } from '@event-driven-io/almanac';\nimport { consoleLogger } from '@event-driven-io/almanac/console';\nimport { InProcessLock } from '@event-driven-io/emmett';\nimport { EventStoreDBClient } from '@eventstore/db-client';\nimport {\n AbstractStartedContainer,\n GenericContainer,\n Wait,\n type StartedTestContainer,\n} from 'testcontainers';\nimport type { Environment } from 'testcontainers/build/types';\n\nexport const EVENTSTOREDB_PORT = 2113;\nexport const EVENTSTOREDB_IMAGE_NAME = 'eventstore/eventstore';\nexport const EVENTSTOREDB_IMAGE_TAG = '24.10.0-bookworm-slim';\nexport const EVENTSTOREDB_ARM64_IMAGE_TAG = '24.10.0-alpha-arm64v8';\n\nexport const EVENTSTOREDB_DEFAULT_IMAGE = `${EVENTSTOREDB_IMAGE_NAME}:${process.arch !== 'arm64' ? EVENTSTOREDB_IMAGE_TAG : EVENTSTOREDB_ARM64_IMAGE_TAG}`;\n\nexport type EventStoreDBContainerOptions = {\n disableProjections?: boolean;\n isSecure?: boolean;\n useFileStorage?: boolean;\n withReuse?: boolean;\n};\n\nexport const defaultEventStoreDBContainerOptions: EventStoreDBContainerOptions =\n {\n disableProjections: false,\n isSecure: false,\n useFileStorage: false,\n withReuse: false,\n };\n\nexport class EventStoreDBContainer extends GenericContainer {\n constructor(\n image = EVENTSTOREDB_DEFAULT_IMAGE,\n options: EventStoreDBContainerOptions = defaultEventStoreDBContainerOptions,\n ) {\n super(image);\n\n const environment: Environment = {\n ...(!options.disableProjections\n ? {\n EVENTSTORE_RUN_PROJECTIONS: 'ALL',\n }\n : {}),\n ...(!options.isSecure\n ? {\n EVENTSTORE_INSECURE: 'true',\n }\n : {}),\n ...(options.useFileStorage\n ? {\n EVENTSTORE_MEM_DB: 'false',\n EVENTSTORE_DB: '/data/integration-tests',\n }\n : {}),\n EVENTSTORE_CLUSTER_SIZE: '1',\n EVENTSTORE_START_STANDARD_PROJECTIONS: 'true',\n EVENTSTORE_NODE_PORT: `${EVENTSTOREDB_PORT}`,\n EVENTSTORE_ENABLE_ATOM_PUB_OVER_HTTP: 'true',\n };\n\n this.withEnvironment(environment).withExposedPorts(EVENTSTOREDB_PORT);\n\n if (options.withReuse) this.withReuse();\n\n this.withWaitStrategy(\n Wait.forAll([Wait.forHealthCheck(), Wait.forListeningPorts()]),\n );\n }\n\n async start(): Promise<StartedEventStoreDBContainer> {\n return new StartedEventStoreDBContainer(await super.start());\n }\n}\n\nexport class StartedEventStoreDBContainer extends AbstractStartedContainer {\n constructor(container: StartedTestContainer) {\n super(container);\n }\n\n getConnectionString(): string {\n return `esdb://${this.getHost()}:${this.getMappedPort(2113)}?tls=false`;\n }\n\n getClient(): EventStoreDBClient {\n return EventStoreDBClient.connectionString(this.getConnectionString());\n }\n}\n\nlet container: EventStoreDBContainer | null = null;\nlet startedContainer: StartedEventStoreDBContainer | null = null;\nlet startedCount = 0;\nconst lock = InProcessLock();\n\nexport const getSharedEventStoreDBTestContainer = () =>\n lock.withAcquire(\n async () => {\n if (startedContainer) return startedContainer;\n\n if (!container)\n container = new EventStoreDBContainer(EVENTSTOREDB_DEFAULT_IMAGE);\n\n startedContainer = await container.start();\n startedCount++;\n\n container.withLogConsumer((stream) =>\n stream\n .on('data', (line) => consoleLogger(LogEvent.info(String(line))))\n .on('err', (line) => consoleLogger(LogEvent.error(String(line))))\n .on('end', () => consoleLogger(LogEvent.info('Stream closed'))),\n );\n\n return startedContainer;\n },\n { lockId: 'SharedEventStoreDBTestContainer' },\n );\n\nexport const getSharedTestEventStoreDBClient = async () => {\n return (await getSharedEventStoreDBTestContainer()).getClient();\n};\n\nexport const releaseSharedEventStoreDBTestContainer = () =>\n lock.withAcquire(\n async () => {\n const containerToStop = startedContainer;\n if (containerToStop && --startedCount === 0) {\n try {\n startedContainer = null;\n container = null;\n await containerToStop.stop();\n } catch {\n /* do nothing */\n }\n }\n },\n { lockId: 'SharedEventStoreDBTestContainer' },\n );\n","import { EventStoreDBClient } from '@eventstore/db-client';\nimport type { StartedEventStoreDBContainer } from './eventStoreDBContainer';\nimport { EventStoreDBContainer } from './eventStoreDBContainer';\n\nexport * from './eventStoreDBContainer';\n\nlet esdbContainer: StartedEventStoreDBContainer;\n\nexport const getEventStoreDBTestClient = async (\n useTestContainers = false,\n): Promise<EventStoreDBClient> => {\n let connectionString;\n\n if (useTestContainers) {\n if (!esdbContainer)\n esdbContainer = await new EventStoreDBContainer().start();\n\n connectionString = esdbContainer.getConnectionString();\n } else {\n // await compose.upAll();\n connectionString = 'esdb://localhost:2113?tls=false';\n }\n\n // That's how EventStoreDB client is setup\n // We're taking the connection string from container\n return EventStoreDBClient.connectionString(connectionString);\n};\n","import { MongoDBContainer } from '@testcontainers/mongodb';\n\nexport const getMongoDBContainer = (\n options: { version: string } = { version: '6.0.1' },\n) => {\n return new MongoDBContainer(`mongo:${options.version}`);\n};\n\nexport const getMongoDBStartedContainer = async (\n options: { version: string } = { version: '6.0.1' },\n) => {\n const container = getMongoDBContainer(options);\n return container.start();\n};\n","import { PostgreSqlContainer } from '@testcontainers/postgresql';\n\nexport const getPostgreSQLContainer = (\n options: { version: string } = { version: '18.1' },\n) => {\n return new PostgreSqlContainer(`postgres:${options.version}`);\n};\n\nexport const getPostgreSQLStartedContainer = async (\n options: { version: string } = { version: '18.1' },\n) => {\n const container = getPostgreSQLContainer(options);\n return container.start();\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../almanac/dist/logger-DnrSjS8d.js","../../almanac/dist/spanLogEvent-ByQosuDu.js","../../almanac/dist/console-Bn5yW7XZ.js","../src/eventStore/eventStoreDBContainer.ts","../src/eventStore/index.ts","../src/mongodb/mongoDBContainer.ts","../src/postgresql/postgreSQLContainer.ts"],"sourcesContent":["//#region src/loggers/logger.ts\nconst LogLevel = {\n\tdefault: \"info\",\n\tsilent: \"silent\",\n\ttrace: \"trace\",\n\tdebug: \"debug\",\n\tinfo: \"info\",\n\twarn: \"warn\",\n\terror: \"error\",\n\tfatal: \"fatal\"\n};\nconst shouldLog = (logLevel, definedLogLevel) => {\n\tdefinedLogLevel ??= LogLevel.default;\n\tswitch (definedLogLevel) {\n\t\tcase \"fatal\": return logLevel === LogLevel.fatal;\n\t\tcase \"error\": return [LogLevel.fatal, LogLevel.error].includes(logLevel);\n\t\tcase \"warn\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn\n\t\t].includes(logLevel);\n\t\tcase \"info\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn,\n\t\t\tLogLevel.info\n\t\t].includes(logLevel);\n\t\tcase \"debug\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn,\n\t\t\tLogLevel.info,\n\t\t\tLogLevel.debug\n\t\t].includes(logLevel);\n\t\tcase \"trace\": return [\n\t\t\tLogLevel.fatal,\n\t\t\tLogLevel.error,\n\t\t\tLogLevel.warn,\n\t\t\tLogLevel.info,\n\t\t\tLogLevel.debug,\n\t\t\tLogLevel.trace\n\t\t].includes(logLevel);\n\t\tcase \"silent\": return false;\n\t}\n};\nconst logEvent = (eventName, data, eventMetadata) => {\n\treturn {\n\t\tname: eventName,\n\t\tdata,\n\t\tmetadata: {\n\t\t\t...eventMetadata,\n\t\t\ttimestamp: eventMetadata.timestamp ?? Date.now()\n\t\t}\n\t};\n};\nconst message = (level, body, data, eventMetadata) => {\n\tif (data === void 0) return logEvent(body, { body }, {\n\t\tlevel,\n\t\t...eventMetadata\n\t});\n\tconst eventData = { body };\n\tif (data.error !== void 0) eventData.error = data.error;\n\tif (data.attributes !== void 0) eventData.attributes = data.attributes;\n\treturn logEvent(body, eventData, {\n\t\tlevel,\n\t\t...eventMetadata\n\t});\n};\nconst forLevel = (level) => (msgOrObj, msgOrMetadata, eventMetadata) => {\n\tif (typeof msgOrObj === \"string\") return logEvent(msgOrObj, { body: msgOrObj }, {\n\t\tlevel,\n\t\t...typeof msgOrMetadata === \"string\" ? eventMetadata : msgOrMetadata\n\t});\n\tconst msg = typeof msgOrMetadata === \"string\" ? msgOrMetadata : void 0;\n\tconst overrides = eventMetadata ?? (typeof msgOrMetadata === \"string\" ? void 0 : msgOrMetadata);\n\tif (msgOrObj instanceof Error) return logEvent(msg ?? \"\", {\n\t\terror: msgOrObj,\n\t\tbody: msg\n\t}, {\n\t\tlevel,\n\t\t...overrides\n\t});\n\tconst { eventName, ...attributes } = msgOrObj;\n\treturn logEvent(typeof eventName === \"string\" ? eventName : msg ?? \"\", {\n\t\tattributes,\n\t\tbody: msg\n\t}, {\n\t\tlevel,\n\t\t...overrides\n\t});\n};\nconst LogEvent = Object.assign(logEvent, {\n\tmessage,\n\tfatal: forLevel(\"fatal\"),\n\terror: forLevel(\"error\"),\n\twarn: forLevel(\"warn\"),\n\tinfo: forLevel(\"info\"),\n\tdebug: forLevel(\"debug\"),\n\ttrace: forLevel(\"trace\"),\n\tsilent: forLevel(\"silent\")\n});\nconst logger = (options) => {\n\tconst { event: sink, minLevel } = options;\n\treturn (event) => {\n\t\tif (event.metadata.level === \"silent\" || !shouldLog(event.metadata.level, minLevel)) return;\n\t\tsink(event);\n\t};\n};\nconst noopLogger = logger({ event: () => {} });\n\n//#endregion\nexport { shouldLog as a, noopLogger as i, LogLevel as n, logger as r, LogEvent as t };\n//# sourceMappingURL=logger-DnrSjS8d.js.map","import { i as noopLogger } from \"./logger-DnrSjS8d.js\";\n\n//#region src/serialization/json/jsonSerializer.ts\nconst bigIntReplacer = (_key, value) => {\n\treturn typeof value === \"bigint\" ? value.toString() : value;\n};\nconst dateReplacer = (_key, value) => {\n\treturn value instanceof Date ? value.toISOString() : value;\n};\nconst errorReplacer = (_key, value) => value instanceof Error ? {\n\ttype: value.constructor.name || \"error\",\n\tmessage: value.message,\n\tstack: value.stack\n} : value;\nconst isFirstLetterNumeric = (str) => {\n\tconst c = str.charCodeAt(0);\n\treturn c >= 48 && c <= 57;\n};\nconst isFirstLetterNumericOrMinus = (str) => {\n\tconst c = str.charCodeAt(0);\n\treturn c >= 48 && c <= 57 || c === 45;\n};\nconst bigIntReviver = (_key, value, context) => {\n\tif (typeof value === \"number\" && Number.isInteger(value) && !Number.isSafeInteger(value)) try {\n\t\treturn BigInt(context?.source ?? value.toString());\n\t} catch {\n\t\treturn value;\n\t}\n\tif (typeof value === \"string\" && value.length > 15) {\n\t\tif (isFirstLetterNumericOrMinus(value)) {\n\t\t\tconst num = Number(value);\n\t\t\tif (Number.isFinite(num) && !Number.isSafeInteger(num)) try {\n\t\t\t\treturn BigInt(value);\n\t\t\t} catch {}\n\t\t}\n\t}\n\treturn value;\n};\nconst dateReviver = (_key, value) => {\n\tif (typeof value === \"string\" && value.length === 24 && isFirstLetterNumeric(value) && value[10] === \"T\" && value[23] === \"Z\") {\n\t\tconst date = new Date(value);\n\t\tif (!isNaN(date.getTime())) return date;\n\t}\n\treturn value;\n};\nconst composeJSONReplacers = (...replacers) => {\n\tconst filteredReplacers = replacers.filter((r) => r !== void 0);\n\tif (filteredReplacers.length === 0) return void 0;\n\treturn (key, value) => filteredReplacers.reduce((accValue, replacer) => replacer(key, accValue), value);\n};\nconst composeJSONRevivers = (...revivers) => {\n\tconst filteredRevivers = revivers.filter((r) => r !== void 0);\n\tif (filteredRevivers.length === 0) return void 0;\n\treturn (key, value, context) => filteredRevivers.reduce((accValue, reviver) => reviver(key, accValue, context), value);\n};\nconst JSONReplacer = (opts) => composeJSONReplacers(opts?.replacer, opts?.failOnBigIntSerialization !== true ? JSONReplacers.bigInt : void 0, opts?.useDefaultDateSerialization !== true ? JSONReplacers.date : void 0, opts?.skipErrorSerialization !== true ? JSONReplacers.error : void 0);\nconst JSONReviver = (opts) => composeJSONRevivers(opts?.reviver, opts?.parseBigInts === true ? JSONRevivers.bigInt : void 0, opts?.parseDates === true ? JSONRevivers.date : void 0);\nconst JSONReplacers = {\n\tbigInt: bigIntReplacer,\n\tdate: dateReplacer,\n\terror: errorReplacer\n};\nconst JSONRevivers = {\n\tbigInt: bigIntReviver,\n\tdate: dateReviver\n};\nconst jsonSerializer = (options) => {\n\tconst defaultReplacer = JSONReplacer(options);\n\tconst defaultReviver = JSONReviver(options);\n\tconst defaultFormat = options?.format ?? \"compact\";\n\tconst defaultSafe = options?.safe ?? false;\n\treturn {\n\t\tserialize: (object, serializerOptions) => {\n\t\t\tconst replacer = serializerOptions ? JSONReplacer(serializerOptions) : defaultReplacer;\n\t\t\tconst indent = (serializerOptions?.format ?? defaultFormat) === \"pretty\" ? 2 : void 0;\n\t\t\tif (serializerOptions?.safe ?? defaultSafe) try {\n\t\t\t\treturn JSON.stringify(object, replacer, indent);\n\t\t\t} catch (e) {\n\t\t\t\treturn `{\"__serializationError\":${JSON.stringify(String(e))}}`;\n\t\t\t}\n\t\t\treturn JSON.stringify(object, replacer, indent);\n\t\t},\n\t\tdeserialize: (payload, deserializerOptions) => JSON.parse(payload, deserializerOptions ? JSONReviver(deserializerOptions) : defaultReviver)\n\t};\n};\nconst JSONSerializer = Object.assign(jsonSerializer(), { from: (options) => options?.serialization?.serializer ?? (options?.serialization?.options ? jsonSerializer(options?.serialization?.options) : JSONSerializer) });\n\n//#endregion\n//#region src/loggers/formatters/otelLogFormatter.ts\nconst SEVERITY_NUMBER = {\n\tsilent: 0,\n\ttrace: 1,\n\tdebug: 5,\n\tinfo: 9,\n\twarn: 13,\n\terror: 17,\n\tfatal: 21\n};\nconst severityNumberFor = (level) => SEVERITY_NUMBER[level];\nconst severityTextFor = (level) => level.toUpperCase();\nconst OtelLogFormatter = {\n\tformat: (event, options) => JSONSerializer.serialize(OtelLogFormatter.toOtelLog(event), options),\n\ttoOtelLog: ({ name: eventName, data, metadata }) => {\n\t\tconst attributes = { ...data.attributes ?? {} };\n\t\tif (data.error) {\n\t\t\tattributes[\"exception.type\"] = data.error.name;\n\t\t\tattributes[\"exception.message\"] = data.error.message;\n\t\t\tif (data.error.stack) attributes[\"exception.stacktrace\"] = data.error.stack;\n\t\t}\n\t\tconst log = {\n\t\t\ttimestamp: metadata.timestamp,\n\t\t\tseverityNumber: severityNumberFor(metadata.level),\n\t\t\tseverityText: severityTextFor(metadata.level)\n\t\t};\n\t\tif (eventName) log.eventName = eventName;\n\t\tif (metadata.traceId !== void 0) log.traceId = metadata.traceId;\n\t\tif (metadata.spanId !== void 0) log.spanId = metadata.spanId;\n\t\tif (data.body !== void 0) log.body = data.body;\n\t\tif (Object.keys(attributes).length) log.attributes = attributes;\n\t\treturn log;\n\t}\n};\n\n//#endregion\n//#region src/loggers/formatters/simpleFormatter.ts\nconst SimpleLogFormatter = { format: (event, _options) => {\n\tconst message = event.data.body ?? (event.name ? event.name : void 0);\n\treturn message !== void 0 ? `[${event.metadata.level}] ${message}` : `[${event.metadata.level}]`;\n} };\n\n//#endregion\n//#region src/tracers/span.ts\nconst noopSpan = {\n\tsetAttributes: () => {},\n\tspanContext: () => ({\n\t\ttraceId: \"\",\n\t\tspanId: \"\"\n\t}),\n\taddLink: () => {},\n\tlog: noopLogger\n};\n\n//#endregion\n//#region src/tracers/compositeTracer.ts\nconst compositeTracer = (...tracers) => ({ startSpan: async (name, fn, options) => {\n\tif (tracers.length === 0) return fn(noopSpan);\n\tconst nest = (index, collectedSpans) => {\n\t\tif (index >= tracers.length) return fn(compositeSpan(collectedSpans));\n\t\treturn tracers[index].startSpan(name, async (span) => nest(index + 1, [...collectedSpans, span]), options);\n\t};\n\treturn nest(0, []);\n} });\nconst compositeSpan = (spans) => ({\n\tsetAttributes: (attrs) => spans.forEach((s) => s.setAttributes(attrs)),\n\tspanContext: () => (spans[0] ?? noopSpan).spanContext(),\n\taddLink: (link) => spans.forEach((s) => s.addLink(link)),\n\tlog: (event) => spans.forEach((s) => s.log(event))\n});\n\n//#endregion\n//#region src/tracers/observabilityContextGenerator.ts\nconst randomHex = (bytes) => {\n\tconst arr = new Uint8Array(bytes);\n\tglobalThis.crypto.getRandomValues(arr);\n\treturn Array.from(arr, (b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n};\nconst defaultObservabilityContextGenerator = {\n\tgenerateTraceId: () => randomHex(16),\n\tgenerateSpanId: () => randomHex(8),\n\tgenerateMessageId: () => randomHex(16),\n\tgenerateCorrelationId: () => randomHex(16),\n\tgenerateCausationId: () => randomHex(16)\n};\n\n//#endregion\n//#region src/tracers/tracer.ts\nconst noTracing = { startSpan: async (_name, fn, _options) => fn(noopSpan) };\nconst noopTracer = () => noTracing;\n\n//#endregion\n//#region src/tracers/spanLogEvent.ts\nconst logEventForSpan = (event, context) => {\n\tconst traceId = event.metadata.traceId ?? context.traceId;\n\tconst spanId = event.metadata.spanId ?? context.spanId;\n\tif (traceId === event.metadata.traceId && spanId === event.metadata.spanId) return event;\n\tconst metadata = {\n\t\t...event.metadata,\n\t\ttraceId,\n\t\tspanId\n\t};\n\treturn {\n\t\tname: event.name,\n\t\tdata: event.data,\n\t\tmetadata\n\t};\n};\n\n//#endregion\nexport { noopSpan as a, severityTextFor as c, compositeTracer as i, JSONSerializer as l, noopTracer as n, SimpleLogFormatter as o, defaultObservabilityContextGenerator as r, OtelLogFormatter as s, logEventForSpan as t };\n//# sourceMappingURL=spanLogEvent-ByQosuDu.js.map","import { l as JSONSerializer, o as SimpleLogFormatter, r as defaultObservabilityContextGenerator, s as OtelLogFormatter, t as logEventForSpan } from \"./spanLogEvent-ByQosuDu.js\";\nimport { i as noopLogger, r as logger } from \"./logger-DnrSjS8d.js\";\n\n//#region src/providers/console/consoleLogger.ts\nconst consoleMethodFor = (level) => {\n\tswitch (level) {\n\t\tcase \"fatal\":\n\t\tcase \"error\": return console.error;\n\t\tcase \"warn\": return console.warn;\n\t\tcase \"debug\": return console.debug;\n\t\tcase \"trace\": return console.trace;\n\t\tdefault: return console.log;\n\t}\n};\nconst consoleLogger = logger({ event: (event) => {\n\tconst write = consoleMethodFor(event.metadata.level);\n\tconst extra = event.data.error ?? (event.data.attributes && Object.keys(event.data.attributes).length ? event.data.attributes : void 0);\n\tif (event.data.body !== void 0 && extra !== void 0) write(event.data.body, extra);\n\telse if (event.data.body !== void 0) write(event.data.body);\n\telse if (extra !== void 0) write(extra);\n\telse write(\"\");\n} });\n\n//#endregion\n//#region src/providers/console/consoleSpanLogSink.ts\nconst createConsoleSpanLogSink = (format) => {\n\tconst serializerOptions = {\n\t\tformat: format === \"simple\" || void 0 ? \"compact\" : format,\n\t\tsafe: true\n\t};\n\treturn format === \"simple\" ? (event) => console.log(SimpleLogFormatter.format(event, serializerOptions)) : (event) => console.log(OtelLogFormatter.format(event, serializerOptions));\n};\n\n//#endregion\n//#region src/providers/console/consoleSpanLogger.ts\nconst ConsoleFormat = {\n\tcompact: \"compact\",\n\tpretty: \"pretty\",\n\tSIMPLE: \"simple\"\n};\nconst consoleSpanLogger = (options) => logger({\n\tminLevel: options?.logLevel,\n\tevent: createConsoleSpanLogSink(options?.format)\n});\n\n//#endregion\n//#region src/providers/console/consoleTracer.ts\nconst consoleTracer = (options) => {\n\tconst mode = options?.mode ?? \"compact\";\n\tconst suppressLogs = options?.suppressLogs ?? false;\n\tconst contextGenerator = options?.contextGenerator ?? defaultObservabilityContextGenerator;\n\tconst sink = createConsoleSpanLogSink(mode);\n\tconst log = suppressLogs ? noopLogger : logger({\n\t\tminLevel: options?.logLevel,\n\t\tevent: sink\n\t});\n\treturn { startSpan: async (name, fn, spanOptions) => {\n\t\tconst traceId = contextGenerator.generateTraceId();\n\t\tconst spanId = contextGenerator.generateSpanId();\n\t\tconst context = {\n\t\t\ttraceId,\n\t\t\tspanId\n\t\t};\n\t\tconst startMs = Date.now();\n\t\tconst attributes = { ...spanOptions?.attributes };\n\t\tconst links = [...spanOptions?.links ?? []];\n\t\tconst span = {\n\t\t\tspanContext: () => context,\n\t\t\tsetAttributes: (attrs) => Object.assign(attributes, attrs),\n\t\t\taddLink: (link) => links.push(link),\n\t\t\tlog: (event) => log(logEventForSpan(event, context))\n\t\t};\n\t\tlet ok = true;\n\t\tlet spanError;\n\t\ttry {\n\t\t\treturn await fn(span);\n\t\t} catch (e) {\n\t\t\tok = false;\n\t\t\tspanError = e instanceof Error ? e : new Error(String(e));\n\t\t\tthrow e;\n\t\t} finally {\n\t\t\tconst durationMs = Date.now() - startMs;\n\t\t\tif (mode === \"simple\") console.log(`[span] ${name} (${durationMs}ms)${ok ? \"\" : \" [failed]\"}`);\n\t\t\telse {\n\t\t\t\tconst summary = {\n\t\t\t\t\tname,\n\t\t\t\t\ttraceId,\n\t\t\t\t\tspanId,\n\t\t\t\t\t...spanOptions?.parent?.spanId ? { parentSpanId: spanOptions.parent.spanId } : {},\n\t\t\t\t\tstartTimeUnixNano: (BigInt(startMs) * 1000000n).toString(),\n\t\t\t\t\tendTimeUnixNano: (BigInt(startMs + durationMs) * 1000000n).toString(),\n\t\t\t\t\tattributes,\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tcode: ok ? \"OK\" : \"ERROR\",\n\t\t\t\t\t\t...spanError !== void 0 ? { message: spanError.message } : {}\n\t\t\t\t\t},\n\t\t\t\t\tlinks\n\t\t\t\t};\n\t\t\t\tconsole.log(JSONSerializer.serialize(summary, {\n\t\t\t\t\tformat: mode === \"pretty\" ? \"pretty\" : \"compact\",\n\t\t\t\t\tsafe: true\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t} };\n};\n\n//#endregion\nexport { consoleLogger as i, ConsoleFormat as n, consoleSpanLogger as r, consoleTracer as t };\n//# sourceMappingURL=console-Bn5yW7XZ.js.map","import { LogEvent } from '@event-driven-io/almanac';\nimport { consoleLogger } from '@event-driven-io/almanac/console';\nimport { InProcessLock } from '@event-driven-io/emmett';\nimport { EventStoreDBClient } from '@eventstore/db-client';\nimport {\n AbstractStartedContainer,\n GenericContainer,\n Wait,\n type StartedTestContainer,\n} from 'testcontainers';\nimport type { Environment } from 'testcontainers/build/types';\n\nexport const EVENTSTOREDB_PORT = 2113;\nexport const EVENTSTOREDB_IMAGE_NAME = 'eventstore/eventstore';\nexport const EVENTSTOREDB_IMAGE_TAG = '24.10.0-bookworm-slim';\nexport const EVENTSTOREDB_ARM64_IMAGE_TAG = '24.10.0-alpha-arm64v8';\n\nexport const EVENTSTOREDB_DEFAULT_IMAGE = `${EVENTSTOREDB_IMAGE_NAME}:${process.arch !== 'arm64' ? EVENTSTOREDB_IMAGE_TAG : EVENTSTOREDB_ARM64_IMAGE_TAG}`;\n\nexport type EventStoreDBContainerOptions = {\n disableProjections?: boolean;\n isSecure?: boolean;\n useFileStorage?: boolean;\n withReuse?: boolean;\n};\n\nexport const defaultEventStoreDBContainerOptions: EventStoreDBContainerOptions =\n {\n disableProjections: false,\n isSecure: false,\n useFileStorage: false,\n withReuse: false,\n };\n\nexport class EventStoreDBContainer extends GenericContainer {\n constructor(\n image = EVENTSTOREDB_DEFAULT_IMAGE,\n options: EventStoreDBContainerOptions = defaultEventStoreDBContainerOptions,\n ) {\n super(image);\n\n const environment: Environment = {\n ...(!options.disableProjections\n ? {\n EVENTSTORE_RUN_PROJECTIONS: 'ALL',\n }\n : {}),\n ...(!options.isSecure\n ? {\n EVENTSTORE_INSECURE: 'true',\n }\n : {}),\n ...(options.useFileStorage\n ? {\n EVENTSTORE_MEM_DB: 'false',\n EVENTSTORE_DB: '/data/integration-tests',\n }\n : {}),\n EVENTSTORE_CLUSTER_SIZE: '1',\n EVENTSTORE_START_STANDARD_PROJECTIONS: 'true',\n EVENTSTORE_NODE_PORT: `${EVENTSTOREDB_PORT}`,\n EVENTSTORE_ENABLE_ATOM_PUB_OVER_HTTP: 'true',\n };\n\n this.withEnvironment(environment).withExposedPorts(EVENTSTOREDB_PORT);\n\n if (options.withReuse) this.withReuse();\n\n this.withWaitStrategy(\n Wait.forAll([Wait.forHealthCheck(), Wait.forListeningPorts()]),\n );\n }\n\n async start(): Promise<StartedEventStoreDBContainer> {\n return new StartedEventStoreDBContainer(await super.start());\n }\n}\n\nexport class StartedEventStoreDBContainer extends AbstractStartedContainer {\n constructor(container: StartedTestContainer) {\n super(container);\n }\n\n getConnectionString(): string {\n return `esdb://${this.getHost()}:${this.getMappedPort(2113)}?tls=false`;\n }\n\n getClient(): EventStoreDBClient {\n return EventStoreDBClient.connectionString(this.getConnectionString());\n }\n}\n\nlet container: EventStoreDBContainer | null = null;\nlet startedContainer: StartedEventStoreDBContainer | null = null;\nlet startedCount = 0;\nconst lock = InProcessLock();\n\nexport const getSharedEventStoreDBTestContainer = () =>\n lock.withAcquire(\n async () => {\n if (startedContainer) return startedContainer;\n\n if (!container)\n container = new EventStoreDBContainer(EVENTSTOREDB_DEFAULT_IMAGE);\n\n startedContainer = await container.start();\n startedCount++;\n\n container.withLogConsumer((stream) =>\n stream\n .on('data', (line) => consoleLogger(LogEvent.info(String(line))))\n .on('err', (line) => consoleLogger(LogEvent.error(String(line))))\n .on('end', () => consoleLogger(LogEvent.info('Stream closed'))),\n );\n\n return startedContainer;\n },\n { lockId: 'SharedEventStoreDBTestContainer' },\n );\n\nexport const getSharedTestEventStoreDBClient = async () => {\n return (await getSharedEventStoreDBTestContainer()).getClient();\n};\n\nexport const releaseSharedEventStoreDBTestContainer = () =>\n lock.withAcquire(\n async () => {\n const containerToStop = startedContainer;\n if (containerToStop && --startedCount === 0) {\n try {\n startedContainer = null;\n container = null;\n await containerToStop.stop();\n } catch {\n /* do nothing */\n }\n }\n },\n { lockId: 'SharedEventStoreDBTestContainer' },\n );\n","import { EventStoreDBClient } from '@eventstore/db-client';\nimport type { StartedEventStoreDBContainer } from './eventStoreDBContainer';\nimport { EventStoreDBContainer } from './eventStoreDBContainer';\n\nexport * from './eventStoreDBContainer';\n\nlet esdbContainer: StartedEventStoreDBContainer;\n\nexport const getEventStoreDBTestClient = async (\n useTestContainers = false,\n): Promise<EventStoreDBClient> => {\n let connectionString;\n\n if (useTestContainers) {\n if (!esdbContainer)\n esdbContainer = await new EventStoreDBContainer().start();\n\n connectionString = esdbContainer.getConnectionString();\n } else {\n // await compose.upAll();\n connectionString = 'esdb://localhost:2113?tls=false';\n }\n\n // That's how EventStoreDB client is setup\n // We're taking the connection string from container\n return EventStoreDBClient.connectionString(connectionString);\n};\n","import { MongoDBContainer } from '@testcontainers/mongodb';\n\nexport const getMongoDBContainer = (\n options: { version: string } = { version: '6.0.1' },\n) => {\n return new MongoDBContainer(`mongo:${options.version}`);\n};\n\nexport const getMongoDBStartedContainer = async (\n options: { version: string } = { version: '6.0.1' },\n) => {\n const container = getMongoDBContainer(options);\n return container.start();\n};\n","import { PostgreSqlContainer } from '@testcontainers/postgresql';\n\nexport const getPostgreSQLContainer = (\n options: { version: string } = { version: '18.1' },\n) => {\n return new PostgreSqlContainer(`postgres:${options.version}`);\n};\n\nexport const getPostgreSQLStartedContainer = async (\n options: { version: string } = { version: '18.1' },\n) => {\n const container = getPostgreSQLContainer(options);\n return container.start();\n};\n"],"mappings":";;;;;;;AACA,MAAM,WAAW;CAChB,SAAS;CACT,QAAQ;CACR,OAAO;CACP,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACP,OAAO;CACP;AACD,MAAM,aAAa,UAAU,oBAAoB;AAChD,qBAAoB,SAAS;AAC7B,SAAQ,iBAAR;EACC,KAAK,QAAS,QAAO,aAAa,SAAS;EAC3C,KAAK,QAAS,QAAO,CAAC,SAAS,OAAO,SAAS,MAAM,CAAC,SAAS,SAAS;EACxE,KAAK,OAAQ,QAAO;GACnB,SAAS;GACT,SAAS;GACT,SAAS;GACT,CAAC,SAAS,SAAS;EACpB,KAAK,OAAQ,QAAO;GACnB,SAAS;GACT,SAAS;GACT,SAAS;GACT,SAAS;GACT,CAAC,SAAS,SAAS;EACpB,KAAK,QAAS,QAAO;GACpB,SAAS;GACT,SAAS;GACT,SAAS;GACT,SAAS;GACT,SAAS;GACT,CAAC,SAAS,SAAS;EACpB,KAAK,QAAS,QAAO;GACpB,SAAS;GACT,SAAS;GACT,SAAS;GACT,SAAS;GACT,SAAS;GACT,SAAS;GACT,CAAC,SAAS,SAAS;EACpB,KAAK,SAAU,QAAO;;;AAGxB,MAAM,YAAY,WAAW,MAAM,kBAAkB;AACpD,QAAO;EACN,MAAM;EACN;EACA,UAAU;GACT,GAAG;GACH,WAAW,cAAc,aAAa,KAAK,KAAK;GAChD;EACD;;AAEF,MAAM,WAAW,OAAO,MAAM,MAAM,kBAAkB;AACrD,KAAI,SAAS,KAAK,EAAG,QAAO,SAAS,MAAM,EAAE,MAAM,EAAE;EACpD;EACA,GAAG;EACH,CAAC;CACF,MAAM,YAAY,EAAE,MAAM;AAC1B,KAAI,KAAK,UAAU,KAAK,EAAG,WAAU,QAAQ,KAAK;AAClD,KAAI,KAAK,eAAe,KAAK,EAAG,WAAU,aAAa,KAAK;AAC5D,QAAO,SAAS,MAAM,WAAW;EAChC;EACA,GAAG;EACH,CAAC;;AAEH,MAAM,YAAY,WAAW,UAAU,eAAe,kBAAkB;AACvE,KAAI,OAAO,aAAa,SAAU,QAAO,SAAS,UAAU,EAAE,MAAM,UAAU,EAAE;EAC/E;EACA,GAAG,OAAO,kBAAkB,WAAW,gBAAgB;EACvD,CAAC;CACF,MAAM,MAAM,OAAO,kBAAkB,WAAW,gBAAgB,KAAK;CACrE,MAAM,YAAY,kBAAkB,OAAO,kBAAkB,WAAW,KAAK,IAAI;AACjF,KAAI,oBAAoB,MAAO,QAAO,SAAS,OAAO,IAAI;EACzD,OAAO;EACP,MAAM;EACN,EAAE;EACF;EACA,GAAG;EACH,CAAC;CACF,MAAM,EAAE,WAAW,GAAG,eAAe;AACrC,QAAO,SAAS,OAAO,cAAc,WAAW,YAAY,OAAO,IAAI;EACtE;EACA,MAAM;EACN,EAAE;EACF;EACA,GAAG;EACH,CAAC;;AAEH,MAAM,WAAW,OAAO,OAAO,UAAU;CACxC;CACA,OAAO,SAAS,QAAQ;CACxB,OAAO,SAAS,QAAQ;CACxB,MAAM,SAAS,OAAO;CACtB,MAAM,SAAS,OAAO;CACtB,OAAO,SAAS,QAAQ;CACxB,OAAO,SAAS,QAAQ;CACxB,QAAQ,SAAS,SAAS;CAC1B,CAAC;AACF,MAAM,UAAU,YAAY;CAC3B,MAAM,EAAE,OAAO,MAAM,aAAa;AAClC,SAAQ,UAAU;AACjB,MAAI,MAAM,SAAS,UAAU,YAAY,CAAC,UAAU,MAAM,SAAS,OAAO,SAAS,CAAE;AACrF,OAAK,MAAM;;;AAGb,MAAM,aAAa,OAAO,EAAE,aAAa,IAAI,CAAC;;;;ACzG9C,MAAM,kBAAkB,MAAM,UAAU;AACvC,QAAO,OAAO,UAAU,WAAW,MAAM,UAAU,GAAG;;AAEvD,MAAM,gBAAgB,MAAM,UAAU;AACrC,QAAO,iBAAiB,OAAO,MAAM,aAAa,GAAG;;AAEtD,MAAM,iBAAiB,MAAM,UAAU,iBAAiB,QAAQ;CAC/D,MAAM,MAAM,YAAY,QAAQ;CAChC,SAAS,MAAM;CACf,OAAO,MAAM;CACb,GAAG;AACJ,MAAM,wBAAwB,QAAQ;CACrC,MAAM,IAAI,IAAI,WAAW,EAAE;AAC3B,QAAO,KAAK,MAAM,KAAK;;AAExB,MAAM,+BAA+B,QAAQ;CAC5C,MAAM,IAAI,IAAI,WAAW,EAAE;AAC3B,QAAO,KAAK,MAAM,KAAK,MAAM,MAAM;;AAEpC,MAAM,iBAAiB,MAAM,OAAO,YAAY;AAC/C,KAAI,OAAO,UAAU,YAAY,OAAO,UAAU,MAAM,IAAI,CAAC,OAAO,cAAc,MAAM,CAAE,KAAI;AAC7F,SAAO,OAAO,SAAS,UAAU,MAAM,UAAU,CAAC;SAC3C;AACP,SAAO;;AAER,KAAI,OAAO,UAAU,YAAY,MAAM,SAAS,IAC/C;MAAI,4BAA4B,MAAM,EAAE;GACvC,MAAM,MAAM,OAAO,MAAM;AACzB,OAAI,OAAO,SAAS,IAAI,IAAI,CAAC,OAAO,cAAc,IAAI,CAAE,KAAI;AAC3D,WAAO,OAAO,MAAM;WACb;;;AAGV,QAAO;;AAER,MAAM,eAAe,MAAM,UAAU;AACpC,KAAI,OAAO,UAAU,YAAY,MAAM,WAAW,MAAM,qBAAqB,MAAM,IAAI,MAAM,QAAQ,OAAO,MAAM,QAAQ,KAAK;EAC9H,MAAM,OAAO,IAAI,KAAK,MAAM;AAC5B,MAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAE,QAAO;;AAEpC,QAAO;;AAER,MAAM,wBAAwB,GAAG,cAAc;CAC9C,MAAM,oBAAoB,UAAU,QAAQ,MAAM,MAAM,KAAK,EAAE;AAC/D,KAAI,kBAAkB,WAAW,EAAG,QAAO,KAAK;AAChD,SAAQ,KAAK,UAAU,kBAAkB,QAAQ,UAAU,aAAa,SAAS,KAAK,SAAS,EAAE,MAAM;;AAExG,MAAM,uBAAuB,GAAG,aAAa;CAC5C,MAAM,mBAAmB,SAAS,QAAQ,MAAM,MAAM,KAAK,EAAE;AAC7D,KAAI,iBAAiB,WAAW,EAAG,QAAO,KAAK;AAC/C,SAAQ,KAAK,OAAO,YAAY,iBAAiB,QAAQ,UAAU,YAAY,QAAQ,KAAK,UAAU,QAAQ,EAAE,MAAM;;AAEvH,MAAM,gBAAgB,SAAS,qBAAqB,MAAM,UAAU,MAAM,8BAA8B,OAAO,cAAc,SAAS,KAAK,GAAG,MAAM,gCAAgC,OAAO,cAAc,OAAO,KAAK,GAAG,MAAM,2BAA2B,OAAO,cAAc,QAAQ,KAAK,EAAE;AAC7R,MAAM,eAAe,SAAS,oBAAoB,MAAM,SAAS,MAAM,iBAAiB,OAAO,aAAa,SAAS,KAAK,GAAG,MAAM,eAAe,OAAO,aAAa,OAAO,KAAK,EAAE;AACpL,MAAM,gBAAgB;CACrB,QAAQ;CACR,MAAM;CACN,OAAO;CACP;AACD,MAAM,eAAe;CACpB,QAAQ;CACR,MAAM;CACN;AACD,MAAM,kBAAkB,YAAY;CACnC,MAAM,kBAAkB,aAAa,QAAQ;CAC7C,MAAM,iBAAiB,YAAY,QAAQ;CAC3C,MAAM,gBAAgB,SAAS,UAAU;CACzC,MAAM,cAAc,SAAS,QAAQ;AACrC,QAAO;EACN,YAAY,QAAQ,sBAAsB;GACzC,MAAM,WAAW,oBAAoB,aAAa,kBAAkB,GAAG;GACvE,MAAM,UAAU,mBAAmB,UAAU,mBAAmB,WAAW,IAAI,KAAK;AACpF,OAAI,mBAAmB,QAAQ,YAAa,KAAI;AAC/C,WAAO,KAAK,UAAU,QAAQ,UAAU,OAAO;YACvC,GAAG;AACX,WAAO,2BAA2B,KAAK,UAAU,OAAO,EAAE,CAAC,CAAC;;AAE7D,UAAO,KAAK,UAAU,QAAQ,UAAU,OAAO;;EAEhD,cAAc,SAAS,wBAAwB,KAAK,MAAM,SAAS,sBAAsB,YAAY,oBAAoB,GAAG,eAAe;EAC3I;;AAEF,MAAM,iBAAiB,OAAO,OAAO,gBAAgB,EAAE,EAAE,OAAO,YAAY,SAAS,eAAe,eAAe,SAAS,eAAe,UAAU,eAAe,SAAS,eAAe,QAAQ,GAAG,iBAAiB,CAAC;;;;ACjFzN,MAAM,oBAAoB,UAAU;AACnC,SAAQ,OAAR;EACC,KAAK;EACL,KAAK,QAAS,QAAO,QAAQ;EAC7B,KAAK,OAAQ,QAAO,QAAQ;EAC5B,KAAK,QAAS,QAAO,QAAQ;EAC7B,KAAK,QAAS,QAAO,QAAQ;EAC7B,QAAS,QAAO,QAAQ;;;AAG1B,MAAM,gBAAgB,OAAO,EAAE,QAAQ,UAAU;CAChD,MAAM,QAAQ,iBAAiB,MAAM,SAAS,MAAM;CACpD,MAAM,QAAQ,MAAM,KAAK,UAAU,MAAM,KAAK,cAAc,OAAO,KAAK,MAAM,KAAK,WAAW,CAAC,SAAS,MAAM,KAAK,aAAa,KAAK;AACrI,KAAI,MAAM,KAAK,SAAS,KAAK,KAAK,UAAU,KAAK,EAAG,OAAM,MAAM,KAAK,MAAM,MAAM;UACxE,MAAM,KAAK,SAAS,KAAK,EAAG,OAAM,MAAM,KAAK,KAAK;UAClD,UAAU,KAAK,EAAG,OAAM,MAAM;KAClC,OAAM,GAAG;GACZ,CAAC;;;;ACTJ,MAAa,oBAAoB;AACjC,MAAa,0BAA0B;AACvC,MAAa,yBAAyB;AACtC,MAAa,+BAA+B;AAE5C,MAAa,6BAA6B,GAAG,wBAAwB,GAAG,QAAQ,SAAS,UAAU,yBAAyB;AAS5H,MAAa,sCACX;CACE,oBAAoB;CACpB,UAAU;CACV,gBAAgB;CAChB,WAAW;CACZ;AAEH,IAAa,wBAAb,cAA2C,iBAAiB;CAC1D,YACE,QAAQ,4BACR,UAAwC,qCACxC;AACA,QAAM,MAAM;EAEZ,MAAM,cAA2B;GAC/B,GAAI,CAAC,QAAQ,qBACT,EACE,4BAA4B,OAC7B,GACD,EAAE;GACN,GAAI,CAAC,QAAQ,WACT,EACE,qBAAqB,QACtB,GACD,EAAE;GACN,GAAI,QAAQ,iBACR;IACE,mBAAmB;IACnB,eAAe;IAChB,GACD,EAAE;GACN,yBAAyB;GACzB,uCAAuC;GACvC,sBAAsB,GAAG;GACzB,sCAAsC;GACvC;AAED,OAAK,gBAAgB,YAAY,CAAC,iBAAiB,kBAAkB;AAErE,MAAI,QAAQ,UAAW,MAAK,WAAW;AAEvC,OAAK,iBACH,KAAK,OAAO,CAAC,KAAK,gBAAgB,EAAE,KAAK,mBAAmB,CAAC,CAAC,CAC/D;;CAGH,MAAM,QAA+C;AACnD,SAAO,IAAI,6BAA6B,MAAM,MAAM,OAAO,CAAC;;;AAIhE,IAAa,+BAAb,cAAkD,yBAAyB;CACzE,YAAY,WAAiC;AAC3C,QAAM,UAAU;;CAGlB,sBAA8B;AAC5B,SAAO,UAAU,KAAK,SAAS,CAAC,GAAG,KAAK,cAAc,KAAK,CAAC;;CAG9D,YAAgC;AAC9B,SAAO,mBAAmB,iBAAiB,KAAK,qBAAqB,CAAC;;;AAI1E,IAAI,YAA0C;AAC9C,IAAI,mBAAwD;AAC5D,IAAI,eAAe;AACnB,MAAM,OAAO,eAAe;AAE5B,MAAa,2CACX,KAAK,YACH,YAAY;AACV,KAAI,iBAAkB,QAAO;AAE7B,KAAI,CAAC,UACH,aAAY,IAAI,sBAAsB,2BAA2B;AAEnE,oBAAmB,MAAM,UAAU,OAAO;AAC1C;AAEA,WAAU,iBAAiB,WACzB,OACG,GAAG,SAAS,SAAS,cAAc,SAAS,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC,CAChE,GAAG,QAAQ,SAAS,cAAc,SAAS,MAAM,OAAO,KAAK,CAAC,CAAC,CAAC,CAChE,GAAG,aAAa,cAAc,SAAS,KAAK,gBAAgB,CAAC,CAAC,CAClE;AAED,QAAO;GAET,EAAE,QAAQ,mCAAmC,CAC9C;AAEH,MAAa,kCAAkC,YAAY;AACzD,SAAQ,MAAM,oCAAoC,EAAE,WAAW;;AAGjE,MAAa,+CACX,KAAK,YACH,YAAY;CACV,MAAM,kBAAkB;AACxB,KAAI,mBAAmB,EAAE,iBAAiB,EACxC,KAAI;AACF,qBAAmB;AACnB,cAAY;AACZ,QAAM,gBAAgB,MAAM;SACtB;GAKZ,EAAE,QAAQ,mCAAmC,CAC9C;;;;ACrIH,IAAI;AAEJ,MAAa,4BAA4B,OACvC,oBAAoB,UACY;CAChC,IAAI;AAEJ,KAAI,mBAAmB;AACrB,MAAI,CAAC,cACH,iBAAgB,MAAM,IAAI,uBAAuB,CAAC,OAAO;AAE3D,qBAAmB,cAAc,qBAAqB;OAGtD,oBAAmB;AAKrB,QAAO,mBAAmB,iBAAiB,iBAAiB;;;;;ACvB9D,MAAa,uBACX,UAA+B,EAAE,SAAS,SAAS,KAChD;AACH,QAAO,IAAI,iBAAiB,SAAS,QAAQ,UAAU;;AAGzD,MAAa,6BAA6B,OACxC,UAA+B,EAAE,SAAS,SAAS,KAChD;AAEH,QADkB,oBAAoB,QACtB,CAAC,OAAO;;;;;ACV1B,MAAa,0BACX,UAA+B,EAAE,SAAS,QAAQ,KAC/C;AACH,QAAO,IAAI,oBAAoB,YAAY,QAAQ,UAAU;;AAG/D,MAAa,gCAAgC,OAC3C,UAA+B,EAAE,SAAS,QAAQ,KAC/C;AAEH,QADkB,uBAAuB,QACzB,CAAC,OAAO"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@event-driven-io/emmett-testcontainers",
|
|
3
|
-
"version": "0.43.0-beta.
|
|
3
|
+
"version": "0.43.0-beta.29",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Emmett - TestContainers - Event Sourcing development made simple",
|
|
6
6
|
"scripts": {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"dist"
|
|
48
48
|
],
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@event-driven-io/emmett": "0.43.0-beta.
|
|
50
|
+
"@event-driven-io/emmett": "0.43.0-beta.29",
|
|
51
51
|
"@testcontainers/mongodb": "^11.14.0",
|
|
52
52
|
"@testcontainers/postgresql": "^11.14.0",
|
|
53
53
|
"testcontainers": "^11.14.0"
|