@subsquid/openreader 1.0.3 → 2.0.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.
Files changed (279) hide show
  1. package/bin/main.js +1 -1
  2. package/lib/context.d.ts +11 -0
  3. package/lib/context.d.ts.map +1 -0
  4. package/lib/context.js +3 -0
  5. package/lib/context.js.map +1 -0
  6. package/lib/db.d.ts +23 -0
  7. package/lib/db.d.ts.map +1 -0
  8. package/lib/db.js +57 -0
  9. package/lib/db.js.map +1 -0
  10. package/{dist → lib}/dialect.d.ts +0 -0
  11. package/{dist → lib}/dialect.d.ts.map +0 -0
  12. package/{dist → lib}/dialect.js +0 -0
  13. package/{dist → lib}/dialect.js.map +0 -0
  14. package/lib/ir/args.d.ts +47 -0
  15. package/lib/ir/args.d.ts.map +1 -0
  16. package/lib/ir/args.js +3 -0
  17. package/lib/ir/args.js.map +1 -0
  18. package/lib/ir/connection.d.ts +30 -0
  19. package/lib/ir/connection.d.ts.map +1 -0
  20. package/lib/ir/connection.js +17 -0
  21. package/lib/ir/connection.js.map +1 -0
  22. package/lib/ir/fields.d.ts +22 -0
  23. package/lib/ir/fields.d.ts.map +1 -0
  24. package/lib/ir/fields.js +3 -0
  25. package/lib/ir/fields.js.map +1 -0
  26. package/lib/limit.size.d.ts +3 -0
  27. package/lib/limit.size.d.ts.map +1 -0
  28. package/lib/limit.size.js +44 -0
  29. package/lib/limit.size.js.map +1 -0
  30. package/{dist → lib}/main.d.ts +0 -0
  31. package/{dist → lib}/main.d.ts.map +0 -0
  32. package/lib/main.js +53 -0
  33. package/lib/main.js.map +1 -0
  34. package/{dist → lib}/model.d.ts +10 -1
  35. package/lib/model.d.ts.map +1 -0
  36. package/{dist → lib}/model.js +0 -0
  37. package/{dist → lib}/model.js.map +0 -0
  38. package/{dist/gql/schema.d.ts → lib/model.schema.d.ts} +2 -2
  39. package/lib/model.schema.d.ts.map +1 -0
  40. package/{dist/gql/schema.js → lib/model.schema.js} +44 -7
  41. package/lib/model.schema.js.map +1 -0
  42. package/{dist → lib}/model.tools.d.ts +0 -0
  43. package/{dist → lib}/model.tools.d.ts.map +0 -0
  44. package/{dist → lib}/model.tools.js +0 -0
  45. package/{dist → lib}/model.tools.js.map +0 -0
  46. package/{dist → lib/opencrud}/orderBy.d.ts +2 -5
  47. package/lib/opencrud/orderBy.d.ts.map +1 -0
  48. package/{dist → lib/opencrud}/orderBy.js +1 -1
  49. package/lib/opencrud/orderBy.js.map +1 -0
  50. package/lib/opencrud/schema.d.ts +31 -0
  51. package/lib/opencrud/schema.d.ts.map +1 -0
  52. package/lib/opencrud/schema.js +522 -0
  53. package/lib/opencrud/schema.js.map +1 -0
  54. package/lib/opencrud/tree.d.ts +8 -0
  55. package/lib/opencrud/tree.d.ts.map +1 -0
  56. package/lib/opencrud/tree.js +131 -0
  57. package/lib/opencrud/tree.js.map +1 -0
  58. package/lib/opencrud/where.d.ts +7 -0
  59. package/lib/opencrud/where.d.ts.map +1 -0
  60. package/lib/opencrud/where.js +141 -0
  61. package/lib/opencrud/where.js.map +1 -0
  62. package/{dist/gql → lib}/scalars/BigInt.d.ts +0 -0
  63. package/lib/scalars/BigInt.d.ts.map +1 -0
  64. package/{dist/gql → lib}/scalars/BigInt.js +1 -1
  65. package/lib/scalars/BigInt.js.map +1 -0
  66. package/{dist/gql → lib}/scalars/Bytes.d.ts +0 -0
  67. package/lib/scalars/Bytes.d.ts.map +1 -0
  68. package/{dist/gql → lib}/scalars/Bytes.js +2 -2
  69. package/lib/scalars/Bytes.js.map +1 -0
  70. package/{dist/gql → lib}/scalars/DateTime.d.ts +0 -0
  71. package/lib/scalars/DateTime.d.ts.map +1 -0
  72. package/{dist/gql → lib}/scalars/DateTime.js +1 -1
  73. package/lib/scalars/DateTime.js.map +1 -0
  74. package/{dist/gql → lib}/scalars/JSON.d.ts +0 -0
  75. package/lib/scalars/JSON.d.ts.map +1 -0
  76. package/{dist/gql → lib}/scalars/JSON.js +0 -0
  77. package/lib/scalars/JSON.js.map +1 -0
  78. package/{dist/gql → lib}/scalars/index.d.ts +0 -0
  79. package/lib/scalars/index.d.ts.map +1 -0
  80. package/{dist/gql → lib}/scalars/index.js +0 -0
  81. package/lib/scalars/index.js.map +1 -0
  82. package/lib/server.d.ts +38 -0
  83. package/lib/server.d.ts.map +1 -0
  84. package/lib/server.js +146 -0
  85. package/lib/server.js.map +1 -0
  86. package/lib/sql/cursor.d.ts +52 -0
  87. package/lib/sql/cursor.d.ts.map +1 -0
  88. package/lib/sql/cursor.js +234 -0
  89. package/lib/sql/cursor.js.map +1 -0
  90. package/lib/sql/mapping.d.ts +4 -0
  91. package/lib/sql/mapping.d.ts.map +1 -0
  92. package/lib/sql/mapping.js +71 -0
  93. package/lib/sql/mapping.js.map +1 -0
  94. package/lib/sql/printer.d.ts +37 -0
  95. package/lib/sql/printer.d.ts.map +1 -0
  96. package/lib/sql/printer.js +311 -0
  97. package/lib/sql/printer.js.map +1 -0
  98. package/lib/sql/query.d.ts +46 -0
  99. package/lib/sql/query.d.ts.map +1 -0
  100. package/lib/sql/query.js +134 -0
  101. package/lib/sql/query.js.map +1 -0
  102. package/lib/sql/util.d.ts +30 -0
  103. package/lib/sql/util.d.ts.map +1 -0
  104. package/lib/sql/util.js +75 -0
  105. package/lib/sql/util.js.map +1 -0
  106. package/lib/subscription.d.ts +18 -0
  107. package/lib/subscription.d.ts.map +1 -0
  108. package/lib/subscription.js +47 -0
  109. package/lib/subscription.js.map +1 -0
  110. package/{dist → lib}/test/basic.test.d.ts +0 -0
  111. package/{dist → lib}/test/basic.test.d.ts.map +0 -0
  112. package/{dist → lib}/test/basic.test.js +0 -0
  113. package/{dist → lib}/test/basic.test.js.map +0 -0
  114. package/{dist → lib}/test/connection.test.d.ts +0 -0
  115. package/{dist → lib}/test/connection.test.d.ts.map +0 -0
  116. package/{dist → lib}/test/connection.test.js +0 -0
  117. package/{dist → lib}/test/connection.test.js.map +0 -0
  118. package/{dist → lib}/test/fts.test.d.ts +0 -0
  119. package/{dist → lib}/test/fts.test.d.ts.map +0 -0
  120. package/{dist → lib}/test/fts.test.js +1 -1
  121. package/lib/test/fts.test.js.map +1 -0
  122. package/{dist → lib}/test/isNull.test.d.ts +0 -0
  123. package/{dist → lib}/test/isNull.test.d.ts.map +0 -0
  124. package/{dist → lib}/test/isNull.test.js +0 -0
  125. package/{dist → lib}/test/isNull.test.js.map +0 -0
  126. package/{dist → lib}/test/lists.test.d.ts +0 -0
  127. package/{dist → lib}/test/lists.test.d.ts.map +0 -0
  128. package/{dist → lib}/test/lists.test.js +0 -0
  129. package/{dist → lib}/test/lists.test.js.map +0 -0
  130. package/{dist → lib}/test/lookup.test.d.ts +0 -0
  131. package/{dist → lib}/test/lookup.test.d.ts.map +0 -0
  132. package/{dist → lib}/test/lookup.test.js +0 -0
  133. package/{dist → lib}/test/lookup.test.js.map +0 -0
  134. package/{dist → lib}/test/regressions.test.d.ts +0 -0
  135. package/{dist → lib}/test/regressions.test.d.ts.map +0 -0
  136. package/{dist → lib}/test/regressions.test.js +0 -0
  137. package/{dist → lib}/test/regressions.test.js.map +0 -0
  138. package/{dist → lib}/test/scalars.test.d.ts +0 -0
  139. package/{dist → lib}/test/scalars.test.d.ts.map +0 -0
  140. package/{dist → lib}/test/scalars.test.js +0 -0
  141. package/{dist → lib}/test/scalars.test.js.map +0 -0
  142. package/{dist → lib}/test/setup.d.ts +3 -1
  143. package/lib/test/setup.d.ts.map +1 -0
  144. package/{dist → lib}/test/setup.js +14 -12
  145. package/lib/test/setup.js.map +1 -0
  146. package/lib/test/subscription.test.d.ts +2 -0
  147. package/lib/test/subscription.test.d.ts.map +1 -0
  148. package/lib/test/subscription.test.js +99 -0
  149. package/lib/test/subscription.test.js.map +1 -0
  150. package/{dist → lib}/test/tools.test.d.ts +0 -0
  151. package/{dist → lib}/test/tools.test.d.ts.map +0 -0
  152. package/{dist → lib}/test/tools.test.js +0 -0
  153. package/{dist → lib}/test/tools.test.js.map +0 -0
  154. package/{dist → lib}/test/typed-json.test.d.ts +0 -0
  155. package/{dist → lib}/test/typed-json.test.d.ts.map +0 -0
  156. package/{dist → lib}/test/typed-json.test.js +0 -0
  157. package/{dist → lib}/test/typed-json.test.js.map +0 -0
  158. package/{dist → lib}/test/unions.test.d.ts +0 -0
  159. package/{dist → lib}/test/unions.test.d.ts.map +0 -0
  160. package/{dist → lib}/test/unions.test.js +0 -0
  161. package/{dist → lib}/test/unions.test.js.map +0 -0
  162. package/{dist → lib}/test/where.test.d.ts +0 -0
  163. package/{dist → lib}/test/where.test.d.ts.map +0 -0
  164. package/{dist → lib}/test/where.test.js +0 -0
  165. package/{dist → lib}/test/where.test.js.map +0 -0
  166. package/{dist → lib}/tools.d.ts +0 -0
  167. package/{dist → lib}/tools.d.ts.map +0 -0
  168. package/{dist → lib}/tools.js +3 -3
  169. package/{dist → lib}/tools.js.map +1 -1
  170. package/lib/util/error-handling.d.ts +11 -0
  171. package/lib/util/error-handling.d.ts.map +1 -0
  172. package/lib/util/error-handling.js +42 -0
  173. package/lib/util/error-handling.js.map +1 -0
  174. package/lib/util/lazy-transaction.d.ts +10 -0
  175. package/lib/util/lazy-transaction.d.ts.map +1 -0
  176. package/lib/util/lazy-transaction.js +43 -0
  177. package/lib/util/lazy-transaction.js.map +1 -0
  178. package/lib/util/resolve-tree.d.ts +14 -0
  179. package/lib/util/resolve-tree.d.ts.map +1 -0
  180. package/lib/util/resolve-tree.js +52 -0
  181. package/lib/util/resolve-tree.js.map +1 -0
  182. package/{dist → lib/util}/util.d.ts +2 -3
  183. package/lib/util/util.d.ts.map +1 -0
  184. package/{dist → lib/util}/util.js +9 -13
  185. package/lib/util/util.js.map +1 -0
  186. package/package.json +17 -9
  187. package/src/context.ts +14 -0
  188. package/src/db.ts +46 -57
  189. package/src/ir/args.ts +85 -0
  190. package/src/ir/connection.ts +48 -0
  191. package/src/ir/fields.ts +40 -0
  192. package/src/limit.size.ts +46 -0
  193. package/src/main.ts +61 -38
  194. package/src/{gql/schema.ts → model.schema.ts} +51 -8
  195. package/src/model.ts +12 -1
  196. package/src/{orderBy.ts → opencrud/orderBy.ts} +3 -10
  197. package/src/opencrud/schema.ts +632 -0
  198. package/src/opencrud/tree.ts +144 -0
  199. package/src/opencrud/where.ts +141 -0
  200. package/src/{gql/scalars → scalars}/BigInt.ts +1 -1
  201. package/src/{gql/scalars → scalars}/Bytes.ts +4 -4
  202. package/src/{gql/scalars → scalars}/DateTime.ts +1 -1
  203. package/src/{gql/scalars → scalars}/JSON.ts +0 -0
  204. package/src/{gql/scalars → scalars}/index.ts +0 -0
  205. package/src/server.ts +128 -48
  206. package/src/sql/cursor.ts +291 -0
  207. package/src/sql/mapping.ts +66 -0
  208. package/src/sql/printer.ts +328 -0
  209. package/src/sql/query.ts +194 -0
  210. package/src/sql/util.ts +89 -0
  211. package/src/subscription.ts +46 -0
  212. package/src/test/fts.test.ts +1 -1
  213. package/src/test/setup.ts +12 -10
  214. package/src/test/subscription.test.ts +98 -0
  215. package/src/tools.ts +1 -1
  216. package/src/util/error-handling.ts +40 -0
  217. package/src/util/lazy-transaction.ts +49 -0
  218. package/src/util/resolve-tree.ts +65 -0
  219. package/src/{util.ts → util/util.ts} +9 -14
  220. package/dist/db.d.ts +0 -28
  221. package/dist/db.d.ts.map +0 -1
  222. package/dist/db.js +0 -69
  223. package/dist/db.js.map +0 -1
  224. package/dist/gql/opencrud.d.ts +0 -6
  225. package/dist/gql/opencrud.d.ts.map +0 -1
  226. package/dist/gql/opencrud.js +0 -326
  227. package/dist/gql/opencrud.js.map +0 -1
  228. package/dist/gql/scalars/BigInt.d.ts.map +0 -1
  229. package/dist/gql/scalars/BigInt.js.map +0 -1
  230. package/dist/gql/scalars/Bytes.d.ts.map +0 -1
  231. package/dist/gql/scalars/Bytes.js.map +0 -1
  232. package/dist/gql/scalars/DateTime.d.ts.map +0 -1
  233. package/dist/gql/scalars/DateTime.js.map +0 -1
  234. package/dist/gql/scalars/JSON.d.ts.map +0 -1
  235. package/dist/gql/scalars/JSON.js.map +0 -1
  236. package/dist/gql/scalars/index.d.ts.map +0 -1
  237. package/dist/gql/scalars/index.js.map +0 -1
  238. package/dist/gql/schema.d.ts.map +0 -1
  239. package/dist/gql/schema.js.map +0 -1
  240. package/dist/main.js +0 -44
  241. package/dist/main.js.map +0 -1
  242. package/dist/model.d.ts.map +0 -1
  243. package/dist/orderBy.d.ts.map +0 -1
  244. package/dist/orderBy.js.map +0 -1
  245. package/dist/queryBuilder.d.ts +0 -56
  246. package/dist/queryBuilder.d.ts.map +0 -1
  247. package/dist/queryBuilder.js +0 -733
  248. package/dist/queryBuilder.js.map +0 -1
  249. package/dist/relayConnection.d.ts +0 -37
  250. package/dist/relayConnection.d.ts.map +0 -1
  251. package/dist/relayConnection.js +0 -43
  252. package/dist/relayConnection.js.map +0 -1
  253. package/dist/requestedFields.d.ts +0 -33
  254. package/dist/requestedFields.d.ts.map +0 -1
  255. package/dist/requestedFields.js +0 -179
  256. package/dist/requestedFields.js.map +0 -1
  257. package/dist/resolver.d.ts +0 -9
  258. package/dist/resolver.d.ts.map +0 -1
  259. package/dist/resolver.js +0 -158
  260. package/dist/resolver.js.map +0 -1
  261. package/dist/server.d.ts +0 -22
  262. package/dist/server.d.ts.map +0 -1
  263. package/dist/server.js +0 -96
  264. package/dist/server.js.map +0 -1
  265. package/dist/test/fts.test.js.map +0 -1
  266. package/dist/test/setup.d.ts.map +0 -1
  267. package/dist/test/setup.js.map +0 -1
  268. package/dist/util.d.ts.map +0 -1
  269. package/dist/util.js.map +0 -1
  270. package/dist/where.d.ts +0 -9
  271. package/dist/where.d.ts.map +0 -1
  272. package/dist/where.js +0 -101
  273. package/dist/where.js.map +0 -1
  274. package/src/gql/opencrud.ts +0 -350
  275. package/src/queryBuilder.ts +0 -891
  276. package/src/relayConnection.ts +0 -80
  277. package/src/requestedFields.ts +0 -246
  278. package/src/resolver.ts +0 -201
  279. package/src/where.ts +0 -119
