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

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/{dist/core → core}/query/assoc_query.d.ts +3 -0
  2. package/{dist/core → core}/query/assoc_query.js +71 -0
  3. package/{dist/core → core}/query/query.d.ts +3 -0
  4. package/{dist/core → core}/query/query.js +20 -6
  5. package/core/query/shared_assoc_test.d.ts +2 -0
  6. package/core/query/shared_assoc_test.js +1089 -0
  7. package/core/query/shared_test.d.ts +21 -0
  8. package/core/query/shared_test.js +736 -0
  9. package/graphql/query/shared_assoc_test.d.ts +1 -0
  10. package/graphql/query/shared_assoc_test.js +203 -0
  11. package/package.json +8 -53
  12. package/{dist/testutils → testutils}/fake_data/test_helpers.js +2 -1
  13. package/dist/package.json +0 -64
  14. package/src/action/action.ts +0 -330
  15. package/src/action/executor.ts +0 -453
  16. package/src/action/experimental_action.ts +0 -277
  17. package/src/action/index.ts +0 -31
  18. package/src/action/operations.ts +0 -967
  19. package/src/action/orchestrator.ts +0 -1527
  20. package/src/action/privacy.ts +0 -37
  21. package/src/action/relative_value.ts +0 -242
  22. package/src/action/transaction.ts +0 -38
  23. package/src/auth/auth.ts +0 -77
  24. package/src/auth/index.ts +0 -8
  25. package/src/core/base.ts +0 -367
  26. package/src/core/clause.ts +0 -1065
  27. package/src/core/config.ts +0 -219
  28. package/src/core/const.ts +0 -5
  29. package/src/core/context.ts +0 -135
  30. package/src/core/convert.ts +0 -106
  31. package/src/core/date.ts +0 -23
  32. package/src/core/db.ts +0 -498
  33. package/src/core/ent.ts +0 -1740
  34. package/src/core/global_schema.ts +0 -49
  35. package/src/core/loaders/assoc_count_loader.ts +0 -99
  36. package/src/core/loaders/assoc_edge_loader.ts +0 -250
  37. package/src/core/loaders/index.ts +0 -12
  38. package/src/core/loaders/loader.ts +0 -66
  39. package/src/core/loaders/object_loader.ts +0 -489
  40. package/src/core/loaders/query_loader.ts +0 -314
  41. package/src/core/loaders/raw_count_loader.ts +0 -175
  42. package/src/core/logger.ts +0 -49
  43. package/src/core/privacy.ts +0 -660
  44. package/src/core/query/assoc_query.ts +0 -240
  45. package/src/core/query/custom_clause_query.ts +0 -174
  46. package/src/core/query/custom_query.ts +0 -302
  47. package/src/core/query/index.ts +0 -9
  48. package/src/core/query/query.ts +0 -674
  49. package/src/core/query_impl.ts +0 -32
  50. package/src/core/viewer.ts +0 -52
  51. package/src/ent.code-workspace +0 -73
  52. package/src/graphql/builtins/connection.ts +0 -25
  53. package/src/graphql/builtins/edge.ts +0 -16
  54. package/src/graphql/builtins/node.ts +0 -12
  55. package/src/graphql/graphql.ts +0 -891
  56. package/src/graphql/graphql_field_helpers.ts +0 -221
  57. package/src/graphql/index.ts +0 -42
  58. package/src/graphql/mutations/union.ts +0 -39
  59. package/src/graphql/node_resolver.ts +0 -122
  60. package/src/graphql/query/connection_type.ts +0 -113
  61. package/src/graphql/query/edge_connection.ts +0 -171
  62. package/src/graphql/query/page_info.ts +0 -34
  63. package/src/graphql/query/shared_edge_connection.ts +0 -287
  64. package/src/graphql/scalars/orderby_direction.ts +0 -13
  65. package/src/graphql/scalars/time.ts +0 -38
  66. package/src/imports/dataz/example1/_auth.ts +0 -51
  67. package/src/imports/dataz/example1/_viewer.ts +0 -35
  68. package/src/imports/index.ts +0 -213
  69. package/src/index.ts +0 -145
  70. package/src/parse_schema/parse.ts +0 -585
  71. package/src/schema/base_schema.ts +0 -224
  72. package/src/schema/field.ts +0 -1087
  73. package/src/schema/index.ts +0 -53
  74. package/src/schema/json_field.ts +0 -94
  75. package/src/schema/schema.ts +0 -1028
  76. package/src/schema/struct_field.ts +0 -234
  77. package/src/schema/union_field.ts +0 -105
  78. package/src/scripts/custom_compiler.ts +0 -331
  79. package/src/scripts/custom_graphql.ts +0 -550
  80. package/src/scripts/migrate_v0.1.ts +0 -41
  81. package/src/scripts/move_types.ts +0 -131
  82. package/src/scripts/read_schema.ts +0 -67
  83. package/src/setupPackage.js +0 -42
  84. package/src/testutils/action/complex_schemas.ts +0 -517
  85. package/src/testutils/builder.ts +0 -422
  86. package/src/testutils/context/test_context.ts +0 -25
  87. package/src/testutils/db/fixture.ts +0 -32
  88. package/src/testutils/db/temp_db.ts +0 -941
  89. package/src/testutils/db/value.ts +0 -294
  90. package/src/testutils/db_mock.ts +0 -351
  91. package/src/testutils/db_time_zone.ts +0 -40
  92. package/src/testutils/ent-graphql-tests/index.ts +0 -653
  93. package/src/testutils/fake_comms.ts +0 -50
  94. package/src/testutils/fake_data/const.ts +0 -64
  95. package/src/testutils/fake_data/events_query.ts +0 -145
  96. package/src/testutils/fake_data/fake_contact.ts +0 -150
  97. package/src/testutils/fake_data/fake_event.ts +0 -150
  98. package/src/testutils/fake_data/fake_tag.ts +0 -139
  99. package/src/testutils/fake_data/fake_user.ts +0 -232
  100. package/src/testutils/fake_data/index.ts +0 -1
  101. package/src/testutils/fake_data/internal.ts +0 -8
  102. package/src/testutils/fake_data/tag_query.ts +0 -56
  103. package/src/testutils/fake_data/test_helpers.ts +0 -388
  104. package/src/testutils/fake_data/user_query.ts +0 -524
  105. package/src/testutils/fake_log.ts +0 -52
  106. package/src/testutils/mock_date.ts +0 -10
  107. package/src/testutils/mock_log.ts +0 -39
  108. package/src/testutils/parse_sql.ts +0 -685
  109. package/src/testutils/test_edge_global_schema.ts +0 -49
  110. package/src/testutils/write.ts +0 -70
  111. package/src/tsc/ast.ts +0 -351
  112. package/src/tsc/compilerOptions.ts +0 -85
  113. package/src/tsc/move_generated.ts +0 -191
  114. package/src/tsc/transform.ts +0 -226
  115. package/src/tsc/transform_action.ts +0 -224
  116. package/src/tsc/transform_ent.ts +0 -66
  117. package/src/tsc/transform_schema.ts +0 -546
  118. package/tsconfig.json +0 -20
  119. /package/{dist/action → action}/action.d.ts +0 -0
  120. /package/{dist/action → action}/action.js +0 -0
  121. /package/{dist/action → action}/executor.d.ts +0 -0
  122. /package/{dist/action → action}/executor.js +0 -0
  123. /package/{dist/action → action}/experimental_action.d.ts +0 -0
  124. /package/{dist/action → action}/experimental_action.js +0 -0
  125. /package/{dist/action → action}/index.d.ts +0 -0
  126. /package/{dist/action → action}/index.js +0 -0
  127. /package/{dist/action → action}/operations.d.ts +0 -0
  128. /package/{dist/action → action}/operations.js +0 -0
  129. /package/{dist/action → action}/orchestrator.d.ts +0 -0
  130. /package/{dist/action → action}/orchestrator.js +0 -0
  131. /package/{dist/action → action}/privacy.d.ts +0 -0
  132. /package/{dist/action → action}/privacy.js +0 -0
  133. /package/{dist/action → action}/relative_value.d.ts +0 -0
  134. /package/{dist/action → action}/relative_value.js +0 -0
  135. /package/{dist/action → action}/transaction.d.ts +0 -0
  136. /package/{dist/action → action}/transaction.js +0 -0
  137. /package/{dist/auth → auth}/auth.d.ts +0 -0
  138. /package/{dist/auth → auth}/auth.js +0 -0
  139. /package/{dist/auth → auth}/index.d.ts +0 -0
  140. /package/{dist/auth → auth}/index.js +0 -0
  141. /package/{dist/core → core}/base.d.ts +0 -0
  142. /package/{dist/core → core}/base.js +0 -0
  143. /package/{dist/core → core}/clause.d.ts +0 -0
  144. /package/{dist/core → core}/clause.js +0 -0
  145. /package/{dist/core → core}/config.d.ts +0 -0
  146. /package/{dist/core → core}/config.js +0 -0
  147. /package/{dist/core → core}/const.d.ts +0 -0
  148. /package/{dist/core → core}/const.js +0 -0
  149. /package/{dist/core → core}/context.d.ts +0 -0
  150. /package/{dist/core → core}/context.js +0 -0
  151. /package/{dist/core → core}/convert.d.ts +0 -0
  152. /package/{dist/core → core}/convert.js +0 -0
  153. /package/{dist/core → core}/date.d.ts +0 -0
  154. /package/{dist/core → core}/date.js +0 -0
  155. /package/{dist/core → core}/db.d.ts +0 -0
  156. /package/{dist/core → core}/db.js +0 -0
  157. /package/{dist/core → core}/ent.d.ts +0 -0
  158. /package/{dist/core → core}/ent.js +0 -0
  159. /package/{dist/core → core}/global_schema.d.ts +0 -0
  160. /package/{dist/core → core}/global_schema.js +0 -0
  161. /package/{dist/core → core}/loaders/assoc_count_loader.d.ts +0 -0
  162. /package/{dist/core → core}/loaders/assoc_count_loader.js +0 -0
  163. /package/{dist/core → core}/loaders/assoc_edge_loader.d.ts +0 -0
  164. /package/{dist/core → core}/loaders/assoc_edge_loader.js +0 -0
  165. /package/{dist/core → core}/loaders/index.d.ts +0 -0
  166. /package/{dist/core → core}/loaders/index.js +0 -0
  167. /package/{dist/core → core}/loaders/loader.d.ts +0 -0
  168. /package/{dist/core → core}/loaders/loader.js +0 -0
  169. /package/{dist/core → core}/loaders/object_loader.d.ts +0 -0
  170. /package/{dist/core → core}/loaders/object_loader.js +0 -0
  171. /package/{dist/core → core}/loaders/query_loader.d.ts +0 -0
  172. /package/{dist/core → core}/loaders/query_loader.js +0 -0
  173. /package/{dist/core → core}/loaders/raw_count_loader.d.ts +0 -0
  174. /package/{dist/core → core}/loaders/raw_count_loader.js +0 -0
  175. /package/{dist/core → core}/logger.d.ts +0 -0
  176. /package/{dist/core → core}/logger.js +0 -0
  177. /package/{dist/core → core}/privacy.d.ts +0 -0
  178. /package/{dist/core → core}/privacy.js +0 -0
  179. /package/{dist/core → core}/query/custom_clause_query.d.ts +0 -0
  180. /package/{dist/core → core}/query/custom_clause_query.js +0 -0
  181. /package/{dist/core → core}/query/custom_query.d.ts +0 -0
  182. /package/{dist/core → core}/query/custom_query.js +0 -0
  183. /package/{dist/core → core}/query/index.d.ts +0 -0
  184. /package/{dist/core → core}/query/index.js +0 -0
  185. /package/{dist/core → core}/query_impl.d.ts +0 -0
  186. /package/{dist/core → core}/query_impl.js +0 -0
  187. /package/{dist/core → core}/viewer.d.ts +0 -0
  188. /package/{dist/core → core}/viewer.js +0 -0
  189. /package/{dist/graphql → graphql}/builtins/connection.d.ts +0 -0
  190. /package/{dist/graphql → graphql}/builtins/connection.js +0 -0
  191. /package/{dist/graphql → graphql}/builtins/edge.d.ts +0 -0
  192. /package/{dist/graphql → graphql}/builtins/edge.js +0 -0
  193. /package/{dist/graphql → graphql}/builtins/node.d.ts +0 -0
  194. /package/{dist/graphql → graphql}/builtins/node.js +0 -0
  195. /package/{dist/graphql → graphql}/graphql.d.ts +0 -0
  196. /package/{dist/graphql → graphql}/graphql.js +0 -0
  197. /package/{dist/graphql → graphql}/graphql_field_helpers.d.ts +0 -0
  198. /package/{dist/graphql → graphql}/graphql_field_helpers.js +0 -0
  199. /package/{dist/graphql → graphql}/index.d.ts +0 -0
  200. /package/{dist/graphql → graphql}/index.js +0 -0
  201. /package/{dist/graphql → graphql}/mutations/union.d.ts +0 -0
  202. /package/{dist/graphql → graphql}/mutations/union.js +0 -0
  203. /package/{dist/graphql → graphql}/node_resolver.d.ts +0 -0
  204. /package/{dist/graphql → graphql}/node_resolver.js +0 -0
  205. /package/{dist/graphql → graphql}/query/connection_type.d.ts +0 -0
  206. /package/{dist/graphql → graphql}/query/connection_type.js +0 -0
  207. /package/{dist/graphql → graphql}/query/edge_connection.d.ts +0 -0
  208. /package/{dist/graphql → graphql}/query/edge_connection.js +0 -0
  209. /package/{dist/graphql → graphql}/query/page_info.d.ts +0 -0
  210. /package/{dist/graphql → graphql}/query/page_info.js +0 -0
  211. /package/{dist/graphql → graphql}/query/shared_edge_connection.d.ts +0 -0
  212. /package/{dist/graphql → graphql}/query/shared_edge_connection.js +0 -0
  213. /package/{dist/graphql → graphql}/scalars/orderby_direction.d.ts +0 -0
  214. /package/{dist/graphql → graphql}/scalars/orderby_direction.js +0 -0
  215. /package/{dist/graphql → graphql}/scalars/time.d.ts +0 -0
  216. /package/{dist/graphql → graphql}/scalars/time.js +0 -0
  217. /package/{dist/imports → imports}/dataz/example1/_auth.d.ts +0 -0
  218. /package/{dist/imports → imports}/dataz/example1/_auth.js +0 -0
  219. /package/{dist/imports → imports}/dataz/example1/_viewer.d.ts +0 -0
  220. /package/{dist/imports → imports}/dataz/example1/_viewer.js +0 -0
  221. /package/{dist/imports → imports}/index.d.ts +0 -0
  222. /package/{dist/imports → imports}/index.js +0 -0
  223. /package/{dist/index.d.ts → index.d.ts} +0 -0
  224. /package/{dist/index.js → index.js} +0 -0
  225. /package/{dist/parse_schema → parse_schema}/parse.d.ts +0 -0
  226. /package/{dist/parse_schema → parse_schema}/parse.js +0 -0
  227. /package/{dist/schema → schema}/base_schema.d.ts +0 -0
  228. /package/{dist/schema → schema}/base_schema.js +0 -0
  229. /package/{dist/schema → schema}/field.d.ts +0 -0
  230. /package/{dist/schema → schema}/field.js +0 -0
  231. /package/{dist/schema → schema}/index.d.ts +0 -0
  232. /package/{dist/schema → schema}/index.js +0 -0
  233. /package/{dist/schema → schema}/json_field.d.ts +0 -0
  234. /package/{dist/schema → schema}/json_field.js +0 -0
  235. /package/{dist/schema → schema}/schema.d.ts +0 -0
  236. /package/{dist/schema → schema}/schema.js +0 -0
  237. /package/{dist/schema → schema}/struct_field.d.ts +0 -0
  238. /package/{dist/schema → schema}/struct_field.js +0 -0
  239. /package/{dist/schema → schema}/union_field.d.ts +0 -0
  240. /package/{dist/schema → schema}/union_field.js +0 -0
  241. /package/{dist/scripts → scripts}/custom_compiler.d.ts +0 -0
  242. /package/{dist/scripts → scripts}/custom_compiler.js +0 -0
  243. /package/{dist/scripts → scripts}/custom_graphql.d.ts +0 -0
  244. /package/{dist/scripts → scripts}/custom_graphql.js +0 -0
  245. /package/{dist/scripts → scripts}/migrate_v0.1.d.ts +0 -0
  246. /package/{dist/scripts → scripts}/migrate_v0.1.js +0 -0
  247. /package/{dist/scripts → scripts}/move_types.d.ts +0 -0
  248. /package/{dist/scripts → scripts}/move_types.js +0 -0
  249. /package/{dist/scripts → scripts}/read_schema.d.ts +0 -0
  250. /package/{dist/scripts → scripts}/read_schema.js +0 -0
  251. /package/{dist/testutils → testutils}/action/complex_schemas.d.ts +0 -0
  252. /package/{dist/testutils → testutils}/action/complex_schemas.js +0 -0
  253. /package/{dist/testutils → testutils}/builder.d.ts +0 -0
  254. /package/{dist/testutils → testutils}/builder.js +0 -0
  255. /package/{dist/testutils → testutils}/context/test_context.d.ts +0 -0
  256. /package/{dist/testutils → testutils}/context/test_context.js +0 -0
  257. /package/{dist/testutils → testutils}/db/fixture.d.ts +0 -0
  258. /package/{dist/testutils → testutils}/db/fixture.js +0 -0
  259. /package/{dist/testutils → testutils}/db/temp_db.d.ts +0 -0
  260. /package/{dist/testutils → testutils}/db/temp_db.js +0 -0
  261. /package/{dist/testutils → testutils}/db/value.d.ts +0 -0
  262. /package/{dist/testutils → testutils}/db/value.js +0 -0
  263. /package/{dist/testutils → testutils}/db_mock.d.ts +0 -0
  264. /package/{dist/testutils → testutils}/db_mock.js +0 -0
  265. /package/{dist/testutils → testutils}/db_time_zone.d.ts +0 -0
  266. /package/{dist/testutils → testutils}/db_time_zone.js +0 -0
  267. /package/{dist/testutils → testutils}/ent-graphql-tests/index.d.ts +0 -0
  268. /package/{dist/testutils → testutils}/ent-graphql-tests/index.js +0 -0
  269. /package/{dist/testutils → testutils}/fake_comms.d.ts +0 -0
  270. /package/{dist/testutils → testutils}/fake_comms.js +0 -0
  271. /package/{dist/testutils → testutils}/fake_data/const.d.ts +0 -0
  272. /package/{dist/testutils → testutils}/fake_data/const.js +0 -0
  273. /package/{dist/testutils → testutils}/fake_data/events_query.d.ts +0 -0
  274. /package/{dist/testutils → testutils}/fake_data/events_query.js +0 -0
  275. /package/{dist/testutils → testutils}/fake_data/fake_contact.d.ts +0 -0
  276. /package/{dist/testutils → testutils}/fake_data/fake_contact.js +0 -0
  277. /package/{dist/testutils → testutils}/fake_data/fake_event.d.ts +0 -0
  278. /package/{dist/testutils → testutils}/fake_data/fake_event.js +0 -0
  279. /package/{dist/testutils → testutils}/fake_data/fake_tag.d.ts +0 -0
  280. /package/{dist/testutils → testutils}/fake_data/fake_tag.js +0 -0
  281. /package/{dist/testutils → testutils}/fake_data/fake_user.d.ts +0 -0
  282. /package/{dist/testutils → testutils}/fake_data/fake_user.js +0 -0
  283. /package/{dist/testutils → testutils}/fake_data/index.d.ts +0 -0
  284. /package/{dist/testutils → testutils}/fake_data/index.js +0 -0
  285. /package/{dist/testutils → testutils}/fake_data/internal.d.ts +0 -0
  286. /package/{dist/testutils → testutils}/fake_data/internal.js +0 -0
  287. /package/{dist/testutils → testutils}/fake_data/tag_query.d.ts +0 -0
  288. /package/{dist/testutils → testutils}/fake_data/tag_query.js +0 -0
  289. /package/{dist/testutils → testutils}/fake_data/test_helpers.d.ts +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";