@prisma-next/sqlite 0.11.0 → 0.12.0

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/config.d.mts CHANGED
@@ -4,6 +4,7 @@ import { ControlExtensionDescriptor } from "@prisma-next/framework-components/co
4
4
  //#region src/config/define-config.d.ts
5
5
  interface SqliteConfigOptions {
6
6
  readonly contract: string;
7
+ readonly outputPath?: string;
7
8
  readonly db?: {
8
9
  readonly connection?: string;
9
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.mts","names":[],"sources":["../src/config/define-config.ts"],"mappings":";;;;UAYiB,mBAAA;EAAA,SACN,QAAA;EAAA,SACA,EAAA;IAAA,SACE,UAAA;EAAA;EAAA,SAEF,UAAA,YAAsB,0BAAA;EAAA,SACtB,UAAA;IAAA,SACE,GAAA;EAAA;AAAA;AAAA,iBAYG,YAAA,CAAa,OAAA,EAAS,mBAAA,GAAsB,gBAAA"}
1
+ {"version":3,"file":"config.d.mts","names":[],"sources":["../src/config/define-config.ts"],"mappings":";;;;UAYiB,mBAAA;EAAA,SACN,QAAA;EAAA,SACA,UAAA;EAAA,SACA,EAAA;IAAA,SACE,UAAA;EAAA;EAAA,SAEF,UAAA,YAAsB,0BAA0B;EAAA,SAChD,UAAA;IAAA,SACE,GAAA;EAAA;AAAA;AAAA,iBAYG,YAAA,CAAa,OAAA,EAAS,mBAAA,GAAsB,gBAAgB"}
package/dist/config.mjs CHANGED
@@ -6,7 +6,7 @@ import { prismaContract } from "@prisma-next/sql-contract-psl/provider";
6
6
  import { typescriptContractFromPath } from "@prisma-next/sql-contract-ts/config-types";
7
7
  import sqlite from "@prisma-next/target-sqlite/control";
8
8
  import { ifDefined } from "@prisma-next/utils/defined";
9
- import { extname } from "pathe";
9
+ import { extname, join } from "pathe";
10
10
  //#region src/config/define-config.ts
11
11
  function deriveOutputPath(contractPath) {
12
12
  const ext = extname(contractPath);
@@ -15,7 +15,7 @@ function deriveOutputPath(contractPath) {
15
15
  }
16
16
  function defineConfig(options) {
17
17
  const extensions = options.extensions ?? [];
18
- const output = deriveOutputPath(options.contract);
18
+ const output = options.outputPath !== void 0 ? join(options.outputPath, "contract.json") : deriveOutputPath(options.contract);
19
19
  return defineConfig$1({
20
20
  family: sql,
21
21
  target: sqlite,
@@ -1 +1 @@
1
- {"version":3,"file":"config.mjs","names":["coreDefineConfig"],"sources":["../src/config/define-config.ts"],"sourcesContent":["import sqliteAdapter from '@prisma-next/adapter-sqlite/control';\nimport type { PrismaNextConfig } from '@prisma-next/config/config-types';\nimport { defineConfig as coreDefineConfig } from '@prisma-next/config/config-types';\nimport sqliteDriver from '@prisma-next/driver-sqlite/control';\nimport sql from '@prisma-next/family-sql/control';\nimport type { ControlExtensionDescriptor } from '@prisma-next/framework-components/control';\nimport { prismaContract } from '@prisma-next/sql-contract-psl/provider';\nimport { typescriptContractFromPath } from '@prisma-next/sql-contract-ts/config-types';\nimport sqlite from '@prisma-next/target-sqlite/control';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { extname } from 'pathe';\n\nexport interface SqliteConfigOptions {\n readonly contract: string;\n readonly db?: {\n readonly connection?: string;\n };\n readonly extensions?: readonly ControlExtensionDescriptor<'sql', 'sqlite'>[];\n readonly migrations?: {\n readonly dir?: string;\n };\n}\n\nfunction deriveOutputPath(contractPath: string): string {\n const ext = extname(contractPath);\n if (ext.length === 0) {\n return `${contractPath}.json`;\n }\n return `${contractPath.slice(0, -ext.length)}.json`;\n}\n\nexport function defineConfig(options: SqliteConfigOptions): PrismaNextConfig<'sql', 'sqlite'> {\n const extensions = options.extensions ?? [];\n const output = deriveOutputPath(options.contract);\n const ext = extname(options.contract);\n\n const contractConfig =\n ext === '.ts'\n ? typescriptContractFromPath(options.contract, output)\n : prismaContract(options.contract, {\n output,\n target: sqlite,\n });\n\n return coreDefineConfig({\n family: sql,\n target: sqlite,\n adapter: sqliteAdapter,\n driver: sqliteDriver,\n extensionPacks: extensions,\n contract: contractConfig,\n ...ifDefined('db', options.db),\n ...ifDefined('migrations', options.migrations),\n });\n}\n"],"mappings":";;;;;;;;;;AAuBA,SAAS,iBAAiB,cAA8B;CACtD,MAAM,MAAM,QAAQ,aAAa;CACjC,IAAI,IAAI,WAAW,GACjB,OAAO,GAAG,aAAa;CAEzB,OAAO,GAAG,aAAa,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC;;AAG/C,SAAgB,aAAa,SAAiE;CAC5F,MAAM,aAAa,QAAQ,cAAc,EAAE;CAC3C,MAAM,SAAS,iBAAiB,QAAQ,SAAS;CAWjD,OAAOA,eAAiB;EACtB,QAAQ;EACR,QAAQ;EACR,SAAS;EACT,QAAQ;EACR,gBAAgB;EAChB,UAhBU,QAAQ,QAAQ,SAGvB,KAAK,QACJ,2BAA2B,QAAQ,UAAU,OAAO,GACpD,eAAe,QAAQ,UAAU;GAC/B;GACA,QAAQ;GACT,CAAC;EASN,GAAG,UAAU,MAAM,QAAQ,GAAG;EAC9B,GAAG,UAAU,cAAc,QAAQ,WAAW;EAC/C,CAAC"}
1
+ {"version":3,"file":"config.mjs","names":["coreDefineConfig"],"sources":["../src/config/define-config.ts"],"sourcesContent":["import sqliteAdapter from '@prisma-next/adapter-sqlite/control';\nimport type { PrismaNextConfig } from '@prisma-next/config/config-types';\nimport { defineConfig as coreDefineConfig } from '@prisma-next/config/config-types';\nimport sqliteDriver from '@prisma-next/driver-sqlite/control';\nimport sql from '@prisma-next/family-sql/control';\nimport type { ControlExtensionDescriptor } from '@prisma-next/framework-components/control';\nimport { prismaContract } from '@prisma-next/sql-contract-psl/provider';\nimport { typescriptContractFromPath } from '@prisma-next/sql-contract-ts/config-types';\nimport sqlite from '@prisma-next/target-sqlite/control';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { extname, join } from 'pathe';\n\nexport interface SqliteConfigOptions {\n readonly contract: string;\n readonly outputPath?: string;\n readonly db?: {\n readonly connection?: string;\n };\n readonly extensions?: readonly ControlExtensionDescriptor<'sql', 'sqlite'>[];\n readonly migrations?: {\n readonly dir?: string;\n };\n}\n\nfunction deriveOutputPath(contractPath: string): string {\n const ext = extname(contractPath);\n if (ext.length === 0) {\n return `${contractPath}.json`;\n }\n return `${contractPath.slice(0, -ext.length)}.json`;\n}\n\nexport function defineConfig(options: SqliteConfigOptions): PrismaNextConfig<'sql', 'sqlite'> {\n const extensions = options.extensions ?? [];\n const output =\n options.outputPath !== undefined\n ? join(options.outputPath, 'contract.json')\n : deriveOutputPath(options.contract);\n const ext = extname(options.contract);\n\n const contractConfig =\n ext === '.ts'\n ? typescriptContractFromPath(options.contract, output)\n : prismaContract(options.contract, {\n output,\n target: sqlite,\n });\n\n return coreDefineConfig({\n family: sql,\n target: sqlite,\n adapter: sqliteAdapter,\n driver: sqliteDriver,\n extensionPacks: extensions,\n contract: contractConfig,\n ...ifDefined('db', options.db),\n ...ifDefined('migrations', options.migrations),\n });\n}\n"],"mappings":";;;;;;;;;;AAwBA,SAAS,iBAAiB,cAA8B;CACtD,MAAM,MAAM,QAAQ,YAAY;CAChC,IAAI,IAAI,WAAW,GACjB,OAAO,GAAG,aAAa;CAEzB,OAAO,GAAG,aAAa,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE;AAC/C;AAEA,SAAgB,aAAa,SAAiE;CAC5F,MAAM,aAAa,QAAQ,cAAc,CAAC;CAC1C,MAAM,SACJ,QAAQ,eAAe,KAAA,IACnB,KAAK,QAAQ,YAAY,eAAe,IACxC,iBAAiB,QAAQ,QAAQ;CAWvC,OAAOA,eAAiB;EACtB,QAAQ;EACR,QAAQ;EACR,SAAS;EACT,QAAQ;EACR,gBAAgB;EAChB,UAhBU,QAAQ,QAAQ,QAGxB,MAAM,QACJ,2BAA2B,QAAQ,UAAU,MAAM,IACnD,eAAe,QAAQ,UAAU;GAC/B;GACA,QAAQ;EACV,CAAC;EASL,GAAG,UAAU,MAAM,QAAQ,EAAE;EAC7B,GAAG,UAAU,cAAc,QAAQ,UAAU;CAC/C,CAAC;AACH"}
@@ -9,21 +9,21 @@ type SqlFamily = typeof sqlFamilyPack;
9
9
  type SqlitePack = typeof sqlitePack;
10
10
  type TypesConstraint = Record<string, StorageTypeInstance>;
11
11
  type ModelsConstraint = Record<string, ModelLike$1>;
12
- type SqliteResult<Types extends TypesConstraint, Models extends ModelsConstraint, ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined, Capabilities extends Record<string, Record<string, boolean>> | undefined> = Omit<ReturnType<typeof defineContract$1<SqlFamily, SqlitePack, Types, Models, ExtensionPacks, Capabilities>>, 'target' | 'targetFamily'> & {
12
+ type SqliteResult<Types extends TypesConstraint, Models extends ModelsConstraint, ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined> = Omit<ReturnType<typeof defineContract$1<SqlFamily, SqlitePack, Types, Models, ExtensionPacks>>, 'target' | 'targetFamily'> & {
13
13
  readonly target: SqlitePack['targetId'];
14
14
  readonly targetFamily: SqlFamily['familyId'];
15
15
  };
16
- type SqliteBaseScaffold<ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined, Capabilities extends Record<string, Record<string, boolean>> | undefined> = Omit<ContractInput$1<SqlFamily, SqlitePack, Record<never, never>, Record<never, never>, ExtensionPacks, Capabilities>, 'family' | 'target' | 'types' | 'models'>;
17
- type SqliteDefinition<Types extends TypesConstraint, Models extends ModelsConstraint, ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined, Capabilities extends Record<string, Record<string, boolean>> | undefined> = SqliteBaseScaffold<ExtensionPacks, Capabilities> & {
16
+ type SqliteBaseScaffold<ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined> = Omit<ContractInput$1<SqlFamily, SqlitePack, Record<never, never>, Record<never, never>, ExtensionPacks>, 'family' | 'target' | 'types' | 'models'>;
17
+ type SqliteDefinition<Types extends TypesConstraint, Models extends ModelsConstraint, ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined> = SqliteBaseScaffold<ExtensionPacks> & {
18
18
  readonly types?: Types;
19
19
  readonly models?: Models;
20
20
  };
21
- type SqliteScaffold<ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined, Capabilities extends Record<string, Record<string, boolean>> | undefined> = SqliteBaseScaffold<ExtensionPacks, Capabilities>;
22
- declare function defineContract<const Types extends TypesConstraint = Record<never, never>, const Models extends ModelsConstraint = Record<never, never>, const ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined = undefined, const Capabilities extends Record<string, Record<string, boolean>> | undefined = undefined>(definition: SqliteDefinition<Types, Models, ExtensionPacks, Capabilities>): SqliteResult<Types, Models, ExtensionPacks, Capabilities>;
23
- declare function defineContract<const Types extends TypesConstraint = Record<never, never>, const Models extends ModelsConstraint = Record<never, never>, const ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined = undefined, const Capabilities extends Record<string, Record<string, boolean>> | undefined = undefined>(scaffold: SqliteScaffold<ExtensionPacks, Capabilities>, factory: (helpers: ComposedAuthoringHelpers$1<SqlFamily, SqlitePack, ExtensionPacks>) => {
21
+ type SqliteScaffold<ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined> = SqliteBaseScaffold<ExtensionPacks>;
22
+ declare function defineContract<const Types extends TypesConstraint = Record<never, never>, const Models extends ModelsConstraint = Record<never, never>, const ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined = undefined>(definition: SqliteDefinition<Types, Models, ExtensionPacks>): SqliteResult<Types, Models, ExtensionPacks>;
23
+ declare function defineContract<const Types extends TypesConstraint = Record<never, never>, const Models extends ModelsConstraint = Record<never, never>, const ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined = undefined>(scaffold: SqliteScaffold<ExtensionPacks>, factory: (helpers: ComposedAuthoringHelpers$1<SqlFamily, SqlitePack, ExtensionPacks>) => {
24
24
  readonly types?: Types;
25
25
  readonly models?: Models;
26
- }): SqliteResult<Types, Models, ExtensionPacks, Capabilities>;
26
+ }): SqliteResult<Types, Models, ExtensionPacks>;
27
27
  //#endregion
28
28
  export { type ComposedAuthoringHelpers, type ContractDefinition, type ContractInput, type ContractModelBuilder, type FieldNode, type ForeignKeyNode, type IndexNode, type ModelLike, type ModelNode, type PrimaryKeyNode, type RelationNode, type ScalarFieldBuilder, type UniqueConstraintNode, defineContract, field, model, rel };
29
29
  //# sourceMappingURL=contract-builder.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract-builder.d.mts","names":[],"sources":["../src/contract/define-contract.ts"],"mappings":";;;;;;;KAWK,SAAA,UAAmB,aAAA;AAAA,KACnB,UAAA,UAAoB,UAAA;AAAA,KAEpB,eAAA,GAAkB,MAAA,SAAe,mBAAA;AAAA,KACjC,gBAAA,GAAmB,MAAA,SAAe,WAAA;AAAA,KAMlC,YAAA,eACW,eAAA,iBACC,gBAAA,yBACQ,MAAA,SAAe,gBAAA,mDACjB,MAAA,SAAe,MAAA,kCAClC,IAAA,CACF,UAAA,QACS,gBAAA,CAAmB,SAAA,EAAW,UAAA,EAAY,KAAA,EAAO,MAAA,EAAQ,cAAA,EAAgB,YAAA;EAAA,SAIzE,MAAA,EAAQ,UAAA;EAAA,SACR,YAAA,EAAc,SAAA;AAAA;AAAA,KAMpB,kBAAA,wBACoB,MAAA,SAAe,gBAAA,mDACjB,MAAA,SAAe,MAAA,kCAClC,IAAA,CACF,eAAA,CACE,SAAA,EACA,UAAA,EACA,MAAA,gBACA,MAAA,gBACA,cAAA,EACA,YAAA;AAAA,KAMC,gBAAA,eACW,eAAA,iBACC,gBAAA,yBACQ,MAAA,SAAe,gBAAA,mDACjB,MAAA,SAAe,MAAA,kCAClC,kBAAA,CAAmB,cAAA,EAAgB,YAAA;EAAA,SAC5B,KAAA,GAAQ,KAAA;EAAA,SACR,MAAA,GAAS,MAAA;AAAA;AAAA,KAIf,cAAA,wBACoB,MAAA,SAAe,gBAAA,mDACjB,MAAA,SAAe,MAAA,kCAClC,kBAAA,CAAmB,cAAA,EAAgB,YAAA;AAAA,iBAGvB,cAAA,qBACM,eAAA,GAAkB,MAAA,qCACjB,gBAAA,GAAmB,MAAA,6CAEpC,MAAA,SAAe,gBAAA,qEAEQ,MAAA,SAAe,MAAA,2CAAA,CAE1C,UAAA,EAAY,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ,cAAA,EAAgB,YAAA,IAC3D,YAAA,CAAa,KAAA,EAAO,MAAA,EAAQ,cAAA,EAAgB,YAAA;AAAA,iBAG/B,cAAA,qBACM,eAAA,GAAkB,MAAA,qCACjB,gBAAA,GAAmB,MAAA,6CAEpC,MAAA,SAAe,gBAAA,qEAEQ,MAAA,SAAe,MAAA,2CAAA,CAE1C,QAAA,EAAU,cAAA,CAAe,cAAA,EAAgB,YAAA,GACzC,OAAA,GAAU,OAAA,EAAS,0BAAA,CAAyB,SAAA,EAAW,UAAA,EAAY,cAAA;EAAA,SACxD,KAAA,GAAQ,KAAA;EAAA,SACR,MAAA,GAAS,MAAA;AAAA,IAEnB,YAAA,CAAa,KAAA,EAAO,MAAA,EAAQ,cAAA,EAAgB,YAAA"}
1
+ {"version":3,"file":"contract-builder.d.mts","names":[],"sources":["../src/contract/define-contract.ts"],"mappings":";;;;;;;KAWK,SAAA,UAAmB,aAAa;AAAA,KAChC,UAAA,UAAoB,UAAU;AAAA,KAE9B,eAAA,GAAkB,MAAM,SAAS,mBAAA;AAAA,KACjC,gBAAA,GAAmB,MAAM,SAAS,WAAA;AAAA,KAElC,YAAA,eACW,eAAA,iBACC,gBAAA,yBACQ,MAAA,SAAe,gBAAA,gCACpC,IAAA,CACF,UAAA,QAAkB,gBAAA,CAAmB,SAAA,EAAW,UAAA,EAAY,KAAA,EAAO,MAAA,EAAQ,cAAA;EAAA,SAGlE,MAAA,EAAQ,UAAA;EAAA,SACR,YAAA,EAAc,SAAA;AAAA;AAAA,KAGpB,kBAAA,wBACoB,MAAA,SAAe,gBAAA,gCACpC,IAAA,CACF,eAAA,CAAc,SAAA,EAAW,UAAA,EAAY,MAAA,gBAAsB,MAAA,gBAAsB,cAAA;AAAA,KAI9E,gBAAA,eACW,eAAA,iBACC,gBAAA,yBACQ,MAAA,SAAe,gBAAA,gCACpC,kBAAA,CAAmB,cAAA;EAAA,SACZ,KAAA,GAAQ,KAAA;EAAA,SACR,MAAA,GAAS,MAAA;AAAA;AAAA,KAGf,cAAA,wBACoB,MAAA,SAAe,gBAAA,gCACpC,kBAAA,CAAmB,cAAA;AAAA,iBAEP,cAAA,qBACM,eAAA,GAAkB,MAAA,qCACjB,gBAAA,GAAmB,MAAA,6CAEpC,MAAA,SAAe,gBAAA,yCAAA,CAGnB,UAAA,EAAY,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ,cAAA,IAC3C,YAAA,CAAa,KAAA,EAAO,MAAA,EAAQ,cAAA;AAAA,iBAEf,cAAA,qBACM,eAAA,GAAkB,MAAA,qCACjB,gBAAA,GAAmB,MAAA,6CAEpC,MAAA,SAAe,gBAAA,yCAAA,CAGnB,QAAA,EAAU,cAAA,CAAe,cAAA,GACzB,OAAA,GAAU,OAAA,EAAS,0BAAA,CAAyB,SAAA,EAAW,UAAA,EAAY,cAAA;EAAA,SACxD,KAAA,GAAQ,KAAA;EAAA,SACR,MAAA,GAAS,MAAA;AAAA,IAEnB,YAAA,CAAa,KAAA,EAAO,MAAA,EAAQ,cAAA"}
@@ -8,7 +8,10 @@ function defineContract(scaffold, factory) {
8
8
  family: sqlFamilyPack,
9
9
  target: sqlitePack
10
10
  };
11
- if (factory !== void 0) return defineContract$1(full, factory);
11
+ if (factory !== void 0) {
12
+ const { types: _t, models: _m, ...scaffoldOnly } = full;
13
+ return defineContract$1(scaffoldOnly, factory);
14
+ }
12
15
  return defineContract$1(full);
13
16
  }
14
17
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"contract-builder.mjs","names":["baseDefineContract"],"sources":["../src/contract/define-contract.ts"],"sourcesContent":["import sqlFamilyPack from '@prisma-next/family-sql/pack';\nimport type { ExtensionPackRef } from '@prisma-next/framework-components/components';\nimport type { StorageTypeInstance } from '@prisma-next/sql-contract/types';\nimport type {\n ComposedAuthoringHelpers,\n ContractInput,\n ModelLike,\n} from '@prisma-next/sql-contract-ts/contract-builder';\nimport { defineContract as baseDefineContract } from '@prisma-next/sql-contract-ts/contract-builder';\nimport sqlitePack from '@prisma-next/target-sqlite/pack';\n\ntype SqlFamily = typeof sqlFamilyPack;\ntype SqlitePack = typeof sqlitePack;\n\ntype TypesConstraint = Record<string, StorageTypeInstance>;\ntype ModelsConstraint = Record<string, ModelLike>;\n\n// Return type threaded with all inferred type params.\n// We override target/targetFamily via intersection to preserve the literal values\n// ('sqlite', 'sql') even when TypeScript defers conditional-type evaluation on\n// unresolved generic params.\ntype SqliteResult<\n Types extends TypesConstraint,\n Models extends ModelsConstraint,\n ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined,\n Capabilities extends Record<string, Record<string, boolean>> | undefined,\n> = Omit<\n ReturnType<\n typeof baseDefineContract<SqlFamily, SqlitePack, Types, Models, ExtensionPacks, Capabilities>\n >,\n 'target' | 'targetFamily'\n> & {\n readonly target: SqlitePack['targetId'];\n readonly targetFamily: SqlFamily['familyId'];\n};\n\n// Scaffold that carries all ContractInput fields EXCEPT family, target, types, models.\n// Built from ContractInput with concrete Record<never, never> defaults to avoid\n// the ContractInput Models constraint (which requires ContractModelBuilder, not ModelLike).\ntype SqliteBaseScaffold<\n ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined,\n Capabilities extends Record<string, Record<string, boolean>> | undefined,\n> = Omit<\n ContractInput<\n SqlFamily,\n SqlitePack,\n Record<never, never>,\n Record<never, never>,\n ExtensionPacks,\n Capabilities\n >,\n 'family' | 'target' | 'types' | 'models'\n>;\n\n// Definition form: inline types + models (uses ModelLike for models, not ContractModelBuilder)\ntype SqliteDefinition<\n Types extends TypesConstraint,\n Models extends ModelsConstraint,\n ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined,\n Capabilities extends Record<string, Record<string, boolean>> | undefined,\n> = SqliteBaseScaffold<ExtensionPacks, Capabilities> & {\n readonly types?: Types;\n readonly models?: Models;\n};\n\n// Factory form: scaffold without types/models (factory provides them)\ntype SqliteScaffold<\n ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined,\n Capabilities extends Record<string, Record<string, boolean>> | undefined,\n> = SqliteBaseScaffold<ExtensionPacks, Capabilities>;\n\n// Overload 1: definition form (models/types inline in scaffold)\nexport function defineContract<\n const Types extends TypesConstraint = Record<never, never>,\n const Models extends ModelsConstraint = Record<never, never>,\n const ExtensionPacks extends\n | Record<string, ExtensionPackRef<'sql', string>>\n | undefined = undefined,\n const Capabilities extends Record<string, Record<string, boolean>> | undefined = undefined,\n>(\n definition: SqliteDefinition<Types, Models, ExtensionPacks, Capabilities>,\n): SqliteResult<Types, Models, ExtensionPacks, Capabilities>;\n\n// Overload 2: factory form (scaffold without models/types; factory provides them)\nexport function defineContract<\n const Types extends TypesConstraint = Record<never, never>,\n const Models extends ModelsConstraint = Record<never, never>,\n const ExtensionPacks extends\n | Record<string, ExtensionPackRef<'sql', string>>\n | undefined = undefined,\n const Capabilities extends Record<string, Record<string, boolean>> | undefined = undefined,\n>(\n scaffold: SqliteScaffold<ExtensionPacks, Capabilities>,\n factory: (helpers: ComposedAuthoringHelpers<SqlFamily, SqlitePack, ExtensionPacks>) => {\n readonly types?: Types;\n readonly models?: Models;\n },\n): SqliteResult<Types, Models, ExtensionPacks, Capabilities>;\n\n// Implementation — the runtime type is richer than the wide impl signature;\n// as unknown is safe because every declared overload produces a SqliteResult.\nexport function defineContract(\n scaffold: Omit<ContractInput, 'family' | 'target'>,\n factory?: (helpers: ComposedAuthoringHelpers<SqlFamily, SqlitePack, undefined>) => {\n readonly types?: TypesConstraint;\n readonly models?: ModelsConstraint;\n },\n): SqliteResult<TypesConstraint, ModelsConstraint, undefined, undefined> {\n const full = {\n ...scaffold,\n family: sqlFamilyPack,\n target: sqlitePack,\n } as ContractInput;\n if (factory !== undefined) {\n return baseDefineContract(\n full,\n factory as Parameters<typeof baseDefineContract>[1],\n ) as unknown as SqliteResult<TypesConstraint, ModelsConstraint, undefined, undefined>;\n }\n return baseDefineContract(full) as unknown as SqliteResult<\n TypesConstraint,\n ModelsConstraint,\n undefined,\n undefined\n >;\n}\n"],"mappings":";;;;AAqGA,SAAgB,eACd,UACA,SAIuE;CACvE,MAAM,OAAO;EACX,GAAG;EACH,QAAQ;EACR,QAAQ;EACT;CACD,IAAI,YAAY,KAAA,GACd,OAAOA,iBACL,MACA,QACD;CAEH,OAAOA,iBAAmB,KAAK"}
1
+ {"version":3,"file":"contract-builder.mjs","names":["baseDefineContract"],"sources":["../src/contract/define-contract.ts"],"sourcesContent":["import sqlFamilyPack from '@prisma-next/family-sql/pack';\nimport type { ExtensionPackRef } from '@prisma-next/framework-components/components';\nimport type { StorageTypeInstance } from '@prisma-next/sql-contract/types';\nimport type {\n ComposedAuthoringHelpers,\n ContractInput,\n ModelLike,\n} from '@prisma-next/sql-contract-ts/contract-builder';\nimport { defineContract as baseDefineContract } from '@prisma-next/sql-contract-ts/contract-builder';\nimport sqlitePack from '@prisma-next/target-sqlite/pack';\n\ntype SqlFamily = typeof sqlFamilyPack;\ntype SqlitePack = typeof sqlitePack;\n\ntype TypesConstraint = Record<string, StorageTypeInstance>;\ntype ModelsConstraint = Record<string, ModelLike>;\n\ntype SqliteResult<\n Types extends TypesConstraint,\n Models extends ModelsConstraint,\n ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined,\n> = Omit<\n ReturnType<typeof baseDefineContract<SqlFamily, SqlitePack, Types, Models, ExtensionPacks>>,\n 'target' | 'targetFamily'\n> & {\n readonly target: SqlitePack['targetId'];\n readonly targetFamily: SqlFamily['familyId'];\n};\n\ntype SqliteBaseScaffold<\n ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined,\n> = Omit<\n ContractInput<SqlFamily, SqlitePack, Record<never, never>, Record<never, never>, ExtensionPacks>,\n 'family' | 'target' | 'types' | 'models'\n>;\n\ntype SqliteDefinition<\n Types extends TypesConstraint,\n Models extends ModelsConstraint,\n ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined,\n> = SqliteBaseScaffold<ExtensionPacks> & {\n readonly types?: Types;\n readonly models?: Models;\n};\n\ntype SqliteScaffold<\n ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined,\n> = SqliteBaseScaffold<ExtensionPacks>;\n\nexport function defineContract<\n const Types extends TypesConstraint = Record<never, never>,\n const Models extends ModelsConstraint = Record<never, never>,\n const ExtensionPacks extends\n | Record<string, ExtensionPackRef<'sql', string>>\n | undefined = undefined,\n>(\n definition: SqliteDefinition<Types, Models, ExtensionPacks>,\n): SqliteResult<Types, Models, ExtensionPacks>;\n\nexport function defineContract<\n const Types extends TypesConstraint = Record<never, never>,\n const Models extends ModelsConstraint = Record<never, never>,\n const ExtensionPacks extends\n | Record<string, ExtensionPackRef<'sql', string>>\n | undefined = undefined,\n>(\n scaffold: SqliteScaffold<ExtensionPacks>,\n factory: (helpers: ComposedAuthoringHelpers<SqlFamily, SqlitePack, ExtensionPacks>) => {\n readonly types?: Types;\n readonly models?: Models;\n },\n): SqliteResult<Types, Models, ExtensionPacks>;\n\nexport function defineContract(\n scaffold: Omit<ContractInput, 'family' | 'target'>,\n factory?: (helpers: ComposedAuthoringHelpers<SqlFamily, SqlitePack, undefined>) => {\n readonly types?: TypesConstraint;\n readonly models?: ModelsConstraint;\n },\n): SqliteResult<TypesConstraint, ModelsConstraint, undefined> {\n const full = {\n ...scaffold,\n family: sqlFamilyPack,\n target: sqlitePack,\n } as ContractInput;\n if (factory !== undefined) {\n const { types: _t, models: _m, ...scaffoldOnly } = full;\n return baseDefineContract(\n scaffoldOnly,\n factory as Parameters<typeof baseDefineContract>[1],\n ) as unknown as SqliteResult<TypesConstraint, ModelsConstraint, undefined>;\n }\n return baseDefineContract(full) as unknown as SqliteResult<\n TypesConstraint,\n ModelsConstraint,\n undefined\n >;\n}\n"],"mappings":";;;;AAyEA,SAAgB,eACd,UACA,SAI4D;CAC5D,MAAM,OAAO;EACX,GAAG;EACH,QAAQ;EACR,QAAQ;CACV;CACA,IAAI,YAAY,KAAA,GAAW;EACzB,MAAM,EAAE,OAAO,IAAI,QAAQ,IAAI,GAAG,iBAAiB;EACnD,OAAOA,iBACL,cACA,OACF;CACF;CACA,OAAOA,iBAAmB,IAAI;AAKhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"control.d.mts","names":[],"sources":["../src/exports/control.ts"],"mappings":";;;UAWiB,0BAAA;EAAA,SACN,UAAA;EAAA,SACA,cAAA,GAAiB,oBAAA;AAAA;AAAA,iBAGZ,yBAAA,CAA0B,OAAA,GAAS,0BAAA,GAAkC,aAAA"}
1
+ {"version":3,"file":"control.d.mts","names":[],"sources":["../src/exports/control.ts"],"mappings":";;;UAWiB,0BAAA;EAAA,SACN,UAAA;EAAA,SACA,cAAA,GAAiB,oBAAoB;AAAA;AAAA,iBAGhC,yBAAA,CAA0B,OAAA,GAAS,0BAAA,GAAkC,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"control.mjs","names":[],"sources":["../src/exports/control.ts"],"sourcesContent":["import sqliteAdapter from '@prisma-next/adapter-sqlite/control';\nimport {\n type ControlClient,\n type ControlClientOptions,\n createControlClient,\n} from '@prisma-next/cli/control-api';\nimport sqliteDriver from '@prisma-next/driver-sqlite/control';\nimport sql from '@prisma-next/family-sql/control';\nimport sqlite from '@prisma-next/target-sqlite/control';\nimport { ifDefined } from '@prisma-next/utils/defined';\n\nexport interface SqliteControlClientOptions {\n readonly connection?: string;\n readonly extensionPacks?: ControlClientOptions['extensionPacks'];\n}\n\nexport function createSqliteControlClient(options: SqliteControlClientOptions = {}): ControlClient {\n const clientOptions: ControlClientOptions = {\n family: sql,\n target: sqlite,\n adapter: sqliteAdapter,\n driver: sqliteDriver,\n ...ifDefined('connection', options.connection),\n ...ifDefined('extensionPacks', options.extensionPacks),\n };\n return createControlClient(clientOptions);\n}\n\nexport type { ControlClient };\n"],"mappings":";;;;;;;AAgBA,SAAgB,0BAA0B,UAAsC,EAAE,EAAiB;CASjG,OAAO,oBAAoB;EAPzB,QAAQ;EACR,QAAQ;EACR,SAAS;EACT,QAAQ;EACR,GAAG,UAAU,cAAc,QAAQ,WAAW;EAC9C,GAAG,UAAU,kBAAkB,QAAQ,eAAe;EAEhB,CAAC"}
1
+ {"version":3,"file":"control.mjs","names":[],"sources":["../src/exports/control.ts"],"sourcesContent":["import sqliteAdapter from '@prisma-next/adapter-sqlite/control';\nimport {\n type ControlClient,\n type ControlClientOptions,\n createControlClient,\n} from '@prisma-next/cli/control-api';\nimport sqliteDriver from '@prisma-next/driver-sqlite/control';\nimport sql from '@prisma-next/family-sql/control';\nimport sqlite from '@prisma-next/target-sqlite/control';\nimport { ifDefined } from '@prisma-next/utils/defined';\n\nexport interface SqliteControlClientOptions {\n readonly connection?: string;\n readonly extensionPacks?: ControlClientOptions['extensionPacks'];\n}\n\nexport function createSqliteControlClient(options: SqliteControlClientOptions = {}): ControlClient {\n const clientOptions: ControlClientOptions = {\n family: sql,\n target: sqlite,\n adapter: sqliteAdapter,\n driver: sqliteDriver,\n ...ifDefined('connection', options.connection),\n ...ifDefined('extensionPacks', options.extensionPacks),\n };\n return createControlClient(clientOptions);\n}\n\nexport type { ControlClient };\n"],"mappings":";;;;;;;AAgBA,SAAgB,0BAA0B,UAAsC,CAAC,GAAkB;CASjG,OAAO,oBAAoB;EAPzB,QAAQ;EACR,QAAQ;EACR,SAAS;EACT,QAAQ;EACR,GAAG,UAAU,cAAc,QAAQ,UAAU;EAC7C,GAAG,UAAU,kBAAkB,QAAQ,cAAc;CAEhB,CAAC;AAC1C"}
@@ -1,9 +1,9 @@
1
1
  import { orm } from "@prisma-next/sql-orm-client";
2
- import { BindSiteParams, Declaration, ExecutionContext, ParamsFromDeclaration, PreparedStatement, Runtime, RuntimeVerifyOptions, SqlExecutionStackWithDriver, SqlMiddleware, SqlRuntimeExtensionDescriptor } from "@prisma-next/sql-runtime";
2
+ import { CodecTypesBase, RawSqlTag } from "@prisma-next/sql-relational-core/expression";
3
+ import { BindSiteParams, Declaration, ExecutionContext, ParamsFromDeclaration, PreparedStatement, Runtime, SqlExecutionStackWithDriver, SqlMiddleware, SqlRuntimeExtensionDescriptor, VerifyMarkerOption } from "@prisma-next/sql-runtime";
3
4
  import { ExtractCodecTypes, SqlStorage } from "@prisma-next/sql-contract/types";
4
5
  import { Contract } from "@prisma-next/contract/types";
5
6
  import { Db } from "@prisma-next/sql-builder/types";
6
- import { CodecTypesBase } from "@prisma-next/sql-relational-core/expression";
7
7
  import { SqlQueryPlan } from "@prisma-next/sql-relational-core/plan";
8
8
 
9
9
  //#region src/runtime/binding.d.ts
@@ -17,6 +17,7 @@ type OrmClient<TContract extends Contract<SqlStorage>> = ReturnType<typeof orm<T
17
17
  interface SqliteClient<TContract extends Contract<SqlStorage>> {
18
18
  readonly sql: Db<TContract>;
19
19
  readonly orm: OrmClient<TContract>;
20
+ readonly raw: RawSqlTag;
20
21
  readonly context: ExecutionContext<TContract>;
21
22
  readonly stack: SqlExecutionStackWithDriver<SqliteTargetId>;
22
23
  connect(bindingInput?: {
@@ -30,7 +31,7 @@ interface SqliteClient<TContract extends Contract<SqlStorage>> {
30
31
  interface SqliteOptionsBase {
31
32
  readonly extensions?: readonly SqlRuntimeExtensionDescriptor<SqliteTargetId>[];
32
33
  readonly middleware?: readonly SqlMiddleware[];
33
- readonly verify?: RuntimeVerifyOptions;
34
+ readonly verifyMarker?: VerifyMarkerOption;
34
35
  }
35
36
  type SqliteOptionsWithContract<TContract extends Contract<SqlStorage>> = {
36
37
  readonly path?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.mts","names":[],"sources":["../src/runtime/binding.ts","../src/runtime/sqlite.ts"],"mappings":";;;;;;;;;KAEY,kBAAA;EAAA,SAAgC,IAAA;AAAA;;;KC8BhC,cAAA;AAAA,KACP,SAAA,mBAA4B,QAAA,CAAS,UAAA,KAAe,UAAA,QAAkB,GAAA,CAAW,SAAA;AAAA,UAErE,YAAA,mBAA+B,QAAA,CAAS,UAAA;EAAA,SAC9C,GAAA,EAAK,EAAA,CAAG,SAAA;EAAA,SACR,GAAA,EAAK,SAAA,CAAU,SAAA;EAAA,SACf,OAAA,EAAS,gBAAA,CAAiB,SAAA;EAAA,SAC1B,KAAA,EAAO,2BAAA,CAA4B,cAAA;EAC5C,OAAA,CAAQ,YAAA;IAAA,SAA0B,IAAA;EAAA,IAAiB,OAAA,CAAQ,OAAA;EAC3D,OAAA,IAAW,OAAA;EACX,OAAA,WACY,WAAA,CAAY,EAAA,mBAEX,cAAA,GAAiB,iBAAA,CAAkB,SAAA,IAAa,cAAA,EAE3D,WAAA,EAAa,CAAA,EACb,QAAA,GAAW,GAAA,EAAK,EAAA,CAAG,SAAA,GAAY,MAAA,EAAQ,cAAA,CAAe,CAAA,MAAO,YAAA,CAAa,GAAA,IACzE,OAAA,CAAQ,iBAAA,CAAkB,qBAAA,CAAsB,CAAA,EAAG,EAAA,GAAK,GAAA;EAC3D,KAAA,IAAS,OAAA;EAAA,CACR,MAAA,CAAO,YAAP,KAAwB,OAAA;AAAA;AAAA,UAGV,iBAAA;EAAA,SACN,UAAA,YAAsB,6BAAA,CAA8B,cAAA;EAAA,SACpD,UAAA,YAAsB,aAAA;EAAA,SACtB,MAAA,GAAS,oBAAA;AAAA;AAAA,KAGR,yBAAA,mBAA4C,QAAA,CAAS,UAAA;EAAA,SACtD,IAAA;AAAA,IACP,iBAAA;EAAA,SACS,QAAA,EAAU,SAAA;EAAA,SACV,YAAA;AAAA;AAAA,KAGD,6BAAA,mBAAgD,QAAA,CAAS,UAAA;EAAA,SAC1D,IAAA;EAAA,SACA,SAAA,GAAY,SAAA;AAAA,IACnB,iBAAA;EAAA,SACS,YAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGD,aAAA,mBAAgC,QAAA,CAAS,UAAA,KACjD,yBAAA,CAA0B,SAAA,IAC1B,6BAAA,CAA8B,SAAA;AAAA,iBAYV,MAAA,mBAAyB,QAAA,CAAS,UAAA,EAAA,CACxD,OAAA,EAAS,yBAAA,CAA0B,SAAA,IAClC,YAAA,CAAa,SAAA;AAAA,iBACQ,MAAA,mBAAyB,QAAA,CAAS,UAAA,EAAA,CACxD,OAAA,EAAS,6BAAA,CAA8B,SAAA,IACtC,YAAA,CAAa,SAAA"}
1
+ {"version":3,"file":"runtime.d.mts","names":[],"sources":["../src/runtime/binding.ts","../src/runtime/sqlite.ts"],"mappings":";;;;;;;;;KAEY,kBAAA;EAAA,SAAgC,IAAI;AAAA;;;KCgCpC,cAAA;AAAA,KACP,SAAA,mBAA4B,QAAA,CAAS,UAAA,KAAe,UAAA,QAAkB,GAAA,CAAW,SAAA;AAAA,UAErE,YAAA,mBAA+B,QAAA,CAAS,UAAA;EAAA,SAC9C,GAAA,EAAK,EAAA,CAAG,SAAA;EAAA,SACR,GAAA,EAAK,SAAA,CAAU,SAAA;EAAA,SACf,GAAA,EAAK,SAAA;EAAA,SACL,OAAA,EAAS,gBAAA,CAAiB,SAAA;EAAA,SAC1B,KAAA,EAAO,2BAAA,CAA4B,cAAA;EAC5C,OAAA,CAAQ,YAAA;IAAA,SAA0B,IAAA;EAAA,IAAiB,OAAA,CAAQ,OAAA;EAC3D,OAAA,IAAW,OAAA;EACX,OAAA,WACY,WAAA,CAAY,EAAA,mBAEX,cAAA,GAAiB,iBAAA,CAAkB,SAAA,IAAa,cAAA,EAE3D,WAAA,EAAa,CAAA,EACb,QAAA,GAAW,GAAA,EAAK,EAAA,CAAG,SAAA,GAAY,MAAA,EAAQ,cAAA,CAAe,CAAA,MAAO,YAAA,CAAa,GAAA,IACzE,OAAA,CAAQ,iBAAA,CAAkB,qBAAA,CAAsB,CAAA,EAAG,EAAA,GAAK,GAAA;EAC3D,KAAA,IAAS,OAAA;EAAA,CACR,MAAA,CAAO,YAAP,KAAwB,OAAA;AAAA;AAAA,UAGV,iBAAA;EAAA,SACN,UAAA,YAAsB,6BAAA,CAA8B,cAAA;EAAA,SACpD,UAAA,YAAsB,aAAA;EAAA,SACtB,YAAA,GAAe,kBAAA;AAAA;AAAA,KAGd,yBAAA,mBAA4C,QAAA,CAAS,UAAA;EAAA,SACtD,IAAA;AAAA,IACP,iBAAA;EAAA,SACS,QAAA,EAAU,SAAA;EAAA,SACV,YAAA;AAAA;AAAA,KAGD,6BAAA,mBAAgD,QAAA,CAAS,UAAA;EAAA,SAC1D,IAAA;EAAA,SACA,SAAA,GAAY,SAAA;AAAA,IACnB,iBAAA;EAAA,SACS,YAAA;EAAA,SACA,QAAA;AAAA;AAAA,KAGD,aAAA,mBAAgC,QAAA,CAAS,UAAA,KACjD,yBAAA,CAA0B,SAAA,IAC1B,6BAAA,CAA8B,SAAA;AAAA,iBAYV,MAAA,mBAAyB,QAAA,CAAS,UAAA,EAAA,CACxD,OAAA,EAAS,yBAAA,CAA0B,SAAA,IAClC,YAAA,CAAa,SAAA;AAAA,iBACQ,MAAA,mBAAyB,QAAA,CAAS,UAAA,EAAA,CACxD,OAAA,EAAS,6BAAA,CAA8B,SAAA,IACtC,YAAA,CAAa,SAAA"}
package/dist/runtime.mjs CHANGED
@@ -1,9 +1,11 @@
1
+ import { ifDefined } from "@prisma-next/utils/defined";
1
2
  import sqliteAdapter from "@prisma-next/adapter-sqlite/runtime";
2
3
  import sqliteDriver from "@prisma-next/driver-sqlite/runtime";
3
4
  import { SqlContractSerializer } from "@prisma-next/family-sql/ir";
4
5
  import { instantiateExecutionStack } from "@prisma-next/framework-components/execution";
5
6
  import { sql } from "@prisma-next/sql-builder/runtime";
6
7
  import { orm } from "@prisma-next/sql-orm-client";
8
+ import { createRawSql } from "@prisma-next/sql-relational-core/expression";
7
9
  import { createExecutionContext, createRuntime, createSqlExecutionStack } from "@prisma-next/sql-runtime";
8
10
  import sqliteTarget from "@prisma-next/target-sqlite/runtime";
9
11
  //#region src/runtime/binding.ts
@@ -39,7 +41,12 @@ function sqlite(options) {
39
41
  contract,
40
42
  stack
41
43
  });
42
- const sql$1 = sql({ context });
44
+ const rawCodecInferer = stack.adapter.rawCodecInferer;
45
+ const rawSqlTag = createRawSql(rawCodecInferer);
46
+ const sql$1 = sql({
47
+ context,
48
+ rawCodecInferer
49
+ });
43
50
  let runtimeInstance;
44
51
  let runtimeDriver;
45
52
  let driverConnected = false;
@@ -76,10 +83,7 @@ function sqlite(options) {
76
83
  stackInstance,
77
84
  context,
78
85
  driver,
79
- verify: options.verify ?? {
80
- mode: "onFirstUse",
81
- requireMarker: false
82
- },
86
+ ...ifDefined("verifyMarker", options.verifyMarker),
83
87
  ...options.middleware ? { middleware: options.middleware } : {}
84
88
  });
85
89
  return runtimeInstance;
@@ -97,6 +101,7 @@ function sqlite(options) {
97
101
  }
98
102
  }
99
103
  }),
104
+ raw: rawSqlTag,
100
105
  context,
101
106
  stack,
102
107
  async connect(bindingInput) {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.mjs","names":["sql","sqlBuilder","ormBuilder"],"sources":["../src/runtime/binding.ts","../src/runtime/sqlite.ts"],"sourcesContent":["import type { SqliteBinding } from '@prisma-next/driver-sqlite/runtime';\n\nexport type SqliteBindingInput = { readonly path: string };\n\nexport function resolveSqliteBinding(input: SqliteBindingInput): SqliteBinding {\n return { kind: 'path', path: input.path };\n}\n\nexport function resolveOptionalSqliteBinding(options: {\n readonly path?: string;\n}): SqliteBinding | undefined {\n if (options.path === undefined) {\n return undefined;\n }\n return { kind: 'path', path: options.path };\n}\n","import sqliteAdapter from '@prisma-next/adapter-sqlite/runtime';\nimport type { Contract } from '@prisma-next/contract/types';\nimport type { SqliteBinding } from '@prisma-next/driver-sqlite/runtime';\nimport sqliteDriver from '@prisma-next/driver-sqlite/runtime';\nimport { SqlContractSerializer } from '@prisma-next/family-sql/ir';\nimport { instantiateExecutionStack } from '@prisma-next/framework-components/execution';\nimport { sql as sqlBuilder } from '@prisma-next/sql-builder/runtime';\nimport type { Db } from '@prisma-next/sql-builder/types';\nimport type { ExtractCodecTypes, SqlStorage } from '@prisma-next/sql-contract/types';\nimport { orm as ormBuilder } from '@prisma-next/sql-orm-client';\nimport type { CodecTypesBase } from '@prisma-next/sql-relational-core/expression';\nimport type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';\nimport type {\n BindSiteParams,\n Declaration,\n ExecutionContext,\n ParamsFromDeclaration,\n PreparedStatement,\n Runtime,\n RuntimeVerifyOptions,\n SqlExecutionStackWithDriver,\n SqlMiddleware,\n SqlRuntimeExtensionDescriptor,\n} from '@prisma-next/sql-runtime';\nimport {\n createExecutionContext,\n createRuntime,\n createSqlExecutionStack,\n} from '@prisma-next/sql-runtime';\nimport sqliteTarget from '@prisma-next/target-sqlite/runtime';\nimport { resolveOptionalSqliteBinding, resolveSqliteBinding } from './binding';\n\nexport type SqliteTargetId = 'sqlite';\ntype OrmClient<TContract extends Contract<SqlStorage>> = ReturnType<typeof ormBuilder<TContract>>;\n\nexport interface SqliteClient<TContract extends Contract<SqlStorage>> {\n readonly sql: Db<TContract>;\n readonly orm: OrmClient<TContract>;\n readonly context: ExecutionContext<TContract>;\n readonly stack: SqlExecutionStackWithDriver<SqliteTargetId>;\n connect(bindingInput?: { readonly path: string }): Promise<Runtime>;\n runtime(): Runtime;\n prepare<\n D extends Declaration<CT>,\n Row,\n CT extends CodecTypesBase = ExtractCodecTypes<TContract> & CodecTypesBase,\n >(\n declaration: D,\n callback: (sql: Db<TContract>, params: BindSiteParams<D>) => SqlQueryPlan<Row>,\n ): Promise<PreparedStatement<ParamsFromDeclaration<D, CT>, Row>>;\n close(): Promise<void>;\n [Symbol.asyncDispose](): Promise<void>;\n}\n\nexport interface SqliteOptionsBase {\n readonly extensions?: readonly SqlRuntimeExtensionDescriptor<SqliteTargetId>[];\n readonly middleware?: readonly SqlMiddleware[];\n readonly verify?: RuntimeVerifyOptions;\n}\n\nexport type SqliteOptionsWithContract<TContract extends Contract<SqlStorage>> = {\n readonly path?: string;\n} & SqliteOptionsBase & {\n readonly contract: TContract;\n readonly contractJson?: never;\n };\n\nexport type SqliteOptionsWithContractJson<TContract extends Contract<SqlStorage>> = {\n readonly path?: string;\n readonly _contract?: TContract;\n} & SqliteOptionsBase & {\n readonly contractJson: unknown;\n readonly contract?: never;\n };\n\nexport type SqliteOptions<TContract extends Contract<SqlStorage>> =\n | SqliteOptionsWithContract<TContract>\n | SqliteOptionsWithContractJson<TContract>;\n\nfunction resolveContract<TContract extends Contract<SqlStorage>>(\n options: SqliteOptions<TContract>,\n): TContract {\n const contractInput =\n 'contractJson' in options && options.contractJson !== undefined\n ? options.contractJson\n : (options as SqliteOptionsWithContract<TContract>).contract;\n return new SqlContractSerializer().deserializeContract(contractInput) as TContract;\n}\n\nexport default function sqlite<TContract extends Contract<SqlStorage>>(\n options: SqliteOptionsWithContract<TContract>,\n): SqliteClient<TContract>;\nexport default function sqlite<TContract extends Contract<SqlStorage>>(\n options: SqliteOptionsWithContractJson<TContract>,\n): SqliteClient<TContract>;\nexport default function sqlite<TContract extends Contract<SqlStorage>>(\n options: SqliteOptions<TContract>,\n): SqliteClient<TContract> {\n const contract = resolveContract(options);\n let binding = resolveOptionalSqliteBinding(options);\n const stack = createSqlExecutionStack({\n target: sqliteTarget,\n adapter: sqliteAdapter,\n driver: sqliteDriver,\n extensionPacks: options.extensions ?? [],\n });\n\n const context = createExecutionContext({\n contract,\n stack,\n });\n\n const sql: Db<TContract> = sqlBuilder<TContract>({ context });\n let runtimeInstance: Runtime | undefined;\n let runtimeDriver: { connect(binding: unknown): Promise<void> } | undefined;\n let driverConnected = false;\n let connectPromise: Promise<void> | undefined;\n let closePromise: Promise<void> | undefined;\n let backgroundConnectError: unknown;\n let closed = false;\n let ownedDispose: (() => Promise<void>) | undefined;\n\n const connectDriver = async (resolvedBinding: SqliteBinding): Promise<void> => {\n if (driverConnected) return;\n if (!runtimeDriver) throw new Error('SQLite runtime driver missing');\n if (connectPromise) return connectPromise;\n connectPromise = runtimeDriver\n .connect(resolvedBinding)\n .then(() => {\n driverConnected = true;\n })\n .catch((err) => {\n backgroundConnectError = err;\n connectPromise = undefined;\n throw err;\n });\n return connectPromise;\n };\n\n const getRuntime = (): Runtime => {\n if (closed) {\n throw new Error('SQLite client is closed');\n }\n\n if (backgroundConnectError !== undefined) {\n throw backgroundConnectError;\n }\n\n if (runtimeInstance) {\n return runtimeInstance;\n }\n\n const stackInstance = instantiateExecutionStack(stack);\n const driverDescriptor = stack.driver;\n if (!driverDescriptor) {\n throw new Error('Driver descriptor missing from execution stack');\n }\n\n const driver = driverDescriptor.create();\n ownedDispose = () => driver.close();\n runtimeDriver = driver;\n if (binding !== undefined) {\n void connectDriver(binding).catch(() => undefined);\n }\n\n runtimeInstance = createRuntime({\n stackInstance,\n context,\n driver,\n verify: options.verify ?? { mode: 'onFirstUse', requireMarker: false },\n ...(options.middleware ? { middleware: options.middleware } : {}),\n });\n\n return runtimeInstance;\n };\n\n const orm: OrmClient<TContract> = ormBuilder({\n context,\n runtime: {\n execute(plan) {\n return getRuntime().execute(plan);\n },\n connection() {\n return getRuntime().connection();\n },\n },\n });\n\n return {\n sql,\n orm,\n context,\n stack,\n async connect(bindingInput) {\n if (closed) {\n throw new Error('SQLite client is closed');\n }\n\n if (driverConnected || connectPromise) {\n throw new Error('SQLite client already connected');\n }\n\n backgroundConnectError = undefined;\n\n if (bindingInput !== undefined) {\n binding = resolveSqliteBinding(bindingInput);\n }\n\n if (binding === undefined) {\n throw new Error(\n 'SQLite binding not configured. Pass path to sqlite(...) or call db.connect({ path }).',\n );\n }\n\n const runtime = getRuntime();\n if (driverConnected) {\n return runtime;\n }\n\n await connectDriver(binding);\n return runtime;\n },\n runtime() {\n return getRuntime();\n },\n prepare<\n D extends Declaration<CT>,\n Row,\n CT extends CodecTypesBase = ExtractCodecTypes<TContract> & CodecTypesBase,\n >(\n declaration: D,\n callback: (sql: Db<TContract>, params: BindSiteParams<D>) => SqlQueryPlan<Row>,\n ): Promise<PreparedStatement<ParamsFromDeclaration<D, CT>, Row>> {\n return getRuntime().prepare<D, Row, CT>(declaration, (params) => callback(sql, params));\n },\n\n close(): Promise<void> {\n if (closePromise) return closePromise;\n closed = true;\n closePromise = (async () => {\n await connectPromise?.catch(() => undefined);\n await ownedDispose?.();\n })();\n return closePromise;\n },\n\n [Symbol.asyncDispose](): Promise<void> {\n return this.close();\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"runtime.mjs","names":["sql","sqlBuilder","ormBuilder"],"sources":["../src/runtime/binding.ts","../src/runtime/sqlite.ts"],"sourcesContent":["import type { SqliteBinding } from '@prisma-next/driver-sqlite/runtime';\n\nexport type SqliteBindingInput = { readonly path: string };\n\nexport function resolveSqliteBinding(input: SqliteBindingInput): SqliteBinding {\n return { kind: 'path', path: input.path };\n}\n\nexport function resolveOptionalSqliteBinding(options: {\n readonly path?: string;\n}): SqliteBinding | undefined {\n if (options.path === undefined) {\n return undefined;\n }\n return { kind: 'path', path: options.path };\n}\n","import sqliteAdapter from '@prisma-next/adapter-sqlite/runtime';\nimport type { Contract } from '@prisma-next/contract/types';\nimport type { SqliteBinding } from '@prisma-next/driver-sqlite/runtime';\nimport sqliteDriver from '@prisma-next/driver-sqlite/runtime';\nimport { SqlContractSerializer } from '@prisma-next/family-sql/ir';\nimport { instantiateExecutionStack } from '@prisma-next/framework-components/execution';\nimport { sql as sqlBuilder } from '@prisma-next/sql-builder/runtime';\nimport type { Db } from '@prisma-next/sql-builder/types';\nimport type { ExtractCodecTypes, SqlStorage } from '@prisma-next/sql-contract/types';\nimport { orm as ormBuilder } from '@prisma-next/sql-orm-client';\nimport type { CodecTypesBase, RawSqlTag } from '@prisma-next/sql-relational-core/expression';\nimport { createRawSql } from '@prisma-next/sql-relational-core/expression';\nimport type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';\nimport type {\n BindSiteParams,\n Declaration,\n ExecutionContext,\n ParamsFromDeclaration,\n PreparedStatement,\n Runtime,\n SqlExecutionStackWithDriver,\n SqlMiddleware,\n SqlRuntimeExtensionDescriptor,\n VerifyMarkerOption,\n} from '@prisma-next/sql-runtime';\nimport {\n createExecutionContext,\n createRuntime,\n createSqlExecutionStack,\n} from '@prisma-next/sql-runtime';\nimport sqliteTarget from '@prisma-next/target-sqlite/runtime';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { resolveOptionalSqliteBinding, resolveSqliteBinding } from './binding';\n\nexport type SqliteTargetId = 'sqlite';\ntype OrmClient<TContract extends Contract<SqlStorage>> = ReturnType<typeof ormBuilder<TContract>>;\n\nexport interface SqliteClient<TContract extends Contract<SqlStorage>> {\n readonly sql: Db<TContract>;\n readonly orm: OrmClient<TContract>;\n readonly raw: RawSqlTag;\n readonly context: ExecutionContext<TContract>;\n readonly stack: SqlExecutionStackWithDriver<SqliteTargetId>;\n connect(bindingInput?: { readonly path: string }): Promise<Runtime>;\n runtime(): Runtime;\n prepare<\n D extends Declaration<CT>,\n Row,\n CT extends CodecTypesBase = ExtractCodecTypes<TContract> & CodecTypesBase,\n >(\n declaration: D,\n callback: (sql: Db<TContract>, params: BindSiteParams<D>) => SqlQueryPlan<Row>,\n ): Promise<PreparedStatement<ParamsFromDeclaration<D, CT>, Row>>;\n close(): Promise<void>;\n [Symbol.asyncDispose](): Promise<void>;\n}\n\nexport interface SqliteOptionsBase {\n readonly extensions?: readonly SqlRuntimeExtensionDescriptor<SqliteTargetId>[];\n readonly middleware?: readonly SqlMiddleware[];\n readonly verifyMarker?: VerifyMarkerOption;\n}\n\nexport type SqliteOptionsWithContract<TContract extends Contract<SqlStorage>> = {\n readonly path?: string;\n} & SqliteOptionsBase & {\n readonly contract: TContract;\n readonly contractJson?: never;\n };\n\nexport type SqliteOptionsWithContractJson<TContract extends Contract<SqlStorage>> = {\n readonly path?: string;\n readonly _contract?: TContract;\n} & SqliteOptionsBase & {\n readonly contractJson: unknown;\n readonly contract?: never;\n };\n\nexport type SqliteOptions<TContract extends Contract<SqlStorage>> =\n | SqliteOptionsWithContract<TContract>\n | SqliteOptionsWithContractJson<TContract>;\n\nfunction resolveContract<TContract extends Contract<SqlStorage>>(\n options: SqliteOptions<TContract>,\n): TContract {\n const contractInput =\n 'contractJson' in options && options.contractJson !== undefined\n ? options.contractJson\n : (options as SqliteOptionsWithContract<TContract>).contract;\n return new SqlContractSerializer().deserializeContract(contractInput) as TContract;\n}\n\nexport default function sqlite<TContract extends Contract<SqlStorage>>(\n options: SqliteOptionsWithContract<TContract>,\n): SqliteClient<TContract>;\nexport default function sqlite<TContract extends Contract<SqlStorage>>(\n options: SqliteOptionsWithContractJson<TContract>,\n): SqliteClient<TContract>;\nexport default function sqlite<TContract extends Contract<SqlStorage>>(\n options: SqliteOptions<TContract>,\n): SqliteClient<TContract> {\n const contract = resolveContract(options);\n let binding = resolveOptionalSqliteBinding(options);\n const stack = createSqlExecutionStack({\n target: sqliteTarget,\n adapter: sqliteAdapter,\n driver: sqliteDriver,\n extensionPacks: options.extensions ?? [],\n });\n\n const context = createExecutionContext({\n contract,\n stack,\n });\n\n const rawCodecInferer = stack.adapter.rawCodecInferer;\n const rawSqlTag: RawSqlTag = createRawSql(rawCodecInferer);\n\n const sql: Db<TContract> = sqlBuilder<TContract>({ context, rawCodecInferer });\n let runtimeInstance: Runtime | undefined;\n let runtimeDriver: { connect(binding: unknown): Promise<void> } | undefined;\n let driverConnected = false;\n let connectPromise: Promise<void> | undefined;\n let closePromise: Promise<void> | undefined;\n let backgroundConnectError: unknown;\n let closed = false;\n let ownedDispose: (() => Promise<void>) | undefined;\n\n const connectDriver = async (resolvedBinding: SqliteBinding): Promise<void> => {\n if (driverConnected) return;\n if (!runtimeDriver) throw new Error('SQLite runtime driver missing');\n if (connectPromise) return connectPromise;\n connectPromise = runtimeDriver\n .connect(resolvedBinding)\n .then(() => {\n driverConnected = true;\n })\n .catch((err) => {\n backgroundConnectError = err;\n connectPromise = undefined;\n throw err;\n });\n return connectPromise;\n };\n\n const getRuntime = (): Runtime => {\n if (closed) {\n throw new Error('SQLite client is closed');\n }\n\n if (backgroundConnectError !== undefined) {\n throw backgroundConnectError;\n }\n\n if (runtimeInstance) {\n return runtimeInstance;\n }\n\n const stackInstance = instantiateExecutionStack(stack);\n const driverDescriptor = stack.driver;\n if (!driverDescriptor) {\n throw new Error('Driver descriptor missing from execution stack');\n }\n\n const driver = driverDescriptor.create();\n ownedDispose = () => driver.close();\n runtimeDriver = driver;\n if (binding !== undefined) {\n void connectDriver(binding).catch(() => undefined);\n }\n\n runtimeInstance = createRuntime({\n stackInstance,\n context,\n driver,\n ...ifDefined('verifyMarker', options.verifyMarker),\n ...(options.middleware ? { middleware: options.middleware } : {}),\n });\n\n return runtimeInstance;\n };\n\n const orm: OrmClient<TContract> = ormBuilder({\n context,\n runtime: {\n execute(plan) {\n return getRuntime().execute(plan);\n },\n connection() {\n return getRuntime().connection();\n },\n },\n });\n\n return {\n sql,\n orm,\n raw: rawSqlTag,\n context,\n stack,\n async connect(bindingInput) {\n if (closed) {\n throw new Error('SQLite client is closed');\n }\n\n if (driverConnected || connectPromise) {\n throw new Error('SQLite client already connected');\n }\n\n backgroundConnectError = undefined;\n\n if (bindingInput !== undefined) {\n binding = resolveSqliteBinding(bindingInput);\n }\n\n if (binding === undefined) {\n throw new Error(\n 'SQLite binding not configured. Pass path to sqlite(...) or call db.connect({ path }).',\n );\n }\n\n const runtime = getRuntime();\n if (driverConnected) {\n return runtime;\n }\n\n await connectDriver(binding);\n return runtime;\n },\n runtime() {\n return getRuntime();\n },\n prepare<\n D extends Declaration<CT>,\n Row,\n CT extends CodecTypesBase = ExtractCodecTypes<TContract> & CodecTypesBase,\n >(\n declaration: D,\n callback: (sql: Db<TContract>, params: BindSiteParams<D>) => SqlQueryPlan<Row>,\n ): Promise<PreparedStatement<ParamsFromDeclaration<D, CT>, Row>> {\n return getRuntime().prepare<D, Row, CT>(declaration, (params) => callback(sql, params));\n },\n\n close(): Promise<void> {\n if (closePromise) return closePromise;\n closed = true;\n closePromise = (async () => {\n await connectPromise?.catch(() => undefined);\n await ownedDispose?.();\n })();\n return closePromise;\n },\n\n [Symbol.asyncDispose](): Promise<void> {\n return this.close();\n },\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,46 +1,50 @@
1
1
  {
2
2
  "name": "@prisma-next/sqlite",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "description": "One-liner lazy SQLite client composition for Prisma Next",
8
8
  "dependencies": {
9
- "@prisma-next/adapter-sqlite": "0.11.0",
10
- "@prisma-next/cli": "0.11.0",
11
- "@prisma-next/config": "0.11.0",
12
- "@prisma-next/contract": "0.11.0",
13
- "@prisma-next/driver-sqlite": "0.11.0",
14
- "@prisma-next/family-sql": "0.11.0",
15
- "@prisma-next/framework-components": "0.11.0",
16
- "@prisma-next/sql-builder": "0.11.0",
17
- "@prisma-next/sql-contract": "0.11.0",
18
- "@prisma-next/sql-contract-psl": "0.11.0",
19
- "@prisma-next/sql-contract-ts": "0.11.0",
20
- "@prisma-next/sql-orm-client": "0.11.0",
21
- "@prisma-next/sql-relational-core": "0.11.0",
22
- "@prisma-next/sql-runtime": "0.11.0",
23
- "@prisma-next/target-sqlite": "0.11.0",
24
- "@prisma-next/utils": "0.11.0",
9
+ "@prisma-next/adapter-sqlite": "0.12.0",
10
+ "@prisma-next/cli": "0.12.0",
11
+ "@prisma-next/config": "0.12.0",
12
+ "@prisma-next/contract": "0.12.0",
13
+ "@prisma-next/driver-sqlite": "0.12.0",
14
+ "@prisma-next/family-sql": "0.12.0",
15
+ "@prisma-next/framework-components": "0.12.0",
16
+ "@prisma-next/sql-builder": "0.12.0",
17
+ "@prisma-next/sql-contract": "0.12.0",
18
+ "@prisma-next/sql-contract-psl": "0.12.0",
19
+ "@prisma-next/sql-contract-ts": "0.12.0",
20
+ "@prisma-next/sql-orm-client": "0.12.0",
21
+ "@prisma-next/sql-relational-core": "0.12.0",
22
+ "@prisma-next/sql-runtime": "0.12.0",
23
+ "@prisma-next/target-sqlite": "0.12.0",
24
+ "@prisma-next/utils": "0.12.0",
25
25
  "pathe": "^2.0.3"
26
26
  },
27
27
  "devDependencies": {
28
- "@prisma-next/test-utils": "0.11.0",
29
- "@prisma-next/tsconfig": "0.11.0",
30
- "@prisma-next/tsdown": "0.11.0",
28
+ "@prisma-next/test-utils": "0.12.0",
29
+ "@prisma-next/tsconfig": "0.12.0",
30
+ "@prisma-next/tsdown": "0.12.0",
31
31
  "tsdown": "0.22.0",
32
32
  "typescript": "5.9.3",
33
33
  "vitest": "4.1.6"
34
34
  },
35
+ "peerDependencies": {
36
+ "typescript": ">=5.9"
37
+ },
38
+ "peerDependenciesMeta": {
39
+ "typescript": {
40
+ "optional": true
41
+ }
42
+ },
35
43
  "files": [
36
44
  "dist",
37
45
  "src"
38
46
  ],
39
- "repository": {
40
- "type": "git",
41
- "url": "https://github.com/prisma/prisma-next.git",
42
- "directory": "packages/3-extensions/sqlite"
43
- },
47
+ "types": "./dist/runtime.d.mts",
44
48
  "exports": {
45
49
  "./config": "./dist/config.mjs",
46
50
  "./contract-builder": "./dist/contract-builder.mjs",
@@ -49,7 +53,14 @@
49
53
  "./runtime": "./dist/runtime.mjs",
50
54
  "./package.json": "./package.json"
51
55
  },
52
- "types": "./dist/runtime.d.mts",
56
+ "engines": {
57
+ "node": ">=24"
58
+ },
59
+ "repository": {
60
+ "type": "git",
61
+ "url": "https://github.com/prisma/prisma-next.git",
62
+ "directory": "packages/3-extensions/sqlite"
63
+ },
53
64
  "scripts": {
54
65
  "build": "tsdown",
55
66
  "test": "vitest run --passWithNoTests",
@@ -8,10 +8,11 @@ import { prismaContract } from '@prisma-next/sql-contract-psl/provider';
8
8
  import { typescriptContractFromPath } from '@prisma-next/sql-contract-ts/config-types';
9
9
  import sqlite from '@prisma-next/target-sqlite/control';
10
10
  import { ifDefined } from '@prisma-next/utils/defined';
11
- import { extname } from 'pathe';
11
+ import { extname, join } from 'pathe';
12
12
 
13
13
  export interface SqliteConfigOptions {
14
14
  readonly contract: string;
15
+ readonly outputPath?: string;
15
16
  readonly db?: {
16
17
  readonly connection?: string;
17
18
  };
@@ -31,7 +32,10 @@ function deriveOutputPath(contractPath: string): string {
31
32
 
32
33
  export function defineConfig(options: SqliteConfigOptions): PrismaNextConfig<'sql', 'sqlite'> {
33
34
  const extensions = options.extensions ?? [];
34
- const output = deriveOutputPath(options.contract);
35
+ const output =
36
+ options.outputPath !== undefined
37
+ ? join(options.outputPath, 'contract.json')
38
+ : deriveOutputPath(options.contract);
35
39
  const ext = extname(options.contract);
36
40
 
37
41
  const contractConfig =
@@ -15,112 +15,84 @@ type SqlitePack = typeof sqlitePack;
15
15
  type TypesConstraint = Record<string, StorageTypeInstance>;
16
16
  type ModelsConstraint = Record<string, ModelLike>;
17
17
 
18
- // Return type threaded with all inferred type params.
19
- // We override target/targetFamily via intersection to preserve the literal values
20
- // ('sqlite', 'sql') even when TypeScript defers conditional-type evaluation on
21
- // unresolved generic params.
22
18
  type SqliteResult<
23
19
  Types extends TypesConstraint,
24
20
  Models extends ModelsConstraint,
25
21
  ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined,
26
- Capabilities extends Record<string, Record<string, boolean>> | undefined,
27
22
  > = Omit<
28
- ReturnType<
29
- typeof baseDefineContract<SqlFamily, SqlitePack, Types, Models, ExtensionPacks, Capabilities>
30
- >,
23
+ ReturnType<typeof baseDefineContract<SqlFamily, SqlitePack, Types, Models, ExtensionPacks>>,
31
24
  'target' | 'targetFamily'
32
25
  > & {
33
26
  readonly target: SqlitePack['targetId'];
34
27
  readonly targetFamily: SqlFamily['familyId'];
35
28
  };
36
29
 
37
- // Scaffold that carries all ContractInput fields EXCEPT family, target, types, models.
38
- // Built from ContractInput with concrete Record<never, never> defaults to avoid
39
- // the ContractInput Models constraint (which requires ContractModelBuilder, not ModelLike).
40
30
  type SqliteBaseScaffold<
41
31
  ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined,
42
- Capabilities extends Record<string, Record<string, boolean>> | undefined,
43
32
  > = Omit<
44
- ContractInput<
45
- SqlFamily,
46
- SqlitePack,
47
- Record<never, never>,
48
- Record<never, never>,
49
- ExtensionPacks,
50
- Capabilities
51
- >,
33
+ ContractInput<SqlFamily, SqlitePack, Record<never, never>, Record<never, never>, ExtensionPacks>,
52
34
  'family' | 'target' | 'types' | 'models'
53
35
  >;
54
36
 
55
- // Definition form: inline types + models (uses ModelLike for models, not ContractModelBuilder)
56
37
  type SqliteDefinition<
57
38
  Types extends TypesConstraint,
58
39
  Models extends ModelsConstraint,
59
40
  ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined,
60
- Capabilities extends Record<string, Record<string, boolean>> | undefined,
61
- > = SqliteBaseScaffold<ExtensionPacks, Capabilities> & {
41
+ > = SqliteBaseScaffold<ExtensionPacks> & {
62
42
  readonly types?: Types;
63
43
  readonly models?: Models;
64
44
  };
65
45
 
66
- // Factory form: scaffold without types/models (factory provides them)
67
46
  type SqliteScaffold<
68
47
  ExtensionPacks extends Record<string, ExtensionPackRef<'sql', string>> | undefined,
69
- Capabilities extends Record<string, Record<string, boolean>> | undefined,
70
- > = SqliteBaseScaffold<ExtensionPacks, Capabilities>;
48
+ > = SqliteBaseScaffold<ExtensionPacks>;
71
49
 
72
- // Overload 1: definition form (models/types inline in scaffold)
73
50
  export function defineContract<
74
51
  const Types extends TypesConstraint = Record<never, never>,
75
52
  const Models extends ModelsConstraint = Record<never, never>,
76
53
  const ExtensionPacks extends
77
54
  | Record<string, ExtensionPackRef<'sql', string>>
78
55
  | undefined = undefined,
79
- const Capabilities extends Record<string, Record<string, boolean>> | undefined = undefined,
80
56
  >(
81
- definition: SqliteDefinition<Types, Models, ExtensionPacks, Capabilities>,
82
- ): SqliteResult<Types, Models, ExtensionPacks, Capabilities>;
57
+ definition: SqliteDefinition<Types, Models, ExtensionPacks>,
58
+ ): SqliteResult<Types, Models, ExtensionPacks>;
83
59
 
84
- // Overload 2: factory form (scaffold without models/types; factory provides them)
85
60
  export function defineContract<
86
61
  const Types extends TypesConstraint = Record<never, never>,
87
62
  const Models extends ModelsConstraint = Record<never, never>,
88
63
  const ExtensionPacks extends
89
64
  | Record<string, ExtensionPackRef<'sql', string>>
90
65
  | undefined = undefined,
91
- const Capabilities extends Record<string, Record<string, boolean>> | undefined = undefined,
92
66
  >(
93
- scaffold: SqliteScaffold<ExtensionPacks, Capabilities>,
67
+ scaffold: SqliteScaffold<ExtensionPacks>,
94
68
  factory: (helpers: ComposedAuthoringHelpers<SqlFamily, SqlitePack, ExtensionPacks>) => {
95
69
  readonly types?: Types;
96
70
  readonly models?: Models;
97
71
  },
98
- ): SqliteResult<Types, Models, ExtensionPacks, Capabilities>;
72
+ ): SqliteResult<Types, Models, ExtensionPacks>;
99
73
 
100
- // Implementation — the runtime type is richer than the wide impl signature;
101
- // as unknown is safe because every declared overload produces a SqliteResult.
102
74
  export function defineContract(
103
75
  scaffold: Omit<ContractInput, 'family' | 'target'>,
104
76
  factory?: (helpers: ComposedAuthoringHelpers<SqlFamily, SqlitePack, undefined>) => {
105
77
  readonly types?: TypesConstraint;
106
78
  readonly models?: ModelsConstraint;
107
79
  },
108
- ): SqliteResult<TypesConstraint, ModelsConstraint, undefined, undefined> {
80
+ ): SqliteResult<TypesConstraint, ModelsConstraint, undefined> {
109
81
  const full = {
110
82
  ...scaffold,
111
83
  family: sqlFamilyPack,
112
84
  target: sqlitePack,
113
85
  } as ContractInput;
114
86
  if (factory !== undefined) {
87
+ const { types: _t, models: _m, ...scaffoldOnly } = full;
115
88
  return baseDefineContract(
116
- full,
89
+ scaffoldOnly,
117
90
  factory as Parameters<typeof baseDefineContract>[1],
118
- ) as unknown as SqliteResult<TypesConstraint, ModelsConstraint, undefined, undefined>;
91
+ ) as unknown as SqliteResult<TypesConstraint, ModelsConstraint, undefined>;
119
92
  }
120
93
  return baseDefineContract(full) as unknown as SqliteResult<
121
94
  TypesConstraint,
122
95
  ModelsConstraint,
123
- undefined,
124
96
  undefined
125
97
  >;
126
98
  }
@@ -8,7 +8,8 @@ import { sql as sqlBuilder } from '@prisma-next/sql-builder/runtime';
8
8
  import type { Db } from '@prisma-next/sql-builder/types';
9
9
  import type { ExtractCodecTypes, SqlStorage } from '@prisma-next/sql-contract/types';
10
10
  import { orm as ormBuilder } from '@prisma-next/sql-orm-client';
11
- import type { CodecTypesBase } from '@prisma-next/sql-relational-core/expression';
11
+ import type { CodecTypesBase, RawSqlTag } from '@prisma-next/sql-relational-core/expression';
12
+ import { createRawSql } from '@prisma-next/sql-relational-core/expression';
12
13
  import type { SqlQueryPlan } from '@prisma-next/sql-relational-core/plan';
13
14
  import type {
14
15
  BindSiteParams,
@@ -17,10 +18,10 @@ import type {
17
18
  ParamsFromDeclaration,
18
19
  PreparedStatement,
19
20
  Runtime,
20
- RuntimeVerifyOptions,
21
21
  SqlExecutionStackWithDriver,
22
22
  SqlMiddleware,
23
23
  SqlRuntimeExtensionDescriptor,
24
+ VerifyMarkerOption,
24
25
  } from '@prisma-next/sql-runtime';
25
26
  import {
26
27
  createExecutionContext,
@@ -28,6 +29,7 @@ import {
28
29
  createSqlExecutionStack,
29
30
  } from '@prisma-next/sql-runtime';
30
31
  import sqliteTarget from '@prisma-next/target-sqlite/runtime';
32
+ import { ifDefined } from '@prisma-next/utils/defined';
31
33
  import { resolveOptionalSqliteBinding, resolveSqliteBinding } from './binding';
32
34
 
33
35
  export type SqliteTargetId = 'sqlite';
@@ -36,6 +38,7 @@ type OrmClient<TContract extends Contract<SqlStorage>> = ReturnType<typeof ormBu
36
38
  export interface SqliteClient<TContract extends Contract<SqlStorage>> {
37
39
  readonly sql: Db<TContract>;
38
40
  readonly orm: OrmClient<TContract>;
41
+ readonly raw: RawSqlTag;
39
42
  readonly context: ExecutionContext<TContract>;
40
43
  readonly stack: SqlExecutionStackWithDriver<SqliteTargetId>;
41
44
  connect(bindingInput?: { readonly path: string }): Promise<Runtime>;
@@ -55,7 +58,7 @@ export interface SqliteClient<TContract extends Contract<SqlStorage>> {
55
58
  export interface SqliteOptionsBase {
56
59
  readonly extensions?: readonly SqlRuntimeExtensionDescriptor<SqliteTargetId>[];
57
60
  readonly middleware?: readonly SqlMiddleware[];
58
- readonly verify?: RuntimeVerifyOptions;
61
+ readonly verifyMarker?: VerifyMarkerOption;
59
62
  }
60
63
 
61
64
  export type SqliteOptionsWithContract<TContract extends Contract<SqlStorage>> = {
@@ -110,7 +113,10 @@ export default function sqlite<TContract extends Contract<SqlStorage>>(
110
113
  stack,
111
114
  });
112
115
 
113
- const sql: Db<TContract> = sqlBuilder<TContract>({ context });
116
+ const rawCodecInferer = stack.adapter.rawCodecInferer;
117
+ const rawSqlTag: RawSqlTag = createRawSql(rawCodecInferer);
118
+
119
+ const sql: Db<TContract> = sqlBuilder<TContract>({ context, rawCodecInferer });
114
120
  let runtimeInstance: Runtime | undefined;
115
121
  let runtimeDriver: { connect(binding: unknown): Promise<void> } | undefined;
116
122
  let driverConnected = false;
@@ -167,7 +173,7 @@ export default function sqlite<TContract extends Contract<SqlStorage>>(
167
173
  stackInstance,
168
174
  context,
169
175
  driver,
170
- verify: options.verify ?? { mode: 'onFirstUse', requireMarker: false },
176
+ ...ifDefined('verifyMarker', options.verifyMarker),
171
177
  ...(options.middleware ? { middleware: options.middleware } : {}),
172
178
  });
173
179
 
@@ -189,6 +195,7 @@ export default function sqlite<TContract extends Contract<SqlStorage>>(
189
195
  return {
190
196
  sql,
191
197
  orm,
198
+ raw: rawSqlTag,
192
199
  context,
193
200
  stack,
194
201
  async connect(bindingInput) {