@etohq/user 1.1.0 → 1.3.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 (36) hide show
  1. package/dist/models/index.d.ts +4 -2
  2. package/dist/models/index.d.ts.map +1 -1
  3. package/dist/models/index.js +10 -3
  4. package/dist/models/index.js.map +1 -1
  5. package/dist/models/invite.d.ts +2 -1
  6. package/dist/models/invite.d.ts.map +1 -1
  7. package/dist/models/invite.js +2 -2
  8. package/dist/models/invite.js.map +1 -1
  9. package/dist/models/role.d.ts +11 -0
  10. package/dist/models/role.d.ts.map +1 -0
  11. package/dist/models/role.js +14 -0
  12. package/dist/models/role.js.map +1 -0
  13. package/dist/models/user-term-of-service.d.ts +6 -0
  14. package/dist/models/user-term-of-service.d.ts.map +1 -0
  15. package/dist/models/user-term-of-service.js +12 -0
  16. package/dist/models/user-term-of-service.js.map +1 -0
  17. package/dist/models/user.d.ts +22 -1
  18. package/dist/models/user.d.ts.map +1 -1
  19. package/dist/models/user.js +66 -2
  20. package/dist/models/user.js.map +1 -1
  21. package/dist/tsconfig.tsbuildinfo +1 -1
  22. package/dist/types/services/index.js +17 -7
  23. package/dist/types/services/index.js.map +1 -1
  24. package/package.json +5 -5
  25. package/dist/migrations/Migration20240214033943.d.ts +0 -6
  26. package/dist/migrations/Migration20240214033943.d.ts.map +0 -1
  27. package/dist/migrations/Migration20240214033943.js +0 -25
  28. package/dist/migrations/Migration20240214033943.js.map +0 -1
  29. package/dist/migrations/Migration20240703095850.d.ts +0 -6
  30. package/dist/migrations/Migration20240703095850.d.ts.map +0 -1
  31. package/dist/migrations/Migration20240703095850.js +0 -17
  32. package/dist/migrations/Migration20240703095850.js.map +0 -1
  33. package/dist/migrations/Migration20241202103352.d.ts +0 -6
  34. package/dist/migrations/Migration20241202103352.d.ts.map +0 -1
  35. package/dist/migrations/Migration20241202103352.js +0 -20
  36. package/dist/migrations/Migration20241202103352.js.map +0 -1
@@ -1,3 +1,5 @@
1
- export { User } from "./user";
2
- export { Invite } from "./invite";
1
+ export { default as User } from "./user";
2
+ export { default as Invite } from "./invite";
3
+ export { default as Role } from "./role";
4
+ export { default as UserTermsOfService } from "./user-term-of-service";
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAA"}
@@ -1,8 +1,15 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Invite = exports.User = void 0;
6
+ exports.UserTermsOfService = exports.Role = exports.Invite = exports.User = void 0;
4
7
  var user_1 = require("./user");
5
- Object.defineProperty(exports, "User", { enumerable: true, get: function () { return user_1.User; } });
8
+ Object.defineProperty(exports, "User", { enumerable: true, get: function () { return __importDefault(user_1).default; } });
6
9
  var invite_1 = require("./invite");
7
- Object.defineProperty(exports, "Invite", { enumerable: true, get: function () { return invite_1.Invite; } });
10
+ Object.defineProperty(exports, "Invite", { enumerable: true, get: function () { return __importDefault(invite_1).default; } });
11
+ var role_1 = require("./role");
12
+ Object.defineProperty(exports, "Role", { enumerable: true, get: function () { return __importDefault(role_1).default; } });
13
+ var user_term_of_service_1 = require("./user-term-of-service");
14
+ Object.defineProperty(exports, "UserTermsOfService", { enumerable: true, get: function () { return __importDefault(user_term_of_service_1).default; } });
8
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;AAAA,+BAA6B;AAApB,4FAAA,IAAI,OAAA;AACb,mCAAiC;AAAxB,gGAAA,MAAM,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";;;;;;AAAA,+BAAwC;AAA/B,6GAAA,OAAO,OAAQ;AACxB,mCAA4C;AAAnC,iHAAA,OAAO,OAAU;AAC1B,+BAAwC;AAA/B,6GAAA,OAAO,OAAQ;AACxB,+DAAsE;AAA7D,2IAAA,OAAO,OAAsB"}
@@ -1,4 +1,4 @@
1
- export declare const Invite: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
1
+ declare const Invite: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
2
2
  id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