package/bin/main.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- require('../dist/main')()
3
+ require('../lib/main')
@@ -0,0 +1,11 @@
1
+ import { Dialect } from "./dialect";
2
+ import { Query } from "./sql/query";
3
+ export interface Context {
4
+ openreader: OpenreaderContext;
5
+ }
6
+ export interface OpenreaderContext {
7
+ dialect: Dialect;
8
+ executeQuery<T>(query: Query<T>): Promise<T>;
9
+ subscription<T>(query: Query<T>): AsyncIterable<T>;
10
+ }
11
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AAGjC,MAAM,WAAW,OAAO;IACpB,UAAU,EAAE,iBAAiB,CAAA;CAChC;AAGD,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC5C,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;CACrD"}
package/lib/context.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":""}
package/lib/db.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ import type { ClientBase, Pool } from "pg";
2
+ import { OpenreaderContext } from "./context";
3
+ import { Dialect } from "./dialect";
4
+ import { Query } from "./sql/query";
5
+ export interface Database {
6
+ query(sql: string, parameters?: any[]): Promise<any[][]>;
7
+ }
8
+ export declare class PgDatabase implements Database {
9
+ private client;
10
+ constructor(client: ClientBase);
11
+ query(sql: string, parameters?: any[]): Promise<any[][]>;
12
+ }
13
+ export declare class PoolOpenreaderContext implements OpenreaderContext {
14
+ readonly dialect: Dialect;
15
+ private subscriptionPollInterval;
16
+ private tx;
17
+ private subscriptionPool;
18
+ constructor(dialect: Dialect, pool: Pool, subscriptionPool?: Pool, subscriptionPollInterval?: number);
19
+ close(): Promise<void>;
20
+ executeQuery<T>(query: Query<T>): Promise<T>;
21
+ subscription<T>(query: Query<T>): AsyncIterable<T>;
22
+ }
23
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,UAAU,EAAE,IAAI,EAAC,MAAM,IAAI,CAAA;AACxC,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAA;AACjC,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AAMjC,MAAM,WAAW,QAAQ;IACrB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;CAC3D;AAGD,qBAAa,UAAW,YAAW,QAAQ;IAC3B,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEtC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;CAK3D;AAGD,qBAAa,qBAAsB,YAAW,iBAAiB;aAKvC,OAAO,EAAE,OAAO;IAGhC,OAAO,CAAC,wBAAwB;IAPpC,OAAO,CAAC,EAAE,CAA2B;IACrC,OAAO,CAAC,gBAAgB,CAAM;gBAGV,OAAO,EAAE,OAAO,EAChC,IAAI,EAAE,IAAI,EACV,gBAAgB,CAAC,EAAE,IAAI,EACf,wBAAwB,GAAE,MAAa;IAMnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAMlD,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;CAMrD"}
package/lib/db.js ADDED
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PoolOpenreaderContext = exports.PgDatabase = void 0;
4
+ const subscription_1 = require("./subscription");
5
+ const error_handling_1 = require("./util/error-handling");
6
+ const lazy_transaction_1 = require("./util/lazy-transaction");
7
+ class PgDatabase {
8
+ constructor(client) {
9
+ this.client = client;
10
+ }
11
+ query(sql, parameters) {
12
+ return this.client.query({ text: sql, rowMode: 'array' }, parameters)
13
+ .then(result => result.rows)
14
+ .catch((0, error_handling_1.withErrorContext)({ sql, parameters }));
15
+ }
16
+ }
17
+ exports.PgDatabase = PgDatabase;
18
+ class PoolOpenreaderContext {
19
+ constructor(dialect, pool, subscriptionPool, subscriptionPollInterval = 1000) {
20
+ this.dialect = dialect;
21
+ this.subscriptionPollInterval = subscriptionPollInterval;
22
+ this.tx = new lazy_transaction_1.LazyTransaction(cb => transact(pool, cb));
23
+ this.subscriptionPool = subscriptionPool || pool;
24
+ }
25
+ close() {
26
+ return this.tx.close();
27
+ }
28
+ async executeQuery(query) {
29
+ let db = await this.tx.get();
30
+ let result = await db.query(query.sql, query.params);
31
+ return query.map(result);
32
+ }
33
+ subscription(query) {
34
+ return new subscription_1.Subscription(this.subscriptionPollInterval, () => transact(this.subscriptionPool, async (db) => {
35
+ let result = await db.query(query.sql, query.params);
36
+ return query.map(result);
37
+ }));
38
+ }
39
+ }
40
+ exports.PoolOpenreaderContext = PoolOpenreaderContext;
41
+ async function transact(pool, cb) {
42
+ let client = await pool.connect();
43
+ try {
44
+ await client.query('START TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY');
45
+ try {
46
+ let db = new PgDatabase(client);
47
+ return await cb(db);
48
+ }
49
+ finally {
50
+ await client.query('COMMIT').catch(() => { });
51
+ }
52
+ }
53
+ finally {
54
+ client.release();
55
+ }
56
+ }
57
+ //# sourceMappingURL=db.js.map
package/lib/db.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":";;;AAIA,iDAA2C;AAC3C,0DAAsD;AACtD,8DAAuD;AAQvD,MAAa,UAAU;IACnB,YAAoB,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAE1C,KAAK,CAAC,GAAW,EAAE,UAAkB;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAC,EAAE,UAAU,CAAC;aAC9D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;aAC3B,KAAK,CAAC,IAAA,iCAAgB,EAAC,EAAC,GAAG,EAAE,UAAU,EAAC,CAAC,CAAC,CAAA;IACnD,CAAC;CACJ;AARD,gCAQC;AAGD,MAAa,qBAAqB;IAI9B,YACoB,OAAgB,EAChC,IAAU,EACV,gBAAuB,EACf,2BAAmC,IAAI;QAH/B,YAAO,GAAP,OAAO,CAAS;QAGxB,6BAAwB,GAAxB,wBAAwB,CAAe;QAE/C,IAAI,CAAC,EAAE,GAAG,IAAI,kCAAe,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QACvD,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,IAAI,CAAA;IACpD,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,CAAI,KAAe;QACjC,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;QAC5B,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACpD,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;IAED,YAAY,CAAI,KAAe;QAC3B,OAAO,IAAI,2BAAY,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAC,EAAE,EAAC,EAAE;YACpG,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;YACpD,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;CACJ;AA9BD,sDA8BC;AAGD,KAAK,UAAU,QAAQ,CAAI,IAAU,EAAE,EAAgC;IACnE,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;IACjC,IAAI;QACA,MAAM,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAA;QAC9E,IAAI;YACA,IAAI,EAAE,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;YAC/B,OAAO,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;SACtB;gBAAS;YACN,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;SAC/C;KACJ;YAAS;QACN,MAAM,CAAC,OAAO,EAAE,CAAA;KACnB;AACL,CAAC"}
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,47 @@
1
+ export interface EntityListArguments {
2
+ offset?: number;
3
+ limit?: number;
4
+ orderBy?: OrderBy;
5
+ where?: Where;
6
+ }
7
+ export declare type Where = AndCondition | OrCondition | InCondition | SetCondition | RefCondition | BinaryCondition | UnaryCondition;
8
+ export interface AndCondition {
9
+ op: 'AND';
10
+ args: Where[];
11
+ }
12
+ export interface OrCondition {
13
+ op: 'OR';
14
+ args: Where[];
15
+ }
16
+ export interface SetCondition {
17
+ op: 'some' | 'every' | 'none';
18
+ field: string;
19
+ where?: Where;
20
+ }
21
+ export interface RefCondition {
22
+ op: 'REF';
23
+ field: string;
24
+ where: Where;
25
+ }
26
+ export interface InCondition {
27
+ op: 'in' | 'not_in';
28
+ field: string;
29
+ values: unknown[];
30
+ }
31
+ export interface BinaryCondition {
32
+ op: BinaryOp;
33
+ field: string;
34
+ value: unknown;
35
+ }
36
+ export interface UnaryCondition {
37
+ op: UnaryOp;
38
+ field: string;
39
+ yes: boolean;
40
+ }
41
+ export declare type BinaryOp = 'eq' | 'not_eq' | 'gt' | 'gte' | 'lt' | 'lte' | 'contains' | 'not_contains' | 'containsInsensitive' | 'not_containsInsensitive' | 'startsWith' | 'not_startsWith' | 'endsWith' | 'not_endsWith' | 'containsAll' | 'containsAny' | 'containsNone' | 'jsonContains' | 'jsonHasKey';
42
+ export declare type UnaryOp = 'isNull';
43
+ export interface OrderBy {
44
+ [field: string]: SortOrder | OrderBy;
45
+ }
46
+ export declare type SortOrder = "ASC" | "DESC";
47
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/ir/args.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,KAAK,CAAA;CAChB;AAGD,oBAAY,KAAK,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,eAAe,GAAG,cAAc,CAAA;AAG7H,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,KAAK,CAAA;IACT,IAAI,EAAE,KAAK,EAAE,CAAA;CAChB;AAGD,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,IAAI,CAAA;IACR,IAAI,EAAE,KAAK,EAAE,CAAA;CAChB;AAGD,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAA;CAChB;AAGD,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,KAAK,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,KAAK,CAAA;CACf;AAGD,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,IAAI,GAAG,QAAQ,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,EAAE,CAAA;CACpB;AAGD,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,QAAQ,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;CACjB;AAGD,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,OAAO,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,OAAO,CAAA;CACf;AAGD,oBAAY,QAAQ,GAChB,IAAI,GACJ,QAAQ,GACR,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,UAAU,GAAG,cAAc,GAC3B,qBAAqB,GAAG,yBAAyB,GACjD,YAAY,GAAG,gBAAgB,GAC/B,UAAU,GAAG,cAAc,GAC3B,aAAa,GACb,aAAa,GACb,cAAc,GACd,cAAc,GACd,YAAY,CAAA;AAGhB,oBAAY,OAAO,GAAG,QAAQ,CAAA;AAG9B,MAAM,WAAW,OAAO;IACpB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;CACvC;AAGD,oBAAY,SAAS,GAAG,KAAK,GAAG,MAAM,CAAA"}
package/lib/ir/args.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/ir/args.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { OrderBy, Where } from "./args";
2
+ import { FieldRequest } from "./fields";
3
+ export interface RelayConnectionRequest {
4
+ orderBy: OrderBy;
5
+ where?: Where;
6
+ first?: number;
7
+ after?: string;
8
+ edgeNode?: FieldRequest[];
9
+ edgeCursor?: boolean;
10
+ pageInfo?: boolean;
11
+ totalCount?: boolean;
12
+ }
13
+ export interface RelayConnectionResponse {
14
+ edges?: RelayConnectionEdge[];
15
+ pageInfo?: Partial<RelayConnectionPageInfo>;
16
+ totalCount?: number;
17
+ }
18
+ export interface RelayConnectionEdge {
19
+ node?: unknown;
20
+ cursor?: string;
21
+ }
22
+ export interface RelayConnectionPageInfo {
23
+ hasNextPage: boolean;
24
+ hasPreviousPage: boolean;
25
+ startCursor: string;
26
+ endCursor: string;
27
+ }
28
+ export declare function decodeRelayConnectionCursor(cursor: string): number | undefined;
29
+ export declare function encodeRelayConnectionCursor(val: number): string;
30
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/ir/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAC,YAAY,EAAC,MAAM,UAAU,CAAA;AAGrC,MAAM,WAAW,sBAAsB;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;IACzB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;CACvB;AAGD,MAAM,WAAW,uBAAuB;IACpC,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAA;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AAGD,MAAM,WAAW,mBAAmB;IAChC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB;AAGD,MAAM,WAAW,uBAAuB;IACpC,WAAW,EAAE,OAAO,CAAA;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CACpB;AAGD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK9E;AAGD,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/D"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.encodeRelayConnectionCursor = exports.decodeRelayConnectionCursor = void 0;
4
+ function decodeRelayConnectionCursor(cursor) {
5
+ if (!/^\d+$/.test(cursor))
6
+ return undefined;
7
+ let val = parseInt(cursor, 10);
8
+ if (Number.isSafeInteger(val) && val > 0)
9
+ return val;
10
+ return undefined;
11
+ }
12
+ exports.decodeRelayConnectionCursor = decodeRelayConnectionCursor;
13
+ function encodeRelayConnectionCursor(val) {
14
+ return '' + val;
15
+ }
16
+ exports.encodeRelayConnectionCursor = encodeRelayConnectionCursor;
17
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/ir/connection.ts"],"names":[],"mappings":";;;AAqCA,SAAgB,2BAA2B,CAAC,MAAc;IACtD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3C,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAC9B,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IACpD,OAAO,SAAS,CAAA;AACpB,CAAC;AALD,kEAKC;AAGD,SAAgB,2BAA2B,CAAC,GAAW;IACnD,OAAO,EAAE,GAAG,GAAG,CAAA;AACnB,CAAC;AAFD,kEAEC"}
@@ -0,0 +1,22 @@
1
+ import { EnumPropType, FkPropType, ListLookupPropType, ListPropType, LookupPropType, ObjectPropType, Prop, PropType, ScalarPropType, UnionPropType } from "../model";
2
+ import { EntityListArguments } from "./args";
3
+ export declare type FieldRequest = EntityListRequest | ObjectRequest | OpaqueRequest;
4
+ declare type Base<T> = T extends PropType ? {
5
+ field: string;
6
+ kind: T['kind'];
7
+ type: T;
8
+ prop: Prop;
9
+ aliases: string[];
10
+ ifType?: string;
11
+ index: number;
12
+ } : never;
13
+ export declare type EntityListRequest = Base<ListLookupPropType> & {
14
+ children: FieldRequest[];
15
+ args?: EntityListArguments;
16
+ };
17
+ export declare type ObjectRequest = Base<FkPropType | LookupPropType | ObjectPropType | UnionPropType> & {
18
+ children: FieldRequest[];
19
+ };
20
+ export declare type OpaqueRequest = Base<ScalarPropType | EnumPropType | ListPropType>;
21
+ export {};
22
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/ir/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,cAAc,EAAE,IAAI,EACpB,QAAQ,EACR,cAAc,EACd,aAAa,EAChB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAC,mBAAmB,EAAC,MAAM,QAAQ,CAAA;AAG1C,oBAAY,YAAY,GAAG,iBAAiB,GAAG,aAAa,GAAG,aAAa,CAAA;AAG5E,aAAK,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,GAAG;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;IACf,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CAChB,GAAG,KAAK,CAAA;AAGT,oBAAY,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG;IACvD,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,IAAI,CAAC,EAAE,mBAAmB,CAAA;CAC7B,CAAA;AAGD,oBAAY,aAAa,GAAG,IAAI,CAAC,UAAU,GAAG,cAAc,GAAG,cAAc,GAAG,aAAa,CAAC,GAAG;IAC7F,QAAQ,EAAE,YAAY,EAAE,CAAA;CAC3B,CAAA;AAGD,oBAAY,aAAa,GAAG,IAAI,CAAC,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/ir/fields.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { FieldRequest } from "./ir/fields";
2
+ export declare function getSize(fields: FieldRequest[]): number;
3
+ //# sourceMappingURL=limit.size.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limit.size.d.ts","sourceRoot":"","sources":["../src/limit.size.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AAGxC,wBAAgB,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAWtD"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSize = void 0;
4
+ const util_internal_1 = require("@subsquid/util-internal");
5
+ function getSize(fields) {
6
+ let total = 0;
7
+ for (let req of fields) {
8
+ let size = getFieldSize(req);
9
+ if (Number.isFinite(size)) {
10
+ total += size * req.aliases.length;
11
+ }
12
+ else {
13
+ return Infinity;
14
+ }
15
+ }
16
+ return total;
17
+ }
18
+ exports.getSize = getSize;
19
+ function getFieldSize(req) {
20
+ switch (req.kind) {
21
+ case "scalar":
22
+ case "list":
23
+ return req.prop.byteWeight || 1;
24
+ case "enum":
25
+ return 1;
26
+ case "object":
27
+ case "fk":
28
+ case "lookup":
29
+ case "union":
30
+ return getSize(req.children) + 1;
31
+ case "list-lookup": {
32
+ let limit = Math.min(req.args?.limit ?? Infinity, req.prop.cardinality ?? Infinity);
33
+ if (Number.isFinite(limit)) {
34
+ return limit * Math.max(getSize(req.children), 1);
35
+ }
36
+ else {
37
+ return Infinity;
38
+ }
39
+ }
40
+ default:
41
+ throw (0, util_internal_1.unexpectedCase)();
42
+ }
43
+ }
44
+ //# sourceMappingURL=limit.size.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"limit.size.js","sourceRoot":"","sources":["../src/limit.size.ts"],"names":[],"mappings":";;;AAAA,2DAAsD;AAItD,SAAgB,OAAO,CAAC,MAAsB;IAC1C,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;QACpB,IAAI,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACvB,KAAK,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAA;SACrC;aAAM;YACH,OAAO,QAAQ,CAAA;SAClB;KACJ;IACD,OAAO,KAAK,CAAA;AAChB,CAAC;AAXD,0BAWC;AAGD,SAAS,YAAY,CAAC,GAAiB;IACnC,QAAO,GAAG,CAAC,IAAI,EAAE;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACP,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAA;QACnC,KAAK,MAAM;YACP,OAAO,CAAC,CAAA;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACR,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACpC,KAAK,aAAa,CAAC,CAAC;YAChB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAA;YACnF,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACxB,OAAO,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;aACpD;iBAAM;gBACH,OAAO,QAAQ,CAAA;aAClB;SACJ;QACD;YACI,MAAM,IAAA,8BAAc,GAAE,CAAA;KAC7B;AACL,CAAC"}
File without changes
File without changes
package/lib/main.js ADDED
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const logger_1 = require("@subsquid/logger");
4
+ const util_internal_1 = require("@subsquid/util-internal");
5
+ const util_internal_commander_1 = require("@subsquid/util-internal-commander");
6
+ const util_internal_http_server_1 = require("@subsquid/util-internal-http-server");
7
+ const commander_1 = require("commander");
8
+ const pg_1 = require("pg");
9
+ const server_1 = require("./server");
10
+ const tools_1 = require("./tools");
11
+ const LOG = (0, logger_1.createLogger)('sqd:openreader');
12
+ (0, util_internal_1.runProgram)(async () => {
13
+ let program = new commander_1.Command();
14
+ program.description(`
15
+ GraphQL server for postgres-compatible databases
16
+ `.trim());
17
+ program.requiredOption('-s, --schema <file>', 'a path to a file or folder with database description');
18
+ program.requiredOption('-d, --db-url <url>', 'database connection string', (0, util_internal_commander_1.Url)(['postgres:']));
19
+ program.addOption(new commander_1.Option('-t, --db-type <type>', 'database type').choices(['postgres', 'cockroach']).default('postgres'));
20
+ program.option('-p, --port <number>', 'port to listen on', util_internal_commander_1.nat, 3000);
21
+ program.option('--max-request-size <kb>', 'max request size in kilobytes', util_internal_commander_1.nat, 256);
22
+ program.option('--sql-statement-timeout <ms>', 'sql statement timeout in ms', util_internal_commander_1.nat);
23
+ program.option('--subscriptions', 'enable gql subscriptions');
24
+ program.option('--subscription-poll-interval <ms>', 'subscription poll interval in ms', util_internal_commander_1.nat, 1000);
25
+ program.option('--subscription-sql-statement-timeout <ms>', 'sql statement timeout for polling queries', util_internal_commander_1.nat);
26
+ let opts = program.parse().opts();
27
+ let model = (0, tools_1.loadModel)(opts.schema);
28
+ let connection = new pg_1.Pool({
29
+ connectionString: opts.dbUrl,
30
+ statement_timeout: opts.sqlStatementTimeout || undefined
31
+ });
32
+ let subscriptionConnection;
33
+ if (opts.subscriptions) {
34
+ subscriptionConnection = new pg_1.Pool({
35
+ connectionString: opts.dbUrl,
36
+ statement_timeout: opts.subscriptionSqlStatementTimeout || opts.sqlStatementTimeout || undefined
37
+ });
38
+ }
39
+ let server = await (0, server_1.serve)({
40
+ model,
41
+ dialect: opts.dbType,
42
+ connection,
43
+ port: opts.port,
44
+ log: LOG,
45
+ maxRequestSizeBytes: opts.maxRequestSize * 1024,
46
+ subscriptions: opts.subscriptions,
47
+ subscriptionPollInterval: opts.subscriptionPollInterval,
48
+ subscriptionConnection
49
+ });
50
+ LOG.info(`listening on port ${server.port}`);
51
+ return (0, util_internal_http_server_1.waitForInterruption)(server);
52
+ }, err => LOG.fatal(err));
53
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,6CAA6C;AAC7C,2DAAkD;AAClD,+EAA0D;AAC1D,mFAAuE;AACvE,yCAAyC;AACzC,2BAAuB;AAEvB,qCAA8B;AAC9B,mCAAiC;AAGjC,MAAM,GAAG,GAAG,IAAA,qBAAY,EAAC,gBAAgB,CAAC,CAAA;AAG1C,IAAA,0BAAU,EAAC,KAAK,IAAI,EAAE;IAClB,IAAI,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAA;IAE3B,OAAO,CAAC,WAAW,CAAC;;KAEnB,CAAC,IAAI,EAAE,CAAC,CAAA;IAET,OAAO,CAAC,cAAc,CAAC,qBAAqB,EAAE,sDAAsD,CAAC,CAAA;IACrG,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,4BAA4B,EAAE,IAAA,6BAAG,EAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;IAC9F,OAAO,CAAC,SAAS,CACb,IAAI,kBAAM,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAC7G,CAAA;IACD,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,6BAAG,EAAE,IAAI,CAAC,CAAA;IACrE,OAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,+BAA+B,EAAE,6BAAG,EAAE,GAAG,CAAC,CAAA;IACpF,OAAO,CAAC,MAAM,CAAC,8BAA8B,EAAE,6BAA6B,EAAE,6BAAG,CAAC,CAAA;IAClF,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,CAAA;IAC7D,OAAO,CAAC,MAAM,CAAC,mCAAmC,EAAE,kCAAkC,EAAE,6BAAG,EAAE,IAAI,CAAC,CAAA;IAClG,OAAO,CAAC,MAAM,CAAC,2CAA2C,EAAE,2CAA2C,EAAE,6BAAG,CAAC,CAAA;IAE7G,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAU9B,CAAA;IAED,IAAI,KAAK,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAElC,IAAI,UAAU,GAAG,IAAI,SAAI,CAAC;QACtB,gBAAgB,EAAE,IAAI,CAAC,KAAK;QAC5B,iBAAiB,EAAE,IAAI,CAAC,mBAAmB,IAAI,SAAS;KAC3D,CAAC,CAAA;IAEF,IAAI,sBAAwC,CAAA;IAC5C,IAAI,IAAI,CAAC,aAAa,EAAE;QACpB,sBAAsB,GAAG,IAAI,SAAI,CAAC;YAC9B,gBAAgB,EAAE,IAAI,CAAC,KAAK;YAC5B,iBAAiB,EAAE,IAAI,CAAC,+BAA+B,IAAI,IAAI,CAAC,mBAAmB,IAAI,SAAS;SACnG,CAAC,CAAA;KACL;IAED,IAAI,MAAM,GAAG,MAAM,IAAA,cAAK,EAAC;QACrB,KAAK;QACL,OAAO,EAAE,IAAI,CAAC,MAAM;QACpB,UAAU;QACV,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,EAAE,GAAG;QACR,mBAAmB,EAAE,IAAI,CAAC,cAAc,GAAG,IAAI;QAC/C,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;QACvD,sBAAsB;KACzB,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAE5C,OAAO,IAAA,+CAAmB,EAAC,MAAM,CAAC,CAAA;AACtC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA"}
@@ -34,12 +34,21 @@ export interface Prop {
34
34
  * Whether the values in the column must be unique. Applicable only to entities.
35
35
  */
36
36
  unique?: boolean;
37
+ /**
38
+ * Characteristic number of elements in a `list-lookup` or in a `list` of objects
39
+ */
40
+ cardinality?: number;
41
+ /**
42
+ * Relative byte size of a scalar value or scalar list
43
+ */
44
+ byteWeight?: number;
37
45
  }
