@etohq/user 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 (51) hide show
  1. package/README.md +3 -0
  2. package/dist/index.d.ts +6 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +8 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/migrations/Migration20240214033943.d.ts +6 -0
  7. package/dist/migrations/Migration20240214033943.d.ts.map +1 -0
  8. package/dist/migrations/Migration20240214033943.js +25 -0
  9. package/dist/migrations/Migration20240214033943.js.map +1 -0
  10. package/dist/migrations/Migration20240703095850.d.ts +6 -0
  11. package/dist/migrations/Migration20240703095850.d.ts.map +1 -0
  12. package/dist/migrations/Migration20240703095850.js +17 -0
  13. package/dist/migrations/Migration20240703095850.js.map +1 -0
  14. package/dist/migrations/Migration20241202103352.d.ts +6 -0
  15. package/dist/migrations/Migration20241202103352.d.ts.map +1 -0
  16. package/dist/migrations/Migration20241202103352.js +20 -0
  17. package/dist/migrations/Migration20241202103352.js.map +1 -0
  18. package/dist/models/index.d.ts +3 -0
  19. package/dist/models/index.d.ts.map +1 -0
  20. package/dist/models/index.js +8 -0
  21. package/dist/models/index.js.map +1 -0
  22. package/dist/models/invite.d.ts +9 -0
  23. package/dist/models/invite.d.ts.map +1 -0
  24. package/dist/models/invite.js +25 -0
  25. package/dist/models/invite.js.map +1 -0
  26. package/dist/models/user.d.ts +9 -0
  27. package/dist/models/user.d.ts.map +1 -0
  28. package/dist/models/user.js +21 -0
  29. package/dist/models/user.js.map +1 -0
  30. package/dist/services/index.d.ts +2 -0
  31. package/dist/services/index.d.ts.map +1 -0
  32. package/dist/services/index.js +9 -0
  33. package/dist/services/index.js.map +1 -0
  34. package/dist/services/user-module.d.ts +51 -0
  35. package/dist/services/user-module.d.ts.map +1 -0
  36. package/dist/services/user-module.js +244 -0
  37. package/dist/services/user-module.js.map +1 -0
  38. package/dist/tsconfig.tsbuildinfo +1 -0
  39. package/dist/types/index.d.ts +6 -0
  40. package/dist/types/index.d.ts.map +1 -0
  41. package/dist/types/index.js +18 -0
  42. package/dist/types/index.js.map +1 -0
  43. package/dist/types/services/index.d.ts +2 -0
  44. package/dist/types/services/index.d.ts.map +1 -0
  45. package/dist/types/services/index.js +28 -0
  46. package/dist/types/services/index.js.map +1 -0
  47. package/dist/types/services/invite.d.ts +6 -0
  48. package/dist/types/services/invite.d.ts.map +1 -0
  49. package/dist/types/services/invite.js +3 -0
  50. package/dist/types/services/invite.js.map +1 -0
  51. package/package.json +63 -0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # User Module
2
+
3
+ The User Module is Eto’s user engine.
@@ -0,0 +1,6 @@
1
+ import { UserModuleService } from "./services";
2
+ declare const _default: import("@etohq/types").ModuleExports<typeof UserModuleService> & {
3
+ linkable: Record<string, any>;
4
+ };
5
+ export default _default;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;;;;AAG7C,wBAEE"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _services_1 = require("./services");
4
+ const utils_1 = require("@etohq/framework/utils");
5
+ exports.default = (0, utils_1.Module)(utils_1.Modules.USER, {
6
+ service: _services_1.UserModuleService,
7
+ });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,yCAA6C;AAC7C,kDAAwD;AAExD,kBAAe,IAAA,cAAM,EAAC,eAAO,CAAC,IAAI,EAAE;IAClC,OAAO,EAAE,6BAAiB;CAC3B,CAAC,CAAA"}
@@ -0,0 +1,6 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,25 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,6 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,17 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,6 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,20 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,3 @@
1
+ export { User } from "./user";
2
+ export { Invite } from "./invite";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Invite = exports.User = void 0;
4
+ var user_1 = require("./user");
5
+ Object.defineProperty(exports, "User", { enumerable: true, get: function () { return user_1.User; } });
6
+ var invite_1 = require("./invite");
7
+ Object.defineProperty(exports, "Invite", { enumerable: true, get: function () { return invite_1.Invite; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,9 @@
1
+ export declare const Invite: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
2
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
3
+ email: import("@etohq/framework/utils").TextProperty;
4
+ accepted: import("@etohq/framework/utils").BooleanProperty;
5
+ token: import("@etohq/framework/utils").TextProperty;
6
+ expires_at: import("@etohq/framework/utils").DateTimeProperty;
7
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
8
+ }>, "invite">;
9
+ //# sourceMappingURL=invite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../../src/models/invite.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;aAmBf,CAAA"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Invite = void 0;
4
+ const utils_1 = require("@etohq/framework/utils");
5
+ exports.Invite = utils_1.model
6
+ .define("invite", {
7
+ id: utils_1.model.id({ prefix: "invite" }).primaryKey(),
8
+ email: utils_1.model.text().searchable(),
9
+ accepted: utils_1.model.boolean().default(false),
10
+ token: utils_1.model.text(),
11
+ expires_at: utils_1.model.dateTime(),
12
+ metadata: utils_1.model.json().nullable(),
13
+ })
14
+ .indexes([
15
+ {
16
+ on: ["email"],
17
+ unique: true,
18
+ where: "deleted_at IS NULL",
19
+ },
20
+ {
21
+ on: ["token"],
22
+ where: "deleted_at IS NULL",
23
+ },
24
+ ]);
25
+ //# sourceMappingURL=invite.js.map
@@ -0,0 +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"}
@@ -0,0 +1,9 @@
1
+ export declare const User: import("@etohq/framework/utils").DmlEntity<import("@etohq/framework/utils").DMLEntitySchemaBuilder<{
2
+ id: import("@etohq/framework/utils").PrimaryKeyModifier<string, import("@etohq/framework/utils").IdProperty>;
3
+ first_name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
4
+ last_name: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
5
+ email: import("@etohq/framework/utils").TextProperty;
6
+ avatar_url: import("@etohq/framework/utils").NullableModifier<string, import("@etohq/framework/utils").TextProperty>;
7
+ metadata: import("@etohq/framework/utils").NullableModifier<Record<string, unknown>, import("@etohq/framework/utils").JSONProperty>;
8
+ }>, "user">;
9
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI;;;;;;;WAeb,CAAA"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.User = void 0;
4
+ const utils_1 = require("@etohq/framework/utils");
5
+ exports.User = utils_1.model
6
+ .define("user", {
7
+ id: utils_1.model.id({ prefix: "user" }).primaryKey(),
8
+ first_name: utils_1.model.text().searchable().nullable(),
9
+ last_name: utils_1.model.text().searchable().nullable(),
10
+ email: utils_1.model.text().searchable(),
11
+ avatar_url: utils_1.model.text().nullable(),
12
+ metadata: utils_1.model.json().nullable(),
13
+ })
14
+ .indexes([
15
+ {
16
+ unique: true,
17
+ on: ["email"],
18
+ where: "deleted_at IS NULL",
19
+ },
20
+ ]);
21
+ //# sourceMappingURL=user.js.map
@@ -0,0 +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"}
@@ -0,0 +1,2 @@
1
+ export { default as UserModuleService } from "./user-module";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,9 @@
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.UserModuleService = void 0;
7
+ var user_module_1 = require("./user-module");
8
+ Object.defineProperty(exports, "UserModuleService", { enumerable: true, get: function () { return __importDefault(user_module_1).default; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;AAAA,6CAA4D;AAAnD,iIAAA,OAAO,OAAqB"}
@@ -0,0 +1,51 @@
1
+ import { Context, DAL, InferEntityType, InternalModuleDeclaration, ModulesSdkTypes, UserTypes } from "@etohq/framework/types";
2
+ import { Invite, User } from "../models";
3
+ type InjectedDependencies = {
4
+ baseRepository: DAL.RepositoryService;
5
+ userService: ModulesSdkTypes.IEtoInternalService<any>;
6
+ inviteService: ModulesSdkTypes.IEtoInternalService<any>;
7
+ };
8
+ declare const UserModuleService_base: import("@etohq/framework/utils").EtoServiceReturnType<{
9
+ User: {
10
+ dto: UserTypes.UserDTO;
11
+ };
12
+ Invite: {
13
+ dto: UserTypes.InviteDTO;
14
+ };
15
+ }>;
16
+ export default class UserModuleService extends UserModuleService_base implements UserTypes.IUserModuleService {
17
+ protected readonly moduleDeclaration: InternalModuleDeclaration;
18
+ protected baseRepository_: DAL.RepositoryService;
19
+ protected readonly userService_: ModulesSdkTypes.IEtoInternalService<InferEntityType<typeof User>>;
20
+ protected readonly inviteService_: ModulesSdkTypes.IEtoInternalService<InferEntityType<typeof Invite>>;
21
+ protected readonly config: {
22
+ jwtSecret: string;
23
+ expiresIn: number;
24
+ };
25
+ constructor({ userService, inviteService, baseRepository }: InjectedDependencies, moduleDeclaration: InternalModuleDeclaration);
26
+ validateInviteToken(token: string, sharedContext?: Context): Promise<UserTypes.InviteDTO>;
27
+ refreshInviteTokens(inviteIds: string[], sharedContext?: Context): Promise<UserTypes.InviteDTO[]>;
28
+ refreshInviteTokens_(inviteIds: string[], sharedContext?: Context): Promise<{
29
+ id: string;
30
+ email: string;
31
+ accepted: boolean;
32
+ token: string;
33
+ expires_at: Date;
34
+ metadata: Record<string, unknown> | null;
35
+ created_at: Date;
36
+ updated_at: Date;
37
+ deleted_at: Date | null;
38
+ }[]>;
39
+ createUsers(data: UserTypes.CreateUserDTO[], sharedContext?: Context): Promise<UserTypes.UserDTO[]>;
40
+ createUsers(data: UserTypes.CreateUserDTO, sharedContext?: Context): Promise<UserTypes.UserDTO>;
41
+ updateUsers(data: UserTypes.UpdateUserDTO[], sharedContext?: Context): Promise<UserTypes.UserDTO[]>;
42
+ updateUsers(data: UserTypes.UpdateUserDTO, sharedContext?: Context): Promise<UserTypes.UserDTO>;
43
+ createInvites(data: UserTypes.CreateInviteDTO[], sharedContext?: Context): Promise<UserTypes.InviteDTO[]>;
44
+ createInvites(data: UserTypes.CreateInviteDTO, sharedContext?: Context): Promise<UserTypes.InviteDTO>;
45
+ private createInvites_;
46
+ updateInvites(data: UserTypes.UpdateInviteDTO[], sharedContext?: Context): Promise<UserTypes.InviteDTO[]>;
47
+ updateInvites(data: UserTypes.UpdateInviteDTO, sharedContext?: Context): Promise<UserTypes.InviteDTO>;
48
+ private generateToken;
49
+ }
50
+ export {};
51
+ //# sourceMappingURL=user-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-module.d.ts","sourceRoot":"","sources":["../../src/services/user-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const utils_1 = require("@etohq/framework/utils");
19
+ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
20
+ const node_crypto_1 = __importDefault(require("node:crypto"));
21
+ const _models_1 = require("../models");
22
+ const DEFAULT_VALID_INVITE_DURATION_SECONDS = 60 * 60 * 24;
23
+ class UserModuleService extends (0, utils_1.EtoService)({ User: _models_1.User, Invite: _models_1.Invite }) {
24
+ constructor({ userService, inviteService, baseRepository }, moduleDeclaration) {
25
+ // @ts-ignore
26
+ super(...arguments);
27
+ this.moduleDeclaration = moduleDeclaration;
28
+ this.baseRepository_ = baseRepository;
29
+ this.userService_ = userService;
30
+ this.inviteService_ = inviteService;
31
+ this.config = {
32
+ jwtSecret: moduleDeclaration["jwt_secret"],
33
+ expiresIn: parseInt(moduleDeclaration["valid_duration"]) ||
34
+ DEFAULT_VALID_INVITE_DURATION_SECONDS,
35
+ };
36
+ if (!this.config.jwtSecret) {
37
+ throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "No jwt_secret was provided in the UserModule's options. Please add one.");
38
+ }
39
+ }
40
+ async validateInviteToken(token, sharedContext = {}) {
41
+ const jwtSecret = this.moduleDeclaration["jwt_secret"];
42
+ const decoded = jsonwebtoken_1.default.verify(token, jwtSecret, { complete: true });
43
+ const invite = await this.inviteService_.retrieve(decoded.payload.id, {}, sharedContext);
44
+ if (invite.expires_at < new Date()) {
45
+ throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "The invite has expired");
46
+ }
47
+ return await this.baseRepository_.serialize(invite, {
48
+ populate: true,
49
+ });
50
+ }
51
+ async refreshInviteTokens(inviteIds, sharedContext = {}) {
52
+ const invites = await this.refreshInviteTokens_(inviteIds, sharedContext);
53
+ sharedContext.messageAggregator?.saveRawMessageData(invites.map((invite) => ({
54
+ eventName: utils_1.UserEvents.INVITE_TOKEN_GENERATED,
55
+ source: this.constructor.name,
56
+ action: "token_generated",
57
+ object: "invite",
58
+ context: sharedContext,
59
+ data: { id: invite.id },
60
+ })));
61
+ return await this.baseRepository_.serialize(invites, {
62
+ populate: true,
63
+ });
64
+ }
65
+ async refreshInviteTokens_(inviteIds, sharedContext = {}) {
66
+ const [invites, count] = await this.inviteService_.listAndCount({ id: inviteIds }, {}, sharedContext);
67
+ if (count !== inviteIds.length) {
68
+ const missing = (0, utils_1.arrayDifference)(inviteIds, invites.map((invite) => invite.id));
69
+ if (missing.length > 0) {
70
+ throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, `The following invites do not exist: ${missing.join(", ")}`);
71
+ }
72
+ }
73
+ const updates = invites.map((invite) => {
74
+ return {
75
+ id: invite.id,
76
+ expires_at: new Date(Date.now() + this.config.expiresIn * 1000),
77
+ token: this.generateToken({ id: invite.id, email: invite.email }),
78
+ };
79
+ });
80
+ return await this.inviteService_.update(updates, sharedContext);
81
+ }
82
+ async createUsers(data, sharedContext = {}) {
83
+ const input = Array.isArray(data) ? data : [data];
84
+ const users = await this.userService_.create(input, sharedContext);
85
+ const serializedUsers = await this.baseRepository_.serialize(users, {
86
+ populate: true,
87
+ });
88
+ sharedContext.messageAggregator?.saveRawMessageData(users.map((user) => ({
89
+ eventName: utils_1.UserEvents.USER_CREATED,
90
+ source: this.constructor.name,
91
+ action: utils_1.CommonEvents.CREATED,
92
+ object: "user",
93
+ context: sharedContext,
94
+ data: { id: user.id },
95
+ })));
96
+ return Array.isArray(data) ? serializedUsers : serializedUsers[0];
97
+ }
98
+ async updateUsers(data, sharedContext = {}) {
99
+ const input = Array.isArray(data) ? data : [data];
100
+ const updatedUsers = await this.userService_.update(input, sharedContext);
101
+ const serializedUsers = await this.baseRepository_.serialize(updatedUsers, {
102
+ populate: true,
103
+ });
104
+ sharedContext.messageAggregator?.saveRawMessageData(updatedUsers.map((user) => ({
105
+ eventName: utils_1.UserEvents.USER_UPDATED,
106
+ source: this.constructor.name,
107
+ action: utils_1.CommonEvents.UPDATED,
108
+ object: "user",
109
+ context: sharedContext,
110
+ data: { id: user.id },
111
+ })));
112
+ return Array.isArray(data) ? serializedUsers : serializedUsers[0];
113
+ }
114
+ async createInvites(data, sharedContext = {}) {
115
+ const input = Array.isArray(data) ? data : [data];
116
+ const invites = await this.createInvites_(input, sharedContext);
117
+ const serializedInvites = await this.baseRepository_.serialize(invites, {
118
+ populate: true,
119
+ });
120
+ sharedContext.messageAggregator?.saveRawMessageData(invites.map((invite) => ({
121
+ eventName: utils_1.UserEvents.INVITE_CREATED,
122
+ source: this.constructor.name,
123
+ action: utils_1.CommonEvents.CREATED,
124
+ object: "invite",
125
+ context: sharedContext,
126
+ data: { id: invite.id },
127
+ })));
128
+ sharedContext.messageAggregator?.saveRawMessageData(invites.map((invite) => ({
129
+ eventName: utils_1.UserEvents.INVITE_TOKEN_GENERATED,
130
+ source: this.constructor.name,
131
+ action: "token_generated",
132
+ object: "invite",
133
+ context: sharedContext,
134
+ data: { id: invite.id },
135
+ })));
136
+ return Array.isArray(data) ? serializedInvites : serializedInvites[0];
137
+ }
138
+ async createInvites_(data, sharedContext = {}) {
139
+ const alreadyExistingUsers = await this.listUsers({
140
+ email: data.map((d) => d.email),
141
+ });
142
+ if (alreadyExistingUsers.length) {
143
+ throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, `User account for following email(s) already exist: ${alreadyExistingUsers
144
+ .map((u) => u.email)
145
+ .join(", ")}`);
146
+ }
147
+ const toCreate = data.map((invite) => {
148
+ const id = (0, utils_1.generateEntityId)(invite.id, "invite");
149
+ return {
150
+ ...invite,
151
+ id,
152
+ expires_at: new Date(Date.now() + this.config.expiresIn * 1000),
153
+ token: this.generateToken({ id, email: invite.email }),
154
+ };
155
+ });
156
+ return await this.inviteService_.create(toCreate, sharedContext);
157
+ }
158
+ async updateInvites(data, sharedContext = {}) {
159
+ const input = Array.isArray(data) ? data : [data];
160
+ const updatedInvites = await this.inviteService_.update(input, sharedContext);
161
+ const serializedInvites = await this.baseRepository_.serialize(updatedInvites, {
162
+ populate: true,
163
+ });
164
+ sharedContext.messageAggregator?.saveRawMessageData(serializedInvites.map((invite) => ({
165
+ eventName: utils_1.UserEvents.INVITE_UPDATED,
166
+ source: this.constructor.name,
167
+ action: utils_1.CommonEvents.UPDATED,
168
+ object: "invite",
169
+ context: sharedContext,
170
+ data: { id: invite.id },
171
+ })));
172
+ return Array.isArray(data) ? serializedInvites : serializedInvites[0];
173
+ }
174
+ generateToken(data) {
175
+ const jwtSecret = this.moduleDeclaration["jwt_secret"];
176
+ return jsonwebtoken_1.default.sign(data, jwtSecret, {
177
+ jwtid: node_crypto_1.default.randomUUID(),
178
+ expiresIn: this.config.expiresIn,
179
+ });
180
+ }
181
+ }
182
+ exports.default = UserModuleService;
183
+ __decorate([
184
+ (0, utils_1.InjectTransactionManager)(),
185
+ __param(1, (0, utils_1.EtoContext)()),
186
+ __metadata("design:type", Function),
187
+ __metadata("design:paramtypes", [String, Object]),
188
+ __metadata("design:returntype", Promise)
189
+ ], UserModuleService.prototype, "validateInviteToken", null);
190
+ __decorate([
191
+ (0, utils_1.InjectManager)(),
192
+ (0, utils_1.EmitEvents)(),
193
+ __param(1, (0, utils_1.EtoContext)()),
194
+ __metadata("design:type", Function),
195
+ __metadata("design:paramtypes", [Array, Object]),
196
+ __metadata("design:returntype", Promise)
197
+ ], UserModuleService.prototype, "refreshInviteTokens", null);
198
+ __decorate([
199
+ (0, utils_1.InjectTransactionManager)(),
200
+ __param(1, (0, utils_1.EtoContext)()),
201
+ __metadata("design:type", Function),
202
+ __metadata("design:paramtypes", [Array, Object]),
203
+ __metadata("design:returntype", Promise)
204
+ ], UserModuleService.prototype, "refreshInviteTokens_", null);
205
+ __decorate([
206
+ (0, utils_1.InjectManager)(),
207
+ (0, utils_1.EmitEvents)(),
208
+ __param(1, (0, utils_1.EtoContext)()),
209
+ __metadata("design:type", Function),
210
+ __metadata("design:paramtypes", [Object, Object]),
211
+ __metadata("design:returntype", Promise)
212
+ ], UserModuleService.prototype, "createUsers", null);
213
+ __decorate([
214
+ (0, utils_1.InjectManager)(),
215
+ (0, utils_1.EmitEvents)(),
216
+ __param(1, (0, utils_1.EtoContext)()),
217
+ __metadata("design:type", Function),
218
+ __metadata("design:paramtypes", [Object, Object]),
219
+ __metadata("design:returntype", Promise)
220
+ ], UserModuleService.prototype, "updateUsers", null);
221
+ __decorate([
222
+ (0, utils_1.InjectManager)(),
223
+ (0, utils_1.EmitEvents)(),
224
+ __param(1, (0, utils_1.EtoContext)()),
225
+ __metadata("design:type", Function),
226
+ __metadata("design:paramtypes", [Object, Object]),
227
+ __metadata("design:returntype", Promise)
228
+ ], UserModuleService.prototype, "createInvites", null);
229
+ __decorate([
230
+ (0, utils_1.InjectTransactionManager)(),
231
+ __param(1, (0, utils_1.EtoContext)()),
232
+ __metadata("design:type", Function),
233
+ __metadata("design:paramtypes", [Array, Object]),
234
+ __metadata("design:returntype", Promise)
235
+ ], UserModuleService.prototype, "createInvites_", null);
236
+ __decorate([
237
+ (0, utils_1.InjectManager)(),
238
+ (0, utils_1.EmitEvents)(),
239
+ __param(1, (0, utils_1.EtoContext)()),
240
+ __metadata("design:type", Function),
241
+ __metadata("design:paramtypes", [Object, Object]),
242
+ __metadata("design:returntype", Promise)
243
+ ], UserModuleService.prototype, "updateInvites", null);
244
+ //# sourceMappingURL=user-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-module.js","sourceRoot":"","sources":["../../src/services/user-module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAQA,kDAW+B;AAC/B,gEAA8C;AAC9C,8DAAgC;AAEhC,qCAAsC;AAQtC,MAAM,qCAAqC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AAC1D,MAAqB,iBACnB,SAAQ,IAAA,kBAAU,EAOf,EAAE,IAAI,EAAJ,cAAI,EAAE,MAAM,EAAN,gBAAM,EAAE,CAAC;IAapB,YACE,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAwB,EACjD,iBAA4C;QAE/D,aAAa;QACb,KAAK,CAAC,GAAG,SAAS,CAAC,CAAA;QAHA,sBAAiB,GAAjB,iBAAiB,CAA2B;QAK/D,IAAI,CAAC,eAAe,GAAG,cAAc,CAAA;QACrC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;QAC/B,IAAI,CAAC,cAAc,GAAG,aAAa,CAAA;QACnC,IAAI,CAAC,MAAM,GAAG;YACZ,SAAS,EAAE,iBAAiB,CAAC,YAAY,CAAC;YAC1C,SAAS,EACP,QAAQ,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;gBAC7C,qCAAqC;SACxC,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,gBAAQ,CAChB,gBAAQ,CAAC,KAAK,CAAC,YAAY,EAC3B,yEAAyE,CAC1E,CAAA;QACH,CAAC;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,mBAAmB,CACvB,KAAa,EACC,gBAAyB,EAAE;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAA;QACtD,MAAM,OAAO,GAAe,sBAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QAE5E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAC/C,OAAO,CAAC,OAAO,CAAC,EAAE,EAClB,EAAE,EACF,aAAa,CACd,CAAA;QAED,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,gBAAQ,CAChB,gBAAQ,CAAC,KAAK,CAAC,YAAY,EAC3B,wBAAwB,CACzB,CAAA;QACH,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAAsB,MAAM,EAAE;YACvE,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;IACJ,CAAC;IAIK,AAAN,KAAK,CAAC,mBAAmB,CACvB,SAAmB,EACL,gBAAyB,EAAE;QAEzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QAEzE,aAAa,CAAC,iBAAiB,EAAE,kBAAkB,CACjD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACvB,SAAS,EAAE,kBAAU,CAAC,sBAAsB;YAC5C,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC7B,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;SACxB,CAAC,CAAC,CACJ,CAAA;QAED,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CACzC,OAAO,EACP;YACE,QAAQ,EAAE,IAAI;SACf,CACF,CAAA;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,oBAAoB,CACxB,SAAmB,EACL,gBAAyB,EAAE;QAEzC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAC7D,EAAE,EAAE,EAAE,SAAS,EAAE,EACjB,EAAE,EACF,aAAa,CACd,CAAA;QAED,IAAI,KAAK,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAA,uBAAe,EAC7B,SAAS,EACT,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CACnC,CAAA;YAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,gBAAQ,CAChB,gBAAQ,CAAC,KAAK,CAAC,YAAY,EAC3B,uCAAuC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5D,CAAA;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACrC,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC/D,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;aAClE,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IACjE,CAAC;IAcK,AAAN,KAAK,CAAC,WAAW,CACf,IAAyD,EAC3C,gBAAyB,EAAE;QAEzC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAEjD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;QAElE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAE1D,KAAK,EAAE;YACP,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,aAAa,CAAC,iBAAiB,EAAE,kBAAkB,CACjD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACnB,SAAS,EAAE,kBAAU,CAAC,YAAY;YAClC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC7B,MAAM,EAAE,oBAAY,CAAC,OAAO;YAC5B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;SACtB,CAAC,CAAC,CACJ,CAAA;QAED,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACnE,CAAC;IAcK,AAAN,KAAK,CAAC,WAAW,CACf,IAAyD,EAC3C,gBAAyB,EAAE;QAEzC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAEjD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;QAEzE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAE1D,YAAY,EAAE;YACd,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,aAAa,CAAC,iBAAiB,EAAE,kBAAkB,CACjD,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC1B,SAAS,EAAE,kBAAU,CAAC,YAAY;YAClC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC7B,MAAM,EAAE,oBAAY,CAAC,OAAO;YAC5B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;SACtB,CAAC,CAAC,CACJ,CAAA;QAED,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IACnE,CAAC;IAcK,AAAN,KAAK,CAAC,aAAa,CACjB,IAA6D,EAC/C,gBAAyB,EAAE;QAEzC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAEjD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;QAE/D,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAE5D,OAAO,EAAE;YACT,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,aAAa,CAAC,iBAAiB,EAAE,kBAAkB,CACjD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACvB,SAAS,EAAE,kBAAU,CAAC,cAAc;YACpC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC7B,MAAM,EAAE,oBAAY,CAAC,OAAO;YAC5B,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;SACxB,CAAC,CAAC,CACJ,CAAA;QAED,aAAa,CAAC,iBAAiB,EAAE,kBAAkB,CACjD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACvB,SAAS,EAAE,kBAAU,CAAC,sBAAsB;YAC5C,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC7B,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;SACxB,CAAC,CAAC,CACJ,CAAA;QAED,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAA;IACvE,CAAC;IAGa,AAAN,KAAK,CAAC,cAAc,CAC1B,IAAiC,EACnB,gBAAyB,EAAE;QAEzC,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;YAChD,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SAChC,CAAC,CAAA;QAEF,IAAI,oBAAoB,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,gBAAQ,CAChB,gBAAQ,CAAC,KAAK,CAAC,YAAY,EAC3B,sDAAsD,oBAAoB;iBACvE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;iBACnB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAA;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACnC,MAAM,EAAE,GAAG,IAAA,wBAAgB,EAAE,MAA0B,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;YACrE,OAAO;gBACL,GAAG,MAAM;gBACT,EAAE;gBACF,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC/D,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;aACvD,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IAClE,CAAC;IAcK,AAAN,KAAK,CAAC,aAAa,CACjB,IAA6D,EAC/C,gBAAyB,EAAE;QAEzC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAEjD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CACrD,KAAK,EACL,aAAa,CACd,CAAA;QAED,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,CAE5D,cAAc,EAAE;YAChB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAA;QAEF,aAAa,CAAC,iBAAiB,EAAE,kBAAkB,CACjD,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACjC,SAAS,EAAE,kBAAU,CAAC,cAAc;YACpC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC7B,MAAM,EAAE,oBAAY,CAAC,OAAO;YAC5B,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;SACxB,CAAC,CAAC,CACJ,CAAA;QAED,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAA;IACvE,CAAC;IAEO,aAAa,CAAC,IAAS;QAC7B,MAAM,SAAS,GAAW,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAA;QAC9D,OAAO,sBAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE;YAC/B,KAAK,EAAE,qBAAM,CAAC,UAAU,EAAE;YAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SACjC,CAAC,CAAA;IACJ,CAAC;CACF;AA3VD,oCA2VC;AA5SO;IADL,IAAA,gCAAwB,GAAE;IAGxB,WAAA,IAAA,kBAAU,GAAE,CAAA;;;;4DAqBd;AAIK;IAFL,IAAA,qBAAa,GAAE;IACf,IAAA,kBAAU,GAAE;IAGV,WAAA,IAAA,kBAAU,GAAE,CAAA;;;;4DAqBd;AAGK;IADL,IAAA,gCAAwB,GAAE;IAGxB,WAAA,IAAA,kBAAU,GAAE,CAAA;;;;6DA+Bd;AAcK;IAFL,IAAA,qBAAa,GAAE;IACf,IAAA,kBAAU,GAAE;IAGV,WAAA,IAAA,kBAAU,GAAE,CAAA;;;;oDAwBd;AAcK;IAFL,IAAA,qBAAa,GAAE;IACf,IAAA,kBAAU,GAAE;IAGV,WAAA,IAAA,kBAAU,GAAE,CAAA;;;;oDAwBd;AAcK;IAFL,IAAA,qBAAa,GAAE;IACf,IAAA,kBAAU,GAAE;IAGV,WAAA,IAAA,kBAAU,GAAE,CAAA;;;;sDAmCd;AAGa;IADb,IAAA,gCAAwB,GAAE;IAGxB,WAAA,IAAA,kBAAU,GAAE,CAAA;;;;uDA0Bd;AAcK;IAFL,IAAA,qBAAa,GAAE;IACf,IAAA,kBAAU,GAAE;IAGV,WAAA,IAAA,kBAAU,GAAE,CAAA;;;;sDA2Bd"}
@@ -0,0 +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"}
@@ -0,0 +1,6 @@
1
+ import { Logger } from "@etohq/framework/types";
2
+ export type InitializeModuleInjectableDependencies = {
3
+ logger?: Logger;
4
+ };
5
+ export * from "./services";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,MAAM,MAAM,sCAAsC,GAAG;IACnD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,cAAc,YAAY,CAAA"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./services"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAMA,6CAA0B"}
@@ -0,0 +1,2 @@
1
+ export * as InviteServiceTypes from "./invite";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,kBAAkB,MAAM,UAAU,CAAA"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
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
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.InviteServiceTypes = void 0;
27
+ exports.InviteServiceTypes = __importStar(require("./invite"));
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAA8C"}
@@ -0,0 +1,6 @@
1
+ export interface CreateInviteDTO {
2
+ email: string;
3
+ accepted?: boolean;
4
+ metadata?: Record<string, unknown> | null;
5
+ }
6
+ //# sourceMappingURL=invite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../../../src/types/services/invite.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC1C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=invite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite.js","sourceRoot":"","sources":["../../../src/types/services/invite.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@etohq/user",
3
+ "version": "1.0.0",
4
+ "description": "Eto Users module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "!dist/**/__tests__",
10
+ "!dist/**/__mocks__",
11
+ "!dist/**/__fixtures__"
12
+ ],
13
+ "engines": {
14
+ "node": ">=20"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/etohq/eto",
19
+ "directory": "packages/user"
20
+ },
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "author": "Eto",
25
+ "license": "MIT",
26
+ "scripts": {
27
+ "watch": "tsc --build --watch",
28
+ "watch:test": "tsc --build tsconfig.spec.json --watch",
29
+ "resolve:aliases": "tsc --showConfig -p tsconfig.json > tsconfig.resolved.json && tsc-alias -p tsconfig.resolved.json && rimraf tsconfig.resolved.json", "build": "rimraf dist && tsc --build && npm run resolve:aliases",
30
+ "test": "jest --runInBand --passWithNoTests --bail --forceExit -- src",
31
+ "test:integration": "jest --forceExit -- integration-tests/**/__tests__/**/*.ts",
32
+ "migration:initial": " MIKRO_ORM_CLI=./mikro-orm.config.dev.ts eto-mikro-orm migration:create --initial",
33
+ "migration:create": " MIKRO_ORM_CLI=./mikro-orm.config.dev.ts eto-mikro-orm migration:create",
34
+ "migration:up": " MIKRO_ORM_CLI=./mikro-orm.config.dev.ts eto-mikro-orm migration:up",
35
+ "orm:cache:clear": " MIKRO_ORM_CLI=./mikro-orm.config.dev.ts eto-mikro-orm cache:clear"
36
+ },
37
+ "devDependencies": {
38
+ "@etohq/framework": "^1.0.0",
39
+ "@etohq/test-utils": "^1.0.0",
40
+ "@mikro-orm/cli": "5.9.7",
41
+ "@mikro-orm/core": "5.9.7",
42
+ "@mikro-orm/migrations": "5.9.7",
43
+ "@mikro-orm/postgresql": "5.9.7",
44
+ "@swc/core": "^1.7.28",
45
+ "@swc/jest": "^0.2.36",
46
+ "@types/jest": "^29.5.14",
47
+ "awilix": "^8.0.1",
48
+ "jest": "^29.7.0",
49
+ "rimraf": "^5.0.2",
50
+ "tsc-alias": "^1.8.6",
51
+ "typescript": "^5.6.2"
52
+ },
53
+ "dependencies": {
54
+ "jsonwebtoken": "^9.0.2"
55
+ },
56
+ "peerDependencies": {
57
+ "@etohq/framework": "^1.0.0",
58
+ "@mikro-orm/core": "5.9.7",
59
+ "@mikro-orm/migrations": "5.9.7",
60
+ "@mikro-orm/postgresql": "5.9.7",
61
+ "awilix": "^8.0.1"
62
+ }
63
+ }