@belopash/typeorm-store 0.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.
@@ -0,0 +1,36 @@
1
+ name: bump
2
+ on:
3
+ workflow_dispatch:
4
+ inputs:
5
+ version:
6
+ type: choice
7
+ description: Version
8
+ required: true
9
+ options:
10
+ - patch
11
+ - minor
12
+ - major
13
+
14
+ jobs:
15
+ bump:
16
+ name: increase version numbers
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v2
20
+
21
+ - name: configure git
22
+ run: |
23
+ git config --global user.name 'github-actions'
24
+ git config --global user.email 'github-actions@github.com'
25
+
26
+ - name: update changelog
27
+ run: |
28
+ npx generate-changelog -p
29
+ git add CHANGELOG.md
30
+ git commit -m 'updated CHANGELOG.md'
31
+
32
+ - name: bump version
33
+ run: npm version ${{ github.event.inputs.version }} -m "bump to %s"
34
+
35
+ - name: git push
36
+ run: git push origin
@@ -0,0 +1,49 @@
1
+ name: publish
2
+ on:
3
+ workflow_dispatch: # manually run
4
+ inputs:
5
+ releaseTag:
6
+ description: 'Tag the release (next, latest)'
7
+ required: false
8
+ default: 'latest'
9
+
10
+ env:
11
+ CI: true
12
+
13
+ jobs:
14
+ publish:
15
+ name: Publish
16
+ runs-on: ubuntu-20.04
17
+ steps:
18
+ - name: Checkout
19
+ uses: actions/checkout@v2
20
+
21
+ - name: Use Node.js
22
+ uses: actions/setup-node@v3
23
+ with:
24
+ node-version: '16.x'
25
+
26
+ - name: Authenticate with Registry
27
+ run: |
28
+ echo "always-auth=true" > .npmrc
29
+ echo "@subsquid:registry=https://registry.npmjs.org/" >> .npmrc
30
+ echo "registry=https://registry.npmjs.org/" >> .npmrc
31
+ echo "//registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN" >> .npmrc
32
+ npm whoami
33
+ env:
34
+ NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
35
+
36
+ - name: npm install
37
+ run: |
38
+ npm i
39
+ git config --global user.name 'github-actions'
40
+ git config --global user.email 'github-actions@github.com'
41
+
42
+ - name: npm build
43
+ run: npm run build
44
+
45
+ - name: npm publish
46
+ run: |
47
+ npm publish --tag $RELEASE_TAG --access public
48
+ env:
49
+ RELEASE_TAG: ${{ github.event.inputs.releaseTag }}
package/CHANGELOG.md ADDED
@@ -0,0 +1,18 @@
1
+ #### 0.3.1 (2023-08-21)
2
+
3
+ #### 0.2.1 (2023-08-03)
4
+
5
+ #### 0.1.2 (2023-07-24)
6
+
7
+ #### 0.1.1 (2023-07-05)
8
+
9
+ #### 0.0.5 (2023-07-04)
10
+
11
+ #### 0.0.4 (2023-06-25)
12
+
13
+ #### 0.0.3 (2023-06-18)
14
+
15
+ #### 0.0.2 (2023-06-16)
16
+
17
+ #### 0.0.1 (2023-06-14)
18
+
@@ -0,0 +1,23 @@
1
+ import { Entity } from '@subsquid/typeorm-store';
2
+ import { EntityManager, EntityTarget, FindOptionsRelations } from 'typeorm';
3
+ export declare class CachedEntity<E extends Entity> {
4
+ value: E | null;
5
+ relations: {
6
+ [key: string]: boolean;
7
+ };
8
+ constructor();
9
+ }
10
+ export declare class CacheMap {
11
+ private em;
12
+ private map;
13
+ constructor(em: () => EntityManager);
14
+ exist<E extends Entity>(entityClass: EntityTarget<E>, id: string): boolean;
15
+ get<E extends Entity>(entityClass: EntityTarget<E>, id: string): CachedEntity<E> | undefined;
16
+ ensure<E extends Entity>(entityClass: EntityTarget<E>, id: string): void;
17
+ delete<E extends Entity>(entityClass: EntityTarget<E>, id: string): void;
18
+ add<E extends Entity>(entity: E, mask?: FindOptionsRelations<any>): void;
19
+ add<E extends Entity>(entities: E[], mask?: FindOptionsRelations<any>): void;
20
+ clear(): void;
21
+ private getEntityCache;
22
+ }
23
+ //# sourceMappingURL=cacheMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheMap.d.ts","sourceRoot":"","sources":["../src/cacheMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAA;AAE9C,OAAO,EAAC,aAAa,EAAE,YAAY,EAAE,oBAAoB,EAAC,MAAM,SAAS,CAAA;AAGzE,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM;IACtC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IACf,SAAS,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,CAAA;;CAMtC;AAED,qBAAa,QAAQ;IAGL,OAAO,CAAC,EAAE;IAFtB,OAAO,CAAC,GAAG,CAAyD;gBAEhD,EAAE,EAAE,MAAM,aAAa;IAE3C,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAMhE,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAK9D,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAUjE,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM;IAOjE,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAAG,IAAI;IACxE,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAAG,IAAI;IAkE5E,KAAK;IAOL,OAAO,CAAC,cAAc;CAYzB"}
@@ -0,0 +1,115 @@
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.CacheMap = exports.CachedEntity = void 0;
7
+ const assert_1 = __importDefault(require("assert"));
8
+ const utils_1 = require("./utils");
9
+ class CachedEntity {
10
+ constructor() {
11
+ this.value = null;
12
+ this.relations = {};
13
+ }
14
+ }
15
+ exports.CachedEntity = CachedEntity;
16
+ class CacheMap {
17
+ constructor(em) {
18
+ this.em = em;
19
+ this.map = new Map();
20
+ }
21
+ exist(entityClass, id) {
22
+ const cacheMap = this.getEntityCache(entityClass);
23
+ const cachedEntity = cacheMap.get(id);
24
+ return cachedEntity?.value != null;
25
+ }
26
+ get(entityClass, id) {
27
+ const cacheMap = this.getEntityCache(entityClass);
28
+ return cacheMap.get(id);
29
+ }
30
+ ensure(entityClass, id) {
31
+ const cacheMap = this.getEntityCache(entityClass);
32
+ let cachedEntity = cacheMap.get(id);
33
+ if (cachedEntity == null) {
34
+ cachedEntity = new CachedEntity();
35
+ cacheMap.set(id, cachedEntity);
36
+ }
37
+ }
38
+ delete(entityClass, id) {
39
+ const cacheMap = this.getEntityCache(entityClass);
40
+ const cachedEntity = new CachedEntity();
41
+ cacheMap.set(id, cachedEntity);
42
+ }
43
+ add(e, mask = {}) {
44
+ const em = this.em();
45
+ const entities = Array.isArray(e) ? e : [e];
46
+ if (entities.length == 0)
47
+ return;
48
+ const entityClass = entities[0].constructor;
49
+ const metadata = em.connection.getMetadata(entities[0].constructor);
50
+ const cacheMap = this.getEntityCache(metadata.target);
51
+ for (const entity of entities) {
52
+ let cachedEntity = cacheMap.get(entity.id);
53
+ if (cachedEntity == null) {
54
+ cachedEntity = new CachedEntity();
55
+ cacheMap.set(entity.id, cachedEntity);
56
+ }
57
+ if (cachedEntity.value == null) {
58
+ cachedEntity.value = em.create(entityClass);
59
+ }
60
+ for (const column of metadata.nonVirtualColumns) {
61
+ const objectColumnValue = column.getEntityValue(entity);
62
+ if (objectColumnValue !== undefined) {
63
+ column.setEntityValue(cachedEntity.value, (0, utils_1.copy)(objectColumnValue));
64
+ }
65
+ }
66
+ for (const relation of metadata.relations) {
67
+ const relatedMetadata = relation.inverseEntityMetadata;
68
+ const relatedEntity = relation.getEntityValue(entity);
69
+ const relatedMask = mask[relation.propertyName];
70
+ if (relatedMask) {
71
+ if (relation.isOneToMany || relation.isManyToMany) {
72
+ if (Array.isArray(relatedEntity)) {
73
+ for (const r of relatedEntity) {
74
+ this.add(r, typeof relatedMask === 'boolean' ? {} : relatedMask);
75
+ }
76
+ }
77
+ }
78
+ else if (relatedEntity != null) {
79
+ this.add(relatedEntity, typeof relatedMask === 'boolean' ? {} : relatedMask);
80
+ }
81
+ }
82
+ if (relation.isOwning && relatedMask) {
83
+ if (relatedEntity == null) {
84
+ relation.setEntityValue(cachedEntity.value, null);
85
+ }
86
+ else {
87
+ const _relationCacheMap = this.getEntityCache(relatedMetadata.target);
88
+ const cachedRelation = _relationCacheMap.get(relatedEntity.id);
89
+ (0, assert_1.default)(cachedRelation != null, `missing entity ${relatedMetadata.name} with id ${relatedEntity.id}`);
90
+ const relatedEntityIdOnly = em.create(relatedMetadata.target, { id: relatedEntity.id });
91
+ relation.setEntityValue(cachedEntity.value, relatedEntityIdOnly);
92
+ }
93
+ }
94
+ }
95
+ }
96
+ }
97
+ clear() {
98
+ for (const item of this.map.values()) {
99
+ item.clear();
100
+ }
101
+ this.map.clear();
102
+ }
103
+ getEntityCache(entityClass) {
104
+ const em = this.em();
105
+ const metadata = em.connection.getMetadata(entityClass);
106
+ let map = this.map.get(metadata.name);
107
+ if (map == null) {
108
+ map = new Map();
109
+ this.map.set(metadata.name, map);
110
+ }
111
+ return map;
112
+ }
113
+ }
114
+ exports.CacheMap = CacheMap;
115
+ //# sourceMappingURL=cacheMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheMap.js","sourceRoot":"","sources":["../src/cacheMap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { IsolationLevel, TypeormDatabase, TypeormDatabaseOptions } from '@subsquid/typeorm-store';
2
+ import { FinalTxInfo, HotTxInfo, HashAndHeight } from '@subsquid/typeorm-store/lib/interfaces';
3
+ import { StoreWithCache } from './store';
4
+ export { IsolationLevel, TypeormDatabaseOptions };
5
+ export declare class TypeormDatabaseWithCache extends TypeormDatabase {
6
+ transact(info: FinalTxInfo, cb: (store: StoreWithCache) => Promise<void>): Promise<void>;
7
+ transactHot(info: HotTxInfo, cb: (store: StoreWithCache, block: HashAndHeight) => Promise<void>): Promise<void>;
8
+ private performUpdates;
9
+ }
10
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,eAAe,EAAE,sBAAsB,EAAC,MAAM,yBAAyB,CAAA;AAE/F,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAC,MAAM,wCAAwC,CAAA;AAG5F,OAAO,EAAC,cAAc,EAAC,MAAM,SAAS,CAAA;AAEtC,OAAO,EAAC,cAAc,EAAE,sBAAsB,EAAC,CAAA;AAG/C,qBAAa,wBAAyB,SAAQ,eAAe;IAEzD,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxF,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAIjG,cAAc;CAkB/B"}
@@ -0,0 +1,35 @@
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.TypeormDatabaseWithCache = void 0;
7
+ const typeorm_store_1 = require("@subsquid/typeorm-store");
8
+ const assert_1 = __importDefault(require("assert"));
9
+ const store_1 = require("./store");
10
+ // @ts-ignore
11
+ class TypeormDatabaseWithCache extends typeorm_store_1.TypeormDatabase {
12
+ // @ts-ignore
13
+ transact(info, cb) {
14
+ return super.transact(info, cb);
15
+ }
16
+ // @ts-ignore
17
+ transactHot(info, cb) {
18
+ return super.transactHot(info, cb);
19
+ }
20
+ async performUpdates(cb, em, changeTracker) {
21
+ let running = true;
22
+ let store = new store_1.StoreWithCache(() => {
23
+ (0, assert_1.default)(running, `too late to perform db updates, make sure you haven't forgot to await on db query`);
24
+ return em;
25
+ }, changeTracker);
26
+ try {
27
+ await cb(store);
28
+ }
29
+ finally {
30
+ running = false;
31
+ }
32
+ }
33
+ }
34
+ exports.TypeormDatabaseWithCache = TypeormDatabaseWithCache;
35
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":";;;;;;AAAA,2DAA+F;AAG/F,oDAA2B;AAE3B,mCAAsC;AAItC,aAAa;AACb,MAAa,wBAAyB,SAAQ,+BAAe;IACzD,aAAa;IACb,QAAQ,CAAC,IAAiB,EAAE,EAA4C;QACpE,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAS,CAAC,CAAA;IAC1C,CAAC;IAED,aAAa;IACb,WAAW,CAAC,IAAe,EAAE,EAAkE;QAC3F,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAS,CAAC,CAAA;IAC7C,CAAC;IAEO,KAAK,CAAC,cAAc,CACxB,EAA4C,EAC5C,EAAiB,EACjB,aAA6B;QAE7B,IAAI,OAAO,GAAG,IAAI,CAAA;QAElB,IAAI,KAAK,GAAG,IAAI,sBAAc,CAAC,GAAG,EAAE;YAChC,IAAA,gBAAM,EAAC,OAAO,EAAE,mFAAmF,CAAC,CAAA;YACpG,OAAO,EAAE,CAAA;QACb,CAAC,EAAE,aAAa,CAAC,CAAA;QAEjB,IAAI;YACA,MAAM,EAAE,CAAC,KAAK,CAAC,CAAA;SAClB;gBAAS;YACN,OAAO,GAAG,KAAK,CAAA;SAClB;IACL,CAAC;CACJ;AA7BD,4DA6BC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './database';
2
+ export { EntityClass, Entity, FindManyOptions, FindOneOptions, StoreWithCache } from './store';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAC,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAC,MAAM,SAAS,CAAA"}
package/lib/index.js ADDED
@@ -0,0 +1,21 @@
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
+ exports.StoreWithCache = void 0;
18
+ __exportStar(require("./database"), exports);
19
+ var store_1 = require("./store");
20
+ Object.defineProperty(exports, "StoreWithCache", { enumerable: true, get: function () { return store_1.StoreWithCache; } });
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,iCAA4F;AAA9B,uGAAA,cAAc,OAAA"}
package/lib/store.d.ts ADDED
@@ -0,0 +1,60 @@
1
+ import { Entity as _Entity, Entity, EntityClass, FindManyOptions, FindOneOptions, Store } from '@subsquid/typeorm-store';
2
+ import { ChangeTracker } from '@subsquid/typeorm-store/lib/hot';
3
+ import { EntityManager, EntityTarget, FindOptionsRelations, FindOptionsWhere } from 'typeorm';
4
+ export { EntityClass, FindManyOptions, FindOneOptions, Entity };
5
+ export type DeferMap = Map<string, {
6
+ ids: Set<string>;
7
+ relations: FindOptionsRelations<any>;
8
+ }>;
9
+ export interface ChangeSet {
10
+ inserts: Entity[];
11
+ upserts: Entity[];
12
+ delayedUpserts: Entity[];
13
+ removes: Entity[];
14
+ }
15
+ export declare class StoreWithCache extends Store {
16
+ private em;
17
+ private deferMap;
18
+ private updates;
19
+ private cache;
20
+ constructor(em: () => EntityManager, changes?: ChangeTracker);
21
+ insert<E extends _Entity>(entity: E): Promise<void>;
22
+ insert<E extends _Entity>(entities: E[]): Promise<void>;
23
+ upsert<E extends _Entity>(entity: E): Promise<void>;
24
+ upsert<E extends _Entity>(entities: E[]): Promise<void>;
25
+ save<E extends _Entity>(entity: E): Promise<void>;
26
+ save<E extends _Entity>(entities: E[]): Promise<void>;
27
+ remove<E extends Entity>(entity: E): Promise<void>;
28
+ remove<E extends Entity>(entities: E[]): Promise<void>;
29
+ remove<E extends Entity>(entityClass: EntityTarget<E>, id: string | string[]): Promise<void>;
30
+ count<E extends Entity>(entityClass: EntityTarget<E>, options?: FindManyOptions<E>): Promise<number>;
31
+ countBy<E extends Entity>(entityClass: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<number>;
32
+ find<E extends Entity>(entityClass: EntityTarget<E>, options: FindManyOptions<E>): Promise<E[]>;
33
+ findBy<E extends Entity>(entityClass: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<E[]>;
34
+ findOne<E extends Entity>(entityClass: EntityTarget<E>, options: FindOneOptions<E>): Promise<E | undefined>;
35
+ findOneOrFail<E extends Entity>(entityClass: EntityTarget<E>, options: FindOneOptions<E>): Promise<E>;
36
+ findOneBy<E extends Entity>(entityClass: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<E | undefined>;
37
+ findOneByOrFail<E extends Entity>(entityClass: EntityTarget<E>, where: FindOptionsWhere<E> | FindOptionsWhere<E>[]): Promise<E>;
38
+ get<E extends Entity>(entityClass: EntityTarget<E>, id: string, relations?: FindOptionsRelations<E>): Promise<E | undefined>;
39
+ getOrFail<E extends Entity>(entityClass: EntityTarget<E>, id: string, relations?: FindOptionsRelations<E>): Promise<E>;
40
+ private getCached;
41
+ defer<E extends Entity>(entityClass: EntityTarget<E>, id: string, relations?: FindOptionsRelations<E>): DeferredEntity<E>;
42
+ private persist;
43
+ flush(): Promise<void>;
44
+ private load;
45
+ private knownSelfRelations;
46
+ private getSelfRelations;
47
+ private getTopologicalOrder;
48
+ private getDeferData;
49
+ private getUpdateMap;
50
+ }
51
+ export declare class DeferredEntity<E extends Entity> {
52
+ private opts;
53
+ constructor(opts: {
54
+ get: () => Promise<E | undefined>;
55
+ getOrFail: () => Promise<E>;
56
+ });
57
+ get(): Promise<E | undefined>;
58
+ getOrFail(): Promise<E>;
59
+ }
60
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}