38
46
  export declare type PropType = ScalarPropType | EnumPropType | ListPropType | ObjectPropType | UnionPropType | FkPropType | LookupPropType | ListLookupPropType;
39
47
  export interface ScalarPropType {
40
48
  kind: 'scalar';
41
- name: Name;
49
+ name: Scalar;
42
50
  }
51
+ export declare type Scalar = 'ID' | 'String' | 'Int' | 'Float' | 'Boolean' | 'DateTime' | 'BigInt' | 'JSON' | 'Bytes';
43
52
  export interface EnumPropType {
44
53
  kind: 'enum';
45
54
  name: Name;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
@@ -1,7 +1,7 @@
1
1
  import { DocumentNode, GraphQLSchema } from "graphql";
2
- import { Model } from "../model";
2
+ import { Model } from "./model";
3
3
  export declare function buildSchema(doc: DocumentNode): GraphQLSchema;
4
4
  export declare function buildModel(schema: GraphQLSchema): Model;
5
5
  export declare class SchemaError extends Error {
6
6
  }
7
- //# sourceMappingURL=schema.d.ts.map
7
+ //# sourceMappingURL=model.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.schema.d.ts","sourceRoot":"","sources":["../src/model.schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAEH,YAAY,EAWZ,aAAa,EAIhB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAQ,KAAK,EAAyB,MAAM,SAAS,CAAA;AAoB5D,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,aAAa,CAO5D;AAGD,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,CAWvD;AA6bD,qBAAa,WAAY,SAAQ,KAAK;CAAG"}
@@ -7,7 +7,7 @@ exports.SchemaError = exports.buildModel = exports.buildSchema = void 0;
7
7
  const util_internal_1 = require("@subsquid/util-internal");
8
8
  const assert_1 = __importDefault(require("assert"));
9
9
  const graphql_1 = require("graphql");
10
- const model_tools_1 = require("../model.tools");
10
+ const model_tools_1 = require("./model.tools");
11
11
  const scalars_1 = require("./scalars");
12
12
  const baseSchema = (0, graphql_1.buildASTSchema)((0, graphql_1.parse)(`
13
13
  directive @entity on OBJECT
@@ -15,6 +15,8 @@ const baseSchema = (0, graphql_1.buildASTSchema)((0, graphql_1.parse)(`
15
15
  directive @unique on FIELD_DEFINITION
16
16
  directive @index(fields: [String!] unique: Boolean) on OBJECT | FIELD_DEFINITION
17
17
  directive @fulltext(query: String!) on FIELD_DEFINITION
18
+ directive @cardinality(value: Int!) on FIELD_DEFINITION
19
+ directive @byteWeight(value: Float!) on FIELD_DEFINITION
18
20
  directive @variant on OBJECT # legacy
19
21
  directive @jsonField on OBJECT # legacy
20
22
  scalar ID
@@ -95,6 +97,10 @@ function addEntityOrJsonObjectOrInterface(model, type) {
95
97
  let derivedFrom = checkDerivedFrom(type, f);
96
98
  let index = checkFieldIndex(type, f);
97
99
  let unique = index?.unique || false;
100
+ let limits = {
101
+ ...checkByteWeightDirective(type, f),
102
+ ...checkCardinalityLimitDirective(type, f)
103
+ };
98
104
  if (index) {
99
105
  indexes.push(index);
100
106
  }
@@ -111,7 +117,8 @@ function addEntityOrJsonObjectOrInterface(model, type) {
111
117
  name: fieldType.name
112
118
  }),
113
119
  nullable,
114
- description
120
+ description,
121
+ ...limits
115
122
  };
116
123
  }
117
124
  else if (fieldType instanceof graphql_1.GraphQLEnumType) {
@@ -122,7 +129,8 @@ function addEntityOrJsonObjectOrInterface(model, type) {
122
129
  name: fieldType.name
123
130
  }),
124
131
  nullable,
125
- description
132
+ description,
133
+ ...limits
126
134
  };