3
3
  email: import("@etohq/framework/utils").TextProperty;
4
4
  accepted: import("@etohq/framework/utils").BooleanProperty;
@@ -6,4 +6,5 @@ export declare const Invite: import("@etohq/framework/utils").DmlEntity<import("
6
6
  expires_at: import("@etohq/framework/utils").DateTimeProperty;
7
7
  metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
8
8
  }>, "invite">;
9
+ export default Invite;
9
10
  //# sourceMappingURL=invite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../../src/models/invite.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;aAmBf,CAAA"}
1
+ {"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../../src/models/invite.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,MAAM;;;;;;;aAmBR,CAAA;AAEF,eAAe,MAAM,CAAA"}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Invite = void 0;
4
3
  const utils_1 = require("@etohq/framework/utils");
5
- exports.Invite = utils_1.model
4
+ const Invite = utils_1.model
6
5
  .define("invite", {
7
6
  id: utils_1.model.id({ prefix: "invite" }).primaryKey(),
8
7
  email: utils_1.model.text().searchable(),
@@ -22,4 +21,5 @@ exports.Invite = utils_1.model
22
21
  where: "deleted_at IS NULL",
23
22
  },
24
23
  ]);
24
+ exports.default = Invite;
25
25
  //# sourceMappingURL=invite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invite.js","sourceRoot":"","sources":["../../src/models/invite.ts"],"names":[],"mappings":";;;AAAA,kDAA8C;AAEjC,QAAA,MAAM,GAAG,aAAK;KACxB,MAAM,CAAC,QAAQ,EAAE;IAChB,EAAE,EAAE,aAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE;IAC/C,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAChC,QAAQ,EAAE,aAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE;IACnB,UAAU,EAAE,aAAK,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;KACD,OAAO,CAAC;IACP;QACE,EAAE,EAAE,CAAC,OAAO,CAAC;QACb,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,oBAAoB;KAC5B;IACD;QACE,EAAE,EAAE,CAAC,OAAO,CAAC;QACb,KAAK,EAAE,oBAAoB;KAC5B;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"invite.js","sourceRoot":"","sources":["../../src/models/invite.ts"],"names":[],"mappings":";;AAAA,kDAA8C;AAE9C,MAAM,MAAM,GAAG,aAAK;KACjB,MAAM,CAAC,QAAQ,EAAE;IAChB,EAAE,EAAE,aAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE;IAC/C,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAChC,QAAQ,EAAE,aAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE;IACnB,UAAU,EAAE,aAAK,CAAC,QAAQ,EAAE;IAC5B,QAAQ,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;KACD,OAAO,CAAC;IACP;QACE,EAAE,EAAE,CAAC,OAAO,CAAC;QACb,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,oBAAoB;KAC5B;IACD;QACE,EAAE,EAAE,CAAC,OAAO,CAAC;QACb,KAAK,EAAE,oBAAoB;KAC5B;CACF,CAAC,CAAA;AAEF,kBAAe,MAAM,CAAA"}
@@ -0,0 +1,11 @@
1
+ declare const Role: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
2
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").TextProperty>;
3
+ name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
4
+ display_name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
5
+ description: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
6
+ permissions: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
7
+ scheme_managed: import("@etohq/framework/utils").NullableModifier<boolean, import("@etohq/framework/utils").BooleanProperty>;
8
+ built_in: import("@etohq/framework/utils").NullableModifier<boolean, import("@etohq/framework/utils").BooleanProperty>;
9
+ }>, "Role">;
10
+ export default Role;
11
+ //# sourceMappingURL=role.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/models/role.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,IAAI;;;;;;;;WAQR,CAAA;AAEF,eAAe,IAAI,CAAA"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@etohq/framework/utils");
4
+ const Role = utils_1.model.define("Role", {
5
+ id: utils_1.model.text().primaryKey(),
6
+ name: utils_1.model.text().unique("roles_name_key").nullable(),
7
+ display_name: utils_1.model.text().nullable(),
8
+ description: utils_1.model.text().nullable(),
9
+ permissions: utils_1.model.text().nullable(),
10
+ scheme_managed: utils_1.model.boolean().nullable(),
11
+ built_in: utils_1.model.boolean().nullable(),
12
+ });
13
+ exports.default = Role;
14
+ //# sourceMappingURL=role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/models/role.ts"],"names":[],"mappings":";;AAAA,kDAA8C;AAE9C,MAAM,IAAI,GAAG,aAAK,CAAC,MAAM,CAAC,MAAM,EAAE;IAChC,EAAE,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAC7B,IAAI,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IACtD,YAAY,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACrC,WAAW,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACpC,WAAW,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACpC,cAAc,EAAE,aAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC1C,QAAQ,EAAE,aAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAA;AAEF,kBAAe,IAAI,CAAA"}
@@ -0,0 +1,6 @@
1
+ declare const UserTermsOfService: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
2
+ user_id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").TextProperty>;
3
+ terms_of_service_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
4
+ }>, "use_terms_of_service">;
5
+ export default UserTermsOfService;
6
+ //# sourceMappingURL=user-term-of-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-term-of-service.d.ts","sourceRoot":"","sources":["../../src/models/user-term-of-service.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,kBAAkB;;;2BAGtB,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@etohq/framework/utils");
4
+ // UserTermsOfService
5
+ // Description: Tracks user acceptance of terms of service.
6
+ // Why: Ensures legal compliance with user agreements.
7
+ const UserTermsOfService = utils_1.model.define("use_terms_of_service", {
8
+ user_id: utils_1.model.text().primaryKey(),
9
+ terms_of_service_id: utils_1.model.text().nullable(),
10
+ });
11
+ exports.default = UserTermsOfService;
12
+ //# sourceMappingURL=user-term-of-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-term-of-service.js","sourceRoot":"","sources":["../../src/models/user-term-of-service.ts"],"names":[],"mappings":";;AAAA,kDAA8C;AAE9C,qBAAqB;AACrB,2DAA2D;AAC3D,sDAAsD;AACtD,MAAM,kBAAkB,GAAG,aAAK,CAAC,MAAM,CAAC,sBAAsB,EAAE;IAC9D,OAAO,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAClC,mBAAmB,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAA;AAEF,kBAAe,kBAAkB,CAAA"}
@@ -1,9 +1,30 @@
1
- export declare const User: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
1
+ declare const User: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
2
2
  id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
3
3
  first_name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
4
4
  last_name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
5
+ user_name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
5
6
  email: import("@etohq/framework/utils").TextProperty;
7
+ email_verified: import("@etohq/framework/utils").NullableModifier<boolean, import("@etohq/framework/utils").BooleanProperty>;
6
8
  avatar_url: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
9
+ auth_data: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
10
+ auth_service: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
11
+ nick_name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
12
+ roles: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
13
+ allow_marketing: import("@etohq/framework/utils").NullableModifier<boolean, import("@etohq/framework/utils").BooleanProperty>;
14
+ props: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
15
+ notify_props: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
16
+ last_password_update: import("@etohq/framework/utils").NullableModifier<number, import("@etohq/framework/utils").BigNumberProperty>;
17
+ last_picture_update: import("@etohq/framework/utils").NullableModifier<number, import("@etohq/framework/utils").BigNumberProperty>;
18
+ failed_attempts: import("@etohq/framework/utils").NullableModifier<number, import("@etohq/framework/utils").NumberProperty>;
19
+ locale: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
20
+ mfa_active: import("@etohq/framework/utils").NullableModifier<boolean, import("@etohq/framework/utils").BooleanProperty>;
21
+ mfa_secret: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
22
+ position: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
23
+ time_zone: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
24
+ remote_id: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
25
+ last_login: import("@etohq/framework/utils").BigNumberProperty;
26
+ mfa_used_timestamps: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
7
27
  metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
8
28
  }>, "user">;
29
+ export default User;
9
30
  //# sourceMappingURL=user.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI;;;;;;;WAeb,CAAA"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;WA+EN,CAAA;AAGF,eAAe,IAAI,CAAA"}
@@ -1,14 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.User = void 0;
4
3
  const utils_1 = require("@etohq/framework/utils");
5
- exports.User = utils_1.model
4
+ const User = utils_1.model
6
5
  .define("user", {
7
6
  id: utils_1.model.id({ prefix: "user" }).primaryKey(),
8
7
  first_name: utils_1.model.text().searchable().nullable(),
9
8
  last_name: utils_1.model.text().searchable().nullable(),
9
+ user_name: utils_1.model.text().unique().searchable().nullable(),
10
10
  email: utils_1.model.text().searchable(),
11
+ email_verified: utils_1.model.boolean().nullable(),
11
12
  avatar_url: utils_1.model.text().nullable(),
13
+ auth_data: utils_1.model.text().unique("users_authdata_key").nullable(),
14
+ auth_service: utils_1.model.text().nullable(),
15
+ nick_name: utils_1.model.text().searchable().nullable(),
16
+ roles: utils_1.model.text().nullable(),
17
+ allow_marketing: utils_1.model.boolean().nullable(),
18
+ props: utils_1.model.json().nullable(),
19
+ notify_props: utils_1.model.json().nullable(), // notification config at global level.
20
+ last_password_update: utils_1.model.bigNumber().nullable(),
21
+ last_picture_update: utils_1.model.bigNumber().nullable(),
22
+ failed_attempts: utils_1.model.number().nullable(),
23
+ locale: utils_1.model.text().nullable(),
24
+ mfa_active: utils_1.model.boolean().nullable(),
25
+ mfa_secret: utils_1.model.text().nullable(),
26
+ position: utils_1.model.text().nullable(),
27
+ time_zone: utils_1.model.json().nullable(),
28
+ remote_id: utils_1.model.text().nullable(),
29
+ last_login: utils_1.model.bigNumber().default(0),
30
+ mfa_used_timestamps: utils_1.model.json().nullable(),
12
31
  metadata: utils_1.model.json().nullable(),
13
32
  })
14
33
  .indexes([
@@ -17,5 +36,50 @@ exports.User = utils_1.model
17
36
  on: ["email"],
18
37
  where: "deleted_at IS NULL",
19
38
  },
39
+ {
40
+ name: "idx_users_all_no_full_name_txt",
41
+ on: ["user_name", "nick_name", "email"],
42
+ unique: false,
43
+ }, // Approximation for GIN
44
+ {
45
+ name: "idx_users_all_txt",
46
+ on: ["user_name", "first_name", "last_name", "nick_name", "email"],
47
+ unique: false,
48
+ }, // Approximation for GIN
49
+ { name: "idx_users_created_at", on: ["created_at"], unique: false },
50
+ { name: "idx_users_deleted_at", on: ["deleted_at"], unique: false },
51
+ { name: "idx_users_email_lower_textpattern", on: ["email"], unique: false },
52
+ {
53
+ name: "idx_users_firstname_lower_textpattern",
54
+ on: ["first_name"],
55
+ unique: false,
56
+ },
57
+ {
58
+ name: "idx_users_lastname_lower_textpattern",
59
+ on: ["last_name"],
60
+ unique: false,
61
+ },
62
+ {
63
+ name: "idx_users_names_no_full_name_txt",
64
+ on: ["user_name", "nick_name"],
65
+ unique: false,
66
+ }, // Approximation for GIN
67
+ {
68
+ name: "idx_users_names_txt",
69
+ on: ["user_name", "first_name", "last_name", "nick_name"],
70
+ unique: false,
71
+ }, // Approximation for GIN
72
+ {
73
+ name: "idx_users_nickname_lower_textpattern",
74
+ on: ["nick_name"],
75
+ unique: false,
76
+ },
77
+ { name: "idx_users_updated_at", on: ["updated_at"], unique: false },
78
+ {
79
+ name: "idx_users_username_lower_textpattern",
80
+ on: ["user_name"],
81
+ unique: false,
82
+ },
20
83
  ]);
84
+ exports.default = User;
21
85
  //# sourceMappingURL=user.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":";;;AAAA,kDAA8C;AAEjC,QAAA,IAAI,GAAG,aAAK;KACtB,MAAM,CAAC,MAAM,EAAE;IACd,EAAE,EAAE,aAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE;IAC7C,UAAU,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE;IAChD,SAAS,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE;IAC/C,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;IAChC,UAAU,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,aAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC;KACD,OAAO,CAAC;IACP;QACE,MAAM,EAAE,IAAI;QACZ,EAAE,EAAE,CAAC,OAAO,CAAC;QACb,KAAK,EAAE,oBAAoB;KAC5B;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"root":["../src/index.ts","../src/migrations/migration20240214033943.ts","../src/migrations/migration20240703095850.ts","../src/migrations/migration20241202103352.ts","../src/models/index.ts","../src/models/invite.ts","../src/models/user.ts","../src/services/index.ts","../src/services/user-module.ts","../src/types/index.ts","../src/types/services/index.ts","../src/types/services/invite.ts"],"version":"5.6.2"}
1
+ {"root":["../src/index.ts","../src/models/index.ts","../src/models/invite.ts","../src/models/role.ts","../src/models/user-term-of-service.ts","../src/models/user.ts","../src/services/index.ts","../src/services/user-module.ts","../src/types/index.ts","../src/types/services/index.ts","../src/types/services/invite.ts"],"version":"5.8.3"}
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.InviteServiceTypes = void 0;
27
37
  exports.InviteServiceTypes = __importStar(require("./invite"));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAA8C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAA8C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etohq/user",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "Eto Users module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -36,8 +36,8 @@
36
36
  "orm:cache:clear": " MIKRO_ORM_CLI=./mikro-orm.config.dev.ts eto-mikro-orm cache:clear"
37
37
  },
38
38
  "devDependencies": {
39
- "@etohq/framework": "^1.1.0",
40
- "@etohq/test-utils": "^1.1.0",
39
+ "@etohq/framework": "^1.3.0",
40
+ "@etohq/test-utils": "^1.3.0",
41
41
  "@mikro-orm/cli": "5.9.7",
42
42
  "@mikro-orm/core": "5.9.7",
43
43
  "@mikro-orm/migrations": "5.9.7",
@@ -49,13 +49,13 @@
49
49
  "jest": "^29.7.0",
50
50
  "rimraf": "^5.0.2",
51
51
  "tsc-alias": "^1.8.6",
52
- "typescript": "^5.6.2"
52
+ "typescript": "^5.8.3"
53
53
  },
54
54
  "dependencies": {
55
55
  "jsonwebtoken": "^9.0.2"
56
56
  },
