joist-orm 0.1.536 → 1.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 (221) hide show
  1. package/build/{BaseEntity.d.ts → src/BaseEntity.d.ts} +2 -1
  2. package/build/{BaseEntity.js → src/BaseEntity.js} +13 -9
  3. package/build/src/BaseEntity.js.map +1 -0
  4. package/build/{EntityManager.d.ts → src/EntityManager.d.ts} +139 -110
  5. package/build/{EntityManager.js → src/EntityManager.js} +281 -262
  6. package/build/src/EntityManager.js.map +1 -0
  7. package/build/{QueryBuilder.d.ts → src/QueryBuilder.d.ts} +53 -3
  8. package/build/src/QueryBuilder.js +341 -0
  9. package/build/src/QueryBuilder.js.map +1 -0
  10. package/build/src/Todo.d.ts +25 -0
  11. package/build/src/Todo.js +52 -0
  12. package/build/src/Todo.js.map +1 -0
  13. package/build/src/changes.d.ts +34 -0
  14. package/build/src/changes.js +37 -0
  15. package/build/src/changes.js.map +1 -0
  16. package/build/src/config.d.ts +43 -0
  17. package/build/src/config.js +114 -0
  18. package/build/src/config.js.map +1 -0
  19. package/build/{createOrUpdatePartial.d.ts → src/createOrUpdatePartial.d.ts} +2 -1
  20. package/build/{createOrUpdatePartial.js → src/createOrUpdatePartial.js} +42 -10
  21. package/build/src/createOrUpdatePartial.js.map +1 -0
  22. package/build/src/dataloaders/findDataLoader.d.ts +5 -0
  23. package/build/src/dataloaders/findDataLoader.js +28 -0
  24. package/build/src/dataloaders/findDataLoader.js.map +1 -0
  25. package/build/src/dataloaders/loadDataLoader.d.ts +3 -0
  26. package/build/src/dataloaders/loadDataLoader.js +37 -0
  27. package/build/src/dataloaders/loadDataLoader.js.map +1 -0
  28. package/build/src/dataloaders/manyToManyDataLoader.d.ts +5 -0
  29. package/build/src/dataloaders/manyToManyDataLoader.js +78 -0
  30. package/build/src/dataloaders/manyToManyDataLoader.js.map +1 -0
  31. package/build/src/dataloaders/manyToManyFindDataLoader.d.ts +5 -0
  32. package/build/src/dataloaders/manyToManyFindDataLoader.js +33 -0
  33. package/build/src/dataloaders/manyToManyFindDataLoader.js.map +1 -0
  34. package/build/src/dataloaders/oneToManyDataLoader.d.ts +4 -0
  35. package/build/src/dataloaders/oneToManyDataLoader.js +40 -0
  36. package/build/src/dataloaders/oneToManyDataLoader.js.map +1 -0
  37. package/build/src/dataloaders/oneToManyFindDataLoader.d.ts +5 -0
  38. package/build/src/dataloaders/oneToManyFindDataLoader.js +32 -0
  39. package/build/src/dataloaders/oneToManyFindDataLoader.js.map +1 -0
  40. package/build/src/dataloaders/oneToOneDataLoader.d.ts +4 -0
  41. package/build/src/dataloaders/oneToOneDataLoader.js +40 -0
  42. package/build/src/dataloaders/oneToOneDataLoader.js.map +1 -0
  43. package/build/src/drivers/IdAssigner.d.ts +33 -0
  44. package/build/src/drivers/IdAssigner.js +106 -0
  45. package/build/src/drivers/IdAssigner.js.map +1 -0
  46. package/build/src/drivers/InMemoryDriver.d.ts +29 -0
  47. package/build/src/drivers/InMemoryDriver.js +306 -0
  48. package/build/src/drivers/InMemoryDriver.js.map +1 -0
  49. package/build/src/drivers/PostgresDriver.d.ts +40 -0
  50. package/build/src/drivers/PostgresDriver.js +376 -0
  51. package/build/src/drivers/PostgresDriver.js.map +1 -0
  52. package/build/src/drivers/driver.d.ts +23 -0
  53. package/build/src/drivers/driver.js +3 -0
  54. package/build/src/drivers/driver.js.map +1 -0
  55. package/build/src/drivers/index.d.ts +4 -0
  56. package/build/src/drivers/index.js +17 -0
  57. package/build/src/drivers/index.js.map +1 -0
  58. package/build/{getProperties.d.ts → src/getProperties.d.ts} +0 -0
  59. package/build/{getProperties.js → src/getProperties.js} +1 -1
  60. package/build/src/getProperties.js.map +1 -0
  61. package/build/src/index.d.ts +62 -0
  62. package/build/src/index.js +263 -0
  63. package/build/src/index.js.map +1 -0
  64. package/build/src/keys.d.ts +30 -0
  65. package/build/{keys.js → src/keys.js} +48 -16
  66. package/build/src/keys.js.map +1 -0
  67. package/build/{loadLens.d.ts → src/loadLens.d.ts} +2 -2
  68. package/build/{loadLens.js → src/loadLens.js} +1 -1
  69. package/build/src/loadLens.js.map +1 -0
  70. package/build/src/loaded.d.ts +49 -0
  71. package/build/src/loaded.js +9 -0
  72. package/build/src/loaded.js.map +1 -0
  73. package/build/{newTestInstance.d.ts → src/newTestInstance.d.ts} +37 -3
  74. package/build/src/newTestInstance.js +342 -0
  75. package/build/src/newTestInstance.js.map +1 -0
  76. package/build/{collections → src/relations}/AbstractRelationImpl.d.ts +6 -5
  77. package/build/{collections → src/relations}/AbstractRelationImpl.js +0 -0
  78. package/build/src/relations/AbstractRelationImpl.js.map +1 -0
  79. package/build/src/relations/Collection.d.ts +26 -0
  80. package/build/src/relations/Collection.js +19 -0
  81. package/build/src/relations/Collection.js.map +1 -0
  82. package/build/{collections → src/relations}/CustomCollection.d.ts +6 -2
  83. package/build/{collections → src/relations}/CustomCollection.js +17 -9
  84. package/build/src/relations/CustomCollection.js.map +1 -0
  85. package/build/{collections → src/relations}/CustomReference.d.ts +7 -2
  86. package/build/{collections → src/relations}/CustomReference.js +16 -9
  87. package/build/src/relations/CustomReference.js.map +1 -0
  88. package/build/src/relations/LargeCollection.d.ts +17 -0
  89. package/build/src/relations/LargeCollection.js +3 -0
  90. package/build/src/relations/LargeCollection.js.map +1 -0
  91. package/build/{collections → src/relations}/ManyToManyCollection.d.ts +9 -2
  92. package/build/src/relations/ManyToManyCollection.js +249 -0
  93. package/build/src/relations/ManyToManyCollection.js.map +1 -0
  94. package/build/src/relations/ManyToManyLargeCollection.d.ts +25 -0
  95. package/build/src/relations/ManyToManyLargeCollection.js +97 -0
  96. package/build/src/relations/ManyToManyLargeCollection.js.map +1 -0
  97. package/build/src/relations/ManyToOneReference.d.ts +77 -0
  98. package/build/{collections → src/relations}/ManyToOneReference.js +101 -48
  99. package/build/src/relations/ManyToOneReference.js.map +1 -0
  100. package/build/{collections → src/relations}/OneToManyCollection.d.ts +10 -2
  101. package/build/{collections → src/relations}/OneToManyCollection.js +54 -59
  102. package/build/src/relations/OneToManyCollection.js.map +1 -0
  103. package/build/src/relations/OneToManyLargeCollection.d.ts +25 -0
  104. package/build/src/relations/OneToManyLargeCollection.js +83 -0
  105. package/build/src/relations/OneToManyLargeCollection.js.map +1 -0
  106. package/build/src/relations/OneToOneReference.d.ts +82 -0
  107. package/build/src/relations/OneToOneReference.js +168 -0
  108. package/build/src/relations/OneToOneReference.js.map +1 -0
  109. package/build/src/relations/PolymorphicReference.d.ts +69 -0
  110. package/build/src/relations/PolymorphicReference.js +210 -0
  111. package/build/src/relations/PolymorphicReference.js.map +1 -0
  112. package/build/src/relations/Reference.d.ts +29 -0
  113. package/build/src/relations/Reference.js +23 -0
  114. package/build/src/relations/Reference.js.map +1 -0
  115. package/build/src/relations/Relation.d.ts +10 -0
  116. package/build/src/relations/Relation.js +13 -0
  117. package/build/src/relations/Relation.js.map +1 -0
  118. package/build/src/relations/hasAsyncProperty.d.ts +36 -0
  119. package/build/src/relations/hasAsyncProperty.js +55 -0
  120. package/build/src/relations/hasAsyncProperty.js.map +1 -0
  121. package/build/{collections → src/relations}/hasManyDerived.d.ts +2 -1
  122. package/build/{collections → src/relations}/hasManyDerived.js +1 -1
  123. package/build/src/relations/hasManyDerived.js.map +1 -0
  124. package/build/{collections → src/relations}/hasManyThrough.d.ts +0 -0
  125. package/build/{collections → src/relations}/hasManyThrough.js +2 -2
  126. package/build/src/relations/hasManyThrough.js.map +1 -0
  127. package/build/{collections → src/relations}/hasOneDerived.d.ts +3 -2
  128. package/build/{collections → src/relations}/hasOneDerived.js +1 -1
  129. package/build/src/relations/hasOneDerived.js.map +1 -0
  130. package/build/{collections → src/relations}/hasOneThrough.d.ts +0 -0
  131. package/build/{collections → src/relations}/hasOneThrough.js +2 -2
  132. package/build/src/relations/hasOneThrough.js.map +1 -0
  133. package/build/src/relations/index.d.ts +18 -0
  134. package/build/src/relations/index.js +53 -0
  135. package/build/src/relations/index.js.map +1 -0
  136. package/build/{reverseHint.d.ts → src/reverseHint.d.ts} +2 -1
  137. package/build/{reverseHint.js → src/reverseHint.js} +13 -9
  138. package/build/src/reverseHint.js.map +1 -0
  139. package/build/src/rules.d.ts +23 -0
  140. package/build/src/rules.js +23 -0
  141. package/build/src/rules.js.map +1 -0
  142. package/build/src/serde.d.ts +121 -0
  143. package/build/src/serde.js +190 -0
  144. package/build/src/serde.js.map +1 -0
  145. package/build/{utils.d.ts → src/utils.d.ts} +2 -0
  146. package/build/{utils.js → src/utils.js} +10 -1
  147. package/build/src/utils.js.map +1 -0
  148. package/build/tsconfig.tsbuildinfo +1 -0
  149. package/package.json +30 -15
  150. package/build/BaseEntity.js.map +0 -1
  151. package/build/EntityManager.js.map +0 -1
  152. package/build/EntityPersister.d.ts +0 -30
  153. package/build/EntityPersister.js +0 -197
  154. package/build/EntityPersister.js.map +0 -1
  155. package/build/QueryBuilder.js +0 -195
  156. package/build/QueryBuilder.js.map +0 -1
  157. package/build/changes.d.ts +0 -23
  158. package/build/changes.js +0 -14
  159. package/build/changes.js.map +0 -1
  160. package/build/collections/AbstractRelationImpl.js.map +0 -1
  161. package/build/collections/CustomCollection.js.map +0 -1
  162. package/build/collections/CustomReference.js.map +0 -1
  163. package/build/collections/ManyToManyCollection.js +0 -288
  164. package/build/collections/ManyToManyCollection.js.map +0 -1
  165. package/build/collections/ManyToOneReference.d.ts +0 -50
  166. package/build/collections/ManyToOneReference.js.map +0 -1
  167. package/build/collections/OneToManyCollection.js.map +0 -1
  168. package/build/collections/OneToOneReference.d.ts +0 -51
  169. package/build/collections/OneToOneReference.js +0 -132
  170. package/build/collections/OneToOneReference.js.map +0 -1
  171. package/build/collections/hasManyDerived.js.map +0 -1
  172. package/build/collections/hasManyThrough.js.map +0 -1
  173. package/build/collections/hasOneDerived.js.map +0 -1
  174. package/build/collections/hasOneThrough.js.map +0 -1
  175. package/build/collections/index.d.ts +0 -19
  176. package/build/collections/index.js +0 -49
  177. package/build/collections/index.js.map +0 -1
  178. package/build/createOrUpdatePartial.js.map +0 -1
  179. package/build/getProperties.js.map +0 -1
  180. package/build/index.d.ts +0 -140
  181. package/build/index.js +0 -278
  182. package/build/index.js.map +0 -1
  183. package/build/keys.d.ts +0 -21
  184. package/build/keys.js.map +0 -1
  185. package/build/loadLens.js.map +0 -1
  186. package/build/newTestInstance.js +0 -153
  187. package/build/newTestInstance.js.map +0 -1
  188. package/build/reverseHint.js.map +0 -1
  189. package/build/serde.d.ts +0 -47
  190. package/build/serde.js +0 -93
  191. package/build/serde.js.map +0 -1
  192. package/build/utils.js.map +0 -1
  193. package/package.json.bak +0 -27
  194. package/src/BaseEntity.ts +0 -104
  195. package/src/EntityManager.ts +0 -1263
  196. package/src/EntityPersister.ts +0 -240
  197. package/src/QueryBuilder.ts +0 -289
  198. package/src/changes.ts +0 -40
  199. package/src/collections/AbstractRelationImpl.ts +0 -28
  200. package/src/collections/CustomCollection.ts +0 -152
  201. package/src/collections/CustomReference.ts +0 -138
  202. package/src/collections/ManyToManyCollection.ts +0 -346
  203. package/src/collections/ManyToOneReference.ts +0 -215
  204. package/src/collections/OneToManyCollection.ts +0 -254
  205. package/src/collections/OneToOneReference.ts +0 -153
  206. package/src/collections/hasManyDerived.ts +0 -29
  207. package/src/collections/hasManyThrough.ts +0 -20
  208. package/src/collections/hasOneDerived.ts +0 -26
  209. package/src/collections/hasOneThrough.ts +0 -20
  210. package/src/collections/index.ts +0 -74
  211. package/src/createOrUpdatePartial.ts +0 -144
  212. package/src/getProperties.ts +0 -27
  213. package/src/index.ts +0 -400
  214. package/src/keys.ts +0 -75
  215. package/src/loadLens.ts +0 -126
  216. package/src/newTestInstance.ts +0 -205
  217. package/src/reverseHint.ts +0 -43
  218. package/src/serde.ts +0 -97
  219. package/src/utils.ts +0 -63
  220. package/tsconfig.json +0 -21
  221. package/tsconfig.tsbuildinfo +0 -2646