127
135
  }
128
136
  else if (fieldType instanceof graphql_1.GraphQLUnionType) {
@@ -133,7 +141,8 @@ function addEntityOrJsonObjectOrInterface(model, type) {
133
141
  name: fieldType.name
134
142
  }),
135
143
  nullable,
136
- description
144
+ description,
145
+ ...limits
137
146
  };
138
147
  }
139
148
  else if (fieldType instanceof graphql_1.GraphQLObjectType) {
@@ -180,7 +189,8 @@ function addEntityOrJsonObjectOrInterface(model, type) {
180
189
  field: derivedFrom.field
181
190
  },
182
191
  nullable: false,
183
- description
192
+ description,
193
+ ...limits
184
194
  };
185
195
  break;
186
196
  default:
@@ -195,7 +205,8 @@ function addEntityOrJsonObjectOrInterface(model, type) {
195
205
  name: fieldType.name
196
206
  }),
197
207
  nullable,
198
- description
208
+ description,
209
+ ...limits
199
210
  };
200
211
  }
201
212
  }
@@ -393,10 +404,36 @@ function checkDerivedFrom(type, f) {
393
404
  (0, assert_1.default)(fieldArg.value.kind == 'StringValue');
394
405
  return { field: fieldArg.value.value };
395
406
  }
