@skroz/profile-api 1.0.27 → 1.0.29
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.
- package/dist/index.d.ts +2 -0
- package/dist/index.js +9 -0
- package/dist/utils/createEntityDataLoader.d.ts +5 -0
- package/dist/utils/createEntityDataLoader.js +25 -0
- package/dist/utils/encryptor.d.ts +3 -0
- package/dist/utils/encryptor.js +29 -0
- package/package.json +3 -2
- package/src/index.ts +2 -0
- package/src/utils/createEntityDataLoader.ts +23 -0
- package/src/utils/encryptor.ts +27 -0
package/dist/index.d.ts
CHANGED
|
@@ -9,3 +9,5 @@ export * from './resolvers/AuthResolver';
|
|
|
9
9
|
export * from './resolvers/ProfileResolver';
|
|
10
10
|
export * from './resolvers/createOauthResolver';
|
|
11
11
|
export * from './oauth';
|
|
12
|
+
export { default as createEntityDataLoader } from './utils/createEntityDataLoader';
|
|
13
|
+
export { getEncryptor, getGlobalId } from './utils/encryptor';
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,11 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
13
13
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
16
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.getGlobalId = exports.getEncryptor = exports.createEntityDataLoader = void 0;
|
|
17
21
|
__exportStar(require("./types"), exports);
|
|
18
22
|
__exportStar(require("./adapters/TypeOrmProfileAdapter"), exports);
|
|
19
23
|
__exportStar(require("./entities/TypeOrmBaseEntity"), exports);
|
|
@@ -25,3 +29,8 @@ __exportStar(require("./resolvers/AuthResolver"), exports);
|
|
|
25
29
|
__exportStar(require("./resolvers/ProfileResolver"), exports);
|
|
26
30
|
__exportStar(require("./resolvers/createOauthResolver"), exports);
|
|
27
31
|
__exportStar(require("./oauth"), exports);
|
|
32
|
+
var createEntityDataLoader_1 = require("./utils/createEntityDataLoader");
|
|
33
|
+
Object.defineProperty(exports, "createEntityDataLoader", { enumerable: true, get: function () { return __importDefault(createEntityDataLoader_1).default; } });
|
|
34
|
+
var encryptor_1 = require("./utils/encryptor");
|
|
35
|
+
Object.defineProperty(exports, "getEncryptor", { enumerable: true, get: function () { return encryptor_1.getEncryptor; } });
|
|
36
|
+
Object.defineProperty(exports, "getGlobalId", { enumerable: true, get: function () { return encryptor_1.getGlobalId; } });
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import DataLoader from 'dataloader';
|
|
2
|
+
import { Connection, ObjectType } from 'typeorm';
|
|
3
|
+
import { TypeOrmBaseEntity as BaseEntity } from '../entities/TypeOrmBaseEntity';
|
|
4
|
+
declare const createEntityDataLoader: <T extends BaseEntity>(conn: Connection, target: ObjectType<T>) => DataLoader<number, T, number>;
|
|
5
|
+
export default createEntityDataLoader;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const dataloader_1 = __importDefault(require("dataloader"));
|
|
16
|
+
const batch = (conn, target) => (ids) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
+
const entities = yield conn.getRepository(target).findByIds(ids);
|
|
18
|
+
const entitiesMap = {};
|
|
19
|
+
entities.forEach((item) => {
|
|
20
|
+
entitiesMap[item.id] = item;
|
|
21
|
+
});
|
|
22
|
+
return ids.map((id) => entitiesMap[id] || null);
|
|
23
|
+
});
|
|
24
|
+
const createEntityDataLoader = (conn, target) => new dataloader_1.default(batch(conn, target));
|
|
25
|
+
exports.default = createEntityDataLoader;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getGlobalId = exports.getEncryptor = void 0;
|
|
4
|
+
const graphql_utils_1 = require("@os-team/graphql-utils");
|
|
5
|
+
let encryptor;
|
|
6
|
+
let globalId;
|
|
7
|
+
const getEncryptor = () => {
|
|
8
|
+
if (!encryptor) {
|
|
9
|
+
if (!process.env.ENCRYPTION_KEY) {
|
|
10
|
+
throw new Error('ENCRYPTION_KEY is not found');
|
|
11
|
+
}
|
|
12
|
+
if (!process.env.ENCRYPTION_IV) {
|
|
13
|
+
throw new Error('ENCRYPTION_IV is not found');
|
|
14
|
+
}
|
|
15
|
+
encryptor = new graphql_utils_1.Encryptor({
|
|
16
|
+
key: process.env.ENCRYPTION_KEY,
|
|
17
|
+
iv: process.env.ENCRYPTION_IV,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return encryptor;
|
|
21
|
+
};
|
|
22
|
+
exports.getEncryptor = getEncryptor;
|
|
23
|
+
const getGlobalId = () => {
|
|
24
|
+
if (!globalId) {
|
|
25
|
+
globalId = new graphql_utils_1.GlobalId((0, exports.getEncryptor)());
|
|
26
|
+
}
|
|
27
|
+
return globalId;
|
|
28
|
+
};
|
|
29
|
+
exports.getGlobalId = getGlobalId;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skroz/profile-api",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.29",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": "git@gitlab.com:skroz/libs/utils.git",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"@os-team/session": "1.0.32",
|
|
27
27
|
"argon2": "0.30.2",
|
|
28
28
|
"class-validator": "0.13.2",
|
|
29
|
+
"dataloader": "2.1.0",
|
|
29
30
|
"isomorphic-unfetch": "4.0.2",
|
|
30
31
|
"nanoid": "3.3.4",
|
|
31
32
|
"pug": "3.0.2"
|
|
@@ -44,5 +45,5 @@
|
|
|
44
45
|
"type-graphql": "^1.1.1",
|
|
45
46
|
"typeorm": "^0.2.45"
|
|
46
47
|
},
|
|
47
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "c30923fe4d0d3ababb7a5056067f29a05d8f071a"
|
|
48
49
|
}
|
package/src/index.ts
CHANGED
|
@@ -9,3 +9,5 @@ export * from './resolvers/AuthResolver';
|
|
|
9
9
|
export * from './resolvers/ProfileResolver';
|
|
10
10
|
export * from './resolvers/createOauthResolver';
|
|
11
11
|
export * from './oauth';
|
|
12
|
+
export { default as createEntityDataLoader } from './utils/createEntityDataLoader';
|
|
13
|
+
export { getEncryptor, getGlobalId } from './utils/encryptor';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import DataLoader from 'dataloader';
|
|
2
|
+
import { Connection, ObjectType } from 'typeorm';
|
|
3
|
+
import { TypeOrmBaseEntity as BaseEntity } from '../entities/TypeOrmBaseEntity';
|
|
4
|
+
|
|
5
|
+
const batch =
|
|
6
|
+
<T extends BaseEntity>(conn: Connection, target: ObjectType<T>) =>
|
|
7
|
+
async (ids: readonly number[]) => {
|
|
8
|
+
const entities = await conn.getRepository(target).findByIds(ids as number[]);
|
|
9
|
+
|
|
10
|
+
const entitiesMap: { [key: number]: T } = {};
|
|
11
|
+
entities.forEach((item) => {
|
|
12
|
+
entitiesMap[item.id] = item;
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
return ids.map((id) => entitiesMap[id] || null);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const createEntityDataLoader = <T extends BaseEntity>(
|
|
19
|
+
conn: Connection,
|
|
20
|
+
target: ObjectType<T>
|
|
21
|
+
) => new DataLoader<number, T>(batch(conn, target));
|
|
22
|
+
|
|
23
|
+
export default createEntityDataLoader;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Encryptor, GlobalId } from '@os-team/graphql-utils';
|
|
2
|
+
|
|
3
|
+
let encryptor: Encryptor;
|
|
4
|
+
let globalId: GlobalId;
|
|
5
|
+
|
|
6
|
+
export const getEncryptor = () => {
|
|
7
|
+
if (!encryptor) {
|
|
8
|
+
if (!process.env.ENCRYPTION_KEY) {
|
|
9
|
+
throw new Error('ENCRYPTION_KEY is not found');
|
|
10
|
+
}
|
|
11
|
+
if (!process.env.ENCRYPTION_IV) {
|
|
12
|
+
throw new Error('ENCRYPTION_IV is not found');
|
|
13
|
+
}
|
|
14
|
+
encryptor = new Encryptor({
|
|
15
|
+
key: process.env.ENCRYPTION_KEY,
|
|
16
|
+
iv: process.env.ENCRYPTION_IV,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return encryptor;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const getGlobalId = () => {
|
|
23
|
+
if (!globalId) {
|
|
24
|
+
globalId = new GlobalId(getEncryptor());
|
|
25
|
+
}
|
|
26
|
+
return globalId;
|
|
27
|
+
};
|