@snowtop/ent 0.1.0-alpha160-test7 → 0.1.0-alpha160

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 (317) hide show
  1. package/core/query/shared_assoc_test.d.ts +2 -0
  2. package/core/query/shared_assoc_test.js +804 -0
  3. package/core/query/shared_test.d.ts +21 -0
  4. package/core/query/shared_test.js +736 -0
  5. package/graphql/query/shared_assoc_test.d.ts +1 -0
  6. package/graphql/query/shared_assoc_test.js +203 -0
  7. package/package.json +8 -53
  8. package/dist/package.json +0 -64
  9. package/src/action/action.ts +0 -330
  10. package/src/action/executor.ts +0 -453
  11. package/src/action/experimental_action.ts +0 -277
  12. package/src/action/index.ts +0 -31
  13. package/src/action/operations.ts +0 -967
  14. package/src/action/orchestrator.ts +0 -1527
  15. package/src/action/privacy.ts +0 -37
  16. package/src/action/relative_value.ts +0 -242
  17. package/src/action/transaction.ts +0 -38
  18. package/src/auth/auth.ts +0 -77
  19. package/src/auth/index.ts +0 -8
  20. package/src/core/base.ts +0 -367
  21. package/src/core/clause.ts +0 -1065
  22. package/src/core/config.ts +0 -219
  23. package/src/core/const.ts +0 -5
  24. package/src/core/context.ts +0 -135
  25. package/src/core/convert.ts +0 -106
  26. package/src/core/date.ts +0 -23
  27. package/src/core/db.ts +0 -498
  28. package/src/core/ent.ts +0 -1740
  29. package/src/core/global_schema.ts +0 -49
  30. package/src/core/loaders/assoc_count_loader.ts +0 -99
  31. package/src/core/loaders/assoc_edge_loader.ts +0 -250
  32. package/src/core/loaders/index.ts +0 -12
  33. package/src/core/loaders/loader.ts +0 -66
  34. package/src/core/loaders/object_loader.ts +0 -489
  35. package/src/core/loaders/query_loader.ts +0 -314
  36. package/src/core/loaders/raw_count_loader.ts +0 -175
  37. package/src/core/logger.ts +0 -49
  38. package/src/core/privacy.ts +0 -660
  39. package/src/core/query/assoc_query.ts +0 -240
  40. package/src/core/query/custom_clause_query.ts +0 -174
  41. package/src/core/query/custom_query.ts +0 -302
  42. package/src/core/query/index.ts +0 -9
  43. package/src/core/query/query.ts +0 -674
  44. package/src/core/query_impl.ts +0 -32
  45. package/src/core/viewer.ts +0 -52
  46. package/src/ent.code-workspace +0 -73
  47. package/src/graphql/builtins/connection.ts +0 -25
  48. package/src/graphql/builtins/edge.ts +0 -16
  49. package/src/graphql/builtins/node.ts +0 -12
  50. package/src/graphql/graphql.ts +0 -891
  51. package/src/graphql/graphql_field_helpers.ts +0 -221
  52. package/src/graphql/index.ts +0 -42
  53. package/src/graphql/mutations/union.ts +0 -39
  54. package/src/graphql/node_resolver.ts +0 -122
  55. package/src/graphql/query/connection_type.ts +0 -113
  56. package/src/graphql/query/edge_connection.ts +0 -171
  57. package/src/graphql/query/page_info.ts +0 -34
  58. package/src/graphql/query/shared_edge_connection.ts +0 -287
  59. package/src/graphql/scalars/orderby_direction.ts +0 -13
  60. package/src/graphql/scalars/time.ts +0 -38
  61. package/src/imports/dataz/example1/_auth.ts +0 -51
  62. package/src/imports/dataz/example1/_viewer.ts +0 -35
  63. package/src/imports/index.ts +0 -213
  64. package/src/index.ts +0 -145
  65. package/src/parse_schema/parse.ts +0 -585
  66. package/src/schema/base_schema.ts +0 -224
  67. package/src/schema/field.ts +0 -1087
  68. package/src/schema/index.ts +0 -53
  69. package/src/schema/json_field.ts +0 -94
  70. package/src/schema/schema.ts +0 -1028
  71. package/src/schema/struct_field.ts +0 -234
  72. package/src/schema/union_field.ts +0 -105
  73. package/src/scripts/custom_compiler.ts +0 -331
  74. package/src/scripts/custom_graphql.ts +0 -550
  75. package/src/scripts/migrate_v0.1.ts +0 -41
  76. package/src/scripts/move_types.ts +0 -131
  77. package/src/scripts/read_schema.ts +0 -67
  78. package/src/setupPackage.js +0 -42
  79. package/src/testutils/action/complex_schemas.ts +0 -517
  80. package/src/testutils/builder.ts +0 -422
  81. package/src/testutils/context/test_context.ts +0 -25
  82. package/src/testutils/db/fixture.ts +0 -32
  83. package/src/testutils/db/temp_db.ts +0 -941
  84. package/src/testutils/db/value.ts +0 -294
  85. package/src/testutils/db_mock.ts +0 -351
  86. package/src/testutils/db_time_zone.ts +0 -40
  87. package/src/testutils/ent-graphql-tests/index.ts +0 -653
  88. package/src/testutils/fake_comms.ts +0 -50
  89. package/src/testutils/fake_data/const.ts +0 -64
  90. package/src/testutils/fake_data/events_query.ts +0 -145
  91. package/src/testutils/fake_data/fake_contact.ts +0 -150
  92. package/src/testutils/fake_data/fake_event.ts +0 -150
  93. package/src/testutils/fake_data/fake_tag.ts +0 -139
  94. package/src/testutils/fake_data/fake_user.ts +0 -232
  95. package/src/testutils/fake_data/index.ts +0 -1
  96. package/src/testutils/fake_data/internal.ts +0 -8
  97. package/src/testutils/fake_data/tag_query.ts +0 -56
  98. package/src/testutils/fake_data/test_helpers.ts +0 -388
  99. package/src/testutils/fake_data/user_query.ts +0 -524
  100. package/src/testutils/fake_log.ts +0 -52
  101. package/src/testutils/mock_date.ts +0 -10
  102. package/src/testutils/mock_log.ts +0 -39
  103. package/src/testutils/parse_sql.ts +0 -685
  104. package/src/testutils/test_edge_global_schema.ts +0 -49
  105. package/src/testutils/write.ts +0 -70
  106. package/src/tsc/ast.ts +0 -351
  107. package/src/tsc/compilerOptions.ts +0 -85
  108. package/src/tsc/move_generated.ts +0 -191
  109. package/src/tsc/transform.ts +0 -226
  110. package/src/tsc/transform_action.ts +0 -224
  111. package/src/tsc/transform_ent.ts +0 -66
  112. package/src/tsc/transform_schema.ts +0 -546
  113. package/tsconfig.json +0 -20
  114. /package/{dist/action → action}/action.d.ts +0 -0
  115. /package/{dist/action → action}/action.js +0 -0
  116. /package/{dist/action → action}/executor.d.ts +0 -0
  117. /package/{dist/action → action}/executor.js +0 -0
  118. /package/{dist/action → action}/experimental_action.d.ts +0 -0
  119. /package/{dist/action → action}/experimental_action.js +0 -0
  120. /package/{dist/action → action}/index.d.ts +0 -0
  121. /package/{dist/action → action}/index.js +0 -0
  122. /package/{dist/action → action}/operations.d.ts +0 -0
  123. /package/{dist/action → action}/operations.js +0 -0
  124. /package/{dist/action → action}/orchestrator.d.ts +0 -0
  125. /package/{dist/action → action}/orchestrator.js +0 -0
  126. /package/{dist/action → action}/privacy.d.ts +0 -0
  127. /package/{dist/action → action}/privacy.js +0 -0
  128. /package/{dist/action → action}/relative_value.d.ts +0 -0
  129. /package/{dist/action → action}/relative_value.js +0 -0
  130. /package/{dist/action → action}/transaction.d.ts +0 -0
  131. /package/{dist/action → action}/transaction.js +0 -0
  132. /package/{dist/auth → auth}/auth.d.ts +0 -0
  133. /package/{dist/auth → auth}/auth.js +0 -0
  134. /package/{dist/auth → auth}/index.d.ts +0 -0
  135. /package/{dist/auth → auth}/index.js +0 -0
  136. /package/{dist/core → core}/base.d.ts +0 -0
  137. /package/{dist/core → core}/base.js +0 -0
  138. /package/{dist/core → core}/clause.d.ts +0 -0
  139. /package/{dist/core → core}/clause.js +0 -0
  140. /package/{dist/core → core}/config.d.ts +0 -0
  141. /package/{dist/core → core}/config.js +0 -0
  142. /package/{dist/core → core}/const.d.ts +0 -0
  143. /package/{dist/core → core}/const.js +0 -0
  144. /package/{dist/core → core}/context.d.ts +0 -0
  145. /package/{dist/core → core}/context.js +0 -0
  146. /package/{dist/core → core}/convert.d.ts +0 -0
  147. /package/{dist/core → core}/convert.js +0 -0
  148. /package/{dist/core → core}/date.d.ts +0 -0
  149. /package/{dist/core → core}/date.js +0 -0
  150. /package/{dist/core → core}/db.d.ts +0 -0
  151. /package/{dist/core → core}/db.js +0 -0
  152. /package/{dist/core → core}/ent.d.ts +0 -0
  153. /package/{dist/core → core}/ent.js +0 -0
  154. /package/{dist/core → core}/global_schema.d.ts +0 -0
  155. /package/{dist/core → core}/global_schema.js +0 -0
  156. /package/{dist/core → core}/loaders/assoc_count_loader.d.ts +0 -0
  157. /package/{dist/core → core}/loaders/assoc_count_loader.js +0 -0
  158. /package/{dist/core → core}/loaders/assoc_edge_loader.d.ts +0 -0
  159. /package/{dist/core → core}/loaders/assoc_edge_loader.js +0 -0
  160. /package/{dist/core → core}/loaders/index.d.ts +0 -0
  161. /package/{dist/core → core}/loaders/index.js +0 -0
  162. /package/{dist/core → core}/loaders/loader.d.ts +0 -0
  163. /package/{dist/core → core}/loaders/loader.js +0 -0
  164. /package/{dist/core → core}/loaders/object_loader.d.ts +0 -0
  165. /package/{dist/core → core}/loaders/object_loader.js +0 -0
  166. /package/{dist/core → core}/loaders/query_loader.d.ts +0 -0
  167. /package/{dist/core → core}/loaders/query_loader.js +0 -0
  168. /package/{dist/core → core}/loaders/raw_count_loader.d.ts +0 -0
  169. /package/{dist/core → core}/loaders/raw_count_loader.js +0 -0
  170. /package/{dist/core → core}/logger.d.ts +0 -0
  171. /package/{dist/core → core}/logger.js +0 -0
  172. /package/{dist/core → core}/privacy.d.ts +0 -0
  173. /package/{dist/core → core}/privacy.js +0 -0
  174. /package/{dist/core → core}/query/assoc_query.d.ts +0 -0
  175. /package/{dist/core → core}/query/assoc_query.js +0 -0
  176. /package/{dist/core → core}/query/custom_clause_query.d.ts +0 -0
  177. /package/{dist/core → core}/query/custom_clause_query.js +0 -0
  178. /package/{dist/core → core}/query/custom_query.d.ts +0 -0
  179. /package/{dist/core → core}/query/custom_query.js +0 -0
  180. /package/{dist/core → core}/query/index.d.ts +0 -0
  181. /package/{dist/core → core}/query/index.js +0 -0
  182. /package/{dist/core → core}/query/query.d.ts +0 -0
  183. /package/{dist/core → core}/query/query.js +0 -0
  184. /package/{dist/core → core}/query_impl.d.ts +0 -0
  185. /package/{dist/core → core}/query_impl.js +0 -0
  186. /package/{dist/core → core}/viewer.d.ts +0 -0
  187. /package/{dist/core → core}/viewer.js +0 -0
  188. /package/{dist/graphql → graphql}/builtins/connection.d.ts +0 -0
  189. /package/{dist/graphql → graphql}/builtins/connection.js +0 -0
  190. /package/{dist/graphql → graphql}/builtins/edge.d.ts +0 -0
  191. /package/{dist/graphql → graphql}/builtins/edge.js +0 -0
  192. /package/{dist/graphql → graphql}/builtins/node.d.ts +0 -0
  193. /package/{dist/graphql → graphql}/builtins/node.js +0 -0
  194. /package/{dist/graphql → graphql}/graphql.d.ts +0 -0
  195. /package/{dist/graphql → graphql}/graphql.js +0 -0
  196. /package/{dist/graphql → graphql}/graphql_field_helpers.d.ts +0 -0
  197. /package/{dist/graphql → graphql}/graphql_field_helpers.js +0 -0
  198. /package/{dist/graphql → graphql}/index.d.ts +0 -0
  199. /package/{dist/graphql → graphql}/index.js +0 -0
  200. /package/{dist/graphql → graphql}/mutations/union.d.ts +0 -0
  201. /package/{dist/graphql → graphql}/mutations/union.js +0 -0
  202. /package/{dist/graphql → graphql}/node_resolver.d.ts +0 -0
  203. /package/{dist/graphql → graphql}/node_resolver.js +0 -0
  204. /package/{dist/graphql → graphql}/query/connection_type.d.ts +0 -0
  205. /package/{dist/graphql → graphql}/query/connection_type.js +0 -0
  206. /package/{dist/graphql → graphql}/query/edge_connection.d.ts +0 -0
  207. /package/{dist/graphql → graphql}/query/edge_connection.js +0 -0
  208. /package/{dist/graphql → graphql}/query/page_info.d.ts +0 -0
  209. /package/{dist/graphql → graphql}/query/page_info.js +0 -0
  210. /package/{dist/graphql → graphql}/query/shared_edge_connection.d.ts +0 -0
  211. /package/{dist/graphql → graphql}/query/shared_edge_connection.js +0 -0
  212. /package/{dist/graphql → graphql}/scalars/orderby_direction.d.ts +0 -0
  213. /package/{dist/graphql → graphql}/scalars/orderby_direction.js +0 -0
  214. /package/{dist/graphql → graphql}/scalars/time.d.ts +0 -0
  215. /package/{dist/graphql → graphql}/scalars/time.js +0 -0
  216. /package/{dist/imports → imports}/dataz/example1/_auth.d.ts +0 -0
  217. /package/{dist/imports → imports}/dataz/example1/_auth.js +0 -0
  218. /package/{dist/imports → imports}/dataz/example1/_viewer.d.ts +0 -0
  219. /package/{dist/imports → imports}/dataz/example1/_viewer.js +0 -0
  220. /package/{dist/imports → imports}/index.d.ts +0 -0
  221. /package/{dist/imports → imports}/index.js +0 -0
  222. /package/{dist/index.d.ts → index.d.ts} +0 -0
  223. /package/{dist/index.js → index.js} +0 -0
  224. /package/{dist/parse_schema → parse_schema}/parse.d.ts +0 -0
  225. /package/{dist/parse_schema → parse_schema}/parse.js +0 -0
  226. /package/{dist/schema → schema}/base_schema.d.ts +0 -0
  227. /package/{dist/schema → schema}/base_schema.js +0 -0
  228. /package/{dist/schema → schema}/field.d.ts +0 -0
  229. /package/{dist/schema → schema}/field.js +0 -0
  230. /package/{dist/schema → schema}/index.d.ts +0 -0
  231. /package/{dist/schema → schema}/index.js +0 -0
  232. /package/{dist/schema → schema}/json_field.d.ts +0 -0
  233. /package/{dist/schema → schema}/json_field.js +0 -0
  234. /package/{dist/schema → schema}/schema.d.ts +0 -0
  235. /package/{dist/schema → schema}/schema.js +0 -0
  236. /package/{dist/schema → schema}/struct_field.d.ts +0 -0
  237. /package/{dist/schema → schema}/struct_field.js +0 -0
  238. /package/{dist/schema → schema}/union_field.d.ts +0 -0
  239. /package/{dist/schema → schema}/union_field.js +0 -0
  240. /package/{dist/scripts → scripts}/custom_compiler.d.ts +0 -0
  241. /package/{dist/scripts → scripts}/custom_compiler.js +0 -0
  242. /package/{dist/scripts → scripts}/custom_graphql.d.ts +0 -0
  243. /package/{dist/scripts → scripts}/custom_graphql.js +0 -0
  244. /package/{dist/scripts → scripts}/migrate_v0.1.d.ts +0 -0
  245. /package/{dist/scripts → scripts}/migrate_v0.1.js +0 -0
  246. /package/{dist/scripts → scripts}/move_types.d.ts +0 -0
  247. /package/{dist/scripts → scripts}/move_types.js +0 -0
  248. /package/{dist/scripts → scripts}/read_schema.d.ts +0 -0
  249. /package/{dist/scripts → scripts}/read_schema.js +0 -0
  250. /package/{dist/testutils → testutils}/action/complex_schemas.d.ts +0 -0
  251. /package/{dist/testutils → testutils}/action/complex_schemas.js +0 -0
  252. /package/{dist/testutils → testutils}/builder.d.ts +0 -0
  253. /package/{dist/testutils → testutils}/builder.js +0 -0
  254. /package/{dist/testutils → testutils}/context/test_context.d.ts +0 -0
  255. /package/{dist/testutils → testutils}/context/test_context.js +0 -0
  256. /package/{dist/testutils → testutils}/db/fixture.d.ts +0 -0
  257. /package/{dist/testutils → testutils}/db/fixture.js +0 -0
  258. /package/{dist/testutils → testutils}/db/temp_db.d.ts +0 -0
  259. /package/{dist/testutils → testutils}/db/temp_db.js +0 -0
  260. /package/{dist/testutils → testutils}/db/value.d.ts +0 -0
  261. /package/{dist/testutils → testutils}/db/value.js +0 -0
  262. /package/{dist/testutils → testutils}/db_mock.d.ts +0 -0
  263. /package/{dist/testutils → testutils}/db_mock.js +0 -0
  264. /package/{dist/testutils → testutils}/db_time_zone.d.ts +0 -0
  265. /package/{dist/testutils → testutils}/db_time_zone.js +0 -0
  266. /package/{dist/testutils → testutils}/ent-graphql-tests/index.d.ts +0 -0
  267. /package/{dist/testutils → testutils}/ent-graphql-tests/index.js +0 -0
  268. /package/{dist/testutils → testutils}/fake_comms.d.ts +0 -0
  269. /package/{dist/testutils → testutils}/fake_comms.js +0 -0
  270. /package/{dist/testutils → testutils}/fake_data/const.d.ts +0 -0
  271. /package/{dist/testutils → testutils}/fake_data/const.js +0 -0
  272. /package/{dist/testutils → testutils}/fake_data/events_query.d.ts +0 -0
  273. /package/{dist/testutils → testutils}/fake_data/events_query.js +0 -0
  274. /package/{dist/testutils → testutils}/fake_data/fake_contact.d.ts +0 -0
  275. /package/{dist/testutils → testutils}/fake_data/fake_contact.js +0 -0
  276. /package/{dist/testutils → testutils}/fake_data/fake_event.d.ts +0 -0
  277. /package/{dist/testutils → testutils}/fake_data/fake_event.js +0 -0
  278. /package/{dist/testutils → testutils}/fake_data/fake_tag.d.ts +0 -0
  279. /package/{dist/testutils → testutils}/fake_data/fake_tag.js +0 -0
  280. /package/{dist/testutils → testutils}/fake_data/fake_user.d.ts +0 -0
  281. /package/{dist/testutils → testutils}/fake_data/fake_user.js +0 -0
  282. /package/{dist/testutils → testutils}/fake_data/index.d.ts +0 -0
  283. /package/{dist/testutils → testutils}/fake_data/index.js +0 -0
  284. /package/{dist/testutils → testutils}/fake_data/internal.d.ts +0 -0
  285. /package/{dist/testutils → testutils}/fake_data/internal.js +0 -0
  286. /package/{dist/testutils → testutils}/fake_data/tag_query.d.ts +0 -0
  287. /package/{dist/testutils → testutils}/fake_data/tag_query.js +0 -0
  288. /package/{dist/testutils → testutils}/fake_data/test_helpers.d.ts +0 -0
  289. /package/{dist/testutils → testutils}/fake_data/test_helpers.js +0 -0
  290. /package/{dist/testutils → testutils}/fake_data/user_query.d.ts +0 -0
  291. /package/{dist/testutils → testutils}/fake_data/user_query.js +0 -0
  292. /package/{dist/testutils → testutils}/fake_log.d.ts +0 -0
  293. /package/{dist/testutils → testutils}/fake_log.js +0 -0
  294. /package/{dist/testutils → testutils}/mock_date.d.ts +0 -0
  295. /package/{dist/testutils → testutils}/mock_date.js +0 -0
  296. /package/{dist/testutils → testutils}/mock_log.d.ts +0 -0
  297. /package/{dist/testutils → testutils}/mock_log.js +0 -0
  298. /package/{dist/testutils → testutils}/parse_sql.d.ts +0 -0
  299. /package/{dist/testutils → testutils}/parse_sql.js +0 -0
  300. /package/{dist/testutils → testutils}/test_edge_global_schema.d.ts +0 -0
  301. /package/{dist/testutils → testutils}/test_edge_global_schema.js +0 -0
  302. /package/{dist/testutils → testutils}/write.d.ts +0 -0
  303. /package/{dist/testutils → testutils}/write.js +0 -0
  304. /package/{dist/tsc → tsc}/ast.d.ts +0 -0
  305. /package/{dist/tsc → tsc}/ast.js +0 -0
  306. /package/{dist/tsc → tsc}/compilerOptions.d.ts +0 -0
  307. /package/{dist/tsc → tsc}/compilerOptions.js +0 -0
  308. /package/{dist/tsc → tsc}/move_generated.d.ts +0 -0
  309. /package/{dist/tsc → tsc}/move_generated.js +0 -0
  310. /package/{dist/tsc → tsc}/transform.d.ts +0 -0
  311. /package/{dist/tsc → tsc}/transform.js +0 -0
  312. /package/{dist/tsc → tsc}/transform_action.d.ts +0 -0
  313. /package/{dist/tsc → tsc}/transform_action.js +0 -0
  314. /package/{dist/tsc → tsc}/transform_ent.d.ts +0 -0
  315. /package/{dist/tsc → tsc}/transform_ent.js +0 -0
  316. /package/{dist/tsc → tsc}/transform_schema.d.ts +0 -0
  317. /package/{dist/tsc → tsc}/transform_schema.js +0 -0
@@ -1,37 +0,0 @@
1
- import { Builder } from "./action";
2
- import {
3
- Viewer,
4
- ID,
5
- Ent,
6
- PrivacyResult,
7
- PrivacyPolicyRule,
8
- Deny,
9
- Allow,
10
- Skip,
11
- } from "../core/base";
12
-
13
- function isBuilder(node: ID | Builder<Ent, any>): node is Builder<Ent, any> {
14
- return (node as Builder<Ent>).placeholderID !== undefined;
15
- }
16
-
17
- export class DenyIfBuilder implements PrivacyPolicyRule {
18
- constructor(private id?: ID | Builder<Ent, any>) {}
19
-
20
- async apply(_v: Viewer, _ent: Ent): Promise<PrivacyResult> {
21
- if (this.id && isBuilder(this.id)) {
22
- return Deny();
23
- }
24
- return Skip();
25
- }
26
- }
27
-
28
- export class AllowIfBuilder implements PrivacyPolicyRule {
29
- constructor(private id?: ID | Builder<Ent, any>) {}
30
-
31
- async apply(_v: Viewer, _ent: Ent): Promise<PrivacyResult> {
32
- if (this.id && isBuilder(this.id)) {
33
- return Allow();
34
- }
35
- return Skip();
36
- }
37
- }
@@ -1,242 +0,0 @@
1
- import {
2
- Add,
3
- Clause,
4
- Divide,
5
- Modulo,
6
- Multiply,
7
- Subtract,
8
- } from "../core/clause";
9
-
10
- export interface RelativeFieldValue<T = BigInt | number> {
11
- delta: T;
12
- sqlExpression: (col: string) => Clause;
13
- eval: (curr: T) => T;
14
- }
15
-
16
- export interface RelativeNumberValue<T> {
17
- add?: T;
18
- subtract?: T;
19
- divide?: T;
20
- multiply?: T;
21
- // note modulo only seems to work with integer types in postgres
22
- modulo?: T;
23
- }
24
-
25
- // and then that translates to calling these which returns a RelativeFieldValue which is much cleaner?
26
- // can also do it one by one instead of what we had in
27
-
28
- // https://github.com/microsoft/TypeScript/issues/27808 is why we have the ts-expect-error below
29
- function addNumber(delta: number): RelativeFieldValue<number>;
30
- function addNumber(delta: BigInt): RelativeFieldValue<BigInt>;
31
- function addNumber<T = number | BigInt>(delta: T): RelativeFieldValue<T> {
32
- return {
33
- delta,
34
- sqlExpression(col: string): Clause {
35
- return Add(col, delta);
36
- },
37
- eval(curr): T {
38
- // @ts-expect-error
39
- return curr + delta;
40
- },
41
- };
42
- }
43
-
44
- function subtractNumber(delta: number): RelativeFieldValue<number>;
45
- function subtractNumber(delta: BigInt): RelativeFieldValue<BigInt>;
46
- function subtractNumber<T = number | BigInt>(delta: T): RelativeFieldValue<T> {
47
- return {
48
- delta,
49
- sqlExpression(col: string): Clause {
50
- return Subtract(col, delta);
51
- },
52
- eval(curr): T {
53
- // @ts-expect-error
54
- return curr - delta;
55
- },
56
- };
57
- }
58
-
59
- function multiplyNumber(delta: number): RelativeFieldValue<number>;
60
- function multiplyNumber(delta: BigInt): RelativeFieldValue<BigInt>;
61
- function multiplyNumber<T = number | BigInt>(delta: T): RelativeFieldValue<T> {
62
- return {
63
- delta,
64
- sqlExpression(col: string): Clause {
65
- return Multiply(col, delta);
66
- },
67
- eval(curr): T {
68
- // @ts-expect-error
69
- return curr * delta;
70
- },
71
- };
72
- }
73
-
74
- function divideNumber(delta: number): RelativeFieldValue<number>;
75
- function divideNumber(delta: BigInt): RelativeFieldValue<BigInt>;
76
- function divideNumber<T = BigInt | number>(delta: T): RelativeFieldValue<T> {
77
- return {
78
- delta,
79
- sqlExpression(col: string): Clause {
80
- return Divide(col, delta);
81
- },
82
- eval(curr): T {
83
- // @ts-expect-error
84
- return curr / delta;
85
- },
86
- };
87
- }
88
-
89
- // note modulo only seems to work with integer types in postgres
90
- function moduloNumber(delta: number): RelativeFieldValue<number>;
91
- function moduloNumber(delta: BigInt): RelativeFieldValue<BigInt>;
92
- function moduloNumber<T = BigInt | number>(delta: T): RelativeFieldValue<T> {
93
- return {
94
- delta,
95
- sqlExpression(col: string): Clause {
96
- return Modulo(col, delta);
97
- },
98
- eval(curr): T {
99
- // @ts-expect-error
100
- return curr % delta;
101
- },
102
- };
103
- }
104
-
105
- export const NumberOps = {
106
- addNumber,
107
- moduloNumber,
108
- divideNumber,
109
- subtractNumber,
110
- multiplyNumber,
111
- };
112
-
113
- export function convertRelativeInput(
114
- rel: RelativeNumberValue<BigInt>,
115
- col: string,
116
- existing: BigInt,
117
- ): { value: BigInt; clause: Clause };
118
- export function convertRelativeInput(
119
- rel: RelativeNumberValue<number>,
120
- col: string,
121
- existing: number,
122
- ): { value: number; clause: Clause };
123
- export function convertRelativeInput<T = BigInt | number>(
124
- rel: RelativeNumberValue<T>,
125
- col: string,
126
- existing: T,
127
- ): { value: T; clause: Clause } {
128
- if (Object.keys(rel).length !== 1) {
129
- throw new Error(`only 1 key is expected. ${Object.keys(rel).length} given`);
130
- }
131
- const ret = (relField: RelativeFieldValue<T>) => {
132
- return {
133
- value: relField.eval(existing),
134
- clause: relField.sqlExpression(col),
135
- };
136
- };
137
- if (rel.add !== undefined) {
138
- // @ts-expect-error
139
- return ret(addNumber(rel.add));
140
- }
141
- if (rel.subtract !== undefined) {
142
- // @ts-expect-error
143
- return ret(subtractNumber(rel.subtract));
144
- }
145
- if (rel.multiply !== undefined) {
146
- // @ts-expect-error
147
- return ret(multiplyNumber(rel.multiply));
148
- }
149
- if (rel.divide !== undefined) {
150
- // @ts-expect-error
151
- return ret(divideNumber(rel.divide));
152
- }
153
- if (rel.modulo !== undefined) {
154
- // @ts-expect-error
155
- return ret(moduloNumber(rel.modulo));
156
- }
157
- throw new Error(`error in convertRelativeInput. shouldn't have gotten here`);
158
- }
159
-
160
- export function maybeConvertRelativeInputPlusExpressions(
161
- rel: number | RelativeNumberValue<number>,
162
- col: string,
163
- existing: number,
164
- expressions: Map<string, Clause>,
165
- ): number;
166
- export function maybeConvertRelativeInputPlusExpressions(
167
- rel: number | RelativeNumberValue<number> | undefined,
168
- col: string,
169
- existing: number,
170
- expressions: Map<string, Clause>,
171
- ): number | undefined;
172
- export function maybeConvertRelativeInputPlusExpressions(
173
- rel: number | RelativeNumberValue<number> | null,
174
- col: string,
175
- existing: number | null,
176
- expressions: Map<string, Clause>,
177
- ): number | null;
178
- export function maybeConvertRelativeInputPlusExpressions(
179
- rel: number | RelativeNumberValue<number> | null | undefined,
180
- col: string,
181
- existing: number | null,
182
- expressions: Map<string, Clause>,
183
- ): number | undefined | null;
184
-
185
- export function maybeConvertRelativeInputPlusExpressions(
186
- rel: BigInt | RelativeNumberValue<BigInt>,
187
- col: string,
188
- existing: BigInt,
189
- expressions: Map<string, Clause>,
190
- ): BigInt;
191
- export function maybeConvertRelativeInputPlusExpressions(
192
- rel: BigInt | RelativeNumberValue<BigInt> | undefined,
193
- col: string,
194
- existing: BigInt,
195
- expressions: Map<string, Clause>,
196
- ): BigInt | undefined;
197
- export function maybeConvertRelativeInputPlusExpressions(
198
- rel: BigInt | RelativeNumberValue<BigInt> | null,
199
- col: string,
200
- existing: BigInt | null,
201
- expressions: Map<string, Clause>,
202
- ): BigInt | null;
203
- export function maybeConvertRelativeInputPlusExpressions(
204
- rel: BigInt | RelativeNumberValue<BigInt> | null | undefined,
205
- col: string,
206
- existing: BigInt | null,
207
- expressions: Map<string, Clause>,
208
- ): BigInt | null | undefined;
209
-
210
- export function maybeConvertRelativeInputPlusExpressions(
211
- rel:
212
- | number
213
- | RelativeNumberValue<number>
214
- | BigInt
215
- | RelativeNumberValue<BigInt>
216
- | null
217
- | undefined,
218
- col: string,
219
- existing: number | BigInt | null,
220
- expressions: Map<string, Clause>,
221
- ): number | null | undefined | BigInt {
222
- if (rel === null) {
223
- return rel;
224
- }
225
- if (rel === undefined) {
226
- return rel;
227
- }
228
-
229
- if (typeof rel === "bigint" || typeof rel === "number") {
230
- return rel;
231
- }
232
-
233
- // // TODO is this the behavior we want? should we coalesce as 0?
234
- // if (existing === null) {
235
- // throw new Error(`cannot perform a relative operation on null`);
236
- // }
237
- // @ts-ignore
238
- // shouldn't be failing like it currently is. it thinks rel can be bigint and it shouldn't be???
239
- const { clause, value } = convertRelativeInput(rel, col, existing);
240
- expressions.set(col, clause);
241
- return value;
242
- }
@@ -1,38 +0,0 @@
1
- import { Ent, Viewer } from "../core/base";
2
- import { Action, Builder, Changeset } from "./action";
3
- import { ComplexExecutor } from "./executor";
4
-
5
- type ActionAny = Action<
6
- Ent<Viewer<any, any>>,
7
- Builder<Ent<Viewer<any, any>>, Viewer<any, any>, any>,
8
- Viewer<any, any>,
9
- any,
10
- any
11
- >;
12
-
13
- export class Transaction {
14
- constructor(
15
- private viewer: Viewer,
16
- // independent operations
17
- private actions: ActionAny[], // TODO ops for different types of transaction
18
- ) {}
19
-
20
- async run() {
21
- const changesets: Changeset[] = [];
22
- await Promise.all(
23
- this.actions.map(async (action) => {
24
- const c = await action.changeset();
25
- changesets.push(c);
26
- }),
27
- );
28
-
29
- const executor = new ComplexExecutor(
30
- this.viewer,
31
- "", // no placeholder, no opers
32
- [],
33
- new Map(),
34
- changesets,
35
- );
36
- await executor.execute();
37
- }
38
- }
package/src/auth/auth.ts DELETED
@@ -1,77 +0,0 @@
1
- import { Viewer } from "../core/base";
2
- import { LoggedOutViewer } from "../core/viewer";
3
- import { RequestContext, ContextCache } from "../core/context";
4
- import { IncomingMessage, ServerResponse } from "http";
5
- import { log } from "../core/logger";
6
-
7
- export type AuthViewer = Viewer | null;
8
- export interface AuthHandler {
9
- authViewer(ctx: RequestContext): AuthViewer | Promise<AuthViewer>;
10
- }
11
-
12
- let handlers: Map<string, AuthHandler> = new Map();
13
- export async function registerAuthHandler(name: string, auth: AuthHandler) {
14
- handlers.set(name, auth);
15
- }
16
-
17
- export async function clearAuthHandlers() {
18
- handlers.clear();
19
- }
20
-
21
- export async function getLoggedInViewer(
22
- context: RequestContext,
23
- ): Promise<Viewer | null> {
24
- for (const [name, authHandler] of handlers) {
25
- let v = await authHandler.authViewer(context);
26
- if (v !== null) {
27
- log(
28
- "info",
29
- `auth handler \`${name}\` authenticated user \`${v.viewerID}\``,
30
- );
31
- return v;
32
- }
33
- }
34
- log("info", "no auth handler returned viewer. default to logged out viewer");
35
- return null;
36
- }
37
-
38
- export async function buildContext(
39
- request: IncomingMessage,
40
- response: ServerResponse,
41
- ): Promise<RequestContext> {
42
- const ctx = new contextImpl(request, response);
43
- let viewer = await getLoggedInViewer(ctx);
44
- if (viewer) {
45
- // TODO since this is done, whatever other call to authViewer that was needed no longer needed
46
- ctx.authViewer(viewer);
47
- }
48
- return ctx;
49
- }
50
-
51
- class contextImpl implements RequestContext {
52
- cache?: ContextCache;
53
- private loggedOutViewer: LoggedOutViewer;
54
- private viewer: Viewer;
55
-
56
- constructor(
57
- public request: IncomingMessage,
58
- public response: ServerResponse,
59
- ) {
60
- this.cache = new ContextCache();
61
- // needs to be after this.cache above
62
- this.loggedOutViewer = new LoggedOutViewer(this);
63
- this.viewer = this.loggedOutViewer;
64
- }
65
-
66
- getViewer(): Viewer {
67
- return this.viewer;
68
- }
69
-
70
- async authViewer(viewer: Viewer): Promise<void> {
71
- this.viewer = viewer;
72
- }
73
-
74
- async logout(): Promise<void> {
75
- this.viewer = this.loggedOutViewer;
76
- }
77
- }
package/src/auth/index.ts DELETED
@@ -1,8 +0,0 @@
1
- export {
2
- AuthHandler,
3
- AuthViewer,
4
- registerAuthHandler,
5
- clearAuthHandlers,
6
- getLoggedInViewer,
7
- buildContext,
8
- } from "./auth";