57
57
  "peerDependencies": {
58
- "@etohq/framework": "^1.0.0",
58
+ "@etohq/framework": "^1.1.0",
59
59
  "@mikro-orm/core": "5.9.7",
60
60
  "@mikro-orm/migrations": "5.9.7",
61
61
  "@mikro-orm/postgresql": "5.9.7",
@@ -1,6 +0,0 @@
1
- import { Migration } from "@mikro-orm/migrations";
2
- export declare class Migration20240214033943 extends Migration {
3
- up(): Promise<void>;
4
- down(): Promise<void>;
5
- }
6
- //# sourceMappingURL=Migration20240214033943.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Migration20240214033943.d.ts","sourceRoot":"","sources":["../../src/migrations/Migration20240214033943.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,qBAAa,uBAAwB,SAAQ,SAAS;IAC9C,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IA2CnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B"}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Migration20240214033943 = void 0;
4
- const utils_1 = require("@etohq/framework/utils");
5
- const migrations_1 = require("@mikro-orm/migrations");
6
- class Migration20240214033943 extends migrations_1.Migration {
7
- async up() {
8
- this.addSql('create table if not exists "invite" ("id" text not null, "email" text not null, "accepted" boolean not null default false, "token" text not null, "expires_at" timestamptz not null, "metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "invite_pkey" primary key ("id"));');
9
- this.addSql('alter table "invite" add column if not exists "email" text not null;');
10
- this.addSql((0, utils_1.generatePostgresAlterColummnIfExistStatement)("invite", ["user_email"], "DROP NOT NULL"));
11
- this.addSql('CREATE UNIQUE INDEX IF NOT EXISTS "IDX_invite_email" ON "invite" (email) WHERE deleted_at IS NULL;');
12
- this.addSql('CREATE INDEX IF NOT EXISTS "IDX_invite_token" ON "invite" (token) WHERE deleted_at IS NULL;');
13
- this.addSql('CREATE INDEX IF NOT EXISTS "IDX_invite_deleted_at" ON "invite" (deleted_at) WHERE deleted_at IS NOT NULL;');
14
- this.addSql('create table if not exists "user" ("id" text not null, "first_name" text null, "last_name" text null, "email" text not null, "avatar_url" text null, "metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "user_pkey" primary key ("id"));');
15
- this.addSql('alter table "user" add column if not exists "avatar_url" text null;');
16
- this.addSql('CREATE INDEX IF NOT EXISTS "IDX_user_email" ON "user" (email) WHERE deleted_at IS NULL;');
17
- this.addSql('CREATE INDEX IF NOT EXISTS "IDX_user_deleted_at" ON "user" (deleted_at) WHERE deleted_at IS NOT NULL;');
18
- }
19
- async down() {
20
- this.addSql('drop table if exists "invite" cascade;');
21
- this.addSql('drop table if exists "user" cascade;');
22
- }
23
- }
24
- exports.Migration20240214033943 = Migration20240214033943;
25
- //# sourceMappingURL=Migration20240214033943.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Migration20240214033943.js","sourceRoot":"","sources":["../../src/migrations/Migration20240214033943.ts"],"names":[],"mappings":";;;AAAA,kDAAqF;AACrF,sDAAiD;AAEjD,MAAa,uBAAwB,SAAQ,sBAAS;IACpD,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,MAAM,CACT,4XAA4X,CAC7X,CAAA;QACD,IAAI,CAAC,MAAM,CACT,sEAAsE,CACvE,CAAA;QAED,IAAI,CAAC,MAAM,CACT,IAAA,oDAA4C,EAC1C,QAAQ,EACR,CAAC,YAAY,CAAC,EACd,eAAe,CAChB,CACF,CAAA;QAED,IAAI,CAAC,MAAM,CACT,oGAAoG,CACrG,CAAA;QAED,IAAI,CAAC,MAAM,CACT,6FAA6F,CAC9F,CAAA;QACD,IAAI,CAAC,MAAM,CACT,2GAA2G,CAC5G,CAAA;QAED,IAAI,CAAC,MAAM,CACT,0VAA0V,CAC3V,CAAA;QAED,IAAI,CAAC,MAAM,CACT,qEAAqE,CACtE,CAAA;QAED,IAAI,CAAC,MAAM,CACT,yFAAyF,CAC1F,CAAA;QACD,IAAI,CAAC,MAAM,CACT,uGAAuG,CACxG,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAA;QAErD,IAAI,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAA;IACrD,CAAC;CACF;AAjDD,0DAiDC"}
@@ -1,6 +0,0 @@
1
- import { Migration } from "@mikro-orm/migrations";
2
- export declare class Migration20240703095850 extends Migration {
3
- up(): Promise<void>;
4
- down(): Promise<void>;
5
- }
6
- //# sourceMappingURL=Migration20240703095850.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Migration20240703095850.d.ts","sourceRoot":"","sources":["../../src/migrations/Migration20240703095850.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,qBAAa,uBAAwB,SAAQ,SAAS;IAC9C,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAYnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B"}
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Migration20240703095850 = void 0;
4
- const migrations_1 = require("@mikro-orm/migrations");
5
- class Migration20240703095850 extends migrations_1.Migration {
6
- async up() {
7
- this.addSql('drop index if exists "IDX_user_email";');
8
- this.addSql('CREATE UNIQUE INDEX "IDX_user_email" ON "user" (email) WHERE deleted_at IS NULL;');
9
- // Adding this log here as the point of failure is not in this function, but bundled up when running all pending migration
10
- console.info(`Note: If the index "IDX_user_email" fails to create, then delete any existing users with duplicate emails before retrying the migration.`);
11
- }
12
- async down() {
13
- this.addSql('CREATE INDEX IF NOT EXISTS "IDX_user_email" ON "user" (email) WHERE deleted_at IS NULL;');
14
- }
15
- }
16
- exports.Migration20240703095850 = Migration20240703095850;
17
- //# sourceMappingURL=Migration20240703095850.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Migration20240703095850.js","sourceRoot":"","sources":["../../src/migrations/Migration20240703095850.ts"],"names":[],"mappings":";;;AAAA,sDAAiD;AAEjD,MAAa,uBAAwB,SAAQ,sBAAS;IACpD,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAA;QAErD,IAAI,CAAC,MAAM,CACT,kFAAkF,CACnF,CAAA;QACD,0HAA0H;QAC1H,OAAO,CAAC,IAAI,CACV,0IAA0I,CAC3I,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CACT,yFAAyF,CAC1F,CAAA;IACH,CAAC;CACF;AAlBD,0DAkBC"}
@@ -1,6 +0,0 @@
1
- import { Migration } from '@mikro-orm/migrations';
2
- export declare class Migration20241202103352 extends Migration {
3
- up(): Promise<void>;
4
- down(): Promise<void>;
5
- }
6
- //# sourceMappingURL=Migration20241202103352.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Migration20241202103352.d.ts","sourceRoot":"","sources":["../../src/migrations/Migration20241202103352.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,qBAAa,uBAAwB,SAAQ,SAAS;IAE9C,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC;IAQnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ5B"}
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Migration20241202103352 = void 0;
4
- const migrations_1 = require("@mikro-orm/migrations");
5
- class Migration20241202103352 extends migrations_1.Migration {
6
- async up() {
7
- this.addSql('drop index if exists "IDX_invite_email";');
8
- this.addSql('CREATE UNIQUE INDEX IF NOT EXISTS "IDX_invite_email_unique" ON "invite" (email) WHERE deleted_at IS NULL;');
9
- this.addSql('drop index if exists "IDX_user_email";');
10
- this.addSql('CREATE UNIQUE INDEX IF NOT EXISTS "IDX_user_email_unique" ON "user" (email) WHERE deleted_at IS NULL;');
11
- }
12
- async down() {
13
- this.addSql('drop index if exists "IDX_invite_email_unique";');
14
- this.addSql('CREATE UNIQUE INDEX IF NOT EXISTS "IDX_invite_email" ON "invite" (email) WHERE deleted_at IS NULL;');
15
- this.addSql('drop index if exists "IDX_user_email_unique";');
16
- this.addSql('CREATE UNIQUE INDEX IF NOT EXISTS "IDX_user_email" ON "user" (email) WHERE deleted_at IS NULL;');
17
- }
18
- }
19
- exports.Migration20241202103352 = Migration20241202103352;
20
- //# sourceMappingURL=Migration20241202103352.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Migration20241202103352.js","sourceRoot":"","sources":["../../src/migrations/Migration20241202103352.ts"],"names":[],"mappings":";;;AAAA,sDAAkD;AAElD,MAAa,uBAAwB,SAAQ,sBAAS;IAEpD,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,2GAA2G,CAAC,CAAC;QAEzH,IAAI,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,uGAAuG,CAAC,CAAC;IACvH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,oGAAoG,CAAC,CAAC;QAElH,IAAI,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,gGAAgG,CAAC,CAAC;IAChH,CAAC;CAEF;AAlBD,0DAkBC"}