407
+ function checkCardinalityLimitDirective(type, f) {
408
+ let directives = f.astNode?.directives?.filter(d => d.name.value == 'cardinality') || [];
409
+ if (directives.length > 1)
410
+ throw new SchemaError(`Multiple @cardinality where applied to ${type.name}.${f.name}`);
411
+ if (directives.length == 0)
412
+ return {};
413
+ let arg = (0, util_internal_1.assertNotNull)(directives[0].arguments?.find(arg => arg.name.value == 'value'));
414
+ (0, assert_1.default)(arg.value.kind == 'IntValue');
415
+ let cardinality = parseInt(arg.value.value, 10);
416
+ if (cardinality < 0)
417
+ throw new SchemaError(`Incorrect @cardinality where applied to ${type.name}.${f.name}. Cardinality value must be positive.`);
418
+ return { cardinality };
419
+ }
420
+ function checkByteWeightDirective(type, f) {
421
+ let directives = f.astNode?.directives?.filter(d => d.name.value == 'byteWeight') || [];
422
+ if (directives.length > 1)
423
+ throw new SchemaError(`Multiple @byteWeight where applied to ${type.name}.${f.name}`);
424
+ if (directives.length == 0)
425
+ return {};
426
+ let arg = (0, util_internal_1.assertNotNull)(directives[0].arguments?.find(arg => arg.name.value == 'value'));
427
+ (0, assert_1.default)(arg.value.kind == 'FloatValue');
428
+ let byteWeight = parseFloat(arg.value.value);
429
+ if (byteWeight < 0)
430
+ throw new SchemaError(`Incorrect @byteWeight where applied to ${type.name}.${f.name}. Byte weight value must be positive.`);
431
+ return { byteWeight };
432
+ }
396
433
  function unsupportedFieldTypeError(propName) {
397
434
  return new SchemaError(`Property ${propName} has unsupported type`);
398
435
  }
399
436
  class SchemaError extends Error {
400
437
  }
401
438
  exports.SchemaError = SchemaError;
402
- //# sourceMappingURL=schema.js.map
439
+ //# sourceMappingURL=model.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.schema.js","sourceRoot":"","sources":["../src/model.schema.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes