@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
@@ -0,0 +1,311 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EntityListQueryPrinter = void 0;
7
+ const util_internal_1 = require("@subsquid/util-internal");
8
+ const assert_1 = __importDefault(require("assert"));
9
+ const cursor_1 = require("./cursor");
10
+ const util_1 = require("./util");
11
+ class EntityListQueryPrinter {
12
+ constructor(model, dialect, entityName, params, args = {}, fields, aliases) {
13
+ this.model = model;
14
+ this.dialect = dialect;
15
+ this.entityName = entityName;
16
+ this.params = params;
17
+ this.args = args;
18
+ this.columns = new util_1.ColumnSet();
19
+ this.where = [];
20
+ this.orderBy = [];
21
+ this.aliases = aliases || new util_1.AliasSet();
22
+ this.join = new util_1.JoinSet(this.aliases);
23
+ this.root = new cursor_1.EntityCursor({
24
+ model: this.model,
25
+ dialect: this.dialect,
26
+ aliases: this.aliases,
27
+ join: this.join
28
+ }, this.entityName);
29
+ if (fields?.length) {
30
+ this.populateColumns(this.root, fields);
31
+ }
32
+ if (args.where) {
33
+ this.populateWhere(this.root, args.where, this.where);
34
+ }
35
+ if (args.orderBy) {
36
+ this.populateOrderBy(this.root, args.orderBy);
37
+ }
38
+ }
39
+ sub(entityName, args, fields) {
40
+ return new EntityListQueryPrinter(this.model, this.dialect, entityName, this.params, args, fields, this.aliases);
41
+ }
42
+ populateColumns(cursor, fields) {
43
+ for (let f of fields) {
44
+ switch (f.kind) {
45
+ case "scalar":
46
+ case "enum":
47
+ case "list":
48
+ f.index = this.columns.add(cursor.output(f.field));
49
+ break;
50
+ case "object":
51
+ f.index = this.columns.add(cursor.ref(f.field) + " IS NULL");
52
+ this.populateColumns(cursor.child(f.field), f.children);
53
+ break;
54
+ case "union": {
55
+ let c = cursor.child(f.field);
56
+ f.index = this.columns.add(c.output("isTypeOf"));
57
+ this.populateColumns(c, f.children);
58
+ break;
59
+ }
60
+ case "fk":
61
+ case "lookup": {
62
+ let c = cursor.child(f.field);
63
+ f.index = this.columns.add(c.output("id"));
64
+ this.populateColumns(c, f.children);
65
+ break;
66
+ }
67
+ case "list-lookup": {
68
+ let sub = this.sub(f.type.entity, f.args, f.children).addWhereDerivedFrom(f.type.field, cursor.native("id"));
69
+ let exp = `(SELECT jsonb_agg(row) FROM (${sub.printAsJsonRows()}) AS rows)`;
70
+ f.index = this.columns.add(exp);
71
+ break;
72
+ }
73
+ default:
74
+ throw (0, util_internal_1.unexpectedCase)();
75
+ }
76
+ }
77
+ }
78
+ populateWhere(cursor, where, exps) {
79
+ switch (where.op) {
80
+ case "AND":
81
+ for (let cond of where.args) {
82
+ this.populateWhere(cursor, cond, exps);
83
+ }
84
+ break;
85
+ case "OR": {
86
+ let or = [];
87
+ for (let cond of where.args) {
88
+ let exp = this.printWhere(cursor, cond);
89
+ if (exp) {
90
+ or.push("(" + exp + ")");
91
+ }
92
+ }
93
+ if (or.length > 0) {
94
+ exps.push("(" + (0, util_1.printClause)("OR", or) + ")");
95
+ }
96
+ break;
97
+ }
98
+ case "REF":
99
+ this.populateWhere(cursor.child(where.field), where.where, exps);
100
+ break;
101
+ case "in": {
102
+ let args = where.values.map(v => this.param(v));
103
+ if (args.length > 0) {
104
+ exps.push(`${cursor.native(where.field)} IN (${args.join(", ")})`);
105
+ }
106
+ else {
107
+ exps.push("false");
108
+ }
109
+ break;
110
+ }
111
+ case "not_in": {
112
+ let args = where.values.map(v => this.param(v));
113
+ if (args.length > 0) {
114
+ exps.push(`${cursor.native(where.field)} NOT IN (${args.join(", ")})`);
115
+ }
116
+ break;
117
+ }
118
+ case "isNull": {
119
+ let f = cursor.ref(where.field);
120
+ if (where.yes) {
121
+ exps.push(`${f} IS NULL`);
122
+ }
123
+ else {
124
+ exps.push(`${f} IS NOT NULL`);
125
+ }
126
+ break;
127
+ }
128
+ case "eq":
129
+ this.scalarBinaryCondition("=", cursor, where, exps);
130
+ break;
131
+ case "not_eq":
132
+ this.scalarBinaryCondition("!=", cursor, where, exps);
133
+ break;
134
+ case "gt":
135
+ this.scalarBinaryCondition(">", cursor, where, exps);
136
+ break;
137
+ case "gte":
138
+ this.scalarBinaryCondition(">=", cursor, where, exps);
139
+ break;
140
+ case "lt":
141
+ this.scalarBinaryCondition("<", cursor, where, exps);
142
+ break;
143
+ case "lte":
144
+ this.scalarBinaryCondition("<=", cursor, where, exps);
145
+ break;
146
+ case "jsonContains":
147
+ this.scalarBinaryCondition("@>", cursor, where, exps);
148
+ break;
149
+ case "jsonHasKey":
150
+ this.scalarBinaryCondition("?", cursor, where, exps);
151
+ break;
152
+ case "containsAll":
153
+ this.refBinaryCondition("@>", cursor, where, exps);
154
+ break;
155
+ case "containsAny":
156
+ this.refBinaryCondition("&&", cursor, where, exps);
157
+ break;
158
+ case "containsNone": {
159
+ let lhs = cursor.ref(where.field);
160
+ let rhs = this.param(where.value);
161
+ exps.push(`NOT (${lhs} && ${rhs})`);
162
+ break;
163
+ }
164
+ case "startsWith":
165
+ if (this.dialect == "cockroach") {
166
+ let f = cursor.native(where.field);
167
+ let p = this.param(where.value) + "::text";
168
+ exps.push(`${f} >= ${p}`);
169
+ exps.push(`left(${f}, length(${p})) = ${p}`);
170
+ }
171
+ else {
172
+ exps.push(`starts_with(${cursor.native(where.field)}, ${this.param(where.value)})`);
173
+ }
174
+ break;
175
+ case "not_startsWith":
176
+ if (this.dialect == "cockroach") {
177
+ let f = cursor.native(where.field);
178
+ let p = this.param(where.value) + "::text";
179
+ exps.push(`(${f} < ${p} OR left(${f}, length(${p})) != ${p})`);
180
+ }
181
+ else {
182
+ exps.push(`NOT starts_with(${cursor.native(where.field)}, ${this.param(where.value)})`);
183
+ }
184
+ break;
185
+ case "endsWith": {
186
+ let f = cursor.native(where.field);
187
+ let p = this.param(where.value) + "::text";
188
+ exps.push(`right(${f}, length(${p})) = ${p}`);
189
+ break;
190
+ }
191
+ case "not_endsWith": {
192
+ let f = cursor.native(where.field);
193
+ let p = this.param(where.value) + "::text";
194
+ exps.push(`right(${f}, length(${p})) != ${p}`);
195
+ break;
196
+ }
197
+ case "contains":
198
+ exps.push(`position(${this.param(where.value)} in ${cursor.native(where.field)}) > 0`);
199
+ break;
200
+ case "not_contains":
201
+ exps.push(`position(${this.param(where.value)} in ${cursor.native(where.field)}) = 0`);
202
+ break;
203
+ case "containsInsensitive":
204
+ exps.push(`position(lower(${this.param(where.value)}) in lower(${cursor.native(where.field)})) > 0`);
205
+ break;
206
+ case "not_containsInsensitive":
207
+ exps.push(`position(lower(${this.param(where.value)}) in lower(${cursor.native(where.field)})) = 0`);
208
+ break;
209
+ case "every": {
210
+ let rel = cursor.prop(where.field);
211
+ (0, assert_1.default)(rel.type.kind == "list-lookup");
212
+ let cond = this.sub(rel.type.entity, { where: where.where }).addWhereDerivedFrom(rel.type.field, cursor.native("id"));
213
+ let all = this.sub(rel.type.entity).addWhereDerivedFrom(rel.type.field, cursor.native("id"));
214
+ exps.push(`(SELECT count(*) ${cond.printFrom()}) = (SELECT count(*) ${all.printFrom()})`);
215
+ break;
216
+ }
217
+ case "some":
218
+ case "none": {
219
+ let rel = cursor.prop(where.field);
220
+ (0, assert_1.default)(rel.type.kind == "list-lookup");
221
+ let sub = this.sub(rel.type.entity, {
222
+ where: where.where,
223
+ limit: 1
224
+ }).addWhereDerivedFrom(rel.type.field, cursor.native("id"));
225
+ if (where.op == "some") {
226
+ exps.push(`(SELECT true ${sub.printFrom()})`);
227
+ }
228
+ else {
229
+ exps.push(`(SELECT count(*) FROM (SELECT true ${sub.printFrom()}) AS rows) = 0`);
230
+ }
231
+ break;
232
+ }
233
+ default:
234
+ throw (0, util_internal_1.unexpectedCase)(where.op);
235
+ }
236
+ }
237
+ scalarBinaryCondition(sqlOp, cursor, where, exps) {
238
+ let f = cursor.native(where.field);
239
+ let p = this.param(where.value);
240
+ exps.push(`${f} ${sqlOp} ${p}`);
241
+ }
242
+ refBinaryCondition(sqlOp, cursor, where, exps) {
243
+ let f = cursor.ref(where.field);
244
+ let p = this.param(where.value);
245
+ exps.push(`${f} ${sqlOp} ${p}`);
246
+ }
247
+ printWhere(cursor, where) {
248
+ let exps = [];
249
+ this.populateWhere(cursor, where, exps);
250
+ return (0, util_1.printClause)("AND", exps);
251
+ }
252
+ populateOrderBy(cursor, orderBy) {
253
+ for (let field in orderBy) {
254
+ let spec = orderBy[field];
255
+ if (typeof spec == "string") {
256
+ this.orderBy.push(`${cursor.native(field)} ${spec}`);
257
+ }
258
+ else {
259
+ this.populateOrderBy(cursor.child(field), spec);
260
+ }
261
+ }
262
+ }
263
+ param(value) {
264
+ return "$" + this.params.push(value);
265
+ }
266
+ ident(name) {
267
+ return (0, util_1.escapeIdentifier)(this.dialect, name);
268
+ }
269
+ addWhereDerivedFrom(field, parentIdExp) {
270
+ this.where.push(`${this.root.native(field)} = ${parentIdExp}`);
271
+ return this;
272
+ }
273
+ printColumnList(options) {
274
+ let names = this.columns.names();
275
+ (0, assert_1.default)(names.length > 0);
276
+ if (options?.withAliases) {
277
+ names = names.map((name, idx) => `${name} AS _c${idx}`);
278
+ }
279
+ return names.join(', ');
280
+ }
281
+ printColumnListAsJsonArray() {
282
+ return `json_build_array(${this.printColumnList()})`;
283
+ }
284
+ printFrom() {
285
+ let out = `FROM ${this.ident(this.root.table)} AS ${this.ident(this.root.tableAlias)}`;
286
+ this.join.forEach(j => {
287
+ out += ` LEFT OUTER JOIN ${this.ident(j.table)} ${this.ident(j.alias)} ON ${this.ident(j.alias)}.${this.ident(j.column)} = ${j.rhs}`;
288
+ });
289
+ if (this.where.length > 0) {
290
+ out += ` WHERE ${(0, util_1.printClause)("AND", this.where)}`;
291
+ }
292
+ if (this.orderBy.length > 0) {
293
+ out += " ORDER BY " + this.orderBy.join(", ");
294
+ }
295
+ if (this.args.limit != null) {
296
+ out += ` LIMIT ${this.args.limit}`;
297
+ }
298
+ if (this.args.offset) {
299
+ out += ` OFFSET ${this.args.offset}`;
300
+ }
301
+ return out;
302
+ }
303
+ print() {
304
+ return `SELECT ${this.printColumnList({ withAliases: true })} ${this.printFrom()}`;
305
+ }
306
+ printAsJsonRows() {
307
+ return `SELECT ${this.printColumnListAsJsonArray()} AS row ${this.printFrom()}`;
308
+ }
309
+ }
310
+ exports.EntityListQueryPrinter = EntityListQueryPrinter;
311
+ //# sourceMappingURL=printer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"printer.js","sourceRoot":"","sources":["../../src/sql/printer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { Dialect } from "../dialect";
2
+ import type { EntityListArguments, Where } from "../ir/args";
3
+ import { RelayConnectionRequest, RelayConnectionResponse } from "../ir/connection";
4
+ import type { FieldRequest } from "../ir/fields";
5
+ import type { Model } from "../model";
6
+ export interface Query<T> {
7
+ readonly sql: string;
8
+ readonly params: unknown[];
9
+ map(rows: any[][]): T;
10
+ }
11
+ export declare class EntityListQuery implements Query<any[]> {
12
+ private fields;
13
+ readonly sql: string;
14
+ readonly params: unknown[];
15
+ constructor(model: Model, dialect: Dialect, entityName: string, fields: FieldRequest[], args: EntityListArguments);
16
+ map(rows: any[][]): any[];
17
+ }
18
+ export declare class EntityByIdQuery {
19
+ private fields;
20
+ readonly sql: string;
21
+ readonly params: unknown[];
22
+ constructor(model: Model, dialect: Dialect, entityName: string, fields: FieldRequest[], id: string);
23
+ map(rows: any[][]): any;
24
+ }
25
+ export declare class EntityCountQuery implements Query<number> {
26
+ readonly sql: string;
27
+ readonly params: unknown[];
28
+ constructor(model: Model, dialect: Dialect, entityName: string, where?: Where);
29
+ map(rows: any[][]): number;
30
+ }
31
+ export declare class EntityConnectionQuery implements Query<RelayConnectionResponse> {
32
+ readonly sql: string;
33
+ readonly params: unknown[];
34
+ private offset;
35
+ private limit;
36
+ private edgeNode?;
37
+ private edgeCursor?;
38
+ private pageInfo?;
39
+ private totalCount?;
40
+ constructor(model: Model, dialect: Dialect, entityName: string, req: RelayConnectionRequest);
41
+ private setOffsetAndLimit;
42
+ map(rows: any[][]): RelayConnectionResponse;
43
+ private getPageInfo;
44
+ private getTotalCount;
45
+ }
46
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/sql/query.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAC,mBAAmB,EAAE,KAAK,EAAC,MAAM,YAAY,CAAA;AAC1D,OAAO,EAKH,sBAAsB,EACtB,uBAAuB,EAC1B,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,UAAU,CAAA;AAMnC,MAAM,WAAW,KAAK,CAAC,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA;IAC1B,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAA;CACxB;AAGD,qBAAa,eAAgB,YAAW,KAAK,CAAC,GAAG,EAAE,CAAC;IAQ5C,OAAO,CAAC,MAAM;IAPlB,SAAgB,GAAG,EAAE,MAAM,CAAA;IAC3B,SAAgB,MAAM,EAAE,OAAO,EAAE,CAAK;gBAGlC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EACV,MAAM,EAAE,YAAY,EAAE,EAC9B,IAAI,EAAE,mBAAmB;IAK7B,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE;CAG5B;AAGD,qBAAa,eAAe;IAQpB,OAAO,CAAC,MAAM;IAPlB,SAAgB,GAAG,EAAE,MAAM,CAAA;IAC3B,SAAgB,MAAM,EAAE,OAAO,EAAE,CAAK;gBAGlC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EACV,MAAM,EAAE,YAAY,EAAE,EAC9B,EAAE,EAAE,MAAM;IAYd,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG;CAI1B;AAGD,qBAAa,gBAAiB,YAAW,KAAK,CAAC,MAAM,CAAC;IAClD,SAAgB,GAAG,EAAE,MAAM,CAAA;IAC3B,SAAgB,MAAM,EAAE,OAAO,EAAE,CAAK;gBAGlC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,KAAK;IAKjB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM;CAG7B;AAGD,qBAAa,qBAAsB,YAAW,KAAK,CAAC,uBAAuB,CAAC;IACxE,SAAgB,GAAG,EAAE,MAAM,CAAA;IAC3B,SAAgB,MAAM,EAAE,OAAO,EAAE,CAAK;IACtC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAS;gBAGxB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,sBAAsB;IAsB/B,OAAO,CAAC,iBAAiB;IAUzB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,uBAAuB;IA8B3C,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,aAAa;CAQxB"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EntityConnectionQuery = exports.EntityCountQuery = exports.EntityByIdQuery = exports.EntityListQuery = void 0;
7
+ const util_internal_1 = require("@subsquid/util-internal");
8
+ const assert_1 = __importDefault(require("assert"));
9
+ const connection_1 = require("../ir/connection");
10
+ const util_1 = require("../util/util");
11
+ const mapping_1 = require("./mapping");
12
+ const printer_1 = require("./printer");
13
+ class EntityListQuery {
14
+ constructor(model, dialect, entityName, fields, args) {
15
+ this.fields = fields;
16
+ this.params = [];
17
+ this.sql = new printer_1.EntityListQueryPrinter(model, dialect, entityName, this.params, args, fields).print();
18
+ }
19
+ map(rows) {
20
+ return (0, mapping_1.mapRows)(rows, this.fields);
21
+ }
22
+ }
23
+ exports.EntityListQuery = EntityListQuery;
24
+ class EntityByIdQuery {
25
+ constructor(model, dialect, entityName, fields, id) {
26
+ this.fields = fields;
27
+ this.params = [];
28
+ this.sql = new printer_1.EntityListQueryPrinter(model, dialect, entityName, this.params, { where: { op: 'eq', field: 'id', value: id } }, fields).print();
29
+ }
30
+ map(rows) {
31
+ (0, assert_1.default)(rows.length < 2);
32
+ return (0, mapping_1.mapRows)(rows, this.fields)[0];
33
+ }
34
+ }
35
+ exports.EntityByIdQuery = EntityByIdQuery;
36
+ class EntityCountQuery {
37
+ constructor(model, dialect, entityName, where) {
38
+ this.params = [];
39
+ this.sql = 'SELECT count(*) ' + new printer_1.EntityListQueryPrinter(model, dialect, entityName, this.params, { where }).printFrom();
40
+ }
41
+ map(rows) {
42
+ return toCount(rows);
43
+ }
44
+ }
45
+ exports.EntityCountQuery = EntityCountQuery;
46
+ class EntityConnectionQuery {
47
+ constructor(model, dialect, entityName, req) {
48
+ this.params = [];
49
+ this.offset = 0;
50
+ this.limit = 100;
51
+ this.setOffsetAndLimit(req);
52
+ this.edgeCursor = req.edgeCursor;
53
+ this.pageInfo = req.pageInfo;
54
+ this.totalCount = req.totalCount;
55
+ let printer = new printer_1.EntityListQueryPrinter(model, dialect, entityName, this.params, {
56
+ orderBy: req.orderBy,
57
+ where: req.where,
58
+ offset: this.offset,
59
+ limit: this.limit + 1
60
+ }, req.edgeNode);
61
+ if (req.edgeNode?.length) {
62
+ this.edgeNode = req.edgeNode;
63
+ this.sql = printer.print();
64
+ }
65
+ else {
66
+ this.sql = `SELECT count(*) FROM (SELECT true ${printer.printFrom()}) AS rows`;
67
+ }
68
+ }
69
+ setOffsetAndLimit(req) {
70
+ if (req.after != null) {
71
+ this.offset = (0, util_internal_1.assertNotNull)((0, connection_1.decodeRelayConnectionCursor)(req.after));
72
+ }
73
+ if (req.first != null) {
74
+ (0, assert_1.default)(req.first >= 0);
75
+ this.limit = req.first;
76
+ }
77
+ }
78
+ map(rows) {
79
+ let res = {};
80
+ if (this.edgeNode) {
81
+ let nodes = (0, mapping_1.mapRows)(rows, this.edgeNode);
82
+ let edges = new Array(Math.min(this.limit, nodes.length));
83
+ for (let i = 0; i < edges.length; i++) {
84
+ edges[i] = {
85
+ node: nodes[i],
86
+ cursor: this.edgeCursor ? (0, connection_1.encodeRelayConnectionCursor)(this.offset + i + 1) : undefined
87
+ };
88
+ }
89
+ res.edges = edges;
90
+ res.pageInfo = this.getPageInfo(nodes.length);
91
+ res.totalCount = this.getTotalCount(nodes.length);
92
+ }
93
+ else {
94
+ let count = toCount(rows);
95
+ if (this.edgeCursor) {
96
+ res.edges = new Array(Math.min(this.limit, count));
97
+ for (let i = 0; i < res.edges.length; i++) {
98
+ res.edges[i] = {
99
+ cursor: (0, connection_1.encodeRelayConnectionCursor)(this.offset + i + 1)
100
+ };
101
+ }
102
+ }
103
+ res.pageInfo = this.getPageInfo(count);
104
+ res.totalCount = this.getTotalCount(count);
105
+ }
106
+ return res;
107
+ }
108
+ getPageInfo(count) {
109
+ if (!this.pageInfo)
110
+ return;
111
+ return {
112
+ hasNextPage: count > this.limit,
113
+ hasPreviousPage: count > 0 && this.offset > 0,
114
+ startCursor: count > 0 ? (0, connection_1.encodeRelayConnectionCursor)(this.offset + 1) : '',
115
+ endCursor: count > 0 ? (0, connection_1.encodeRelayConnectionCursor)(this.offset + Math.min(this.limit, count)) : ''
116
+ };
117
+ }
118
+ getTotalCount(count) {
119
+ if (!this.totalCount)
120
+ return;
121
+ if (count > 0 && count <= this.limit) {
122
+ return this.offset + count;
123
+ }
124
+ else {
125
+ return undefined;
126
+ }
127
+ }
128
+ }
129
+ exports.EntityConnectionQuery = EntityConnectionQuery;
130
+ function toCount(rows) {
131
+ (0, assert_1.default)(rows.length == 1);
132
+ return (0, util_1.toSafeInteger)(rows[0][0]);
133
+ }
134
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/sql/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Dialect } from "../dialect";
2
+ export declare function escapeIdentifier(dialect: Dialect, name: string): string;
3
+ export declare class ColumnSet {
4
+ private columns;
5
+ add(column: string): number;
6
+ names(): string[];
7
+ size(): number;
8
+ }
9
+ /**
10
+ * LEFT OUTER JOIN "{table}" "{alias}" ON "{alias}"."{column}" = {rhs}
11
+ */
12
+ export interface Join {
13
+ table: string;
14
+ alias: string;
15
+ column: string;
16
+ rhs: string;
17
+ }
18
+ export declare class JoinSet {
19
+ private aliases;
20
+ private joins;
21
+ constructor(aliases: AliasSet);
22
+ add(table: string, column: string, rhs: string): string;
23
+ forEach(cb: (join: Join) => void): void;
24
+ }
25
+ export declare class AliasSet {
26
+ private aliases;
27
+ add(name: string): string;
28
+ }
29
+ export declare function printClause(op: string, exps: string[]): string;
30
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/sql/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,YAAY,CAAA;AAGvC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvE;AAGD,qBAAa,SAAS;IAClB,OAAO,CAAC,OAAO,CAAiC;IAEhD,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAS3B,KAAK,IAAI,MAAM,EAAE;IAIjB,IAAI,IAAI,MAAM;CAGjB;AAGD;;GAEG;AACH,MAAM,WAAW,IAAI;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;CACd;AAGD,qBAAa,OAAO;IAGJ,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,KAAK,CAA+B;gBAExB,OAAO,EAAE,QAAQ;IAGrC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAevD,OAAO,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;CAG1C;AAGD,qBAAa,QAAQ;IACjB,OAAO,CAAC,OAAO,CAA6B;IAE5C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAQ5B;AAGD,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAM9D"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printClause = exports.AliasSet = exports.JoinSet = exports.ColumnSet = exports.escapeIdentifier = void 0;
4
+ function escapeIdentifier(dialect, name) {
5
+ return `"${name.replace(/"/g, '""')}"`;
6
+ }
7
+ exports.escapeIdentifier = escapeIdentifier;
8
+ class ColumnSet {
9
+ constructor() {
10
+ this.columns = new Map();
11
+ }
12
+ add(column) {
13
+ let idx = this.columns.get(column);
14
+ if (idx == null) {
15
+ idx = this.columns.size;
16
+ this.columns.set(column, idx);
17
+ }
18
+ return idx;
19
+ }
20
+ names() {
21
+ return [...this.columns.keys()];
22
+ }
23
+ size() {
24
+ return this.columns.size;
25
+ }
26
+ }
27
+ exports.ColumnSet = ColumnSet;
28
+ class JoinSet {
29
+ constructor(aliases) {
30
+ this.aliases = aliases;
31
+ this.joins = new Map();
32
+ }
33
+ add(table, column, rhs) {
34
+ let key = `${table} ${column} ${rhs}`;
35
+ let e = this.joins.get(key);
36
+ if (!e) {
37
+ e = {
38
+ table,
39
+ alias: this.aliases.add(table),
40
+ column,
41
+ rhs
42
+ };
43
+ this.joins.set(key, e);
44
+ }
45
+ return e.alias;
46
+ }
47
+ forEach(cb) {
48
+ this.joins.forEach(join => cb(join));
49
+ }
50
+ }
51
+ exports.JoinSet = JoinSet;
52
+ class AliasSet {
53
+ constructor() {
54
+ this.aliases = {};
55
+ }
56
+ add(name) {
57
+ if (this.aliases[name]) {
58
+ return name + "_" + (this.aliases[name]++);
59
+ }
60
+ else {
61
+ this.aliases[name] = 1;
62
+ return name;
63
+ }
64
+ }
65
+ }
66
+ exports.AliasSet = AliasSet;
67
+ function printClause(op, exps) {
68
+ switch (exps.length) {
69
+ case 0: return '';
70
+ case 1: return exps[0];
71
+ default: return exps.join(' ' + op + ' ');
72
+ }
73
+ }
74
+ exports.printClause = printClause;
75
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/sql/util.ts"],"names":[],"mappings":";;;AAGA,SAAgB,gBAAgB,CAAC,OAAgB,EAAE,IAAY;IAC3D,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAA;AAC1C,CAAC;AAFD,4CAEC;AAGD,MAAa,SAAS;IAAtB;QACY,YAAO,GAAwB,IAAI,GAAG,EAAE,CAAA;IAkBpD,CAAC;IAhBG,GAAG,CAAC,MAAc;QACd,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAClC,IAAI,GAAG,IAAI,IAAI,EAAE;YACb,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;YACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SAChC;QACD,OAAO,GAAG,CAAA;IACd,CAAC;IAED,KAAK;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAA;IAC5B,CAAC;CACJ;AAnBD,8BAmBC;AAcD,MAAa,OAAO;IAGhB,YAAoB,OAAiB;QAAjB,YAAO,GAAP,OAAO,CAAU;QAF7B,UAAK,GAAsB,IAAI,GAAG,EAAE,CAAA;IAG5C,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,MAAc,EAAE,GAAW;QAC1C,IAAI,GAAG,GAAG,GAAG,KAAK,IAAI,MAAM,IAAI,GAAG,EAAE,CAAA;QACrC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,CAAC,EAAE;YACJ,CAAC,GAAG;gBACA,KAAK;gBACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC9B,MAAM;gBACN,GAAG;aACN,CAAA;YACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;SACzB;QACD,OAAO,CAAC,CAAC,KAAK,CAAA;IAClB,CAAC;IAED,OAAO,CAAC,EAAwB;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IACxC,CAAC;CACJ;AAxBD,0BAwBC;AAGD,MAAa,QAAQ;IAArB;QACY,YAAO,GAA2B,EAAE,CAAA;IAUhD,CAAC;IARG,GAAG,CAAC,IAAY;QACZ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpB,OAAO,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SAC7C;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACtB,OAAO,IAAI,CAAA;SACd;IACL,CAAC;CACJ;AAXD,4BAWC;AAGD,SAAgB,WAAW,CAAC,EAAU,EAAE,IAAc;IAClD,QAAO,IAAI,CAAC,MAAM,EAAE;QAChB,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QACjB,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;QACtB,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAA;KAC5C;AACL,CAAC;AAND,kCAMC"}
@@ -0,0 +1,18 @@
1
+ export declare class Subscription<T> implements AsyncIterator<T>, AsyncIterable<T> {
2
+ private interval;
3
+ private poll;
4
+ private timer?;
5
+ private prev?;
6
+ private hasNoVal;
7
+ constructor(interval: number, poll: () => Promise<T>);
8
+ [Symbol.asyncIterator](): this;
9
+ next(): Promise<{
10
+ done: boolean;
11
+ value: Awaited<T>;
12
+ }>;
13
+ return(): Promise<{
14
+ done: boolean;
15
+ readonly value: any;
16
+ }>;
17
+ }
18
+ //# sourceMappingURL=subscription.d.ts.map