@prisma-next/sql-runtime 0.3.0-dev.12 → 0.3.0-dev.122

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.
Files changed (169) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +141 -24
  3. package/dist/exports-BKjZvwMh.mjs +971 -0
  4. package/dist/exports-BKjZvwMh.mjs.map +1 -0
  5. package/dist/index-eHiENgIB.d.mts +182 -0
  6. package/dist/index-eHiENgIB.d.mts.map +1 -0
  7. package/dist/index.d.mts +2 -0
  8. package/dist/index.mjs +3 -0
  9. package/dist/test/utils.d.mts +82 -0
  10. package/dist/test/utils.d.mts.map +1 -0
  11. package/dist/test/utils.mjs +221 -0
  12. package/dist/test/utils.mjs.map +1 -0
  13. package/package.json +29 -22
  14. package/src/codecs/decoding.ts +84 -3
  15. package/src/codecs/encoding.ts +5 -15
  16. package/src/codecs/json-schema-validation.ts +61 -0
  17. package/src/exports/index.ts +19 -7
  18. package/src/lower-sql-plan.ts +8 -8
  19. package/src/plugins/budgets.ts +375 -0
  20. package/src/plugins/lints.ts +211 -0
  21. package/src/sql-context.ts +448 -98
  22. package/src/sql-family-adapter.ts +9 -5
  23. package/src/sql-marker.ts +2 -2
  24. package/src/sql-runtime.ts +126 -30
  25. package/test/async-iterable-result.test.ts +43 -35
  26. package/test/budgets.test.ts +481 -0
  27. package/test/context.types.test-d.ts +68 -0
  28. package/test/execution-stack.test.ts +166 -0
  29. package/test/json-schema-validation.test.ts +575 -0
  30. package/test/lints.test.ts +161 -0
  31. package/test/mutation-default-generators.test.ts +256 -0
  32. package/test/parameterized-types.test.ts +536 -0
  33. package/test/sql-context.test.ts +293 -121
  34. package/test/sql-family-adapter.test.ts +8 -10
  35. package/test/sql-runtime.test.ts +219 -34
  36. package/test/utils.ts +90 -51
  37. package/dist/accelerate-EEKAFGN3-P6A6XJWJ.js +0 -137863
  38. package/dist/accelerate-EEKAFGN3-P6A6XJWJ.js.map +0 -1
  39. package/dist/amcheck-24VY6X5V.js +0 -13
  40. package/dist/amcheck-24VY6X5V.js.map +0 -1
  41. package/dist/bloom-VS74NLHT.js +0 -13
  42. package/dist/bloom-VS74NLHT.js.map +0 -1
  43. package/dist/btree_gin-WBC4EAAI.js +0 -13
  44. package/dist/btree_gin-WBC4EAAI.js.map +0 -1
  45. package/dist/btree_gist-UNC6QD3M.js +0 -13
  46. package/dist/btree_gist-UNC6QD3M.js.map +0 -1
  47. package/dist/chunk-3KTOEDFX.js +0 -49
  48. package/dist/chunk-3KTOEDFX.js.map +0 -1
  49. package/dist/chunk-47DZBRQC.js +0 -1280
  50. package/dist/chunk-47DZBRQC.js.map +0 -1
  51. package/dist/chunk-52N6AFZM.js +0 -133
  52. package/dist/chunk-52N6AFZM.js.map +0 -1
  53. package/dist/chunk-7D4SUZUM.js +0 -38
  54. package/dist/chunk-7D4SUZUM.js.map +0 -1
  55. package/dist/chunk-C6I3V3DM.js +0 -455
  56. package/dist/chunk-C6I3V3DM.js.map +0 -1
  57. package/dist/chunk-ECWIHLAT.js +0 -37
  58. package/dist/chunk-ECWIHLAT.js.map +0 -1
  59. package/dist/chunk-EI626SDC.js +0 -105
  60. package/dist/chunk-EI626SDC.js.map +0 -1
  61. package/dist/chunk-UKKOYUGL.js +0 -578
  62. package/dist/chunk-UKKOYUGL.js.map +0 -1
  63. package/dist/chunk-XPLNMXQV.js +0 -1537
  64. package/dist/chunk-XPLNMXQV.js.map +0 -1
  65. package/dist/citext-T7MXGUY7.js +0 -13
  66. package/dist/citext-T7MXGUY7.js.map +0 -1
  67. package/dist/client-5FENX6AW.js +0 -299
  68. package/dist/client-5FENX6AW.js.map +0 -1
  69. package/dist/cube-TFDQBZCI.js +0 -13
  70. package/dist/cube-TFDQBZCI.js.map +0 -1
  71. package/dist/dict_int-AEUOPGWP.js +0 -13
  72. package/dist/dict_int-AEUOPGWP.js.map +0 -1
  73. package/dist/dict_xsyn-DAAYX3FL.js +0 -13
  74. package/dist/dict_xsyn-DAAYX3FL.js.map +0 -1
  75. package/dist/dist-AQ3LWXOX.js +0 -570
  76. package/dist/dist-AQ3LWXOX.js.map +0 -1
  77. package/dist/dist-LBVX6BJW.js +0 -189
  78. package/dist/dist-LBVX6BJW.js.map +0 -1
  79. package/dist/dist-WLKUVDN2.js +0 -5127
  80. package/dist/dist-WLKUVDN2.js.map +0 -1
  81. package/dist/earthdistance-KIGTF4LE.js +0 -13
  82. package/dist/earthdistance-KIGTF4LE.js.map +0 -1
  83. package/dist/file_fdw-5N55UP6I.js +0 -13
  84. package/dist/file_fdw-5N55UP6I.js.map +0 -1
  85. package/dist/fuzzystrmatch-KN3YWBFP.js +0 -13
  86. package/dist/fuzzystrmatch-KN3YWBFP.js.map +0 -1
  87. package/dist/hstore-YX726NKN.js +0 -13
  88. package/dist/hstore-YX726NKN.js.map +0 -1
  89. package/dist/http-exception-FZY2H4OF.js +0 -8
  90. package/dist/http-exception-FZY2H4OF.js.map +0 -1
  91. package/dist/index.js +0 -30
  92. package/dist/index.js.map +0 -1
  93. package/dist/intarray-NKVXNO2D.js +0 -13
  94. package/dist/intarray-NKVXNO2D.js.map +0 -1
  95. package/dist/isn-FTEMJGEV.js +0 -13
  96. package/dist/isn-FTEMJGEV.js.map +0 -1
  97. package/dist/lo-DB7L4NGI.js +0 -13
  98. package/dist/lo-DB7L4NGI.js.map +0 -1
  99. package/dist/logger-WQ7SHNDD.js +0 -68
  100. package/dist/logger-WQ7SHNDD.js.map +0 -1
  101. package/dist/ltree-Z32TZT6W.js +0 -13
  102. package/dist/ltree-Z32TZT6W.js.map +0 -1
  103. package/dist/nodefs-NM46ACH7.js +0 -31
  104. package/dist/nodefs-NM46ACH7.js.map +0 -1
  105. package/dist/opfs-ahp-NJO33LVZ.js +0 -332
  106. package/dist/opfs-ahp-NJO33LVZ.js.map +0 -1
  107. package/dist/pageinspect-YP3IZR4X.js +0 -13
  108. package/dist/pageinspect-YP3IZR4X.js.map +0 -1
  109. package/dist/pg_buffercache-7TD5J2FB.js +0 -13
  110. package/dist/pg_buffercache-7TD5J2FB.js.map +0 -1
  111. package/dist/pg_dump-SG4KYBUB.js +0 -2492
  112. package/dist/pg_dump-SG4KYBUB.js.map +0 -1
  113. package/dist/pg_freespacemap-DZDNCPZK.js +0 -13
  114. package/dist/pg_freespacemap-DZDNCPZK.js.map +0 -1
  115. package/dist/pg_surgery-J2MUEWEP.js +0 -13
  116. package/dist/pg_surgery-J2MUEWEP.js.map +0 -1
  117. package/dist/pg_trgm-7VNQOYS6.js +0 -13
  118. package/dist/pg_trgm-7VNQOYS6.js.map +0 -1
  119. package/dist/pg_visibility-TTSIPHFL.js +0 -13
  120. package/dist/pg_visibility-TTSIPHFL.js.map +0 -1
  121. package/dist/pg_walinspect-KPFHSHRJ.js +0 -13
  122. package/dist/pg_walinspect-KPFHSHRJ.js.map +0 -1
  123. package/dist/proxy-signals-GUDAMDHV.js +0 -39
  124. package/dist/proxy-signals-GUDAMDHV.js.map +0 -1
  125. package/dist/seg-IYVDLE4O.js +0 -13
  126. package/dist/seg-IYVDLE4O.js.map +0 -1
  127. package/dist/src/codecs/decoding.d.ts +0 -4
  128. package/dist/src/codecs/decoding.d.ts.map +0 -1
  129. package/dist/src/codecs/encoding.d.ts +0 -5
  130. package/dist/src/codecs/encoding.d.ts.map +0 -1
  131. package/dist/src/codecs/validation.d.ts +0 -6
  132. package/dist/src/codecs/validation.d.ts.map +0 -1
  133. package/dist/src/exports/index.d.ts +0 -11
  134. package/dist/src/exports/index.d.ts.map +0 -1
  135. package/dist/src/index.d.ts +0 -2
  136. package/dist/src/index.d.ts.map +0 -1
  137. package/dist/src/lower-sql-plan.d.ts +0 -15
  138. package/dist/src/lower-sql-plan.d.ts.map +0 -1
  139. package/dist/src/sql-context.d.ts +0 -65
  140. package/dist/src/sql-context.d.ts.map +0 -1
  141. package/dist/src/sql-family-adapter.d.ts +0 -10
  142. package/dist/src/sql-family-adapter.d.ts.map +0 -1
  143. package/dist/src/sql-marker.d.ts +0 -22
  144. package/dist/src/sql-marker.d.ts.map +0 -1
  145. package/dist/src/sql-runtime.d.ts +0 -25
  146. package/dist/src/sql-runtime.d.ts.map +0 -1
  147. package/dist/tablefunc-EF4RCS7S.js +0 -13
  148. package/dist/tablefunc-EF4RCS7S.js.map +0 -1
  149. package/dist/tcn-3VT5BQYW.js +0 -13
  150. package/dist/tcn-3VT5BQYW.js.map +0 -1
  151. package/dist/test/utils.d.ts +0 -59
  152. package/dist/test/utils.d.ts.map +0 -1
  153. package/dist/test/utils.js +0 -24634
  154. package/dist/test/utils.js.map +0 -1
  155. package/dist/tiny-CW6F4GX6.js +0 -10
  156. package/dist/tiny-CW6F4GX6.js.map +0 -1
  157. package/dist/tsm_system_rows-ES7KNUQH.js +0 -13
  158. package/dist/tsm_system_rows-ES7KNUQH.js.map +0 -1
  159. package/dist/tsm_system_time-76WEIMBG.js +0 -13
  160. package/dist/tsm_system_time-76WEIMBG.js.map +0 -1
  161. package/dist/unaccent-7RYF3R64.js +0 -13
  162. package/dist/unaccent-7RYF3R64.js.map +0 -1
  163. package/dist/utility-Q5A254LJ-J4HTKZPT.js +0 -347
  164. package/dist/utility-Q5A254LJ-J4HTKZPT.js.map +0 -1
  165. package/dist/uuid_ossp-4ETE4FPE.js +0 -13
  166. package/dist/uuid_ossp-4ETE4FPE.js.map +0 -1
  167. package/dist/vector-74GPNV7V.js +0 -13
  168. package/dist/vector-74GPNV7V.js.map +0 -1
  169. package/src/index.ts +0 -1
@@ -0,0 +1,166 @@
1
+ import { createExecutionStack } from '@prisma-next/core-execution-plane/stack';
2
+ import { codec, createCodecRegistry } from '@prisma-next/sql-relational-core/ast';
3
+ import { describe, expect, it } from 'vitest';
4
+ import { createExecutionContext, createSqlExecutionStack } from '../src/exports';
5
+ import type {
6
+ ExecutionContext,
7
+ SqlRuntimeAdapterDescriptor,
8
+ SqlRuntimeExtensionDescriptor,
9
+ SqlRuntimeTargetDescriptor,
10
+ } from '../src/sql-context';
11
+ import { createTestContract } from './utils';
12
+
13
+ function createStubAdapterDescriptor(): SqlRuntimeAdapterDescriptor<'postgres'> {
14
+ const registry = createCodecRegistry();
15
+ registry.register(
16
+ codec({
17
+ typeId: 'pg/text@1',
18
+ targetTypes: ['text'],
19
+ encode: (value: string) => value,
20
+ decode: (wire: string) => wire,
21
+ }),
22
+ );
23
+
24
+ return {
25
+ kind: 'adapter',
26
+ id: 'test-adapter',
27
+ version: '0.0.1',
28
+ familyId: 'sql' as const,
29
+ targetId: 'postgres' as const,
30
+ codecs: () => registry,
31
+ operationSignatures: () => [],
32
+ parameterizedCodecs: () => [],
33
+ create() {
34
+ return Object.assign(
35
+ { familyId: 'sql' as const, targetId: 'postgres' as const },
36
+ {
37
+ profile: {
38
+ id: 'test-profile',
39
+ target: 'postgres',
40
+ capabilities: {},
41
+ codecs: () => registry,
42
+ },
43
+ lower() {
44
+ return {
45
+ profileId: 'test-profile',
46
+ body: Object.freeze({ sql: '', params: [] }),
47
+ };
48
+ },
49
+ },
50
+ );
51
+ },
52
+ };
53
+ }
54
+
55
+ function createStubTargetDescriptor(): SqlRuntimeTargetDescriptor<'postgres'> {
56
+ return {
57
+ kind: 'target',
58
+ id: 'postgres',
59
+ version: '0.0.1',
60
+ familyId: 'sql' as const,
61
+ targetId: 'postgres' as const,
62
+ codecs: () => createCodecRegistry(),
63
+ operationSignatures: () => [],
64
+ parameterizedCodecs: () => [],
65
+ create() {
66
+ return { familyId: 'sql' as const, targetId: 'postgres' as const };
67
+ },
68
+ };
69
+ }
70
+
71
+ function createStubExtensionDescriptor(): SqlRuntimeExtensionDescriptor<'postgres'> {
72
+ const registry = createCodecRegistry();
73
+ registry.register(
74
+ codec({
75
+ typeId: 'pg/uuid@1',
76
+ targetTypes: ['uuid'],
77
+ encode: (value: string) => value,
78
+ decode: (wire: string) => wire,
79
+ }),
80
+ );
81
+
82
+ const operations = [
83
+ {
84
+ forTypeId: 'pg/text@1',
85
+ method: 'example',
86
+ args: [],
87
+ returns: { kind: 'builtin' as const, type: 'string' as const },
88
+ lowering: {
89
+ targetFamily: 'sql' as const,
90
+ strategy: 'function' as const,
91
+ template: 'example({args})',
92
+ },
93
+ },
94
+ ];
95
+
96
+ return {
97
+ kind: 'extension',
98
+ id: 'test-extension',
99
+ version: '0.0.1',
100
+ familyId: 'sql' as const,
101
+ targetId: 'postgres' as const,
102
+ codecs: () => registry,
103
+ operationSignatures: () => operations,
104
+ parameterizedCodecs: () => [],
105
+ create() {
106
+ return {
107
+ familyId: 'sql' as const,
108
+ targetId: 'postgres' as const,
109
+ };
110
+ },
111
+ };
112
+ }
113
+
114
+ describe('createExecutionStack', () => {
115
+ it('defaults driver to undefined and extensions to empty', () => {
116
+ const stack = createExecutionStack({
117
+ target: createStubTargetDescriptor(),
118
+ adapter: createStubAdapterDescriptor(),
119
+ });
120
+
121
+ expect(stack.driver).toBeUndefined();
122
+ expect(stack.extensionPacks).toEqual([]);
123
+ });
124
+
125
+ it('creates an execution context from descriptors-only stack', () => {
126
+ const contract = createTestContract({
127
+ storage: { tables: {} },
128
+ });
129
+
130
+ const context = createExecutionContext({
131
+ contract,
132
+ stack: {
133
+ target: createStubTargetDescriptor(),
134
+ adapter: createStubAdapterDescriptor(),
135
+ extensionPacks: [createStubExtensionDescriptor()],
136
+ },
137
+ }) as ExecutionContext<typeof contract>;
138
+
139
+ expect(context.contract).toBe(contract);
140
+ expect(context.codecs.get('pg/text@1')).toBeDefined();
141
+ expect(context.codecs.get('pg/uuid@1')).toBeDefined();
142
+ expect(context.operations.byType('pg/text@1')).toHaveLength(1);
143
+ expect(context.types).toEqual({});
144
+ });
145
+ });
146
+
147
+ describe('createSqlExecutionStack', () => {
148
+ it('preserves descriptor references and defaults extensions', () => {
149
+ const target = createStubTargetDescriptor();
150
+ const adapter = createStubAdapterDescriptor();
151
+ const stack = createSqlExecutionStack({ target, adapter });
152
+
153
+ expect(stack.target).toBe(target);
154
+ expect(stack.adapter).toBe(adapter);
155
+ expect(stack.extensionPacks).toEqual([]);
156
+ });
157
+
158
+ it('keeps extension packs intact', () => {
159
+ const target = createStubTargetDescriptor();
160
+ const adapter = createStubAdapterDescriptor();
161
+ const extension = createStubExtensionDescriptor();
162
+ const stack = createSqlExecutionStack({ target, adapter, extensionPacks: [extension] });
163
+
164
+ expect(stack.extensionPacks).toEqual([extension]);
165
+ });
166
+ });