@@ -1,153 +0,0 @@
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.getTestIndex = exports.testIndex = exports.newTestInstance = exports.testDate = exports.jan1 = void 0;
7
- const is_plain_object_1 = __importDefault(require("is-plain-object"));
8
- const EntityManager_1 = require("./EntityManager");
9
- const keys_1 = require("./keys");
10
- const utils_1 = require("./utils");
11
- // Chosen b/c it's a monday https://www.timeanddate.com/calendar/monthly.html?year=2018&month=1&country=1
12
- exports.jan1 = new Date(2018, 0, 1);
13
- exports.testDate = exports.jan1;
14
- /** Creates a test instance of `T`. */
15
- function newTestInstance(em, cstr, opts = {}) {
16
- const meta = EntityManager_1.getMetadata(cstr);
17
- // fullOpts will end up being a full/type-safe opts with every required field
18
- // filled in, either driven by the passed-in opts or by making new entities as-needed
19
- const fullOpts = Object.fromEntries(meta.fields
20
- .map((field) => {
21
- var _a;
22
- const { fieldName } = field;
23
- // Use the opts value if they passed one in
24
- if (fieldName in opts) {
25
- const optValue = opts[fieldName];
26
- // Watch for our "the parent is not yet created" null marker
27
- if (optValue === null) {
28
- return [];
29
- }
30
- // If this is a partial with defaults for the entity, call newTestInstance to get it created
31
- if (field.kind === "m2o") {
32
- if (EntityManager_1.isEntity(optValue)) {
33
- return [fieldName, optValue];
34
- }
35
- else if (optValue && typeof optValue === "string") {
36
- return [
37
- fieldName,
38
- em.entities.find((e) => e.id === optValue || getTestId(em, e) === optValue) ||
39
- utils_1.fail(`Did not find tagged id ${optValue}`),
40
- ];
41
- }
42
- else if (optValue && !is_plain_object_1.default(optValue)) {
43
- return field.otherMetadata().factory(em, opts);
44
- }
45
- return [fieldName, field.otherMetadata().factory(em, { ...optValue, use: opts.use })];
46
- }
47
- // If this is a list of children, watch for partials that should be newTestInstance'd
48
- if (field.kind === "o2m" || field.kind == "m2m") {
49
- const values = optValue.map((optValue) => {
50
- if (EntityManager_1.isEntity(optValue)) {
51
- return optValue;
52
- }
53
- else if (optValue && typeof optValue === "string") {
54
- return (em.entities.find((e) => e.id === optValue || getTestId(em, e) === optValue) ||
55
- utils_1.fail(`Did not find tagged id ${optValue}`));
56
- }
57
- else if (optValue && !is_plain_object_1.default(optValue)) {
58
- return field.otherMetadata().factory(em, optValue);
59
- }
60
- return field.otherMetadata().factory(em, {
61
- ...optValue,
62
- // We include null as a marker for "don't create the parent"; even if it's required,
63
- // once the child has been created, the act of adding it to our collection will get the
64
- // parent set. It might be better to do o2ms as a 2nd-pass, after we've done the em.create
65
- // call and could directly pass this entity instead of null.
66
- [field.otherFieldName]: null,
67
- use: opts.use,
68
- });
69
- });
70
- return [fieldName, values];
71
- }
72
- // Look for strings that want to use the test index
73
- if (typeof optValue === "string" && optValue.includes(exports.testIndex)) {
74
- const actualIndex = getTestIndex(em, meta.cstr);
75
- return [fieldName, optValue.replace(exports.testIndex, String(actualIndex))];
76
- }
77
- // Otherwise just use the user's opt value as-is
78
- return [fieldName, optValue];
79
- }
80
- if (field.kind === "primitive" && field.required && !field.derived && !field.protected) {
81
- return [fieldName, defaultValue(field)];
82
- }
83
- else if (field.kind === "m2o") {
84
- const otherMeta = field.otherMetadata();
85
- // If there is a single existing instance of this type, assume the caller is fine with that,
86
- // even if the field is not required.
87
- const existing = em.entities.filter((e) => e instanceof otherMeta.cstr);
88
- if (existing.length === 1) {
89
- return [fieldName, existing[0]];
90
- }
91
- // If there is a use type, assume the caller is fine with that, even if the field is not required
92
- const useEntity = (_a = maybeArray(opts.use)) === null || _a === void 0 ? void 0 : _a.find((e) => e instanceof otherMeta.cstr);
93
- if (useEntity) {
94
- return [fieldName, useEntity];
95
- }
96
- // Otherwise only make a new entity only if the field is required
97
- if (field.required) {
98
- return [fieldName, otherMeta.factory(em, { use: opts.use })];
99
- }
100
- }
101
- else if (field.kind === "enum" && field.required) {
102
- return [fieldName, field.enumDetailType.getValues()[0]];
103
- }
104
- return [];
105
- })
106
- .filter((t) => t.length > 0));
107
- return em.create(meta.cstr, fullOpts);
108
- }
109
- exports.newTestInstance = newTestInstance;
110
- /**
111
- * A marker value for later replacement with the test instance's "unique-ish" index.
112
- *
113
- * This is meant to just be a helpful identifier in fields like entity names/descriptions for
114
- * debugging purposes.
115
- */
116
- exports.testIndex = "TEST_INDEX";
117
- /**
118
- * Returns a unique-ish test index for putting in `name` fields.
119
- *
120
- * Note that `testIndex` is easier to just include in a string, because it doesn't require passing
121
- * the `EntityManger` and `type`. But if a factory really wants the test index as a number, they can
122
- * call this method.
123
- *
124
- * Despite the name, these are 1-based, i.e. the first `Author` is `a1`.
125
- */
126
- function getTestIndex(em, type) {
127
- const existing = em.entities.filter((e) => e instanceof type);
128
- return existing.length + 1;
129
- }
130
- exports.getTestIndex = getTestIndex;
131
- /** Fakes a probably-right id for un-persisted entities. Solely used for quick lookups in tests/factories. */
132
- function getTestId(em, entity) {
133
- const meta = EntityManager_1.getMetadata(entity);
134
- const sameType = em.entities.filter((e) => e instanceof meta.cstr);
135
- return keys_1.tagIfNeeded(meta, String(sameType.indexOf(entity) + 1));
136
- }
137
- function defaultValue(field) {
138
- switch (field.type) {
139
- case "string":
140
- return field.fieldName;
141
- case "number":
142
- return 0;
143
- case "Date":
144
- return exports.testDate;
145
- case "boolean":
146
- return false;
147
- }
148
- return null;
149
- }
150
- function maybeArray(array) {
151
- return array ? (Array.isArray(array) ? array : [array]) : undefined;
152
- }
153
- //# sourceMappingURL=newTestInstance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"newTestInstance.js","sourceRoot":"","sources":["../src/newTestInstance.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reverseHint.js","sourceRoot":"","sources":["../src/reverseHint.ts"],"names":[],"mappings":";;;AAAA,mDAAmF;AACnF,mCAA+B;AAE/B;;;;GAIG;AACH,SAAgB,WAAW,CACzB,UAAgC,EAChC,IAAiB;IAEjB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,4EAA4E;QAC5E,sEAAsE;QACtE,MAAM,IAAI,GAAG,2BAAW,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,YAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5G,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;YACxE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;SACjC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;KACnD;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC9B,uEAAuE;QACvE,uEAAuE;QACvE,wBAAwB;QACxB,OAAQ,IAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,IAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACtF;SAAM;QACL,wEAAwE;QACxE,oCAAoC;QACpC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;YAClD,MAAM,IAAI,GAAG,2BAAW,CAAC,UAAU,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,IAAI,YAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3G,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;gBACxE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;aACjC;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;YACxC,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;gBACzD,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,CAAuC,CAAC;YACpF,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;AACH,CAAC;AAlCD,kCAkCC"}
package/build/serde.d.ts DELETED
@@ -1,47 +0,0 @@
1
- import { EntityMetadata } from "./index";
2
- export interface ColumnSerde {
3
- setOnEntity(data: any, row: any): void;
4
- setOnRow(data: any, row: any): void;
5
- getFromEntity(data: any): any;
6
- mapToDb(value: any): any;
7
- }
8
- export declare class SimpleSerde implements ColumnSerde {
9
- private fieldName;
10
- private columnName;
11
- constructor(fieldName: string, columnName: string);
12
- setOnEntity(data: any, row: any): void;
13
- setOnRow(data: any, row: any): void;
14
- getFromEntity(data: any): any;
15
- mapToDb(value: any): any;
16
- }
17
- /** Maps integer primary keys ot strings "because GraphQL". */
18
- export declare class PrimaryKeySerde implements ColumnSerde {
19
- private meta;
20
- private fieldName;
21
- private columnName;
22
- constructor(meta: () => EntityMetadata<any>, fieldName: string, columnName: string);
23
- setOnEntity(data: any, row: any): void;
24
- setOnRow(data: any, row: any): void;
25
- getFromEntity(data: any): number | undefined;
26
- mapToDb(value: any): number | undefined;
27
- }
28
- export declare class ForeignKeySerde implements ColumnSerde {
29
- private fieldName;
30
- private columnName;
31
- otherMeta: () => EntityMetadata<any>;
32
- constructor(fieldName: string, columnName: string, otherMeta: () => EntityMetadata<any>);
33
- setOnEntity(data: any, row: any): void;
34
- setOnRow(data: any, row: any): void;
35
- getFromEntity(data: any): number | undefined;
36
- mapToDb(value: any): any;
37
- }
38
- export declare class EnumFieldSerde implements ColumnSerde {
39
- private fieldName;
40
- private columnName;
41
- private enumObject;
42
- constructor(fieldName: string, columnName: string, enumObject: any);
43
- setOnEntity(data: any, row: any): void;
44
- setOnRow(data: any, row: any): void;
45
- getFromEntity(data: any): any;
46
- mapToDb(value: any): any;
47
- }
package/build/serde.js DELETED
@@ -1,93 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EnumFieldSerde = exports.ForeignKeySerde = exports.PrimaryKeySerde = exports.SimpleSerde = void 0;
4
- const index_1 = require("./index");
5
- class SimpleSerde {
6
- constructor(fieldName, columnName) {
7
- this.fieldName = fieldName;
8
- this.columnName = columnName;
9
- }
10
- setOnEntity(data, row) {
11
- data[this.fieldName] = maybeNullToUndefined(row[this.columnName]);
12
- }
13
- setOnRow(data, row) {
14
- row[this.columnName] = data[this.fieldName];
15
- }
16
- getFromEntity(data) {
17
- return data[this.fieldName];
18
- }
19
- mapToDb(value) {
20
- return value;
21
- }
22
- }
23
- exports.SimpleSerde = SimpleSerde;
24
- /** Maps integer primary keys ot strings "because GraphQL". */
25
- class PrimaryKeySerde {
26
- constructor(meta, fieldName, columnName) {
27
- this.meta = meta;
28
- this.fieldName = fieldName;
29
- this.columnName = columnName;
30
- }
31
- setOnEntity(data, row) {
32
- data[this.fieldName] = index_1.keyToString(this.meta(), row[this.columnName]);
33
- }
34
- setOnRow(data, row) {
35
- row[this.columnName] = index_1.keyToNumber(this.meta(), data[this.fieldName]);
36
- }
37
- getFromEntity(data) {
38
- return index_1.keyToNumber(this.meta(), data[this.fieldName]);
39
- }
40
- mapToDb(value) {
41
- return index_1.keyToNumber(this.meta(), value);
42
- }
43
- }
44
- exports.PrimaryKeySerde = PrimaryKeySerde;
45
- class ForeignKeySerde {
46
- // TODO EntityMetadata being in here is weird.
47
- constructor(fieldName, columnName, otherMeta) {
48
- this.fieldName = fieldName;
49
- this.columnName = columnName;
50
- this.otherMeta = otherMeta;
51
- }
52
- setOnEntity(data, row) {
53
- data[this.fieldName] = index_1.keyToString(this.otherMeta(), row[this.columnName]);
54
- }
55
- setOnRow(data, row) {
56
- row[this.columnName] = index_1.keyToNumber(this.otherMeta(), index_1.maybeResolveReferenceToId(data[this.fieldName]));
57
- }
58
- getFromEntity(data) {
59
- return index_1.keyToNumber(this.otherMeta(), index_1.maybeResolveReferenceToId(data[this.fieldName]));
60
- }
61
- mapToDb(value) {
62
- return index_1.keyToNumber(this.otherMeta(), index_1.maybeResolveReferenceToId(value));
63
- }
64
- }
65
- exports.ForeignKeySerde = ForeignKeySerde;
66
- class EnumFieldSerde {
67
- constructor(fieldName, columnName, enumObject) {
68
- this.fieldName = fieldName;
69
- this.columnName = columnName;
70
- this.enumObject = enumObject;
71
- }
72
- setOnEntity(data, row) {
73
- var _a;
74
- data[this.fieldName] = (_a = this.enumObject.findById(row[this.columnName])) === null || _a === void 0 ? void 0 : _a.code;
75
- }
76
- setOnRow(data, row) {
77
- var _a;
78
- row[this.columnName] = (_a = this.enumObject.findByCode(data[this.fieldName])) === null || _a === void 0 ? void 0 : _a.id;
79
- }
80
- getFromEntity(data) {
81
- var _a;
82
- return (_a = this.enumObject.findByCode(data[this.fieldName])) === null || _a === void 0 ? void 0 : _a.id;
83
- }
84
- mapToDb(value) {
85
- var _a;
86
- return (_a = this.enumObject.findByCode(value)) === null || _a === void 0 ? void 0 : _a.id;
87
- }
88
- }
89
- exports.EnumFieldSerde = EnumFieldSerde;
90
- function maybeNullToUndefined(value) {
91
- return value === null ? undefined : value;
92
- }
93
- //# sourceMappingURL=serde.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serde.js","sourceRoot":"","sources":["../src/serde.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CACtB,MAAS,EACT,GAAY,EACZ,YAA6C;IAE7C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;QAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,YAAY,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;KAChF;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AATD,4BASC;AAED,SAAgB,IAAI,CAAC,OAAgB;IACnC,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC;AACvC,CAAC;AAFD,oBAEC;AAED,SAAgB,MAAM,CAAI,KAAU,EAAE,CAAI;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;QACd,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACxB;AACH,CAAC;AALD,wBAKC;AAED,0CAA0C;AAC1C,SAAgB,MAAM,CAAC,CAAS;IAC9B,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC;AAFD,wBAEC;AAED,SAAgB,OAAO,CAAW,IAAS,EAAE,EAAoB,EAAE,OAAqB;IACtF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IACtC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACtB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SACvB;QACD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAG,CAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAVD,0BAUC;AAED,SAAgB,OAAO,CAAW,IAAS,EAAE,EAAoB,EAAE,OAAqB;IACtF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAa,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAG,CAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAPD,0BAOC;AAED,SAAgB,SAAS,CAAI,KAAuB,EAAE,CAAqB;IACzE,MAAM,YAAY,GAAQ,EAAE,CAAC;IAC7B,MAAM,aAAa,GAAQ,EAAE,CAAC;IAC9B,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;QACnB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE;YACT,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACvB;aAAM;YACL,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACxB;IACH,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AACvC,CAAC;AAXD,8BAWC"}
package/package.json.bak DELETED
@@ -1,27 +0,0 @@
1
- {
2
- "name": "joist-orm",
3
- "version": "0.1.0-bump",
4
- "license": "MIT",
5
- "main": "build/index.js",
6
- "types": "build/index.d.ts",
7
- "dependencies": {
8
- "@types/object-hash": "^1.3.1",
9
- "contexty": "^1.0.0",
10
- "dataloader": "^2.0.0",
11
- "is-plain-object": "^3.0.1",
12
- "joist-utils": "0.1.0-bump",
13
- "knex": "^0.21.4",
14
- "object-hash": "^2.0.3",
15
- "pg": "^8.3.0"
16
- },
17
- "devDependencies": {
18
- "@types/jest": "^25.2.1",
19
- "@types/node": "^13.13.4",
20
- "jest": "^25.5.3",
21
- "prettier": "^2.0.5",
22
- "ts-jest": "^25.4.0",
23
- "ts-node-dev": "^1.0.0-pre.44",
24
- "tsconfig-paths": "^3.9.0",
25
- "typescript": "^3.9.5"
26
- }
27
- }
package/src/BaseEntity.ts DELETED
@@ -1,104 +0,0 @@
1
- import {
2
- deTagIds,
3
- Entity,
4
- EntityManager,
5
- EntityOrmField,
6
- fail,
7
- getMetadata,
8
- IdOf,
9
- isEntity,
10
- keyToNumber,
11
- OptsOf,
12
- PartialOrNull,
13
- } from "./index";
14
-
15
- /**
16
- * The base class for all entities.
17
- *
18
- * Currently this just adds the `.load(lensFn)` method for declarative reference traversal.
19
- */
20
- export abstract class BaseEntity implements Entity {
21
- abstract id: string | undefined;
22
- readonly __orm: EntityOrmField;
23
-
24
- protected constructor(em: EntityManager, metadata: any, defaultValues: object, opts: any) {
25
- this.__orm = { em, metadata, data: { ...defaultValues }, originalData: {} };
26
- // Ensure we have at least id set so the `EntityManager.register` works
27
- if (typeof opts === "string") {
28
- this.__orm.data["id"] = opts;
29
- }
30
- em.register(metadata, this);
31
- }
32
-
33
- get idUntagged(): string | undefined {
34
- if (this.id) {
35
- return deTagIds(getMetadata(this), [this.id])[0];
36
- }
37
- return undefined;
38
- }
39
-
40
- get idUntaggedOrFail(): string {
41
- return this.idUntagged || fail("Entity has no id yet");
42
- }
43
-
44
- abstract set(values: Partial<OptsOf<this>>): void;
45
-
46
- /**
47
- * Similar to `set` but applies "Partial API" semantics, i.e. `null` means unset and `undefined` means don't change.
48
- */
49
- abstract setPartial(values: PartialOrNull<OptsOf<this>>): void;
50
-
51
- /** @returns the current entity id or a runtime error if it's unassigned, i.e. it's not been assigned from the db yet. */
52
- get idOrFail(): IdOf<this> {
53
- return this.__orm.data["id"] || fail("Entity has no id yet");
54
- }
55
-
56
- get isNewEntity(): boolean {
57
- return this.id === undefined;
58
- }
59
-
60
- get isDeletedEntity(): boolean {
61
- return this.__orm.deleted !== undefined;
62
- }
63
-
64
- get isDirtyEntity(): boolean {
65
- return Object.keys(this.__orm.originalData).length > 0;
66
- }
67
-
68
- get isPendingFlush(): boolean {
69
- return this.isNewEntity || this.isDirtyEntity || this.isPendingDelete;
70
- }
71
-
72
- get isPendingDelete(): boolean {
73
- return this.__orm.deleted === "pending";
74
- }
75
-
76
- toString(): string {
77
- const meta = getMetadata(this);
78
- // Strip the tag because we add back the entity prefix
79
- const id = keyToNumber(meta, this.id) || "new";
80
- // Returns `Author:1` instead of `author:1` to differentiate the instance's toString from the tagged id itself
81
- return `${meta.type}:${id}`;
82
- }
83
-
84
- /**
85
- * A very simple toJSON.
86
- *
87
- * This is not really meant as something you would actually put on the
88
- * wire as an API response, but instead is to keep accidental/debugging
89
- * JSON-ification of an Entity (i.e. by a logger like pino) to not
90
- * recurse into all of our References/Collections/EntityManager/etc.
91
- * */
92
- public toJSON(): object {
93
- return Object.fromEntries(
94
- Object.entries(this.__orm.data).map(([key, value]) => {
95
- // Don't recurse into new entities b/c the point is to stay shallow
96
- return [key, isEntity(value) ? value.toString() : value];
97
- }),
98
- );
99
- }
100
-
101
- [Symbol.toStringTag](): string {
102
- return this.toString();
103
- }
104
- }