@strapi/database 5.23.1 → 5.23.3
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.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { MigrationProvider, type Migration } from './migrations';
|
|
|
7
7
|
import { LifecycleProvider } from './lifecycles';
|
|
8
8
|
import * as errors from './errors';
|
|
9
9
|
import { Callback, TransactionObject } from './transaction-context';
|
|
10
|
-
import type { Model } from './types';
|
|
10
|
+
import type { Model, JoinTable } from './types';
|
|
11
11
|
import type { Identifiers } from './utils/identifiers';
|
|
12
12
|
import { type RepairManager } from './repairs';
|
|
13
13
|
export { isKnexQuery } from './utils/knex';
|
|
@@ -57,5 +57,5 @@ declare class Database {
|
|
|
57
57
|
destroy(): Promise<void>;
|
|
58
58
|
}
|
|
59
59
|
export { Database, errors };
|
|
60
|
-
export type { Model, Identifiers, Migration };
|
|
60
|
+
export type { Model, JoinTable, Identifiers, Migration };
|
|
61
61
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAIjC,OAAO,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AACjD,OAAO,EAAwB,cAAc,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAkB,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAuB,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAA4B,iBAAiB,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAA4B,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAkB,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAEpF,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,UAAU,QAAQ;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,CACzB,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,EACnC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CACpD,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAcD,cAAM,QAAQ;IACZ,UAAU,EAAE,IAAI,CAAC;IAEjB,OAAO,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,cAAc,CAAC;IAEvB,QAAQ,EAAE,QAAQ,CAAC;IAEnB,MAAM,EAAE,cAAc,CAAC;IAEvB,UAAU,EAAE,iBAAiB,CAAC;IAE9B,UAAU,EAAE,iBAAiB,CAAC;IAE9B,aAAa,EAAE,aAAa,CAAC;IAE7B,MAAM,EAAE,aAAa,CAAC;IAEtB,MAAM,EAAE,MAAM,CAAC;gBAEH,MAAM,EAAE,cAAc;IAqD5B,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,KAAK,EAAE,CAAA;KAAE;IA2B1C,KAAK,CAAC,GAAG,EAAE,MAAM;IAQjB,aAAa;IAIb,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IACzC,WAAW,CAAC,SAAS,SAAS,QAAQ,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IA4CrF,aAAa,IAAI,MAAM,GAAG,SAAS;IAInC,aAAa,IAAI,IAAI;IACrB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY;IAQpD,OAAO;;;;;IA2BP,mBAAmB,CAAC,GAAG,mBAAkB;IAKzC,YAAY,CAAC,GAAG,EAAE,MAAM;IAIlB,OAAO;CAId;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC5B,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { Knex } from 'knex';\n\nimport path from 'node:path';\nimport { Dialect, getDialect } from './dialects';\nimport { createSchemaProvider, SchemaProvider } from './schema';\nimport { createMetadata, Metadata } from './metadata';\nimport { createEntityManager, EntityManager } from './entity-manager';\nimport { createMigrationsProvider, MigrationProvider, type Migration } from './migrations';\nimport { createLifecyclesProvider, LifecycleProvider } from './lifecycles';\nimport { createConnection } from './connection';\nimport * as errors from './errors';\nimport { Callback, transactionCtx, TransactionObject } from './transaction-context';\nimport { validateDatabase } from './validations';\nimport type { Model } from './types';\nimport type { Identifiers } from './utils/identifiers';\nimport { createRepairManager, type RepairManager } from './repairs';\n\nexport { isKnexQuery } from './utils/knex';\n\ninterface Settings {\n forceMigration?: boolean;\n runMigrations?: boolean;\n migrations: {\n dir: string;\n };\n [key: string]: unknown;\n}\n\nexport type Logger = Record<\n 'info' | 'warn' | 'error' | 'debug',\n (message: string | Record<string, unknown>) => void\n>;\n\nexport interface DatabaseConfig {\n connection: Knex.Config;\n settings: Settings;\n logger?: Logger;\n}\n\nconst afterCreate =\n (db: Database) =>\n (\n nativeConnection: unknown,\n done: (error: Error | null, nativeConnection: unknown) => Promise<void>\n ) => {\n // run initialize for it since commands such as postgres SET and sqlite PRAGMA are per-connection\n db.dialect.initialize(nativeConnection).then(() => {\n return done(null, nativeConnection);\n });\n };\n\nclass Database {\n connection: Knex;\n\n dialect: Dialect;\n\n config: DatabaseConfig;\n\n metadata: Metadata;\n\n schema: SchemaProvider;\n\n migrations: MigrationProvider;\n\n lifecycles: LifecycleProvider;\n\n entityManager: EntityManager;\n\n repair: RepairManager;\n\n logger: Logger;\n\n constructor(config: DatabaseConfig) {\n this.config = {\n ...config,\n settings: {\n forceMigration: true,\n runMigrations: true,\n ...(config.settings ?? {}),\n },\n };\n\n this.logger = config.logger ?? console;\n\n this.dialect = getDialect(this);\n\n let knexConfig: Knex.Config = this.config.connection;\n\n // for object connections, we can configure the dialect synchronously\n if (typeof this.config.connection.connection !== 'function') {\n this.dialect.configure();\n }\n // for connection functions, we wrap it so that we can modify it with dialect configure before it reaches knex\n else {\n this.logger.warn(\n 'Knex connection functions are currently experimental. Attempting to access the connection object before database initialization will result in errors.'\n );\n\n knexConfig = {\n ...this.config.connection,\n connection: async () => {\n // @ts-expect-error confirmed it was a function above\n const conn = await this.config.connection.connection();\n this.dialect.configure(conn);\n return conn;\n },\n };\n }\n\n this.metadata = createMetadata([]);\n\n this.connection = createConnection(knexConfig, {\n pool: { afterCreate: afterCreate(this) },\n });\n\n this.schema = createSchemaProvider(this);\n\n this.migrations = createMigrationsProvider(this);\n this.lifecycles = createLifecyclesProvider(this);\n\n this.entityManager = createEntityManager(this);\n\n this.repair = createRepairManager(this);\n }\n\n async init({ models }: { models: Model[] }) {\n if (typeof this.config.connection.connection === 'function') {\n /*\n * User code needs to be able to access `connection.connection` directly as if\n * it were always an object. For a connection function, that doesn't happen\n * until the pool is created, so we need to do that here\n *\n * TODO: In the next major version, we need to replace all internal code that\n * directly references `connection.connection` prior to init, and make a breaking\n * change that it cannot be relied on to exist before init so that we can call\n * this feature stable.\n */\n this.logger.debug('Forcing Knex to make real connection to db');\n\n // sqlite does not support connection pooling so acquireConnection doesn't work\n if (this.config.connection.client === 'sqlite') {\n await this.connection.raw('SELECT 1');\n } else {\n await this.connection.client.acquireConnection();\n }\n }\n\n this.metadata.loadModels(models);\n await validateDatabase(this);\n return this;\n }\n\n query(uid: string) {\n if (!this.metadata.has(uid)) {\n throw new Error(`Model ${uid} not found`);\n }\n\n return this.entityManager.getRepository(uid);\n }\n\n inTransaction() {\n return !!transactionCtx.get();\n }\n\n transaction(): Promise<TransactionObject>;\n transaction<TCallback extends Callback>(c: TCallback): Promise<ReturnType<TCallback>>;\n async transaction<TCallback extends Callback>(\n cb?: TCallback\n ): Promise<ReturnType<TCallback> | TransactionObject> {\n const notNestedTransaction = !transactionCtx.get();\n const trx = notNestedTransaction\n ? await this.connection.transaction()\n : (transactionCtx.get() as Knex.Transaction);\n\n async function commit() {\n if (notNestedTransaction) {\n await transactionCtx.commit(trx);\n }\n }\n\n async function rollback() {\n if (notNestedTransaction) {\n await transactionCtx.rollback(trx);\n }\n }\n\n if (!cb) {\n return { commit, rollback, get: () => trx };\n }\n\n return transactionCtx.run(trx, async () => {\n try {\n const callbackParams = {\n trx,\n commit,\n rollback,\n onCommit: transactionCtx.onCommit,\n onRollback: transactionCtx.onRollback,\n };\n const res = await cb(callbackParams);\n await commit();\n return res;\n } catch (error) {\n await rollback();\n throw error;\n }\n });\n }\n\n getSchemaName(): string | undefined {\n return this.connection.client.connectionSettings.schema;\n }\n\n getConnection(): Knex;\n getConnection(tableName?: string): Knex.QueryBuilder;\n getConnection(tableName?: string): Knex | Knex.QueryBuilder {\n const schema = this.getSchemaName();\n const connection = tableName ? this.connection(tableName) : this.connection;\n return schema ? connection.withSchema(schema) : connection;\n }\n\n // Returns basic info about the database connection\n getInfo() {\n const connectionSettings = this.connection?.client?.connectionSettings || {};\n const client = this.dialect?.client || '';\n\n let displayName = '';\n let schema;\n\n // For SQLite, get the relative filename\n if (client === 'sqlite') {\n const absolutePath = connectionSettings?.filename;\n if (absolutePath) {\n displayName = path.relative(process.cwd(), absolutePath);\n }\n }\n // For other dialects, get the database name\n else {\n displayName = connectionSettings?.database;\n schema = connectionSettings?.schema;\n }\n\n return {\n displayName,\n schema,\n client,\n };\n }\n\n getSchemaConnection(trx = this.connection) {\n const schema = this.getSchemaName();\n return schema ? trx.schema.withSchema(schema) : trx.schema;\n }\n\n queryBuilder(uid: string) {\n return this.entityManager.createQueryBuilder(uid);\n }\n\n async destroy() {\n await this.lifecycles.clear();\n await this.connection.destroy();\n }\n}\n\nexport { Database, errors };\nexport type { Model, Identifiers, Migration };\n"],"names":["afterCreate","db","nativeConnection","done","dialect","initialize","then","Database","init","models","config","connection","logger","debug","client","raw","acquireConnection","metadata","loadModels","validateDatabase","query","uid","has","Error","entityManager","getRepository","inTransaction","transactionCtx","get","transaction","cb","notNestedTransaction","trx","commit","rollback","run","callbackParams","onCommit","onRollback","res","error","getSchemaName","connectionSettings","schema","getConnection","tableName","withSchema","getInfo","displayName","absolutePath","filename","path","relative","process","cwd","database","getSchemaConnection","queryBuilder","createQueryBuilder","destroy","lifecycles","clear","constructor","settings","forceMigration","runMigrations","console","getDialect","knexConfig","configure","warn","conn","createMetadata","createConnection","pool","createSchemaProvider","migrations","createMigrationsProvider","createLifecyclesProvider","createEntityManager","repair","createRepairManager"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { Knex } from 'knex';\n\nimport path from 'node:path';\n\nimport { Dialect, getDialect } from './dialects';\nimport { createSchemaProvider, SchemaProvider } from './schema';\nimport { createMetadata, Metadata } from './metadata';\nimport { createEntityManager, EntityManager } from './entity-manager';\nimport { createMigrationsProvider, MigrationProvider, type Migration } from './migrations';\nimport { createLifecyclesProvider, LifecycleProvider } from './lifecycles';\nimport { createConnection } from './connection';\nimport * as errors from './errors';\nimport { Callback, transactionCtx, TransactionObject } from './transaction-context';\nimport { validateDatabase } from './validations';\nimport type { Model, JoinTable } from './types';\nimport type { Identifiers } from './utils/identifiers';\nimport { createRepairManager, type RepairManager } from './repairs';\n\nexport { isKnexQuery } from './utils/knex';\n\ninterface Settings {\n forceMigration?: boolean;\n runMigrations?: boolean;\n migrations: {\n dir: string;\n };\n [key: string]: unknown;\n}\n\nexport type Logger = Record<\n 'info' | 'warn' | 'error' | 'debug',\n (message: string | Record<string, unknown>) => void\n>;\n\nexport interface DatabaseConfig {\n connection: Knex.Config;\n settings: Settings;\n logger?: Logger;\n}\n\nconst afterCreate =\n (db: Database) =>\n (\n nativeConnection: unknown,\n done: (error: Error | null, nativeConnection: unknown) => Promise<void>\n ) => {\n // run initialize for it since commands such as postgres SET and sqlite PRAGMA are per-connection\n db.dialect.initialize(nativeConnection).then(() => {\n return done(null, nativeConnection);\n });\n };\n\nclass Database {\n connection: Knex;\n\n dialect: Dialect;\n\n config: DatabaseConfig;\n\n metadata: Metadata;\n\n schema: SchemaProvider;\n\n migrations: MigrationProvider;\n\n lifecycles: LifecycleProvider;\n\n entityManager: EntityManager;\n\n repair: RepairManager;\n\n logger: Logger;\n\n constructor(config: DatabaseConfig) {\n this.config = {\n ...config,\n settings: {\n forceMigration: true,\n runMigrations: true,\n ...(config.settings ?? {}),\n },\n };\n\n this.logger = config.logger ?? console;\n\n this.dialect = getDialect(this);\n\n let knexConfig: Knex.Config = this.config.connection;\n\n // for object connections, we can configure the dialect synchronously\n if (typeof this.config.connection.connection !== 'function') {\n this.dialect.configure();\n }\n // for connection functions, we wrap it so that we can modify it with dialect configure before it reaches knex\n else {\n this.logger.warn(\n 'Knex connection functions are currently experimental. Attempting to access the connection object before database initialization will result in errors.'\n );\n\n knexConfig = {\n ...this.config.connection,\n connection: async () => {\n // @ts-expect-error confirmed it was a function above\n const conn = await this.config.connection.connection();\n this.dialect.configure(conn);\n return conn;\n },\n };\n }\n\n this.metadata = createMetadata([]);\n\n this.connection = createConnection(knexConfig, {\n pool: { afterCreate: afterCreate(this) },\n });\n\n this.schema = createSchemaProvider(this);\n\n this.migrations = createMigrationsProvider(this);\n this.lifecycles = createLifecyclesProvider(this);\n\n this.entityManager = createEntityManager(this);\n\n this.repair = createRepairManager(this);\n }\n\n async init({ models }: { models: Model[] }) {\n if (typeof this.config.connection.connection === 'function') {\n /*\n * User code needs to be able to access `connection.connection` directly as if\n * it were always an object. For a connection function, that doesn't happen\n * until the pool is created, so we need to do that here\n *\n * TODO: In the next major version, we need to replace all internal code that\n * directly references `connection.connection` prior to init, and make a breaking\n * change that it cannot be relied on to exist before init so that we can call\n * this feature stable.\n */\n this.logger.debug('Forcing Knex to make real connection to db');\n\n // sqlite does not support connection pooling so acquireConnection doesn't work\n if (this.config.connection.client === 'sqlite') {\n await this.connection.raw('SELECT 1');\n } else {\n await this.connection.client.acquireConnection();\n }\n }\n\n this.metadata.loadModels(models);\n await validateDatabase(this);\n return this;\n }\n\n query(uid: string) {\n if (!this.metadata.has(uid)) {\n throw new Error(`Model ${uid} not found`);\n }\n\n return this.entityManager.getRepository(uid);\n }\n\n inTransaction() {\n return !!transactionCtx.get();\n }\n\n transaction(): Promise<TransactionObject>;\n transaction<TCallback extends Callback>(c: TCallback): Promise<ReturnType<TCallback>>;\n async transaction<TCallback extends Callback>(\n cb?: TCallback\n ): Promise<ReturnType<TCallback> | TransactionObject> {\n const notNestedTransaction = !transactionCtx.get();\n const trx = notNestedTransaction\n ? await this.connection.transaction()\n : (transactionCtx.get() as Knex.Transaction);\n\n async function commit() {\n if (notNestedTransaction) {\n await transactionCtx.commit(trx);\n }\n }\n\n async function rollback() {\n if (notNestedTransaction) {\n await transactionCtx.rollback(trx);\n }\n }\n\n if (!cb) {\n return { commit, rollback, get: () => trx };\n }\n\n return transactionCtx.run(trx, async () => {\n try {\n const callbackParams = {\n trx,\n commit,\n rollback,\n onCommit: transactionCtx.onCommit,\n onRollback: transactionCtx.onRollback,\n };\n const res = await cb(callbackParams);\n await commit();\n return res;\n } catch (error) {\n await rollback();\n throw error;\n }\n });\n }\n\n getSchemaName(): string | undefined {\n return this.connection.client.connectionSettings.schema;\n }\n\n getConnection(): Knex;\n getConnection(tableName?: string): Knex.QueryBuilder;\n getConnection(tableName?: string): Knex | Knex.QueryBuilder {\n const schema = this.getSchemaName();\n const connection = tableName ? this.connection(tableName) : this.connection;\n return schema ? connection.withSchema(schema) : connection;\n }\n\n // Returns basic info about the database connection\n getInfo() {\n const connectionSettings = this.connection?.client?.connectionSettings || {};\n const client = this.dialect?.client || '';\n\n let displayName = '';\n let schema;\n\n // For SQLite, get the relative filename\n if (client === 'sqlite') {\n const absolutePath = connectionSettings?.filename;\n if (absolutePath) {\n displayName = path.relative(process.cwd(), absolutePath);\n }\n }\n // For other dialects, get the database name\n else {\n displayName = connectionSettings?.database;\n schema = connectionSettings?.schema;\n }\n\n return {\n displayName,\n schema,\n client,\n };\n }\n\n getSchemaConnection(trx = this.connection) {\n const schema = this.getSchemaName();\n return schema ? trx.schema.withSchema(schema) : trx.schema;\n }\n\n queryBuilder(uid: string) {\n return this.entityManager.createQueryBuilder(uid);\n }\n\n async destroy() {\n await this.lifecycles.clear();\n await this.connection.destroy();\n }\n}\n\nexport { Database, errors };\nexport type { Model, JoinTable, Identifiers, Migration };\n"],"names":["afterCreate","db","nativeConnection","done","dialect","initialize","then","Database","init","models","config","connection","logger","debug","client","raw","acquireConnection","metadata","loadModels","validateDatabase","query","uid","has","Error","entityManager","getRepository","inTransaction","transactionCtx","get","transaction","cb","notNestedTransaction","trx","commit","rollback","run","callbackParams","onCommit","onRollback","res","error","getSchemaName","connectionSettings","schema","getConnection","tableName","withSchema","getInfo","displayName","absolutePath","filename","path","relative","process","cwd","database","getSchemaConnection","queryBuilder","createQueryBuilder","destroy","lifecycles","clear","constructor","settings","forceMigration","runMigrations","console","getDialect","knexConfig","configure","warn","conn","createMetadata","createConnection","pool","createSchemaProvider","migrations","createMigrationsProvider","createLifecyclesProvider","createEntityManager","repair","createRepairManager"],"mappings":";;;;;;;;;;;;;;;;AAwCA,MAAMA,WACJ,GAAA,CAACC,EACD,GAAA,CACEC,gBACAC,EAAAA,IAAAA,GAAAA;;AAGAF,QAAAA,EAAAA,CAAGG,OAAO,CAACC,UAAU,CAACH,gBAAAA,CAAAA,CAAkBI,IAAI,CAAC,IAAA;AAC3C,YAAA,OAAOH,KAAK,IAAMD,EAAAA,gBAAAA,CAAAA;AACpB,SAAA,CAAA;AACF,KAAA;AAEF,MAAMK,QAAAA,CAAAA;AA0EJ,IAAA,MAAMC,IAAK,CAAA,EAAEC,MAAM,EAAuB,EAAE;QAC1C,IAAI,OAAO,IAAI,CAACC,MAAM,CAACC,UAAU,CAACA,UAAU,KAAK,UAAY,EAAA;AAC3D;;;;;;;;;AASC,UACD,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,4CAAA,CAAA;;YAGlB,IAAI,IAAI,CAACH,MAAM,CAACC,UAAU,CAACG,MAAM,KAAK,QAAU,EAAA;AAC9C,gBAAA,MAAM,IAAI,CAACH,UAAU,CAACI,GAAG,CAAC,UAAA,CAAA;aACrB,MAAA;AACL,gBAAA,MAAM,IAAI,CAACJ,UAAU,CAACG,MAAM,CAACE,iBAAiB,EAAA;AAChD;AACF;AAEA,QAAA,IAAI,CAACC,QAAQ,CAACC,UAAU,CAACT,MAAAA,CAAAA;AACzB,QAAA,MAAMU,yBAAiB,IAAI,CAAA;AAC3B,QAAA,OAAO,IAAI;AACb;AAEAC,IAAAA,KAAAA,CAAMC,GAAW,EAAE;AACjB,QAAA,IAAI,CAAC,IAAI,CAACJ,QAAQ,CAACK,GAAG,CAACD,GAAM,CAAA,EAAA;AAC3B,YAAA,MAAM,IAAIE,KAAM,CAAA,CAAC,MAAM,EAAEF,GAAAA,CAAI,UAAU,CAAC,CAAA;AAC1C;AAEA,QAAA,OAAO,IAAI,CAACG,aAAa,CAACC,aAAa,CAACJ,GAAAA,CAAAA;AAC1C;IAEAK,aAAgB,GAAA;QACd,OAAO,CAAC,CAACC,iCAAAA,CAAeC,GAAG,EAAA;AAC7B;IAIA,MAAMC,WAAAA,CACJC,EAAc,EACsC;QACpD,MAAMC,oBAAAA,GAAuB,CAACJ,iCAAAA,CAAeC,GAAG,EAAA;QAChD,MAAMI,GAAAA,GAAMD,oBACR,GAAA,MAAM,IAAI,CAACpB,UAAU,CAACkB,WAAW,EAChCF,GAAAA,iCAAAA,CAAeC,GAAG,EAAA;QAEvB,eAAeK,MAAAA,GAAAA;AACb,YAAA,IAAIF,oBAAsB,EAAA;gBACxB,MAAMJ,iCAAAA,CAAeM,MAAM,CAACD,GAAAA,CAAAA;AAC9B;AACF;QAEA,eAAeE,QAAAA,GAAAA;AACb,YAAA,IAAIH,oBAAsB,EAAA;gBACxB,MAAMJ,iCAAAA,CAAeO,QAAQ,CAACF,GAAAA,CAAAA;AAChC;AACF;AAEA,QAAA,IAAI,CAACF,EAAI,EAAA;YACP,OAAO;AAAEG,gBAAAA,MAAAA;AAAQC,gBAAAA,QAAAA;AAAUN,gBAAAA,GAAAA,EAAK,IAAMI;AAAI,aAAA;AAC5C;QAEA,OAAOL,iCAAAA,CAAeQ,GAAG,CAACH,GAAK,EAAA,UAAA;YAC7B,IAAI;AACF,gBAAA,MAAMI,cAAiB,GAAA;AACrBJ,oBAAAA,GAAAA;AACAC,oBAAAA,MAAAA;AACAC,oBAAAA,QAAAA;AACAG,oBAAAA,QAAAA,EAAUV,kCAAeU,QAAQ;AACjCC,oBAAAA,UAAAA,EAAYX,kCAAeW;AAC7B,iBAAA;gBACA,MAAMC,GAAAA,GAAM,MAAMT,EAAGM,CAAAA,cAAAA,CAAAA;gBACrB,MAAMH,MAAAA,EAAAA;gBACN,OAAOM,GAAAA;AACT,aAAA,CAAE,OAAOC,KAAO,EAAA;gBACd,MAAMN,QAAAA,EAAAA;gBACN,MAAMM,KAAAA;AACR;AACF,SAAA,CAAA;AACF;IAEAC,aAAoC,GAAA;QAClC,OAAO,IAAI,CAAC9B,UAAU,CAACG,MAAM,CAAC4B,kBAAkB,CAACC,MAAM;AACzD;AAIAC,IAAAA,aAAAA,CAAcC,SAAkB,EAA4B;QAC1D,MAAMF,MAAAA,GAAS,IAAI,CAACF,aAAa,EAAA;QACjC,MAAM9B,UAAAA,GAAakC,YAAY,IAAI,CAAClC,UAAU,CAACkC,SAAAA,CAAAA,GAAa,IAAI,CAAClC,UAAU;AAC3E,QAAA,OAAOgC,MAAShC,GAAAA,UAAAA,CAAWmC,UAAU,CAACH,MAAUhC,CAAAA,GAAAA,UAAAA;AAClD;;IAGAoC,OAAU,GAAA;AACR,QAAA,MAAML,qBAAqB,IAAI,CAAC/B,UAAU,EAAEG,MAAAA,EAAQ4B,sBAAsB,EAAC;AAC3E,QAAA,MAAM5B,MAAS,GAAA,IAAI,CAACV,OAAO,EAAEU,MAAU,IAAA,EAAA;AAEvC,QAAA,IAAIkC,WAAc,GAAA,EAAA;QAClB,IAAIL,MAAAA;;AAGJ,QAAA,IAAI7B,WAAW,QAAU,EAAA;AACvB,YAAA,MAAMmC,eAAeP,kBAAoBQ,EAAAA,QAAAA;AACzC,YAAA,IAAID,YAAc,EAAA;AAChBD,gBAAAA,WAAAA,GAAcG,IAAKC,CAAAA,QAAQ,CAACC,OAAAA,CAAQC,GAAG,EAAIL,EAAAA,YAAAA,CAAAA;AAC7C;SAGG,MAAA;AACHD,YAAAA,WAAAA,GAAcN,kBAAoBa,EAAAA,QAAAA;AAClCZ,YAAAA,MAAAA,GAASD,kBAAoBC,EAAAA,MAAAA;AAC/B;QAEA,OAAO;AACLK,YAAAA,WAAAA;AACAL,YAAAA,MAAAA;AACA7B,YAAAA;AACF,SAAA;AACF;AAEA0C,IAAAA,mBAAAA,CAAoBxB,GAAM,GAAA,IAAI,CAACrB,UAAU,EAAE;QACzC,MAAMgC,MAAAA,GAAS,IAAI,CAACF,aAAa,EAAA;QACjC,OAAOE,MAAAA,GAASX,IAAIW,MAAM,CAACG,UAAU,CAACH,MAAAA,CAAAA,GAAUX,IAAIW,MAAM;AAC5D;AAEAc,IAAAA,YAAAA,CAAapC,GAAW,EAAE;AACxB,QAAA,OAAO,IAAI,CAACG,aAAa,CAACkC,kBAAkB,CAACrC,GAAAA,CAAAA;AAC/C;AAEA,IAAA,MAAMsC,OAAU,GAAA;AACd,QAAA,MAAM,IAAI,CAACC,UAAU,CAACC,KAAK,EAAA;AAC3B,QAAA,MAAM,IAAI,CAAClD,UAAU,CAACgD,OAAO,EAAA;AAC/B;AA7LAG,IAAAA,WAAAA,CAAYpD,MAAsB,CAAE;QAClC,IAAI,CAACA,MAAM,GAAG;AACZ,YAAA,GAAGA,MAAM;YACTqD,QAAU,EAAA;gBACRC,cAAgB,EAAA,IAAA;gBAChBC,aAAe,EAAA,IAAA;AACf,gBAAA,GAAIvD,MAAOqD,CAAAA,QAAQ,IAAI;AACzB;AACF,SAAA;AAEA,QAAA,IAAI,CAACnD,MAAM,GAAGF,MAAAA,CAAOE,MAAM,IAAIsD,OAAAA;AAE/B,QAAA,IAAI,CAAC9D,OAAO,GAAG+D,kBAAAA,CAAW,IAAI,CAAA;AAE9B,QAAA,IAAIC,UAA0B,GAAA,IAAI,CAAC1D,MAAM,CAACC,UAAU;;QAGpD,IAAI,OAAO,IAAI,CAACD,MAAM,CAACC,UAAU,CAACA,UAAU,KAAK,UAAY,EAAA;YAC3D,IAAI,CAACP,OAAO,CAACiE,SAAS,EAAA;SAGnB,MAAA;AACH,YAAA,IAAI,CAACzD,MAAM,CAAC0D,IAAI,CACd,wJAAA,CAAA;YAGFF,UAAa,GAAA;AACX,gBAAA,GAAG,IAAI,CAAC1D,MAAM,CAACC,UAAU;gBACzBA,UAAY,EAAA,UAAA;;oBAEV,MAAM4D,IAAAA,GAAO,MAAM,IAAI,CAAC7D,MAAM,CAACC,UAAU,CAACA,UAAU,EAAA;AACpD,oBAAA,IAAI,CAACP,OAAO,CAACiE,SAAS,CAACE,IAAAA,CAAAA;oBACvB,OAAOA,IAAAA;AACT;AACF,aAAA;AACF;AAEA,QAAA,IAAI,CAACtD,QAAQ,GAAGuD,sBAAAA,CAAe,EAAE,CAAA;AAEjC,QAAA,IAAI,CAAC7D,UAAU,GAAG8D,2BAAAA,CAAiBL,UAAY,EAAA;YAC7CM,IAAM,EAAA;AAAE1E,gBAAAA,WAAAA,EAAaA,YAAY,IAAI;AAAE;AACzC,SAAA,CAAA;AAEA,QAAA,IAAI,CAAC2C,MAAM,GAAGgC,4BAAAA,CAAqB,IAAI,CAAA;AAEvC,QAAA,IAAI,CAACC,UAAU,GAAGC,gCAAAA,CAAyB,IAAI,CAAA;AAC/C,QAAA,IAAI,CAACjB,UAAU,GAAGkB,gCAAAA,CAAyB,IAAI,CAAA;AAE/C,QAAA,IAAI,CAACtD,aAAa,GAAGuD,2BAAAA,CAAoB,IAAI,CAAA;AAE7C,QAAA,IAAI,CAACC,MAAM,GAAGC,2BAAAA,CAAoB,IAAI,CAAA;AACxC;AA2IF;;;;;;"}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import type { Knex } from 'knex';\n\nimport path from 'node:path';\nimport { Dialect, getDialect } from './dialects';\nimport { createSchemaProvider, SchemaProvider } from './schema';\nimport { createMetadata, Metadata } from './metadata';\nimport { createEntityManager, EntityManager } from './entity-manager';\nimport { createMigrationsProvider, MigrationProvider, type Migration } from './migrations';\nimport { createLifecyclesProvider, LifecycleProvider } from './lifecycles';\nimport { createConnection } from './connection';\nimport * as errors from './errors';\nimport { Callback, transactionCtx, TransactionObject } from './transaction-context';\nimport { validateDatabase } from './validations';\nimport type { Model } from './types';\nimport type { Identifiers } from './utils/identifiers';\nimport { createRepairManager, type RepairManager } from './repairs';\n\nexport { isKnexQuery } from './utils/knex';\n\ninterface Settings {\n forceMigration?: boolean;\n runMigrations?: boolean;\n migrations: {\n dir: string;\n };\n [key: string]: unknown;\n}\n\nexport type Logger = Record<\n 'info' | 'warn' | 'error' | 'debug',\n (message: string | Record<string, unknown>) => void\n>;\n\nexport interface DatabaseConfig {\n connection: Knex.Config;\n settings: Settings;\n logger?: Logger;\n}\n\nconst afterCreate =\n (db: Database) =>\n (\n nativeConnection: unknown,\n done: (error: Error | null, nativeConnection: unknown) => Promise<void>\n ) => {\n // run initialize for it since commands such as postgres SET and sqlite PRAGMA are per-connection\n db.dialect.initialize(nativeConnection).then(() => {\n return done(null, nativeConnection);\n });\n };\n\nclass Database {\n connection: Knex;\n\n dialect: Dialect;\n\n config: DatabaseConfig;\n\n metadata: Metadata;\n\n schema: SchemaProvider;\n\n migrations: MigrationProvider;\n\n lifecycles: LifecycleProvider;\n\n entityManager: EntityManager;\n\n repair: RepairManager;\n\n logger: Logger;\n\n constructor(config: DatabaseConfig) {\n this.config = {\n ...config,\n settings: {\n forceMigration: true,\n runMigrations: true,\n ...(config.settings ?? {}),\n },\n };\n\n this.logger = config.logger ?? console;\n\n this.dialect = getDialect(this);\n\n let knexConfig: Knex.Config = this.config.connection;\n\n // for object connections, we can configure the dialect synchronously\n if (typeof this.config.connection.connection !== 'function') {\n this.dialect.configure();\n }\n // for connection functions, we wrap it so that we can modify it with dialect configure before it reaches knex\n else {\n this.logger.warn(\n 'Knex connection functions are currently experimental. Attempting to access the connection object before database initialization will result in errors.'\n );\n\n knexConfig = {\n ...this.config.connection,\n connection: async () => {\n // @ts-expect-error confirmed it was a function above\n const conn = await this.config.connection.connection();\n this.dialect.configure(conn);\n return conn;\n },\n };\n }\n\n this.metadata = createMetadata([]);\n\n this.connection = createConnection(knexConfig, {\n pool: { afterCreate: afterCreate(this) },\n });\n\n this.schema = createSchemaProvider(this);\n\n this.migrations = createMigrationsProvider(this);\n this.lifecycles = createLifecyclesProvider(this);\n\n this.entityManager = createEntityManager(this);\n\n this.repair = createRepairManager(this);\n }\n\n async init({ models }: { models: Model[] }) {\n if (typeof this.config.connection.connection === 'function') {\n /*\n * User code needs to be able to access `connection.connection` directly as if\n * it were always an object. For a connection function, that doesn't happen\n * until the pool is created, so we need to do that here\n *\n * TODO: In the next major version, we need to replace all internal code that\n * directly references `connection.connection` prior to init, and make a breaking\n * change that it cannot be relied on to exist before init so that we can call\n * this feature stable.\n */\n this.logger.debug('Forcing Knex to make real connection to db');\n\n // sqlite does not support connection pooling so acquireConnection doesn't work\n if (this.config.connection.client === 'sqlite') {\n await this.connection.raw('SELECT 1');\n } else {\n await this.connection.client.acquireConnection();\n }\n }\n\n this.metadata.loadModels(models);\n await validateDatabase(this);\n return this;\n }\n\n query(uid: string) {\n if (!this.metadata.has(uid)) {\n throw new Error(`Model ${uid} not found`);\n }\n\n return this.entityManager.getRepository(uid);\n }\n\n inTransaction() {\n return !!transactionCtx.get();\n }\n\n transaction(): Promise<TransactionObject>;\n transaction<TCallback extends Callback>(c: TCallback): Promise<ReturnType<TCallback>>;\n async transaction<TCallback extends Callback>(\n cb?: TCallback\n ): Promise<ReturnType<TCallback> | TransactionObject> {\n const notNestedTransaction = !transactionCtx.get();\n const trx = notNestedTransaction\n ? await this.connection.transaction()\n : (transactionCtx.get() as Knex.Transaction);\n\n async function commit() {\n if (notNestedTransaction) {\n await transactionCtx.commit(trx);\n }\n }\n\n async function rollback() {\n if (notNestedTransaction) {\n await transactionCtx.rollback(trx);\n }\n }\n\n if (!cb) {\n return { commit, rollback, get: () => trx };\n }\n\n return transactionCtx.run(trx, async () => {\n try {\n const callbackParams = {\n trx,\n commit,\n rollback,\n onCommit: transactionCtx.onCommit,\n onRollback: transactionCtx.onRollback,\n };\n const res = await cb(callbackParams);\n await commit();\n return res;\n } catch (error) {\n await rollback();\n throw error;\n }\n });\n }\n\n getSchemaName(): string | undefined {\n return this.connection.client.connectionSettings.schema;\n }\n\n getConnection(): Knex;\n getConnection(tableName?: string): Knex.QueryBuilder;\n getConnection(tableName?: string): Knex | Knex.QueryBuilder {\n const schema = this.getSchemaName();\n const connection = tableName ? this.connection(tableName) : this.connection;\n return schema ? connection.withSchema(schema) : connection;\n }\n\n // Returns basic info about the database connection\n getInfo() {\n const connectionSettings = this.connection?.client?.connectionSettings || {};\n const client = this.dialect?.client || '';\n\n let displayName = '';\n let schema;\n\n // For SQLite, get the relative filename\n if (client === 'sqlite') {\n const absolutePath = connectionSettings?.filename;\n if (absolutePath) {\n displayName = path.relative(process.cwd(), absolutePath);\n }\n }\n // For other dialects, get the database name\n else {\n displayName = connectionSettings?.database;\n schema = connectionSettings?.schema;\n }\n\n return {\n displayName,\n schema,\n client,\n };\n }\n\n getSchemaConnection(trx = this.connection) {\n const schema = this.getSchemaName();\n return schema ? trx.schema.withSchema(schema) : trx.schema;\n }\n\n queryBuilder(uid: string) {\n return this.entityManager.createQueryBuilder(uid);\n }\n\n async destroy() {\n await this.lifecycles.clear();\n await this.connection.destroy();\n }\n}\n\nexport { Database, errors };\nexport type { Model, Identifiers, Migration };\n"],"names":["afterCreate","db","nativeConnection","done","dialect","initialize","then","Database","init","models","config","connection","logger","debug","client","raw","acquireConnection","metadata","loadModels","validateDatabase","query","uid","has","Error","entityManager","getRepository","inTransaction","transactionCtx","get","transaction","cb","notNestedTransaction","trx","commit","rollback","run","callbackParams","onCommit","onRollback","res","error","getSchemaName","connectionSettings","schema","getConnection","tableName","withSchema","getInfo","displayName","absolutePath","filename","path","relative","process","cwd","database","getSchemaConnection","queryBuilder","createQueryBuilder","destroy","lifecycles","clear","constructor","settings","forceMigration","runMigrations","console","getDialect","knexConfig","configure","warn","conn","createMetadata","createConnection","pool","createSchemaProvider","migrations","createMigrationsProvider","createLifecyclesProvider","createEntityManager","repair","createRepairManager"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import type { Knex } from 'knex';\n\nimport path from 'node:path';\n\nimport { Dialect, getDialect } from './dialects';\nimport { createSchemaProvider, SchemaProvider } from './schema';\nimport { createMetadata, Metadata } from './metadata';\nimport { createEntityManager, EntityManager } from './entity-manager';\nimport { createMigrationsProvider, MigrationProvider, type Migration } from './migrations';\nimport { createLifecyclesProvider, LifecycleProvider } from './lifecycles';\nimport { createConnection } from './connection';\nimport * as errors from './errors';\nimport { Callback, transactionCtx, TransactionObject } from './transaction-context';\nimport { validateDatabase } from './validations';\nimport type { Model, JoinTable } from './types';\nimport type { Identifiers } from './utils/identifiers';\nimport { createRepairManager, type RepairManager } from './repairs';\n\nexport { isKnexQuery } from './utils/knex';\n\ninterface Settings {\n forceMigration?: boolean;\n runMigrations?: boolean;\n migrations: {\n dir: string;\n };\n [key: string]: unknown;\n}\n\nexport type Logger = Record<\n 'info' | 'warn' | 'error' | 'debug',\n (message: string | Record<string, unknown>) => void\n>;\n\nexport interface DatabaseConfig {\n connection: Knex.Config;\n settings: Settings;\n logger?: Logger;\n}\n\nconst afterCreate =\n (db: Database) =>\n (\n nativeConnection: unknown,\n done: (error: Error | null, nativeConnection: unknown) => Promise<void>\n ) => {\n // run initialize for it since commands such as postgres SET and sqlite PRAGMA are per-connection\n db.dialect.initialize(nativeConnection).then(() => {\n return done(null, nativeConnection);\n });\n };\n\nclass Database {\n connection: Knex;\n\n dialect: Dialect;\n\n config: DatabaseConfig;\n\n metadata: Metadata;\n\n schema: SchemaProvider;\n\n migrations: MigrationProvider;\n\n lifecycles: LifecycleProvider;\n\n entityManager: EntityManager;\n\n repair: RepairManager;\n\n logger: Logger;\n\n constructor(config: DatabaseConfig) {\n this.config = {\n ...config,\n settings: {\n forceMigration: true,\n runMigrations: true,\n ...(config.settings ?? {}),\n },\n };\n\n this.logger = config.logger ?? console;\n\n this.dialect = getDialect(this);\n\n let knexConfig: Knex.Config = this.config.connection;\n\n // for object connections, we can configure the dialect synchronously\n if (typeof this.config.connection.connection !== 'function') {\n this.dialect.configure();\n }\n // for connection functions, we wrap it so that we can modify it with dialect configure before it reaches knex\n else {\n this.logger.warn(\n 'Knex connection functions are currently experimental. Attempting to access the connection object before database initialization will result in errors.'\n );\n\n knexConfig = {\n ...this.config.connection,\n connection: async () => {\n // @ts-expect-error confirmed it was a function above\n const conn = await this.config.connection.connection();\n this.dialect.configure(conn);\n return conn;\n },\n };\n }\n\n this.metadata = createMetadata([]);\n\n this.connection = createConnection(knexConfig, {\n pool: { afterCreate: afterCreate(this) },\n });\n\n this.schema = createSchemaProvider(this);\n\n this.migrations = createMigrationsProvider(this);\n this.lifecycles = createLifecyclesProvider(this);\n\n this.entityManager = createEntityManager(this);\n\n this.repair = createRepairManager(this);\n }\n\n async init({ models }: { models: Model[] }) {\n if (typeof this.config.connection.connection === 'function') {\n /*\n * User code needs to be able to access `connection.connection` directly as if\n * it were always an object. For a connection function, that doesn't happen\n * until the pool is created, so we need to do that here\n *\n * TODO: In the next major version, we need to replace all internal code that\n * directly references `connection.connection` prior to init, and make a breaking\n * change that it cannot be relied on to exist before init so that we can call\n * this feature stable.\n */\n this.logger.debug('Forcing Knex to make real connection to db');\n\n // sqlite does not support connection pooling so acquireConnection doesn't work\n if (this.config.connection.client === 'sqlite') {\n await this.connection.raw('SELECT 1');\n } else {\n await this.connection.client.acquireConnection();\n }\n }\n\n this.metadata.loadModels(models);\n await validateDatabase(this);\n return this;\n }\n\n query(uid: string) {\n if (!this.metadata.has(uid)) {\n throw new Error(`Model ${uid} not found`);\n }\n\n return this.entityManager.getRepository(uid);\n }\n\n inTransaction() {\n return !!transactionCtx.get();\n }\n\n transaction(): Promise<TransactionObject>;\n transaction<TCallback extends Callback>(c: TCallback): Promise<ReturnType<TCallback>>;\n async transaction<TCallback extends Callback>(\n cb?: TCallback\n ): Promise<ReturnType<TCallback> | TransactionObject> {\n const notNestedTransaction = !transactionCtx.get();\n const trx = notNestedTransaction\n ? await this.connection.transaction()\n : (transactionCtx.get() as Knex.Transaction);\n\n async function commit() {\n if (notNestedTransaction) {\n await transactionCtx.commit(trx);\n }\n }\n\n async function rollback() {\n if (notNestedTransaction) {\n await transactionCtx.rollback(trx);\n }\n }\n\n if (!cb) {\n return { commit, rollback, get: () => trx };\n }\n\n return transactionCtx.run(trx, async () => {\n try {\n const callbackParams = {\n trx,\n commit,\n rollback,\n onCommit: transactionCtx.onCommit,\n onRollback: transactionCtx.onRollback,\n };\n const res = await cb(callbackParams);\n await commit();\n return res;\n } catch (error) {\n await rollback();\n throw error;\n }\n });\n }\n\n getSchemaName(): string | undefined {\n return this.connection.client.connectionSettings.schema;\n }\n\n getConnection(): Knex;\n getConnection(tableName?: string): Knex.QueryBuilder;\n getConnection(tableName?: string): Knex | Knex.QueryBuilder {\n const schema = this.getSchemaName();\n const connection = tableName ? this.connection(tableName) : this.connection;\n return schema ? connection.withSchema(schema) : connection;\n }\n\n // Returns basic info about the database connection\n getInfo() {\n const connectionSettings = this.connection?.client?.connectionSettings || {};\n const client = this.dialect?.client || '';\n\n let displayName = '';\n let schema;\n\n // For SQLite, get the relative filename\n if (client === 'sqlite') {\n const absolutePath = connectionSettings?.filename;\n if (absolutePath) {\n displayName = path.relative(process.cwd(), absolutePath);\n }\n }\n // For other dialects, get the database name\n else {\n displayName = connectionSettings?.database;\n schema = connectionSettings?.schema;\n }\n\n return {\n displayName,\n schema,\n client,\n };\n }\n\n getSchemaConnection(trx = this.connection) {\n const schema = this.getSchemaName();\n return schema ? trx.schema.withSchema(schema) : trx.schema;\n }\n\n queryBuilder(uid: string) {\n return this.entityManager.createQueryBuilder(uid);\n }\n\n async destroy() {\n await this.lifecycles.clear();\n await this.connection.destroy();\n }\n}\n\nexport { Database, errors };\nexport type { Model, JoinTable, Identifiers, Migration };\n"],"names":["afterCreate","db","nativeConnection","done","dialect","initialize","then","Database","init","models","config","connection","logger","debug","client","raw","acquireConnection","metadata","loadModels","validateDatabase","query","uid","has","Error","entityManager","getRepository","inTransaction","transactionCtx","get","transaction","cb","notNestedTransaction","trx","commit","rollback","run","callbackParams","onCommit","onRollback","res","error","getSchemaName","connectionSettings","schema","getConnection","tableName","withSchema","getInfo","displayName","absolutePath","filename","path","relative","process","cwd","database","getSchemaConnection","queryBuilder","createQueryBuilder","destroy","lifecycles","clear","constructor","settings","forceMigration","runMigrations","console","getDialect","knexConfig","configure","warn","conn","createMetadata","createConnection","pool","createSchemaProvider","migrations","createMigrationsProvider","createLifecyclesProvider","createEntityManager","repair","createRepairManager"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/database",
|
|
3
|
-
"version": "5.23.
|
|
3
|
+
"version": "5.23.3",
|
|
4
4
|
"description": "Strapi's database layer",
|
|
5
5
|
"homepage": "https://strapi.io",
|
|
6
6
|
"bugs": {
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@paralleldrive/cuid2": "2.2.2",
|
|
45
|
-
"@strapi/utils": "5.23.
|
|
45
|
+
"@strapi/utils": "5.23.3",
|
|
46
46
|
"ajv": "8.16.0",
|
|
47
47
|
"date-fns": "2.30.0",
|
|
48
48
|
"debug": "4.3.4",
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/fs-extra": "11.0.4",
|
|
57
|
-
"eslint-config-custom": "5.23.
|
|
58
|
-
"tsconfig": "5.23.
|
|
57
|
+
"eslint-config-custom": "5.23.3",
|
|
58
|
+
"tsconfig": "5.23.3"
|
|
59
59
|
},
|
|
60
60
|
"engines": {
|
|
61
61
|
"node": ">=18.0.0 <=22.x.x",
|