From 2e8c75b963448d7651f95a801bc6bf75b2ffe276 Mon Sep 17 00:00:00 2001 From: yukihirop Date: Wed, 31 Mar 2021 21:16:32 +0900 Subject: [PATCH] [activerecord] Avoiding Promise type definition bugs (error TS2416) https://github.com/microsoft/TypeScript/issues/33416 --- .../__tests__/base.association.test.ts | 6 +- .../__tests__/base.persistence.test.ts | 8 +- .../records/__tests__/base.scoping.test.ts | 2 +- .../associations/collection_proxy/base.ts | 4 +- .../src/records/relations/base.ts | 49 ++- packages/definition/src/activemodel.json | 110 +++--- packages/definition/src/activerecord.json | 208 +++++------ packages/definition/src/activesupport.json | 14 +- packages/definition/src/bundle.json | 332 ++++++++---------- 9 files changed, 365 insertions(+), 368 deletions(-) diff --git a/packages/activerecord/src/records/__tests__/base.association.test.ts b/packages/activerecord/src/records/__tests__/base.association.test.ts index 17686ca0..2404b64a 100644 --- a/packages/activerecord/src/records/__tests__/base.association.test.ts +++ b/packages/activerecord/src/records/__tests__/base.association.test.ts @@ -482,7 +482,11 @@ describe('ActiveRecord$Base (ActiveRecord$Associations)', () => { it('should correctly', async () => { const record = (await TestAssociationHasManyRecord.first()) as TestAssociationHasManyRecord; - const result = (await record.children()) as TestAssociationHasManyChildRecord[]; + /** + * I overridden then at runtime because the type definition of then is buggy. Since it affects type inference and bugs, it is avoided by any. + * @bug https://github.com/microsoft/TypeScript/issues/33416 + */ + const result = (await record.children()) as any; expect(result.length).toEqual(2); expect(result).toEqual([ { diff --git a/packages/activerecord/src/records/__tests__/base.persistence.test.ts b/packages/activerecord/src/records/__tests__/base.persistence.test.ts index b1df3e43..8e56bd76 100644 --- a/packages/activerecord/src/records/__tests__/base.persistence.test.ts +++ b/packages/activerecord/src/records/__tests__/base.persistence.test.ts @@ -614,7 +614,7 @@ describe('ActiveRecord$Base (ActiveRecord$Persistence)', () => { describe('when return true', () => { it('should correctly', (done) => { - UpdateRecord.all().then((records: UpdateRecord[]) => { + UpdateRecord.all().rueThen((records: UpdateRecord[]) => { const record = records[0]; const updateResult = record.update({ name: 'rename' }); expect(updateResult).toEqual(true); @@ -626,7 +626,7 @@ describe('ActiveRecord$Base (ActiveRecord$Persistence)', () => { describe('whenn return false', () => { it('should correctly', (done) => { - UpdateRecord.all().then((records: UpdateRecord[]) => { + UpdateRecord.all().rueThen((records: UpdateRecord[]) => { const record = records[1]; const updateResult = record.update({ age: 100 }); expect(updateResult).toEqual(false); @@ -670,7 +670,7 @@ describe('ActiveRecord$Base (ActiveRecord$Persistence)', () => { describe('when return true', () => { it('should correctly', (done) => { - UpdateOrThrowRecord.all().then((records: UpdateOrThrowRecord[]) => { + UpdateOrThrowRecord.all().rueThen((records: UpdateOrThrowRecord[]) => { const record = records[0]; const updateResult = record.updateOrThrow({ name: 'rename' }); expect(updateResult).toEqual(true); @@ -682,7 +682,7 @@ describe('ActiveRecord$Base (ActiveRecord$Persistence)', () => { describe('when throw error', () => { it('should correctly', (done) => { - UpdateOrThrowRecord.all().then((records: UpdateOrThrowRecord[]) => { + UpdateOrThrowRecord.all().rueThen((records: UpdateOrThrowRecord[]) => { const record = records[1]; expect(() => { record.updateOrThrow({ age: 100 }); diff --git a/packages/activerecord/src/records/__tests__/base.scoping.test.ts b/packages/activerecord/src/records/__tests__/base.scoping.test.ts index 7e397055..965bbf02 100644 --- a/packages/activerecord/src/records/__tests__/base.scoping.test.ts +++ b/packages/activerecord/src/records/__tests__/base.scoping.test.ts @@ -42,7 +42,7 @@ describe('Record (Scoping)', () => { describe('[static] all', () => { describe('when do not exists cahce', () => { it('should correctly', (done) => { - ScopingRecord.all().then((records: ScopingRecord[]) => { + ScopingRecord.all().rueThen((records: ScopingRecord[]) => { expect(records).toEqual([ { __rue_created_at__: '2021-03-05T23:03:21+09:00', diff --git a/packages/activerecord/src/records/associations/collection_proxy/base.ts b/packages/activerecord/src/records/associations/collection_proxy/base.ts index d4d7f0e1..b344cb87 100644 --- a/packages/activerecord/src/records/associations/collection_proxy/base.ts +++ b/packages/activerecord/src/records/associations/collection_proxy/base.ts @@ -46,7 +46,7 @@ export class ActiveRecord$Associations$CollectionProxy$Base< const { holder, scope } = value; if (scope instanceof Promise) { - scope.then((r) => { + scope.rueThen((r) => { holder.scope = r as T[]; Evaluator.all(holder); @@ -100,7 +100,7 @@ export class ActiveRecord$Associations$CollectionProxy$Base< ): Promise { return this.superThen(({ holder, scope }) => { if (scope instanceof Promise) { - return scope.then((records) => { + return scope.rueThen((records) => { holder.scope = records as T[]; /** * @description Pass by value so that 「proxy === record」 does not occur diff --git a/packages/activerecord/src/records/relations/base.ts b/packages/activerecord/src/records/relations/base.ts index 859b0375..a0fe377c 100644 --- a/packages/activerecord/src/records/relations/base.ts +++ b/packages/activerecord/src/records/relations/base.ts @@ -111,11 +111,16 @@ export class ActiveRecord$Relation$Base< /** * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75 * @alias rueThen + * + * @bug typescript bug + * @description Since the type definition of Promise is buggy, it cannot be implemented with the type of then overridden. + * @description If healed, comment out. + * @see https://github.com/microsoft/TypeScript/issues/33416 + * */ - // @ts-expect-error - then(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) { - return this.rueThen(onFulfilled, onRejected); - } + // then(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) { + // return this.rueThen(onFulfilled, onRejected); + // } protected superThen( onFulfilled: t.PromiseResolveHolder, @@ -127,11 +132,15 @@ export class ActiveRecord$Relation$Base< /** * @alias rueCatch + * + * @bug typescript bug + * @description Since the type definition of Promise is buggy, it cannot be implemented with the type of then overridden. + * @description If healed, comment out. + * @see https://github.com/microsoft/TypeScript/issues/33416 */ - // @ts-expect-error - catch(errFn: (err: any) => void | PromiseLike) { - return this.rueCatch(errFn); - } + // catch(errFn: (err: any) => void | PromiseLike) { + // return this.rueCatch(errFn); + // } rueCatch(errFn: (err: any) => void | PromiseLike) { return ( @@ -535,3 +544,27 @@ export class ActiveRecord$Relation$Base< return this.toA(); } } + +/** + * When I define it in a class, I get a Promise type definition error. + * So I'm avoiding type definition errors by overriding then at runtime. + * @bug https://github.com/microsoft/TypeScript/issues/33416 + */ +Object.defineProperty(ActiveRecord$Relation$Base.prototype, 'then', { + writable: false, + configurable: false, + enumerable: false, + value: ActiveRecord$Relation$Base.prototype.rueThen, +}); + +/** + * When I define it in a class, I get a Promise type definition error. + * So I'm avoiding type definition errors by overriding then at runtime. + * @bug https://github.com/microsoft/TypeScript/issues/33416 + */ +Object.defineProperty(ActiveRecord$Relation$Base.prototype, 'catch', { + writable: false, + configurable: false, + enumerable: false, + value: ActiveRecord$Relation$Base.prototype.rueCatch, +}); diff --git a/packages/definition/src/activemodel.json b/packages/definition/src/activemodel.json index 6c1beadd..fdaa5113 100644 --- a/packages/definition/src/activemodel.json +++ b/packages/definition/src/activemodel.json @@ -2,7 +2,7 @@ "ActiveModel$Error": { "metadata": { "filepath": "@rue/packages/activemodel/src/errors/base.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:03 +09:00" }, "class": [ { @@ -18,7 +18,7 @@ "ErrObj": { "metadata": { "filepath": "@rue/packages/activemodel/src/errors/types.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:03 +09:00" }, "class": [ { @@ -31,10 +31,58 @@ } ] }, + "registryForUniqueKeys": { + "metadata": { + "filepath": "@rue/packages/activemodel/src/registries/base.ts", + "updatedAt": "2021/03/31 21:15:03 +09:00" + }, + "class": [ + { + "text": "class registryForUniqueKeys {\n private static readonly klassName = 'RueUniqueKey';\n private static readonly key = 'all';\n\n static create(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.create(this.klassName, this.key, val);\n }\n\n static update(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.update(this.klassName, this.key, val);\n }\n\n static read(ensureType?: st.Registry$Type): T {\n return innerRegistryForUniqueKeys.read(this.klassName, this.key, ensureType);\n }\n}", + "highlightText": "\u001b[38;2;102;217;239mclass\u001b[39m \u001b[38;2;230;219;116mregistryForUniqueKeys\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mprivate\u001b[39m \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;102;217;239mreadonly\u001b[39m klassName \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'RueUniqueKey'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mprivate\u001b[39m \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;102;217;239mreadonly\u001b[39m key \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'all'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mensureType\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Type\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m ensureType\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\u001b[38;2;248;248;242m}\u001b[39m", + "line": [ + 12, + 27 + ] + } + ], + "static": { + "create": { + "text": "static create(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.create(this.klassName, this.key, val);\n }", + "highlightText": "\u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", + "isAsync": false, + "visibility": "public", + "line": [ + 16, + 18 + ] + }, + "update": { + "text": "static update(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.update(this.klassName, this.key, val);\n }", + "highlightText": "\u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", + "isAsync": false, + "visibility": "public", + "line": [ + 20, + 22 + ] + }, + "read": { + "text": "static read(ensureType?: st.Registry$Type): T {\n return innerRegistryForUniqueKeys.read(this.klassName, this.key, ensureType);\n }", + "highlightText": "\u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mensureType\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Type\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m ensureType\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", + "isAsync": false, + "visibility": "public", + "line": [ + 24, + 26 + ] + } + } + }, "ActiveModel$Base": { "metadata": { "filepath": "@rue/packages/activemodel/src/models/base.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:03 +09:00" }, "class": [ { @@ -80,7 +128,7 @@ "ActiveModel$Impl": { "metadata": { "filepath": "@rue/packages/activemodel/src/models/impl.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:03 +09:00" }, "class": [ { @@ -153,58 +201,10 @@ } } }, - "registryForUniqueKeys": { - "metadata": { - "filepath": "@rue/packages/activemodel/src/registries/base.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" - }, - "class": [ - { - "text": "class registryForUniqueKeys {\n private static readonly klassName = 'RueUniqueKey';\n private static readonly key = 'all';\n\n static create(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.create(this.klassName, this.key, val);\n }\n\n static update(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.update(this.klassName, this.key, val);\n }\n\n static read(ensureType?: st.Registry$Type): T {\n return innerRegistryForUniqueKeys.read(this.klassName, this.key, ensureType);\n }\n}", - "highlightText": "\u001b[38;2;102;217;239mclass\u001b[39m \u001b[38;2;230;219;116mregistryForUniqueKeys\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mprivate\u001b[39m \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;102;217;239mreadonly\u001b[39m klassName \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'RueUniqueKey'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mprivate\u001b[39m \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;102;217;239mreadonly\u001b[39m key \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'all'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mensureType\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Type\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m ensureType\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\u001b[38;2;248;248;242m}\u001b[39m", - "line": [ - 12, - 27 - ] - } - ], - "static": { - "create": { - "text": "static create(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.create(this.klassName, this.key, val);\n }", - "highlightText": "\u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", - "isAsync": false, - "visibility": "public", - "line": [ - 16, - 18 - ] - }, - "update": { - "text": "static update(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.update(this.klassName, this.key, val);\n }", - "highlightText": "\u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", - "isAsync": false, - "visibility": "public", - "line": [ - 20, - 22 - ] - }, - "read": { - "text": "static read(ensureType?: st.Registry$Type): T {\n return innerRegistryForUniqueKeys.read(this.klassName, this.key, ensureType);\n }", - "highlightText": "\u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mensureType\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Type\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m ensureType\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", - "isAsync": false, - "visibility": "public", - "line": [ - 24, - 26 - ] - } - } - }, "ActiveModel$Cachable": { "metadata": { "filepath": "@rue/packages/activemodel/src/models/modules/cachable/core.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:03 +09:00" }, "class": [ { @@ -254,7 +254,7 @@ "ActiveModel$Translation": { "metadata": { "filepath": "@rue/packages/activemodel/src/models/modules/translation/core.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:03 +09:00" }, "class": [ { @@ -334,7 +334,7 @@ "ActiveModel$Validations": { "metadata": { "filepath": "@rue/packages/activemodel/src/models/modules/validations/core.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:04 +09:00" }, "class": [ { diff --git a/packages/definition/src/activerecord.json b/packages/definition/src/activerecord.json index 79dc3ec0..a87ecb25 100644 --- a/packages/definition/src/activerecord.json +++ b/packages/definition/src/activerecord.json @@ -2,7 +2,7 @@ "ActiveRecord$Error": { "metadata": { "filepath": "@rue/packages/activerecord/src/errors/base.ts", - "updatedAt": "2021/03/31 19:45:39 +09:00" + "updatedAt": "2021/03/31 21:15:12 +09:00" }, "class": [ { @@ -18,7 +18,7 @@ "ActiveRecord$Base": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/base.ts", - "updatedAt": "2021/03/31 19:45:39 +09:00" + "updatedAt": "2021/03/31 21:15:12 +09:00" }, "class": [ { @@ -76,7 +76,7 @@ "ActiveRecord$Impl": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/impl.ts", - "updatedAt": "2021/03/31 19:45:39 +09:00" + "updatedAt": "2021/03/31 21:15:12 +09:00" }, "class": [ { @@ -104,7 +104,7 @@ "ActiveRecord$Associations$Holder": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/associations/holder.ts", - "updatedAt": "2021/03/31 19:45:39 +09:00" + "updatedAt": "2021/03/31 21:15:12 +09:00" }, "class": [ { @@ -128,15 +128,15 @@ "ActiveRecord$Relation$Base": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/relations/base.ts", - "updatedAt": "2021/03/31 19:45:39 +09:00" + "updatedAt": "2021/03/31 21:15:12 +09:00" }, "class": [ { - "text": "export class ActiveRecord$Relation$Base<\n T extends ActiveRecord$Base,\n H extends ActiveRecord$Relation$Holder = ActiveRecord$Relation$Holder,\n S = PromiseLike\n> extends ActiveRecord$Relation$Impl {\n protected recordKlass: ct.Constructor;\n\n constructor(executor: t.PromiseExecutor) {\n super((resolve, reject) => {\n // @ts-expect-error\n return executor(resolve, reject);\n });\n }\n\n // instead of constructor\n protected _init(recordKlass: ct.Constructor): this {\n this.recordKlass = recordKlass;\n return this;\n }\n\n /**\n * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\n * @description Method for getting results. Do not call it in any other method.\n */\n rueThen(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) {\n return super.then((value) => {\n /**\n * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\n * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\n */\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder, scope } = value;\n\n if (scope instanceof Promise) {\n scope.then((r) => {\n holder.scope = r;\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n });\n } else {\n holder.scope = scope as T[];\n\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n }\n } else {\n /**\n * value is records ((e.g.) T | T[])\n * @description type error\n */\n // @ts-expect-error\n return onFulfilled(value);\n }\n }, onRejected);\n }\n\n /**\n * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\n * @alias rueThen\n */\n // @ts-expect-error\n then(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) {\n return this.rueThen(onFulfilled, onRejected);\n }\n\n protected superThen(\n onFulfilled: t.PromiseResolveHolder,\n onRejected?: t.PromiseReject\n ) {\n // @ts-expect-error\n return super.__rue_then__(onFulfilled, onRejected);\n }\n\n /**\n * @alias rueCatch\n */\n // @ts-expect-error\n catch(errFn: (err: any) => void | PromiseLike) {\n return this.rueCatch(errFn);\n }\n\n rueCatch(errFn: (err: any) => void | PromiseLike) {\n return (\n super\n // @ts-expect-error\n .__rue_then__((value) => {\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder } = value;\n Evaluator.all(holder);\n holder.errors.forEach((err) => {\n throw err;\n });\n }\n })\n .__rue_catch__(errFn)\n );\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-scoping\n */\n scoping(callback: (holder: H) => U | Promise): Promise {\n return super.then(({ holder, scope }) => {\n if (scope instanceof Promise) {\n return scope.then((records) => {\n holder.scope = records;\n Evaluator.all(holder);\n return callback(holder);\n });\n } else {\n holder.scope = scope as T[];\n Evaluator.all(holder);\n return callback(holder);\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-many-3F\n */\n isMany(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length > 1;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-none-3F\n */\n isNone(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length === 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-one-3F\n */\n isOne(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length === 1;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-size\n */\n size(): Promise {\n return this.scoping((holder) => {\n if (isPresent(holder.groupedRecords)) {\n return Object.keys(holder.groupedRecords).reduce((acc, key) => {\n const records = holder.groupedRecords[key];\n acc[key] = records.length;\n return acc;\n }, {});\n } else {\n return holder.scope.length;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-any-3F\n */\n isAny(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length > 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-blank-3F\n * Returns true if relation is blank.\n */\n isBlank(): Promise {\n return this.superThen(({ scope }) => {\n if (scope instanceof Promise) {\n return scope.then((r) => {\n return r.length === 0;\n });\n } else {\n return (scope as T[]).length === 0;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-empty-3F\n */\n isEmpty(): Promise {\n return this.scoping((holder) => {\n return holder.scope.length === 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-build\n */\n build(params?: Partial | Array>, yielder?: (self: T) => void): Promise {\n return this.scoping((holder) => {\n if (Array.isArray(params)) {\n return params.map((param) => {\n const record = new this.recordKlass(param);\n if (yielder) yielder(record);\n holder.scope.push(record);\n return record;\n });\n } else {\n const record = new this.recordKlass(params);\n if (yielder) yielder(record);\n holder.scope.push(record);\n return record;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create\n */\n create(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n // @ts-ignore\n return this.recordKlass.create(params, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create-21\n */\n createOrThrow(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n // @ts-expect-error\n return this.recordKlass.createOrThrow(params, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by\n * @todo Support yielder\n */\n createOrFindBy(params: Partial): Promise {\n // @ts-ignore\n return (this.recordKlass as typeof ActiveRecord$Base).findBy(params).then((record) => {\n if (record) {\n return record;\n } else {\n return this.create>(params);\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by-21\n * @todo Support yielder\n */\n createOrFindByOrThrow(params: Partial): Promise {\n // @ts-ignore\n return (this.recordKlass as typeof ActiveRecord$Base).findBy(params).then((record) => {\n if (record) {\n return record;\n } else {\n return this.createOrThrow(params);\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_by\n */\n deleteBy(params?: Partial): Promise {\n const deleteRecordFn = (record: T): boolean => {\n return !!record.destroySync();\n };\n\n return (\n this.recordKlass\n // @ts-ignore\n .where(params)\n .superThen(({ holder }) => {\n Evaluator.all(holder);\n return Promise.all(holder.scope.map(deleteRecordFn)).then((result) => {\n return result.filter(Boolean).length;\n });\n })\n );\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_all\n */\n deleteAll(): Promise {\n return this.scoping((holder) => {\n const deleteCount = holder.scope.length;\n RecordCache.update(this.recordKlass.name, RECORD_ALL, []);\n holder.scope = [];\n return deleteCount;\n });\n }\n\n /**\n * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/relation.rb#L613-L615\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_by\n * @todo Use ActiveRecord$QueryMethods#where\n */\n destroyBy(filter?: (self: T) => boolean): Promise {\n return this.superThen(({ holder }) => {\n let leavedData = [];\n let deleteData = [];\n\n holder.scope.forEach((record) => {\n if (filter) {\n if (filter(record)) {\n deleteData.push(record);\n } else {\n leavedData.push(record);\n }\n } else {\n deleteData.push(record);\n }\n });\n\n RecordCache.update(this.recordKlass.name, RECORD_ALL, leavedData);\n holder.scope = leavedData;\n\n Evaluator.all(holder);\n\n deleteData.forEach((record) => {\n record._destroyed = true;\n Object.freeze(record);\n });\n return deleteData;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_all\n */\n destroyAll(): Promise {\n return this.scoping((holder) => {\n const destroyed = holder.scope.map((record: T) => {\n const destroyed = record.destroySync();\n Object.freeze(destroyed);\n return destroyed;\n });\n holder.scope = [];\n return destroyed;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by\n */\n findOrCreateBy(params: Partial, yielder?: (self: T) => void): Promise {\n return this.findBy(params).then((record) => {\n if (record) {\n if (yielder) yielder(record);\n return record;\n } else {\n return this.create>(params).then((createdRecord: T) => {\n if (yielder) yielder(createdRecord);\n return createdRecord;\n });\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by-21\n */\n findOrCreateByOrThrow(params: Partial, yielder?: (self: T) => void): Promise {\n // @ts-ignore\n return this.recordKlass.findBy(params).then((record) => {\n if (record) {\n if (yielder) yielder(record);\n return record;\n } else {\n return this.createOrThrow>(params).then((createdRecord) => {\n if (yielder) yielder(createdRecord);\n return createdRecord;\n });\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_initialize_by\n */\n findOrInitializeBy(params: Partial, yielder?: (self: T) => void): Promise {\n // @ts-ignore\n return this.recordKlass.findBy(params).then((record) => {\n if (record) {\n if (yielder) yielder(record);\n return record;\n } else {\n const newRecord = new this.recordKlass(params);\n // @ts-expect-error\n newRecord._newRecord = true;\n if (yielder) yielder(newRecord);\n return newRecord;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-update_all\n */\n updateAll(params: Partial): Promise {\n const updateFn = (record: T): boolean => {\n return record.update(params);\n };\n\n return this.scoping((holder) => {\n return Promise.all(holder.scope.map(updateFn)).then((result) => {\n return result.filter(Boolean).length;\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-touch_all\n */\n touchAll(\n params?: Partial,\n opts?: { withCreatedAt?: boolean; time?: string }\n ): Promise {\n const updateProps =\n opts && opts.withCreatedAt ? [RUE_CREATED_AT, RUE_UPDATED_AT] : [RUE_UPDATED_AT];\n const datetime = opts && opts.time ? dayjs(opts.time).format() : dayjs().format();\n\n const touchFn = (record: T): boolean => {\n updateProps.forEach((timestamp) => {\n record.update({ [timestamp]: datetime });\n });\n return true;\n };\n\n return (\n this.recordKlass\n // @ts-expect-error\n .where(params)\n .superThen(({ holder }) => {\n Evaluator.all(holder);\n return Promise.all(holder.scope.map(touchFn)).then((result) => {\n holder.scope = RecordCache.read(holder.recordKlass.unniqueKey, RECORD_ALL, 'array');\n return result.filter(Boolean).length;\n });\n })\n );\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toA(): Promise {\n return this.scoping((holder) => {\n return holder.scope;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toArray(): Promise {\n return this.toA();\n }\n}", - "highlightText": "\u001b[38;2;102;217;239mexport\u001b[39m \u001b[38;2;102;217;239mclass\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Relation$Base\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Base\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Relation$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m=\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Relation$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m=\u001b[39m\u001b[38;2;230;219;116m PromiseLike\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Relation$Impl\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mprotected\u001b[39m recordKlass\u001b[38;2;248;248;242m:\u001b[39m ct\u001b[38;2;248;248;242m.\u001b[39mConstructor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mconstructor\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mexecutor\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseExecutor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresolve\u001b[38;2;248;248;242m,\u001b[39m reject\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mexecutor\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresolve\u001b[38;2;248;248;242m,\u001b[39m reject\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m// instead of constructor\u001b[39m\n \u001b[38;2;102;217;239mprotected\u001b[39m \u001b[38;2;230;219;116m_init\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordKlass\u001b[38;2;248;248;242m:\u001b[39m ct\u001b[38;2;248;248;242m.\u001b[39mConstructor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass \u001b[38;2;248;248;242m=\u001b[39m recordKlass\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\u001b[39m\n\u001b[38;2;130;146;162m * @description Method for getting results. Do not call it in any other method.\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\u001b[39m\n\u001b[38;2;130;146;162m * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m r\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * value is records ((e.g.) T | T[])\u001b[39m\n\u001b[38;2;130;146;162m * @description type error\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\u001b[39m\n\u001b[38;2;130;146;162m * @alias rueThen\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mprotected\u001b[39m \u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n onFulfilled\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseResolveHolder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116m__rue_then__\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @alias rueCatch\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mcatch\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116merrFn\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m PromiseLike\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueCatch\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merrFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;230;219;116mrueCatch\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116merrFn\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m PromiseLike\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239msuper\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116m__rue_then__\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39merrors\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m err\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116m__rue_catch__\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merrFn\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-scoping\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-many-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misMany\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-none-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misNone\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-one-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misOne\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-size\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116msize\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m|\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116mkey\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m key\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n acc\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-any-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misAny\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-blank-3F\u001b[39m\n\u001b[38;2;130;146;162m * Returns true if relation is blank.\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misBlank\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m r\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-empty-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misEmpty\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-build\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mbuild\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m params\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create-21\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by\u001b[39m\n\u001b[38;2;130;146;162m * @todo Support yielder\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrFindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;102;217;239mtypeof\u001b[39m ActiveRecord$Base\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by-21\u001b[39m\n\u001b[38;2;130;146;162m * @todo Support yielder\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrFindByOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;102;217;239mtypeof\u001b[39m ActiveRecord$Base\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_by\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdeleteBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m deleteRecordFn \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mrecord\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mdestroySync\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mwhere\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdeleteRecordFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresult\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mBoolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdeleteAll\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m deleteCount \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n RecordCache\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39mname\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRECORD_ALL\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m deleteCount\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/relation.rb#L613-L615\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_by\u001b[39m\n\u001b[38;2;130;146;162m * @todo Use ActiveRecord$QueryMethods#where\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdestroyBy\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m leavedData \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m deleteData \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n deleteData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n leavedData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n deleteData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n RecordCache\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39mname\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRECORD_ALL\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m leavedData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m leavedData\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n deleteData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n record\u001b[38;2;248;248;242m.\u001b[39m_destroyed \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfreeze\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m deleteData\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdestroyAll\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyed \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyed \u001b[38;2;248;248;242m=\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mdestroySync\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfreeze\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdestroyed\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m destroyed\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m destroyed\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mfindOrCreateBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m createdRecord\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by-21\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mfindOrCreateByOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m createdRecord\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_initialize_by\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mfindOrInitializeBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m newRecord \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n newRecord\u001b[38;2;248;248;242m.\u001b[39m_newRecord \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewRecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m newRecord\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-update_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mupdateAll\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m updateFn \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mupdateFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresult\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mBoolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-touch_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtouchAll\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n opts\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m withCreatedAt\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m time\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m updateProps \u001b[38;2;248;248;242m=\u001b[39m\n opts \u001b[38;2;248;248;242m&&\u001b[39m opts\u001b[38;2;248;248;242m.\u001b[39mwithCreatedAt \u001b[38;2;248;248;242m?\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;249;38;114mRUE_CREATED_AT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRUE_UPDATED_AT\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;249;38;114mRUE_UPDATED_AT\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m datetime \u001b[38;2;248;248;242m=\u001b[39m opts \u001b[38;2;248;248;242m&&\u001b[39m opts\u001b[38;2;248;248;242m.\u001b[39mtime \u001b[38;2;248;248;242m?\u001b[39m \u001b[38;2;230;219;116mdayjs\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mopts\u001b[38;2;248;248;242m.\u001b[39mtime\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mformat\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;230;219;116mdayjs\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mformat\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mconst\u001b[39m touchFn \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n updateProps\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mtimestamp\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mtimestamp\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m datetime \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mwhere\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mtouchFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresult\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m RecordCache\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39munniqueKey\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRECORD_ALL\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;166;226;46m'array'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mBoolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\u001b[38;2;248;248;242m}\u001b[39m", + "text": "export class ActiveRecord$Relation$Base<\n T extends ActiveRecord$Base,\n H extends ActiveRecord$Relation$Holder = ActiveRecord$Relation$Holder,\n S = PromiseLike\n> extends ActiveRecord$Relation$Impl {\n protected recordKlass: ct.Constructor;\n\n constructor(executor: t.PromiseExecutor) {\n super((resolve, reject) => {\n // @ts-expect-error\n return executor(resolve, reject);\n });\n }\n\n // instead of constructor\n protected _init(recordKlass: ct.Constructor): this {\n this.recordKlass = recordKlass;\n return this;\n }\n\n /**\n * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\n * @description Method for getting results. Do not call it in any other method.\n */\n rueThen(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) {\n return super.then((value) => {\n /**\n * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\n * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\n */\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder, scope } = value;\n\n if (scope instanceof Promise) {\n scope.then((r) => {\n holder.scope = r;\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n });\n } else {\n holder.scope = scope as T[];\n\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n }\n } else {\n /**\n * value is records ((e.g.) T | T[])\n * @description type error\n */\n // @ts-expect-error\n return onFulfilled(value);\n }\n }, onRejected);\n }\n\n /**\n * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\n * @alias rueThen\n *\n * @bug typescript bug\n * @description Since the type definition of Promise is buggy, it cannot be implemented with the type of then overridden.\n * @description If healed, comment out.\n * @see https://github.com/microsoft/TypeScript/issues/33416\n *\n */\n // then(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) {\n // return this.rueThen(onFulfilled, onRejected);\n // }\n\n protected superThen(\n onFulfilled: t.PromiseResolveHolder,\n onRejected?: t.PromiseReject\n ) {\n // @ts-expect-error\n return super.__rue_then__(onFulfilled, onRejected);\n }\n\n /**\n * @alias rueCatch\n * \n * @bug typescript bug\n * @description Since the type definition of Promise is buggy, it cannot be implemented with the type of then overridden.\n * @description If healed, comment out.\n * @see https://github.com/microsoft/TypeScript/issues/33416\n */\n // catch(errFn: (err: any) => void | PromiseLike) {\n // return this.rueCatch(errFn);\n // }\n\n rueCatch(errFn: (err: any) => void | PromiseLike) {\n return (\n super\n // @ts-expect-error\n .__rue_then__((value) => {\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder } = value;\n Evaluator.all(holder);\n holder.errors.forEach((err) => {\n throw err;\n });\n }\n })\n .__rue_catch__(errFn)\n );\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-scoping\n */\n scoping(callback: (holder: H) => U | Promise): Promise {\n return super.then(({ holder, scope }) => {\n if (scope instanceof Promise) {\n return scope.then((records) => {\n holder.scope = records;\n Evaluator.all(holder);\n return callback(holder);\n });\n } else {\n holder.scope = scope as T[];\n Evaluator.all(holder);\n return callback(holder);\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-many-3F\n */\n isMany(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length > 1;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-none-3F\n */\n isNone(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length === 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-one-3F\n */\n isOne(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length === 1;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-size\n */\n size(): Promise {\n return this.scoping((holder) => {\n if (isPresent(holder.groupedRecords)) {\n return Object.keys(holder.groupedRecords).reduce((acc, key) => {\n const records = holder.groupedRecords[key];\n acc[key] = records.length;\n return acc;\n }, {});\n } else {\n return holder.scope.length;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-any-3F\n */\n isAny(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length > 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-blank-3F\n * Returns true if relation is blank.\n */\n isBlank(): Promise {\n return this.superThen(({ scope }) => {\n if (scope instanceof Promise) {\n return scope.then((r) => {\n return r.length === 0;\n });\n } else {\n return (scope as T[]).length === 0;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-empty-3F\n */\n isEmpty(): Promise {\n return this.scoping((holder) => {\n return holder.scope.length === 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-build\n */\n build(params?: Partial | Array>, yielder?: (self: T) => void): Promise {\n return this.scoping((holder) => {\n if (Array.isArray(params)) {\n return params.map((param) => {\n const record = new this.recordKlass(param);\n if (yielder) yielder(record);\n holder.scope.push(record);\n return record;\n });\n } else {\n const record = new this.recordKlass(params);\n if (yielder) yielder(record);\n holder.scope.push(record);\n return record;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create\n */\n create(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n // @ts-ignore\n return this.recordKlass.create(params, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create-21\n */\n createOrThrow(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n // @ts-expect-error\n return this.recordKlass.createOrThrow(params, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by\n * @todo Support yielder\n */\n createOrFindBy(params: Partial): Promise {\n // @ts-ignore\n return (this.recordKlass as typeof ActiveRecord$Base).findBy(params).then((record) => {\n if (record) {\n return record;\n } else {\n return this.create>(params);\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by-21\n * @todo Support yielder\n */\n createOrFindByOrThrow(params: Partial): Promise {\n // @ts-ignore\n return (this.recordKlass as typeof ActiveRecord$Base).findBy(params).then((record) => {\n if (record) {\n return record;\n } else {\n return this.createOrThrow(params);\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_by\n */\n deleteBy(params?: Partial): Promise {\n const deleteRecordFn = (record: T): boolean => {\n return !!record.destroySync();\n };\n\n return (\n this.recordKlass\n // @ts-ignore\n .where(params)\n .superThen(({ holder }) => {\n Evaluator.all(holder);\n return Promise.all(holder.scope.map(deleteRecordFn)).then((result) => {\n return result.filter(Boolean).length;\n });\n })\n );\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_all\n */\n deleteAll(): Promise {\n return this.scoping((holder) => {\n const deleteCount = holder.scope.length;\n RecordCache.update(this.recordKlass.name, RECORD_ALL, []);\n holder.scope = [];\n return deleteCount;\n });\n }\n\n /**\n * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/relation.rb#L613-L615\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_by\n * @todo Use ActiveRecord$QueryMethods#where\n */\n destroyBy(filter?: (self: T) => boolean): Promise {\n return this.superThen(({ holder }) => {\n let leavedData = [];\n let deleteData = [];\n\n holder.scope.forEach((record) => {\n if (filter) {\n if (filter(record)) {\n deleteData.push(record);\n } else {\n leavedData.push(record);\n }\n } else {\n deleteData.push(record);\n }\n });\n\n RecordCache.update(this.recordKlass.name, RECORD_ALL, leavedData);\n holder.scope = leavedData;\n\n Evaluator.all(holder);\n\n deleteData.forEach((record) => {\n record._destroyed = true;\n Object.freeze(record);\n });\n return deleteData;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_all\n */\n destroyAll(): Promise {\n return this.scoping((holder) => {\n const destroyed = holder.scope.map((record: T) => {\n const destroyed = record.destroySync();\n Object.freeze(destroyed);\n return destroyed;\n });\n holder.scope = [];\n return destroyed;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by\n */\n findOrCreateBy(params: Partial, yielder?: (self: T) => void): Promise {\n return this.findBy(params).then((record) => {\n if (record) {\n if (yielder) yielder(record);\n return record;\n } else {\n return this.create>(params).then((createdRecord: T) => {\n if (yielder) yielder(createdRecord);\n return createdRecord;\n });\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by-21\n */\n findOrCreateByOrThrow(params: Partial, yielder?: (self: T) => void): Promise {\n // @ts-ignore\n return this.recordKlass.findBy(params).then((record) => {\n if (record) {\n if (yielder) yielder(record);\n return record;\n } else {\n return this.createOrThrow>(params).then((createdRecord) => {\n if (yielder) yielder(createdRecord);\n return createdRecord;\n });\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_initialize_by\n */\n findOrInitializeBy(params: Partial, yielder?: (self: T) => void): Promise {\n // @ts-ignore\n return this.recordKlass.findBy(params).then((record) => {\n if (record) {\n if (yielder) yielder(record);\n return record;\n } else {\n const newRecord = new this.recordKlass(params);\n // @ts-expect-error\n newRecord._newRecord = true;\n if (yielder) yielder(newRecord);\n return newRecord;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-update_all\n */\n updateAll(params: Partial): Promise {\n const updateFn = (record: T): boolean => {\n return record.update(params);\n };\n\n return this.scoping((holder) => {\n return Promise.all(holder.scope.map(updateFn)).then((result) => {\n return result.filter(Boolean).length;\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-touch_all\n */\n touchAll(\n params?: Partial,\n opts?: { withCreatedAt?: boolean; time?: string }\n ): Promise {\n const updateProps =\n opts && opts.withCreatedAt ? [RUE_CREATED_AT, RUE_UPDATED_AT] : [RUE_UPDATED_AT];\n const datetime = opts && opts.time ? dayjs(opts.time).format() : dayjs().format();\n\n const touchFn = (record: T): boolean => {\n updateProps.forEach((timestamp) => {\n record.update({ [timestamp]: datetime });\n });\n return true;\n };\n\n return (\n this.recordKlass\n // @ts-expect-error\n .where(params)\n .superThen(({ holder }) => {\n Evaluator.all(holder);\n return Promise.all(holder.scope.map(touchFn)).then((result) => {\n holder.scope = RecordCache.read(holder.recordKlass.unniqueKey, RECORD_ALL, 'array');\n return result.filter(Boolean).length;\n });\n })\n );\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toA(): Promise {\n return this.scoping((holder) => {\n return holder.scope;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toArray(): Promise {\n return this.toA();\n }\n}", + "highlightText": "\u001b[38;2;102;217;239mexport\u001b[39m \u001b[38;2;102;217;239mclass\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Relation$Base\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Base\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Relation$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m=\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Relation$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m=\u001b[39m\u001b[38;2;230;219;116m PromiseLike\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Relation$Impl\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mprotected\u001b[39m recordKlass\u001b[38;2;248;248;242m:\u001b[39m ct\u001b[38;2;248;248;242m.\u001b[39mConstructor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mconstructor\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mexecutor\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseExecutor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresolve\u001b[38;2;248;248;242m,\u001b[39m reject\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mexecutor\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresolve\u001b[38;2;248;248;242m,\u001b[39m reject\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m// instead of constructor\u001b[39m\n \u001b[38;2;102;217;239mprotected\u001b[39m \u001b[38;2;230;219;116m_init\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordKlass\u001b[38;2;248;248;242m:\u001b[39m ct\u001b[38;2;248;248;242m.\u001b[39mConstructor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass \u001b[38;2;248;248;242m=\u001b[39m recordKlass\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\u001b[39m\n\u001b[38;2;130;146;162m * @description Method for getting results. Do not call it in any other method.\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\u001b[39m\n\u001b[38;2;130;146;162m * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m r\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * value is records ((e.g.) T | T[])\u001b[39m\n\u001b[38;2;130;146;162m * @description type error\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\u001b[39m\n\u001b[38;2;130;146;162m * @alias rueThen\u001b[39m\n\u001b[38;2;130;146;162m *\u001b[39m\n\u001b[38;2;130;146;162m * @bug typescript bug\u001b[39m\n\u001b[38;2;130;146;162m * @description Since the type definition of Promise is buggy, it cannot be implemented with the type of then overridden.\u001b[39m\n\u001b[38;2;130;146;162m * @description If healed, comment out.\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/microsoft/TypeScript/issues/33416\u001b[39m\n\u001b[38;2;130;146;162m *\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// then(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) {\u001b[39m\n \u001b[38;2;130;146;162m// return this.rueThen(onFulfilled, onRejected);\u001b[39m\n \u001b[38;2;130;146;162m// }\u001b[39m\n\n \u001b[38;2;102;217;239mprotected\u001b[39m \u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n onFulfilled\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseResolveHolder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116m__rue_then__\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @alias rueCatch\u001b[39m\n\u001b[38;2;130;146;162m * \u001b[39m\n\u001b[38;2;130;146;162m * @bug typescript bug\u001b[39m\n\u001b[38;2;130;146;162m * @description Since the type definition of Promise is buggy, it cannot be implemented with the type of then overridden.\u001b[39m\n\u001b[38;2;130;146;162m * @description If healed, comment out.\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/microsoft/TypeScript/issues/33416\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// catch(errFn: (err: any) => void | PromiseLike) {\u001b[39m\n \u001b[38;2;130;146;162m// return this.rueCatch(errFn);\u001b[39m\n \u001b[38;2;130;146;162m// }\u001b[39m\n\n \u001b[38;2;230;219;116mrueCatch\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116merrFn\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m PromiseLike\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239msuper\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116m__rue_then__\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39merrors\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m err\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116m__rue_catch__\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merrFn\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-scoping\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-many-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misMany\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-none-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misNone\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-one-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misOne\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-size\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116msize\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m|\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116mkey\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m key\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n acc\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-any-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misAny\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-blank-3F\u001b[39m\n\u001b[38;2;130;146;162m * Returns true if relation is blank.\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misBlank\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m r\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-empty-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misEmpty\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-build\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mbuild\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m params\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create-21\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by\u001b[39m\n\u001b[38;2;130;146;162m * @todo Support yielder\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrFindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;102;217;239mtypeof\u001b[39m ActiveRecord$Base\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by-21\u001b[39m\n\u001b[38;2;130;146;162m * @todo Support yielder\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrFindByOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;102;217;239mtypeof\u001b[39m ActiveRecord$Base\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_by\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdeleteBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m deleteRecordFn \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mrecord\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mdestroySync\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mwhere\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdeleteRecordFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresult\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mBoolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdeleteAll\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m deleteCount \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n RecordCache\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39mname\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRECORD_ALL\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m deleteCount\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/relation.rb#L613-L615\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_by\u001b[39m\n\u001b[38;2;130;146;162m * @todo Use ActiveRecord$QueryMethods#where\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdestroyBy\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m leavedData \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m deleteData \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n deleteData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n leavedData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n deleteData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n RecordCache\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39mname\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRECORD_ALL\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m leavedData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m leavedData\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n deleteData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n record\u001b[38;2;248;248;242m.\u001b[39m_destroyed \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfreeze\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m deleteData\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdestroyAll\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyed \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyed \u001b[38;2;248;248;242m=\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mdestroySync\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfreeze\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdestroyed\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m destroyed\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m destroyed\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mfindOrCreateBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m createdRecord\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by-21\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mfindOrCreateByOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m createdRecord\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_initialize_by\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mfindOrInitializeBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m newRecord \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n newRecord\u001b[38;2;248;248;242m.\u001b[39m_newRecord \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewRecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m newRecord\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-update_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mupdateAll\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m updateFn \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mupdateFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresult\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mBoolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-touch_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtouchAll\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n opts\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m withCreatedAt\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m time\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m updateProps \u001b[38;2;248;248;242m=\u001b[39m\n opts \u001b[38;2;248;248;242m&&\u001b[39m opts\u001b[38;2;248;248;242m.\u001b[39mwithCreatedAt \u001b[38;2;248;248;242m?\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;249;38;114mRUE_CREATED_AT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRUE_UPDATED_AT\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;249;38;114mRUE_UPDATED_AT\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m datetime \u001b[38;2;248;248;242m=\u001b[39m opts \u001b[38;2;248;248;242m&&\u001b[39m opts\u001b[38;2;248;248;242m.\u001b[39mtime \u001b[38;2;248;248;242m?\u001b[39m \u001b[38;2;230;219;116mdayjs\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mopts\u001b[38;2;248;248;242m.\u001b[39mtime\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mformat\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;230;219;116mdayjs\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mformat\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mconst\u001b[39m touchFn \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n updateProps\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mtimestamp\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mtimestamp\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m datetime \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mwhere\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mtouchFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresult\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m RecordCache\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39munniqueKey\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRECORD_ALL\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;166;226;46m'array'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mBoolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\u001b[38;2;248;248;242m}\u001b[39m", "line": [ - 34, - 531 + 40, + 546 ] } ], @@ -147,8 +147,8 @@ "isAsync": false, "visibility": "protected", "line": [ - 49, - 52 + 55, + 58 ] }, "rueThen": { @@ -157,18 +157,8 @@ "isAsync": false, "visibility": "public", "line": [ - 58, - 103 - ] - }, - "then": { - "text": "then(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) {\n return this.rueThen(onFulfilled, onRejected);\n }", - "highlightText": "\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", - "isAsync": false, - "visibility": "public", - "line": [ - 110, - 112 + 64, + 109 ] }, "superThen": { @@ -177,18 +167,8 @@ "isAsync": false, "visibility": "protected", "line": [ - 114, - 120 - ] - }, - "catch": { - "text": "catch(errFn: (err: any) => void | PromiseLike) {\n return this.rueCatch(errFn);\n }", - "highlightText": "\u001b[38;2;102;217;239mcatch\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116merrFn\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m PromiseLike\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueCatch\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merrFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", - "isAsync": false, - "visibility": "public", - "line": [ - 126, - 128 + 125, + 131 ] }, "rueCatch": { @@ -197,8 +177,8 @@ "isAsync": false, "visibility": "public", "line": [ - 130, - 150 + 145, + 165 ] }, "scoping": { @@ -207,8 +187,8 @@ "isAsync": false, "visibility": "public", "line": [ - 155, - 169 + 170, + 184 ] }, "isMany": { @@ -217,8 +197,8 @@ "isAsync": false, "visibility": "public", "line": [ - 174, - 178 + 189, + 193 ] }, "isNone": { @@ -227,8 +207,8 @@ "isAsync": false, "visibility": "public", "line": [ - 183, - 187 + 198, + 202 ] }, "isOne": { @@ -237,8 +217,8 @@ "isAsync": false, "visibility": "public", "line": [ - 192, - 196 + 207, + 211 ] }, "size": { @@ -247,8 +227,8 @@ "isAsync": false, "visibility": "public", "line": [ - 201, - 213 + 216, + 228 ] }, "isAny": { @@ -257,8 +237,8 @@ "isAsync": false, "visibility": "public", "line": [ - 218, - 222 + 233, + 237 ] }, "isBlank": { @@ -267,8 +247,8 @@ "isAsync": false, "visibility": "public", "line": [ - 228, - 238 + 243, + 253 ] }, "isEmpty": { @@ -277,8 +257,8 @@ "isAsync": false, "visibility": "public", "line": [ - 243, - 247 + 258, + 262 ] }, "build": { @@ -287,8 +267,8 @@ "isAsync": false, "visibility": "public", "line": [ - 252, - 268 + 267, + 283 ] }, "create": { @@ -297,8 +277,8 @@ "isAsync": false, "visibility": "public", "line": [ - 273, - 284 + 288, + 299 ] }, "createOrThrow": { @@ -307,8 +287,8 @@ "isAsync": false, "visibility": "public", "line": [ - 289, - 300 + 304, + 315 ] }, "createOrFindBy": { @@ -317,8 +297,8 @@ "isAsync": false, "visibility": "public", "line": [ - 306, - 315 + 321, + 330 ] }, "createOrFindByOrThrow": { @@ -327,8 +307,8 @@ "isAsync": false, "visibility": "public", "line": [ - 321, - 330 + 336, + 345 ] }, "deleteBy": { @@ -337,8 +317,8 @@ "isAsync": false, "visibility": "public", "line": [ - 335, - 351 + 350, + 366 ] }, "deleteAll": { @@ -347,8 +327,8 @@ "isAsync": false, "visibility": "public", "line": [ - 356, - 363 + 371, + 378 ] }, "destroyBy": { @@ -357,8 +337,8 @@ "isAsync": false, "visibility": "public", "line": [ - 370, - 398 + 385, + 413 ] }, "destroyAll": { @@ -367,8 +347,8 @@ "isAsync": false, "visibility": "public", "line": [ - 403, - 413 + 418, + 428 ] }, "findOrCreateBy": { @@ -377,8 +357,8 @@ "isAsync": false, "visibility": "public", "line": [ - 418, - 430 + 433, + 445 ] }, "findOrCreateByOrThrow": { @@ -387,8 +367,8 @@ "isAsync": false, "visibility": "public", "line": [ - 435, - 448 + 450, + 463 ] }, "findOrInitializeBy": { @@ -397,8 +377,8 @@ "isAsync": false, "visibility": "public", "line": [ - 453, - 467 + 468, + 482 ] }, "updateAll": { @@ -407,8 +387,8 @@ "isAsync": false, "visibility": "public", "line": [ - 472, - 482 + 487, + 497 ] }, "touchAll": { @@ -417,8 +397,8 @@ "isAsync": false, "visibility": "public", "line": [ - 487, - 514 + 502, + 529 ] }, "toA": { @@ -427,8 +407,8 @@ "isAsync": false, "visibility": "public", "line": [ - 519, - 523 + 534, + 538 ] }, "toArray": { @@ -437,8 +417,8 @@ "isAsync": false, "visibility": "public", "line": [ - 528, - 530 + 543, + 545 ] } }, @@ -446,15 +426,15 @@ "text": "constructor(executor: t.PromiseExecutor) {\n super((resolve, reject) => {\n // @ts-expect-error\n return executor(resolve, reject);\n });\n }", "highlightText": "\u001b[38;2;102;217;239mconstructor\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mexecutor\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseExecutor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresolve\u001b[38;2;248;248;242m,\u001b[39m reject\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mexecutor\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresolve\u001b[38;2;248;248;242m,\u001b[39m reject\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", "line": [ - 41, - 46 + 47, + 52 ] } }, "ActiveRecord$Relation$Holder": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/relations/holder.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:12 +09:00" }, "class": [ { @@ -478,7 +458,7 @@ "ActiveRecord$Relation$Impl": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/relations/impl.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -494,12 +474,12 @@ "ActiveRecord$Associations$CollectionProxy$Base": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/associations/collection_proxy/base.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { - "text": "export class ActiveRecord$Associations$CollectionProxy$Base<\n T extends ActiveRecord$Base\n> extends ActiveRecord$Associations$CollectionProxy$Impl {\n /**\n * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\n * @description Method for getting results. Do not call it in any other method.\n */\n rueThen(\n onFulfilled: rt.PromiseResolve>,\n onRejected?: rt.PromiseReject\n ) {\n return this.superThen((value) => {\n /**\n * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\n * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\n */\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder, scope } = value;\n\n if (scope instanceof Promise) {\n scope.then((r) => {\n holder.scope = r as T[];\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n });\n } else {\n holder.scope = scope as T[];\n\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n }\n } else {\n /**\n * value is records ((e.g.) T | T[])\n * @description type error\n */\n // @ts-expect-error\n return onFulfilled(value);\n }\n }, onRejected);\n }\n\n /**\n * @description All methods are delegated to this instance\n * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\n */\n scope(): ActiveRecord$Associations$Relation<\n T,\n ActiveRecord$Associations$CollectionProxy$Holder,\n ActiveRecord$Relation\n > {\n return this.superThen(({ holder, scope }) => {\n return { scope, holder };\n });\n }\n\n /**\n * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\n */\n scoping(\n callback: (holder: ActiveRecord$Associations$CollectionProxy$Holder) => U | Promise\n ): Promise {\n return this.superThen(({ holder, scope }) => {\n if (scope instanceof Promise) {\n return scope.then((records) => {\n holder.scope = records as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(records as T[]);\n Evaluator.all(holder);\n return callback(holder);\n });\n } else {\n holder.scope = scope as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(scope);\n Evaluator.all(holder);\n return callback(holder);\n }\n });\n }\n\n /**\n * @description delegate to `scope`\n */\n where = (params: Partial): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n Object.assign(holder.scopeParams.where, params || {});\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n rewhere = (params: Partial): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.where = params || {};\n Object.assign(params, holder.foreignKeyData);\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n order = (params: U): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n Object.assign(holder.scopeParams.order, params || {});\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n reorder = (params: U): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.order = params || {};\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n reverseOrder = (): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n const orderParams = holder.scopeParams.order;\n if (isPresent(orderParams)) {\n Object.keys(orderParams).forEach((propName) => {\n const direction = orderParams[propName];\n if (['desc', 'DESC'].includes(direction)) {\n holder.scopeParams.order[propName] = 'asc';\n } else if (['asc', 'ASC'].includes(direction)) {\n holder.scopeParams.order[propName] = 'desc';\n }\n });\n } else {\n holder.scopeParams.order['id'] = 'asc';\n }\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n offset = (value: number): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.offset = value;\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n limit = (value: number): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.limit = value;\n });\n\n return this;\n }\n\n /**\n * @description Behavior is different from rails group\n * @description delegate to `scope`\n */\n group = (...props: Array): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n // @ts-expect-error\n holder.scopeParams.group = props;\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n unscope = (...scopeMethods: rmt.QueryMethods$ScopeMethods[]): this => {\n const { SCOPE_METHODS } = ActiveRecord$QueryMethods;\n\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n if (scopeMethods.length === 0) {\n const err = errObj({\n code: ErrCodes.ARGUMENT_IS_INVALID,\n message: `'unscope()' must contain arguments.`,\n });\n holder.errors.push(err);\n } else if (isSuperset(SCOPE_METHODS, scopeMethods)) {\n scopeMethods.forEach((scopeMethod) => {\n // @ts-expect-error\n if (holder._defaultScopeParams[scopeMethod]) {\n holder.scopeParams[scopeMethod] = Object.assign(\n {},\n // @ts-expect-error\n JSON.parse(JSON.stringify(holder._defaultScopeParams[scopeMethod]))\n );\n } else {\n holder.scopeParams[scopeMethod] = undefined;\n }\n });\n } else {\n const err = errObj({\n code: ErrCodes.ARGUMENT_IS_INVALID,\n message: `Called 'unscope()' with invalid unscoping argument '[${scopeMethods}]'. Valid arguments are '[${SCOPE_METHODS}]'.`,\n });\n holder.errors.push(err);\n }\n });\n\n return this;\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-empty-3F\n * @description use holder.proxy\n */\n isEmpty(): Promise {\n return this.scoping((holder) => {\n return holder.proxy.length === 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-find\n */\n find = (...ids: it.Record$PrimaryKey[]): Promise => {\n if (ids.length === 0) {\n throw errObj({\n code: ErrCodes.RECORD_NOT_FOUND,\n // @ts-expect-error\n message: `Could'nt find '${this.recordKlass.uniqueKey}' without an 'id'`,\n });\n } else {\n // @ts-expect-error\n return this.where({ id: ids }).scoping((holder) => {\n if (holder.scope.length === 0) {\n if (ids.length === 1) {\n throw errObj({\n code: ErrCodes.RECORD_NOT_FOUND,\n params: {\n // @ts-expect-error\n resource: this.recordKlass.uniqueKey,\n id: ids[0],\n },\n });\n } else {\n throw errObj({\n code: ErrCodes.RECORD_NOT_FOUND,\n // @ts-expect-error\n message: `Could't find all '${this.recordKlass.uniqueKey}' with 'id': [${ids}] (found 0 results, but was looking for ${ids.length})`,\n });\n }\n } else if (holder.scope.length === 1) {\n return holder.scope[0];\n } else {\n return holder.scope;\n }\n });\n }\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-any-3F\n * @description use holder.proxy\n */\n isAny(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.proxy.filter(filter || Boolean).length > 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-build\n * @description use holder.proxy\n */\n build(params?: Partial | Array>, yielder?: (self: T) => void): Promise {\n return this.scoping((holder) => {\n holder.flags.useProxy = true;\n if (Array.isArray(params)) {\n return params.map((param) => {\n const merged = Object.assign(param || {}, holder.foreignKeyData);\n const record = new this.recordKlass(merged);\n if (yielder) yielder(record);\n holder.proxy.push(record);\n return record;\n });\n } else {\n const merged = Object.assign(params || {}, holder.foreignKeyData);\n const record = new this.recordKlass(merged);\n if (yielder) yielder(record);\n holder.proxy.push(record);\n return record;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create\n * @description use holder.proxy\n */\n create(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n const merged = Object.assign(params || {}, holder.foreignKeyData);\n // @ts-ignore\n return this.recordKlass.create(merged, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n holder.proxy.push(self);\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create-21\n * @description use holder.proxy\n */\n createOrThrow(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n const merged = Object.assign(params || {}, holder.foreignKeyData);\n // @ts-expect-error\n return this.recordKlass.createOrThrow(merged, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n holder.proxy.push(self);\n });\n });\n }\n\n /**\n * The return value type is different from that of rails.\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-delete\n */\n delete(...recordsOrIds: T[] | it.Record$PrimaryKey[]): Promise {\n return this.scoping((holder) => {\n let recordIds: it.Record$PrimaryKey[] = [];\n\n recordsOrIds.forEach((recordOrId) => {\n if (recordOrId instanceof ActiveRecord$Base) {\n recordIds.push((recordOrId as T).id);\n } else {\n recordIds.push(recordOrId);\n }\n });\n\n return this.find(...recordIds).then((records: T[]) => {\n const foreignKey = Object.keys(holder.foreignKeyData)[0];\n const deletedRecords = records.map((record) => {\n // dependent: 'nullify'\n record.update({ [foreignKey]: undefined });\n return record;\n });\n const destroyedIds = deletedRecords.map((r) => r.id);\n const newScope = Array.from(holder.scope).reduce((acc, record) => {\n if (!destroyedIds.includes(record.id)) {\n acc.push(record);\n }\n return acc;\n }, []);\n holder.scope = Array.from(newScope);\n holder.proxy = Array.from(newScope);\n return deletedRecords;\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-destroy\n * @description use holder.proxy\n */\n destroy(...recordsOrIds: T[] | it.Record$PrimaryKey[]): Promise {\n return this.scoping((holder) => {\n let recordIds: it.Record$PrimaryKey[] = [];\n\n recordsOrIds.forEach((recordOrId) => {\n if (recordOrId instanceof ActiveRecord$Base) {\n recordIds.push((recordOrId as T).id);\n } else {\n recordIds.push(recordOrId);\n }\n });\n\n if (recordIds.length === 0) {\n /**\n * @description Make it behave the same as rails\n */\n return null;\n } else {\n return this.find(...recordIds).then((records: T[]) => {\n const destroyedRecords = records.map((record) => {\n return record.destroySync();\n });\n const destroyedIds = destroyedRecords.map((r) => r.id);\n const newScope = Array.from(holder.scope).reduce((acc, record) => {\n if (!destroyedIds.includes(record.id)) {\n acc.push(record);\n }\n return acc;\n }, []);\n holder.scope = Array.from(newScope);\n holder.proxy = Array.from(newScope);\n return destroyedRecords;\n });\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-pluck\n * @description use holder.proxy\n */\n pluck(...propNames: Array): Promise>> {\n return this.scoping>>((holder) => {\n const plucked = holder.proxy.map((record) => {\n let result;\n\n if (propNames.length === 0) {\n result = Object.keys(record).reduce((acc, propName: string) => {\n if (\n !propName.startsWith('_') &&\n !(typeof record[propName] === 'function') &&\n !(propName == 'errors')\n ) {\n acc.push(record[propName]);\n }\n return acc;\n }, [] as Array>);\n } else {\n result = propNames.reduce((acc, propName: string) => {\n acc.push(record[propName]);\n return acc;\n }, [] as Array>);\n }\n return result;\n });\n\n if (propNames.length === 1) {\n return plucked.flat();\n } else {\n return plucked;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-count\n */\n count(\n propName?: keyof U,\n filter?: (self: T) => boolean\n ): Promise {\n return this.superThen(({ holder }) => {\n // @ts-expect-error\n return this.recordKlass.all().superThen(({ holder: newHolder }) => {\n // deep coppy\n newHolder.scopeParams = Object.assign({}, JSON.parse(JSON.stringify(holder.scopeParams)));\n Object.assign(newHolder.scopeParams.where, holder.foreignKeyData);\n Evaluator.all(newHolder);\n\n if (isPresent(newHolder.groupedRecords)) {\n return Object.keys(newHolder.groupedRecords).reduce((acc, key) => {\n const records = newHolder.groupedRecords[key];\n acc[key] = records.length;\n return acc;\n }, {});\n } else {\n let result;\n\n if (propName) {\n result = newHolder.scope.filter((record) => record[propName]);\n } else {\n result = newHolder.scope;\n }\n\n if (filter) result = result.filter(filter);\n return result.length;\n }\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-first\n * @description use holder.proxy\n */\n first = (limit?: number): Promise => {\n if (!limit) limit = 1;\n return this.scoping((holder) => {\n const records = holder.proxy;\n if (records.length === 0) {\n return null;\n } else {\n const slicedRecords = records.slice(0, limit);\n\n if (limit === 1) return slicedRecords[0];\n return slicedRecords;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-include-3F\n * @description use holder.proxy\n */\n isInclude = (record: T | T[] | Promise): Promise => {\n return this.scoping((holder) => {\n const allRecordIds = holder.proxy.map((r) => r['id']);\n if (record instanceof Promise) {\n return record.then((recordVal) => {\n if (recordVal && !Array.isArray(recordVal)) {\n return allRecordIds.includes(recordVal['id']);\n } else {\n /**\n * @description Same specifications as rails\n */\n return false;\n }\n });\n } else {\n if (record && !Array.isArray(record)) {\n return allRecordIds.includes(record['id']);\n } else {\n /**\n * @description Same specifications as rails\n */\n return false;\n }\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-last\n * @description use holder.proxy\n */\n last = (limit?: number): Promise => {\n if (!limit) limit = 1;\n return this.scoping((holder) => {\n const records = holder.proxy;\n if (records.length === 0) {\n return null;\n } else {\n const slicedRecords = records.reverse().slice(0, limit).reverse();\n\n if (limit === 1) return slicedRecords[0];\n return slicedRecords;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-many-3F\n * @description use holder.proxy\n */\n isMany(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.proxy.filter(filter || Boolean).length > 1;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-size\n * @description use holder.proxy\n */\n size(): Promise {\n return this.scoping((holder) => {\n if (isPresent(holder.groupedRecords)) {\n return Object.keys(holder.groupedRecords).reduce((acc, key) => {\n const records = holder.groupedRecords[key];\n acc[key] = records.length;\n return acc;\n }, {});\n } else {\n return holder.proxy.length;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toA(): Promise {\n return this.scoping((holder) => {\n return holder.scope;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toArray(): Promise {\n return this.toA();\n }\n\n _currentScope(): Promise {\n return this.scoping((holder) => {\n if (holder.flags.useProxy) {\n return holder.proxy;\n } else {\n return holder.scope;\n }\n });\n }\n}", - "highlightText": "\u001b[38;2;102;217;239mexport\u001b[39m \u001b[38;2;102;217;239mclass\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Associations$CollectionProxy$Base\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Base\u001b[39m\n\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Associations$CollectionProxy$Impl\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\u001b[39m\n\u001b[38;2;130;146;162m * @description Method for getting results. Do not call it in any other method.\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n onFulfilled\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m ActiveRecord$Relation\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\u001b[39m\n\u001b[38;2;130;146;162m * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m r \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * value is records ((e.g.) T | T[])\u001b[39m\n\u001b[38;2;130;146;162m * @description type error\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description All methods are delegated to this instance\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m ActiveRecord$Associations$Relation\u001b[38;2;248;248;242m<\u001b[39m\n \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n ActiveRecord$Associations$CollectionProxy$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n ActiveRecord$Relation\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m scope\u001b[38;2;248;248;242m,\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m:\u001b[39m ActiveRecord$Associations$CollectionProxy$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m records \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n where \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mit\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mwhere\u001b[38;2;248;248;242m,\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n rewhere \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mit\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mwhere \u001b[38;2;248;248;242m=\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n order \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rmt\u001b[38;2;248;248;242m.\u001b[39mQueryMethods$Directions \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m,\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n reorder \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rmt\u001b[38;2;248;248;242m.\u001b[39mQueryMethods$Directions \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder \u001b[38;2;248;248;242m=\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n reverseOrder \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m orderParams \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39morderParams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39morderParams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mpropName\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m direction \u001b[38;2;248;248;242m=\u001b[39m orderParams\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'desc'\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;166;226;46m'DESC'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdirection\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'asc'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'asc'\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;166;226;46m'ASC'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdirection\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'desc'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'asc'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n offset \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39moffset \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n limit \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mlimit \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Behavior is different from rails group\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n group \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46many\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mprops\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mkeyof\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mgroup \u001b[38;2;248;248;242m=\u001b[39m props\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n unscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mscopeMethods\u001b[38;2;248;248;242m:\u001b[39m rmt\u001b[38;2;248;248;242m.\u001b[39mQueryMethods$ScopeMethods\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;249;38;114mSCOPE_METHODS\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m ActiveRecord$QueryMethods\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscopeMethods\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m err \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mARGUMENT_IS_INVALID\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46m'unscope()' must contain arguments.\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39merrors\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misSuperset\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;249;38;114mSCOPE_METHODS\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m scopeMethods\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scopeMethods\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mscopeMethod\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39m_defaultScopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mparse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mstringify\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39m_defaultScopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mundefined\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m err \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mARGUMENT_IS_INVALID\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46mCalled 'unscope()' with invalid unscoping argument '[\u001b[39m\u001b[38;2;248;248;242m${\u001b[39mscopeMethods\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m]'. Valid arguments are '[\u001b[39m\u001b[38;2;248;248;242m${\u001b[39m\u001b[38;2;249;38;114mSCOPE_METHODS\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m]'.\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39merrors\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-empty-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misEmpty\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-find\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n find \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mit\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mids\u001b[38;2;248;248;242m:\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mids\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mRECORD_NOT_FOUND\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46mCould'nt find '\u001b[39m\u001b[38;2;248;248;242m${\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39muniqueKey\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m' without an 'id'\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mwhere\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m id\u001b[38;2;248;248;242m:\u001b[39m ids \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mids\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mRECORD_NOT_FOUND\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n params\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n resource\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39muniqueKey\u001b[38;2;248;248;242m,\u001b[39m\n id\u001b[38;2;248;248;242m:\u001b[39m ids\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mRECORD_NOT_FOUND\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46mCould't find all '\u001b[39m\u001b[38;2;248;248;242m${\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39muniqueKey\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m' with 'id': [\u001b[39m\u001b[38;2;248;248;242m${\u001b[39mids\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m] (found 0 results, but was looking for \u001b[39m\u001b[38;2;248;248;242m${\u001b[39mids\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m)\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-any-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misAny\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-build\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mbuild\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mflags\u001b[38;2;248;248;242m.\u001b[39museProxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m params\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create-21\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * The return value type is different from that of rails.\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-delete\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mdelete\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordsOrIds\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m recordIds\u001b[38;2;248;248;242m:\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n recordsOrIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Base\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfind\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordIds\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m foreignKey \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m deletedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// dependent: 'nullify'\u001b[39m\n record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mforeignKey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mundefined\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyedIds \u001b[38;2;248;248;242m=\u001b[39m deletedRecords\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m r\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m newScope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m record\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mdestroyedIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m deletedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-destroy\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdestroy\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordsOrIds\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m recordIds\u001b[38;2;248;248;242m:\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n recordsOrIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Base\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordIds\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Make it behave the same as rails\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfind\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordIds\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mdestroySync\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyedIds \u001b[38;2;248;248;242m=\u001b[39m destroyedRecords\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m r\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m newScope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m record\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mdestroyedIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m destroyedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-pluck\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mpluck\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m it\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mpropNames\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mkeyof\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mct\u001b[38;2;248;248;242m.\u001b[39mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mct\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m plucked \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m result\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mpropNames\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m propName\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;248;248;242m!\u001b[39mpropName\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mstartsWith\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;166;226;46m'_'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mtypeof\u001b[39m record\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'function'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mpropName \u001b[38;2;248;248;242m==\u001b[39m \u001b[38;2;166;226;46m'errors'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mct\u001b[38;2;248;248;242m.\u001b[39mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m propNames\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m propName\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mct\u001b[38;2;248;248;242m.\u001b[39mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mpropNames\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m plucked\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mflat\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m plucked\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-count\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcount\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m it\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n propName\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mkeyof\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n filter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m:\u001b[39m newHolder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// deep coppy\u001b[39m\n newHolder\u001b[38;2;248;248;242m.\u001b[39mscopeParams \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mparse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mstringify\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mwhere\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m key\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m newHolder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n acc\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m result\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mpropName\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m newHolder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m record\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m newHolder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m)\u001b[39m result \u001b[38;2;248;248;242m=\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-first\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n first \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mlimit\u001b[38;2;248;248;242m)\u001b[39m limit \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m slicedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mslice\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m limit\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-include-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n isInclude \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m allRecordIds \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m r\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordVal\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordVal \u001b[38;2;248;248;242m&&\u001b[39m \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordVal\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m allRecordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordVal\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Same specifications as rails\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;174;129;255mfalse\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord \u001b[38;2;248;248;242m&&\u001b[39m \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m allRecordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Same specifications as rails\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;174;129;255mfalse\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-last\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n last \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mlimit\u001b[38;2;248;248;242m)\u001b[39m limit \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m slicedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreverse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mslice\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m limit\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreverse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-many-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misMany\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-size\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116msize\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m|\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116mkey\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m key\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n acc\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;230;219;116m_currentScope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mflags\u001b[38;2;248;248;242m.\u001b[39museProxy\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\u001b[38;2;248;248;242m}\u001b[39m", + "text": "export class ActiveRecord$Associations$CollectionProxy$Base<\n T extends ActiveRecord$Base\n> extends ActiveRecord$Associations$CollectionProxy$Impl {\n /**\n * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\n * @description Method for getting results. Do not call it in any other method.\n */\n rueThen(\n onFulfilled: rt.PromiseResolve>,\n onRejected?: rt.PromiseReject\n ) {\n return this.superThen((value) => {\n /**\n * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\n * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\n */\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder, scope } = value;\n\n if (scope instanceof Promise) {\n scope.rueThen((r) => {\n holder.scope = r as T[];\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n });\n } else {\n holder.scope = scope as T[];\n\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n }\n } else {\n /**\n * value is records ((e.g.) T | T[])\n * @description type error\n */\n // @ts-expect-error\n return onFulfilled(value);\n }\n }, onRejected);\n }\n\n /**\n * @description All methods are delegated to this instance\n * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\n */\n scope(): ActiveRecord$Associations$Relation<\n T,\n ActiveRecord$Associations$CollectionProxy$Holder,\n ActiveRecord$Relation\n > {\n return this.superThen(({ holder, scope }) => {\n return { scope, holder };\n });\n }\n\n /**\n * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\n */\n scoping(\n callback: (holder: ActiveRecord$Associations$CollectionProxy$Holder) => U | Promise\n ): Promise {\n return this.superThen(({ holder, scope }) => {\n if (scope instanceof Promise) {\n return scope.rueThen((records) => {\n holder.scope = records as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(records as T[]);\n Evaluator.all(holder);\n return callback(holder);\n });\n } else {\n holder.scope = scope as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(scope);\n Evaluator.all(holder);\n return callback(holder);\n }\n });\n }\n\n /**\n * @description delegate to `scope`\n */\n where = (params: Partial): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n Object.assign(holder.scopeParams.where, params || {});\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n rewhere = (params: Partial): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.where = params || {};\n Object.assign(params, holder.foreignKeyData);\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n order = (params: U): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n Object.assign(holder.scopeParams.order, params || {});\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n reorder = (params: U): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.order = params || {};\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n reverseOrder = (): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n const orderParams = holder.scopeParams.order;\n if (isPresent(orderParams)) {\n Object.keys(orderParams).forEach((propName) => {\n const direction = orderParams[propName];\n if (['desc', 'DESC'].includes(direction)) {\n holder.scopeParams.order[propName] = 'asc';\n } else if (['asc', 'ASC'].includes(direction)) {\n holder.scopeParams.order[propName] = 'desc';\n }\n });\n } else {\n holder.scopeParams.order['id'] = 'asc';\n }\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n offset = (value: number): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.offset = value;\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n limit = (value: number): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.limit = value;\n });\n\n return this;\n }\n\n /**\n * @description Behavior is different from rails group\n * @description delegate to `scope`\n */\n group = (...props: Array): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n // @ts-expect-error\n holder.scopeParams.group = props;\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n unscope = (...scopeMethods: rmt.QueryMethods$ScopeMethods[]): this => {\n const { SCOPE_METHODS } = ActiveRecord$QueryMethods;\n\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n if (scopeMethods.length === 0) {\n const err = errObj({\n code: ErrCodes.ARGUMENT_IS_INVALID,\n message: `'unscope()' must contain arguments.`,\n });\n holder.errors.push(err);\n } else if (isSuperset(SCOPE_METHODS, scopeMethods)) {\n scopeMethods.forEach((scopeMethod) => {\n // @ts-expect-error\n if (holder._defaultScopeParams[scopeMethod]) {\n holder.scopeParams[scopeMethod] = Object.assign(\n {},\n // @ts-expect-error\n JSON.parse(JSON.stringify(holder._defaultScopeParams[scopeMethod]))\n );\n } else {\n holder.scopeParams[scopeMethod] = undefined;\n }\n });\n } else {\n const err = errObj({\n code: ErrCodes.ARGUMENT_IS_INVALID,\n message: `Called 'unscope()' with invalid unscoping argument '[${scopeMethods}]'. Valid arguments are '[${SCOPE_METHODS}]'.`,\n });\n holder.errors.push(err);\n }\n });\n\n return this;\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-empty-3F\n * @description use holder.proxy\n */\n isEmpty(): Promise {\n return this.scoping((holder) => {\n return holder.proxy.length === 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-find\n */\n find = (...ids: it.Record$PrimaryKey[]): Promise => {\n if (ids.length === 0) {\n throw errObj({\n code: ErrCodes.RECORD_NOT_FOUND,\n // @ts-expect-error\n message: `Could'nt find '${this.recordKlass.uniqueKey}' without an 'id'`,\n });\n } else {\n // @ts-expect-error\n return this.where({ id: ids }).scoping((holder) => {\n if (holder.scope.length === 0) {\n if (ids.length === 1) {\n throw errObj({\n code: ErrCodes.RECORD_NOT_FOUND,\n params: {\n // @ts-expect-error\n resource: this.recordKlass.uniqueKey,\n id: ids[0],\n },\n });\n } else {\n throw errObj({\n code: ErrCodes.RECORD_NOT_FOUND,\n // @ts-expect-error\n message: `Could't find all '${this.recordKlass.uniqueKey}' with 'id': [${ids}] (found 0 results, but was looking for ${ids.length})`,\n });\n }\n } else if (holder.scope.length === 1) {\n return holder.scope[0];\n } else {\n return holder.scope;\n }\n });\n }\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-any-3F\n * @description use holder.proxy\n */\n isAny(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.proxy.filter(filter || Boolean).length > 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-build\n * @description use holder.proxy\n */\n build(params?: Partial | Array>, yielder?: (self: T) => void): Promise {\n return this.scoping((holder) => {\n holder.flags.useProxy = true;\n if (Array.isArray(params)) {\n return params.map((param) => {\n const merged = Object.assign(param || {}, holder.foreignKeyData);\n const record = new this.recordKlass(merged);\n if (yielder) yielder(record);\n holder.proxy.push(record);\n return record;\n });\n } else {\n const merged = Object.assign(params || {}, holder.foreignKeyData);\n const record = new this.recordKlass(merged);\n if (yielder) yielder(record);\n holder.proxy.push(record);\n return record;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create\n * @description use holder.proxy\n */\n create(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n const merged = Object.assign(params || {}, holder.foreignKeyData);\n // @ts-ignore\n return this.recordKlass.create(merged, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n holder.proxy.push(self);\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create-21\n * @description use holder.proxy\n */\n createOrThrow(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n const merged = Object.assign(params || {}, holder.foreignKeyData);\n // @ts-expect-error\n return this.recordKlass.createOrThrow(merged, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n holder.proxy.push(self);\n });\n });\n }\n\n /**\n * The return value type is different from that of rails.\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-delete\n */\n delete(...recordsOrIds: T[] | it.Record$PrimaryKey[]): Promise {\n return this.scoping((holder) => {\n let recordIds: it.Record$PrimaryKey[] = [];\n\n recordsOrIds.forEach((recordOrId) => {\n if (recordOrId instanceof ActiveRecord$Base) {\n recordIds.push((recordOrId as T).id);\n } else {\n recordIds.push(recordOrId);\n }\n });\n\n return this.find(...recordIds).then((records: T[]) => {\n const foreignKey = Object.keys(holder.foreignKeyData)[0];\n const deletedRecords = records.map((record) => {\n // dependent: 'nullify'\n record.update({ [foreignKey]: undefined });\n return record;\n });\n const destroyedIds = deletedRecords.map((r) => r.id);\n const newScope = Array.from(holder.scope).reduce((acc, record) => {\n if (!destroyedIds.includes(record.id)) {\n acc.push(record);\n }\n return acc;\n }, []);\n holder.scope = Array.from(newScope);\n holder.proxy = Array.from(newScope);\n return deletedRecords;\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-destroy\n * @description use holder.proxy\n */\n destroy(...recordsOrIds: T[] | it.Record$PrimaryKey[]): Promise {\n return this.scoping((holder) => {\n let recordIds: it.Record$PrimaryKey[] = [];\n\n recordsOrIds.forEach((recordOrId) => {\n if (recordOrId instanceof ActiveRecord$Base) {\n recordIds.push((recordOrId as T).id);\n } else {\n recordIds.push(recordOrId);\n }\n });\n\n if (recordIds.length === 0) {\n /**\n * @description Make it behave the same as rails\n */\n return null;\n } else {\n return this.find(...recordIds).then((records: T[]) => {\n const destroyedRecords = records.map((record) => {\n return record.destroySync();\n });\n const destroyedIds = destroyedRecords.map((r) => r.id);\n const newScope = Array.from(holder.scope).reduce((acc, record) => {\n if (!destroyedIds.includes(record.id)) {\n acc.push(record);\n }\n return acc;\n }, []);\n holder.scope = Array.from(newScope);\n holder.proxy = Array.from(newScope);\n return destroyedRecords;\n });\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-pluck\n * @description use holder.proxy\n */\n pluck(...propNames: Array): Promise>> {\n return this.scoping>>((holder) => {\n const plucked = holder.proxy.map((record) => {\n let result;\n\n if (propNames.length === 0) {\n result = Object.keys(record).reduce((acc, propName: string) => {\n if (\n !propName.startsWith('_') &&\n !(typeof record[propName] === 'function') &&\n !(propName == 'errors')\n ) {\n acc.push(record[propName]);\n }\n return acc;\n }, [] as Array>);\n } else {\n result = propNames.reduce((acc, propName: string) => {\n acc.push(record[propName]);\n return acc;\n }, [] as Array>);\n }\n return result;\n });\n\n if (propNames.length === 1) {\n return plucked.flat();\n } else {\n return plucked;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-count\n */\n count(\n propName?: keyof U,\n filter?: (self: T) => boolean\n ): Promise {\n return this.superThen(({ holder }) => {\n // @ts-expect-error\n return this.recordKlass.all().superThen(({ holder: newHolder }) => {\n // deep coppy\n newHolder.scopeParams = Object.assign({}, JSON.parse(JSON.stringify(holder.scopeParams)));\n Object.assign(newHolder.scopeParams.where, holder.foreignKeyData);\n Evaluator.all(newHolder);\n\n if (isPresent(newHolder.groupedRecords)) {\n return Object.keys(newHolder.groupedRecords).reduce((acc, key) => {\n const records = newHolder.groupedRecords[key];\n acc[key] = records.length;\n return acc;\n }, {});\n } else {\n let result;\n\n if (propName) {\n result = newHolder.scope.filter((record) => record[propName]);\n } else {\n result = newHolder.scope;\n }\n\n if (filter) result = result.filter(filter);\n return result.length;\n }\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-first\n * @description use holder.proxy\n */\n first = (limit?: number): Promise => {\n if (!limit) limit = 1;\n return this.scoping((holder) => {\n const records = holder.proxy;\n if (records.length === 0) {\n return null;\n } else {\n const slicedRecords = records.slice(0, limit);\n\n if (limit === 1) return slicedRecords[0];\n return slicedRecords;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-include-3F\n * @description use holder.proxy\n */\n isInclude = (record: T | T[] | Promise): Promise => {\n return this.scoping((holder) => {\n const allRecordIds = holder.proxy.map((r) => r['id']);\n if (record instanceof Promise) {\n return record.then((recordVal) => {\n if (recordVal && !Array.isArray(recordVal)) {\n return allRecordIds.includes(recordVal['id']);\n } else {\n /**\n * @description Same specifications as rails\n */\n return false;\n }\n });\n } else {\n if (record && !Array.isArray(record)) {\n return allRecordIds.includes(record['id']);\n } else {\n /**\n * @description Same specifications as rails\n */\n return false;\n }\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-last\n * @description use holder.proxy\n */\n last = (limit?: number): Promise => {\n if (!limit) limit = 1;\n return this.scoping((holder) => {\n const records = holder.proxy;\n if (records.length === 0) {\n return null;\n } else {\n const slicedRecords = records.reverse().slice(0, limit).reverse();\n\n if (limit === 1) return slicedRecords[0];\n return slicedRecords;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-many-3F\n * @description use holder.proxy\n */\n isMany(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.proxy.filter(filter || Boolean).length > 1;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-size\n * @description use holder.proxy\n */\n size(): Promise {\n return this.scoping((holder) => {\n if (isPresent(holder.groupedRecords)) {\n return Object.keys(holder.groupedRecords).reduce((acc, key) => {\n const records = holder.groupedRecords[key];\n acc[key] = records.length;\n return acc;\n }, {});\n } else {\n return holder.proxy.length;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toA(): Promise {\n return this.scoping((holder) => {\n return holder.scope;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toArray(): Promise {\n return this.toA();\n }\n\n _currentScope(): Promise {\n return this.scoping((holder) => {\n if (holder.flags.useProxy) {\n return holder.proxy;\n } else {\n return holder.scope;\n }\n });\n }\n}", + "highlightText": "\u001b[38;2;102;217;239mexport\u001b[39m \u001b[38;2;102;217;239mclass\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Associations$CollectionProxy$Base\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Base\u001b[39m\n\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Associations$CollectionProxy$Impl\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\u001b[39m\n\u001b[38;2;130;146;162m * @description Method for getting results. Do not call it in any other method.\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n onFulfilled\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m ActiveRecord$Relation\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\u001b[39m\n\u001b[38;2;130;146;162m * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m r \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * value is records ((e.g.) T | T[])\u001b[39m\n\u001b[38;2;130;146;162m * @description type error\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description All methods are delegated to this instance\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m ActiveRecord$Associations$Relation\u001b[38;2;248;248;242m<\u001b[39m\n \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n ActiveRecord$Associations$CollectionProxy$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n ActiveRecord$Relation\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m scope\u001b[38;2;248;248;242m,\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m:\u001b[39m ActiveRecord$Associations$CollectionProxy$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m records \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n where \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mit\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mwhere\u001b[38;2;248;248;242m,\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n rewhere \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mit\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mwhere \u001b[38;2;248;248;242m=\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n order \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rmt\u001b[38;2;248;248;242m.\u001b[39mQueryMethods$Directions \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m,\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n reorder \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rmt\u001b[38;2;248;248;242m.\u001b[39mQueryMethods$Directions \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder \u001b[38;2;248;248;242m=\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n reverseOrder \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m orderParams \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39morderParams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39morderParams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mpropName\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m direction \u001b[38;2;248;248;242m=\u001b[39m orderParams\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'desc'\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;166;226;46m'DESC'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdirection\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'asc'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'asc'\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;166;226;46m'ASC'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdirection\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'desc'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'asc'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n offset \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39moffset \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n limit \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mlimit \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Behavior is different from rails group\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n group \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46many\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mprops\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mkeyof\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mgroup \u001b[38;2;248;248;242m=\u001b[39m props\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n unscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mscopeMethods\u001b[38;2;248;248;242m:\u001b[39m rmt\u001b[38;2;248;248;242m.\u001b[39mQueryMethods$ScopeMethods\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;249;38;114mSCOPE_METHODS\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m ActiveRecord$QueryMethods\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscopeMethods\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m err \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mARGUMENT_IS_INVALID\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46m'unscope()' must contain arguments.\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39merrors\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misSuperset\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;249;38;114mSCOPE_METHODS\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m scopeMethods\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scopeMethods\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mscopeMethod\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39m_defaultScopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mparse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mstringify\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39m_defaultScopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mundefined\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m err \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mARGUMENT_IS_INVALID\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46mCalled 'unscope()' with invalid unscoping argument '[\u001b[39m\u001b[38;2;248;248;242m${\u001b[39mscopeMethods\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m]'. Valid arguments are '[\u001b[39m\u001b[38;2;248;248;242m${\u001b[39m\u001b[38;2;249;38;114mSCOPE_METHODS\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m]'.\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39merrors\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-empty-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misEmpty\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-find\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n find \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mit\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mids\u001b[38;2;248;248;242m:\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mids\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mRECORD_NOT_FOUND\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46mCould'nt find '\u001b[39m\u001b[38;2;248;248;242m${\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39muniqueKey\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m' without an 'id'\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mwhere\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m id\u001b[38;2;248;248;242m:\u001b[39m ids \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mids\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mRECORD_NOT_FOUND\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n params\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n resource\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39muniqueKey\u001b[38;2;248;248;242m,\u001b[39m\n id\u001b[38;2;248;248;242m:\u001b[39m ids\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mRECORD_NOT_FOUND\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46mCould't find all '\u001b[39m\u001b[38;2;248;248;242m${\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39muniqueKey\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m' with 'id': [\u001b[39m\u001b[38;2;248;248;242m${\u001b[39mids\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m] (found 0 results, but was looking for \u001b[39m\u001b[38;2;248;248;242m${\u001b[39mids\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m)\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-any-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misAny\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-build\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mbuild\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mflags\u001b[38;2;248;248;242m.\u001b[39museProxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m params\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create-21\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * The return value type is different from that of rails.\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-delete\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mdelete\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordsOrIds\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m recordIds\u001b[38;2;248;248;242m:\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n recordsOrIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Base\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfind\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordIds\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m foreignKey \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m deletedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// dependent: 'nullify'\u001b[39m\n record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mforeignKey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mundefined\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyedIds \u001b[38;2;248;248;242m=\u001b[39m deletedRecords\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m r\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m newScope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m record\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mdestroyedIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m deletedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-destroy\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdestroy\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordsOrIds\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m recordIds\u001b[38;2;248;248;242m:\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n recordsOrIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Base\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordIds\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Make it behave the same as rails\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfind\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordIds\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mdestroySync\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyedIds \u001b[38;2;248;248;242m=\u001b[39m destroyedRecords\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m r\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m newScope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m record\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mdestroyedIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m destroyedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-pluck\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mpluck\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m it\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mpropNames\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mkeyof\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mct\u001b[38;2;248;248;242m.\u001b[39mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mct\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m plucked \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m result\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mpropNames\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m propName\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;248;248;242m!\u001b[39mpropName\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mstartsWith\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;166;226;46m'_'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mtypeof\u001b[39m record\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'function'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mpropName \u001b[38;2;248;248;242m==\u001b[39m \u001b[38;2;166;226;46m'errors'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mct\u001b[38;2;248;248;242m.\u001b[39mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m propNames\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m propName\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mct\u001b[38;2;248;248;242m.\u001b[39mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mpropNames\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m plucked\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mflat\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m plucked\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-count\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcount\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m it\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n propName\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mkeyof\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n filter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m:\u001b[39m newHolder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// deep coppy\u001b[39m\n newHolder\u001b[38;2;248;248;242m.\u001b[39mscopeParams \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mparse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mstringify\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mwhere\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m key\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m newHolder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n acc\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m result\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mpropName\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m newHolder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m record\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m newHolder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m)\u001b[39m result \u001b[38;2;248;248;242m=\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-first\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n first \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mlimit\u001b[38;2;248;248;242m)\u001b[39m limit \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m slicedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mslice\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m limit\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-include-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n isInclude \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m allRecordIds \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m r\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordVal\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordVal \u001b[38;2;248;248;242m&&\u001b[39m \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordVal\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m allRecordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordVal\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Same specifications as rails\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;174;129;255mfalse\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord \u001b[38;2;248;248;242m&&\u001b[39m \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m allRecordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Same specifications as rails\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;174;129;255mfalse\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-last\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n last \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mlimit\u001b[38;2;248;248;242m)\u001b[39m limit \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m slicedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreverse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mslice\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m limit\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreverse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-many-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misMany\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-size\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116msize\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m|\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116mkey\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m key\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n acc\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;230;219;116m_currentScope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mflags\u001b[38;2;248;248;242m.\u001b[39museProxy\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\u001b[38;2;248;248;242m}\u001b[39m", "line": [ 24, 670 @@ -508,8 +488,8 @@ ], "instance": { "rueThen": { - "text": "rueThen(\n onFulfilled: rt.PromiseResolve>,\n onRejected?: rt.PromiseReject\n ) {\n return this.superThen((value) => {\n /**\n * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\n * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\n */\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder, scope } = value;\n\n if (scope instanceof Promise) {\n scope.then((r) => {\n holder.scope = r as T[];\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n });\n } else {\n holder.scope = scope as T[];\n\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n }\n } else {\n /**\n * value is records ((e.g.) T | T[])\n * @description type error\n */\n // @ts-expect-error\n return onFulfilled(value);\n }\n }, onRejected);\n }", - "highlightText": "\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n onFulfilled\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m ActiveRecord$Relation\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\u001b[39m\n\u001b[38;2;130;146;162m * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m r \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * value is records ((e.g.) T | T[])\u001b[39m\n\u001b[38;2;130;146;162m * @description type error\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", + "text": "rueThen(\n onFulfilled: rt.PromiseResolve>,\n onRejected?: rt.PromiseReject\n ) {\n return this.superThen((value) => {\n /**\n * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\n * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\n */\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder, scope } = value;\n\n if (scope instanceof Promise) {\n scope.rueThen((r) => {\n holder.scope = r as T[];\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n });\n } else {\n holder.scope = scope as T[];\n\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n }\n } else {\n /**\n * value is records ((e.g.) T | T[])\n * @description type error\n */\n // @ts-expect-error\n return onFulfilled(value);\n }\n }, onRejected);\n }", + "highlightText": "\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n onFulfilled\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m ActiveRecord$Relation\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\u001b[39m\n\u001b[38;2;130;146;162m * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m r \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * value is records ((e.g.) T | T[])\u001b[39m\n\u001b[38;2;130;146;162m * @description type error\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", "isAsync": false, "visibility": "public", "line": [ @@ -528,8 +508,8 @@ ] }, "scoping": { - "text": "scoping(\n callback: (holder: ActiveRecord$Associations$CollectionProxy$Holder) => U | Promise\n ): Promise {\n return this.superThen(({ holder, scope }) => {\n if (scope instanceof Promise) {\n return scope.then((records) => {\n holder.scope = records as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(records as T[]);\n Evaluator.all(holder);\n return callback(holder);\n });\n } else {\n holder.scope = scope as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(scope);\n Evaluator.all(holder);\n return callback(holder);\n }\n });\n }", - "highlightText": "\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m:\u001b[39m ActiveRecord$Associations$CollectionProxy$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m records \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", + "text": "scoping(\n callback: (holder: ActiveRecord$Associations$CollectionProxy$Holder) => U | Promise\n ): Promise {\n return this.superThen(({ holder, scope }) => {\n if (scope instanceof Promise) {\n return scope.rueThen((records) => {\n holder.scope = records as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(records as T[]);\n Evaluator.all(holder);\n return callback(holder);\n });\n } else {\n holder.scope = scope as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(scope);\n Evaluator.all(holder);\n return callback(holder);\n }\n });\n }", + "highlightText": "\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m:\u001b[39m ActiveRecord$Associations$CollectionProxy$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m records \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", "isAsync": false, "visibility": "public", "line": [ @@ -682,7 +662,7 @@ "ActiveRecord$Associations$CollectionProxy$Holder": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/associations/collection_proxy/holder.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -706,7 +686,7 @@ "ActiveRecord$Associations$CollectionProxy$Impl": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/associations/collection_proxy/impl.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -730,7 +710,7 @@ "ActiveRecord$Associations$Relation$Base": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/associations/relation/base.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -746,7 +726,7 @@ "ActiveRecord$Associations": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/associations/core.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -836,7 +816,7 @@ "ActiveRecord$Associations$Impl": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/associations/impl.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -860,7 +840,7 @@ "ActiveRecord$AttributeMethods": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/attribute_methods/core.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -898,7 +878,7 @@ "ActiveRecord$Core": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/core/core.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -926,7 +906,7 @@ "ActiveRecord$Dirty": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/dirty/core.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -954,7 +934,7 @@ "ActiveRecord$Persistence": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/persistences/core.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1154,7 +1134,7 @@ "ActiveRecord$Querying": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/querying/core.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1502,7 +1482,7 @@ "ActiveRecord$Scoping": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/scoping/core.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1518,7 +1498,7 @@ "ActiveRecord$Scoping$Impl": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/scoping/impl.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1534,7 +1514,7 @@ "ActiveRecord$Scoping$Named": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/scoping/named.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1572,7 +1552,7 @@ "ActiveRecord$Associations$Persistence": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/associations/persistence/core.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1630,7 +1610,7 @@ "ActiveRecord$Associations$PersistenceStrategy": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/associations/persistence_strategy/core.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1738,7 +1718,7 @@ "ActiveRecord$FinderMethods": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/relations/modules/finder_methods/core.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:14 +09:00" }, "class": [ { @@ -1876,7 +1856,7 @@ "ActiveRecord$QueryMethods": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/relations/modules/query_methods/core.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:14 +09:00" }, "class": [ { @@ -1984,7 +1964,7 @@ "ActiveRecord$QueryMethods$Evaluator": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/relations/modules/query_methods/evaluator.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:14 +09:00" }, "class": [ { diff --git a/packages/definition/src/activesupport.json b/packages/definition/src/activesupport.json index a042209b..45e00792 100644 --- a/packages/definition/src/activesupport.json +++ b/packages/definition/src/activesupport.json @@ -2,7 +2,7 @@ "RueModule": { "metadata": { "filepath": "@rue/packages/activesupport/src/modules/base.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:56 +09:00" }, "class": [ { @@ -48,7 +48,7 @@ "RueModuleAncestorController": { "metadata": { "filepath": "@rue/packages/activesupport/src/modules/base.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:56 +09:00" }, "class": [ { @@ -104,7 +104,7 @@ "ActiveSupport$Registry$Base": { "metadata": { "filepath": "@rue/packages/activesupport/src/registries/base.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:57 +09:00" }, "class": [ { @@ -180,7 +180,7 @@ "ActiveSupport$Base": { "metadata": { "filepath": "@rue/packages/activesupport/src/supports/base.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:57 +09:00" }, "class": [ { @@ -208,7 +208,7 @@ "ActiveSupport$ImplBase": { "metadata": { "filepath": "@rue/packages/activesupport/src/supports/impl.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:57 +09:00" }, "class": [ { @@ -224,7 +224,7 @@ "ActiveSupport$Impl": { "metadata": { "filepath": "@rue/packages/activesupport/src/supports/impl.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:57 +09:00" }, "class": [ { @@ -248,7 +248,7 @@ "ActiveSupport$Info": { "metadata": { "filepath": "@rue/packages/activesupport/src/supports/modules/info/core.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:57 +09:00" }, "class": [ { diff --git a/packages/definition/src/bundle.json b/packages/definition/src/bundle.json index ea573329..4ab798cb 100644 --- a/packages/definition/src/bundle.json +++ b/packages/definition/src/bundle.json @@ -2,7 +2,7 @@ "ActiveModel$Error": { "metadata": { "filepath": "@rue/packages/activemodel/src/errors/base.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:03 +09:00" }, "class": [ { @@ -18,7 +18,7 @@ "ErrObj": { "metadata": { "filepath": "@rue/packages/activemodel/src/errors/types.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:03 +09:00" }, "class": [ { @@ -31,10 +31,58 @@ } ] }, + "registryForUniqueKeys": { + "metadata": { + "filepath": "@rue/packages/activemodel/src/registries/base.ts", + "updatedAt": "2021/03/31 21:15:03 +09:00" + }, + "class": [ + { + "text": "class registryForUniqueKeys {\n private static readonly klassName = 'RueUniqueKey';\n private static readonly key = 'all';\n\n static create(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.create(this.klassName, this.key, val);\n }\n\n static update(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.update(this.klassName, this.key, val);\n }\n\n static read(ensureType?: st.Registry$Type): T {\n return innerRegistryForUniqueKeys.read(this.klassName, this.key, ensureType);\n }\n}", + "highlightText": "\u001b[38;2;102;217;239mclass\u001b[39m \u001b[38;2;230;219;116mregistryForUniqueKeys\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mprivate\u001b[39m \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;102;217;239mreadonly\u001b[39m klassName \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'RueUniqueKey'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mprivate\u001b[39m \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;102;217;239mreadonly\u001b[39m key \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'all'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mensureType\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Type\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m ensureType\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\u001b[38;2;248;248;242m}\u001b[39m", + "line": [ + 12, + 27 + ] + } + ], + "static": { + "create": { + "text": "static create(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.create(this.klassName, this.key, val);\n }", + "highlightText": "\u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", + "isAsync": false, + "visibility": "public", + "line": [ + 16, + 18 + ] + }, + "update": { + "text": "static update(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.update(this.klassName, this.key, val);\n }", + "highlightText": "\u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", + "isAsync": false, + "visibility": "public", + "line": [ + 20, + 22 + ] + }, + "read": { + "text": "static read(ensureType?: st.Registry$Type): T {\n return innerRegistryForUniqueKeys.read(this.klassName, this.key, ensureType);\n }", + "highlightText": "\u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mensureType\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Type\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m ensureType\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", + "isAsync": false, + "visibility": "public", + "line": [ + 24, + 26 + ] + } + } + }, "ActiveModel$Base": { "metadata": { "filepath": "@rue/packages/activemodel/src/models/base.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:03 +09:00" }, "class": [ { @@ -80,7 +128,7 @@ "ActiveModel$Impl": { "metadata": { "filepath": "@rue/packages/activemodel/src/models/impl.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:03 +09:00" }, "class": [ { @@ -153,58 +201,10 @@ } } }, - "registryForUniqueKeys": { - "metadata": { - "filepath": "@rue/packages/activemodel/src/registries/base.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" - }, - "class": [ - { - "text": "class registryForUniqueKeys {\n private static readonly klassName = 'RueUniqueKey';\n private static readonly key = 'all';\n\n static create(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.create(this.klassName, this.key, val);\n }\n\n static update(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.update(this.klassName, this.key, val);\n }\n\n static read(ensureType?: st.Registry$Type): T {\n return innerRegistryForUniqueKeys.read(this.klassName, this.key, ensureType);\n }\n}", - "highlightText": "\u001b[38;2;102;217;239mclass\u001b[39m \u001b[38;2;230;219;116mregistryForUniqueKeys\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mprivate\u001b[39m \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;102;217;239mreadonly\u001b[39m klassName \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'RueUniqueKey'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mprivate\u001b[39m \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;102;217;239mreadonly\u001b[39m key \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'all'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mensureType\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Type\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m ensureType\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\u001b[38;2;248;248;242m}\u001b[39m", - "line": [ - 12, - 27 - ] - } - ], - "static": { - "create": { - "text": "static create(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.create(this.klassName, this.key, val);\n }", - "highlightText": "\u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", - "isAsync": false, - "visibility": "public", - "line": [ - 16, - 18 - ] - }, - "update": { - "text": "static update(val: st.Registry$Value) {\n innerRegistryForUniqueKeys.update(this.klassName, this.key, val);\n }", - "highlightText": "\u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mval\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Value\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m val\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", - "isAsync": false, - "visibility": "public", - "line": [ - 20, - 22 - ] - }, - "read": { - "text": "static read(ensureType?: st.Registry$Type): T {\n return innerRegistryForUniqueKeys.read(this.klassName, this.key, ensureType);\n }", - "highlightText": "\u001b[38;2;102;217;239mstatic\u001b[39m \u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mensureType\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m st\u001b[38;2;248;248;242m.\u001b[39mRegistry$Type\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m innerRegistryForUniqueKeys\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mklassName\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mkey\u001b[38;2;248;248;242m,\u001b[39m ensureType\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", - "isAsync": false, - "visibility": "public", - "line": [ - 24, - 26 - ] - } - } - }, "ActiveModel$Cachable": { "metadata": { "filepath": "@rue/packages/activemodel/src/models/modules/cachable/core.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:03 +09:00" }, "class": [ { @@ -254,7 +254,7 @@ "ActiveModel$Translation": { "metadata": { "filepath": "@rue/packages/activemodel/src/models/modules/translation/core.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:03 +09:00" }, "class": [ { @@ -334,7 +334,7 @@ "ActiveModel$Validations": { "metadata": { "filepath": "@rue/packages/activemodel/src/models/modules/validations/core.ts", - "updatedAt": "2021/03/31 19:45:30 +09:00" + "updatedAt": "2021/03/31 21:15:04 +09:00" }, "class": [ { @@ -394,7 +394,7 @@ "ActiveRecord$Error": { "metadata": { "filepath": "@rue/packages/activerecord/src/errors/base.ts", - "updatedAt": "2021/03/31 19:45:39 +09:00" + "updatedAt": "2021/03/31 21:15:12 +09:00" }, "class": [ { @@ -410,7 +410,7 @@ "ActiveRecord$Base": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/base.ts", - "updatedAt": "2021/03/31 19:45:39 +09:00" + "updatedAt": "2021/03/31 21:15:12 +09:00" }, "class": [ { @@ -468,7 +468,7 @@ "ActiveRecord$Impl": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/impl.ts", - "updatedAt": "2021/03/31 19:45:39 +09:00" + "updatedAt": "2021/03/31 21:15:12 +09:00" }, "class": [ { @@ -496,7 +496,7 @@ "ActiveRecord$Associations$Holder": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/associations/holder.ts", - "updatedAt": "2021/03/31 19:45:39 +09:00" + "updatedAt": "2021/03/31 21:15:12 +09:00" }, "class": [ { @@ -520,15 +520,15 @@ "ActiveRecord$Relation$Base": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/relations/base.ts", - "updatedAt": "2021/03/31 19:45:39 +09:00" + "updatedAt": "2021/03/31 21:15:12 +09:00" }, "class": [ { - "text": "export class ActiveRecord$Relation$Base<\n T extends ActiveRecord$Base,\n H extends ActiveRecord$Relation$Holder = ActiveRecord$Relation$Holder,\n S = PromiseLike\n> extends ActiveRecord$Relation$Impl {\n protected recordKlass: ct.Constructor;\n\n constructor(executor: t.PromiseExecutor) {\n super((resolve, reject) => {\n // @ts-expect-error\n return executor(resolve, reject);\n });\n }\n\n // instead of constructor\n protected _init(recordKlass: ct.Constructor): this {\n this.recordKlass = recordKlass;\n return this;\n }\n\n /**\n * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\n * @description Method for getting results. Do not call it in any other method.\n */\n rueThen(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) {\n return super.then((value) => {\n /**\n * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\n * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\n */\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder, scope } = value;\n\n if (scope instanceof Promise) {\n scope.then((r) => {\n holder.scope = r;\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n });\n } else {\n holder.scope = scope as T[];\n\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n }\n } else {\n /**\n * value is records ((e.g.) T | T[])\n * @description type error\n */\n // @ts-expect-error\n return onFulfilled(value);\n }\n }, onRejected);\n }\n\n /**\n * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\n * @alias rueThen\n */\n // @ts-expect-error\n then(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) {\n return this.rueThen(onFulfilled, onRejected);\n }\n\n protected superThen(\n onFulfilled: t.PromiseResolveHolder,\n onRejected?: t.PromiseReject\n ) {\n // @ts-expect-error\n return super.__rue_then__(onFulfilled, onRejected);\n }\n\n /**\n * @alias rueCatch\n */\n // @ts-expect-error\n catch(errFn: (err: any) => void | PromiseLike) {\n return this.rueCatch(errFn);\n }\n\n rueCatch(errFn: (err: any) => void | PromiseLike) {\n return (\n super\n // @ts-expect-error\n .__rue_then__((value) => {\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder } = value;\n Evaluator.all(holder);\n holder.errors.forEach((err) => {\n throw err;\n });\n }\n })\n .__rue_catch__(errFn)\n );\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-scoping\n */\n scoping(callback: (holder: H) => U | Promise): Promise {\n return super.then(({ holder, scope }) => {\n if (scope instanceof Promise) {\n return scope.then((records) => {\n holder.scope = records;\n Evaluator.all(holder);\n return callback(holder);\n });\n } else {\n holder.scope = scope as T[];\n Evaluator.all(holder);\n return callback(holder);\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-many-3F\n */\n isMany(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length > 1;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-none-3F\n */\n isNone(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length === 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-one-3F\n */\n isOne(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length === 1;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-size\n */\n size(): Promise {\n return this.scoping((holder) => {\n if (isPresent(holder.groupedRecords)) {\n return Object.keys(holder.groupedRecords).reduce((acc, key) => {\n const records = holder.groupedRecords[key];\n acc[key] = records.length;\n return acc;\n }, {});\n } else {\n return holder.scope.length;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-any-3F\n */\n isAny(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length > 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-blank-3F\n * Returns true if relation is blank.\n */\n isBlank(): Promise {\n return this.superThen(({ scope }) => {\n if (scope instanceof Promise) {\n return scope.then((r) => {\n return r.length === 0;\n });\n } else {\n return (scope as T[]).length === 0;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-empty-3F\n */\n isEmpty(): Promise {\n return this.scoping((holder) => {\n return holder.scope.length === 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-build\n */\n build(params?: Partial | Array>, yielder?: (self: T) => void): Promise {\n return this.scoping((holder) => {\n if (Array.isArray(params)) {\n return params.map((param) => {\n const record = new this.recordKlass(param);\n if (yielder) yielder(record);\n holder.scope.push(record);\n return record;\n });\n } else {\n const record = new this.recordKlass(params);\n if (yielder) yielder(record);\n holder.scope.push(record);\n return record;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create\n */\n create(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n // @ts-ignore\n return this.recordKlass.create(params, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create-21\n */\n createOrThrow(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n // @ts-expect-error\n return this.recordKlass.createOrThrow(params, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by\n * @todo Support yielder\n */\n createOrFindBy(params: Partial): Promise {\n // @ts-ignore\n return (this.recordKlass as typeof ActiveRecord$Base).findBy(params).then((record) => {\n if (record) {\n return record;\n } else {\n return this.create>(params);\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by-21\n * @todo Support yielder\n */\n createOrFindByOrThrow(params: Partial): Promise {\n // @ts-ignore\n return (this.recordKlass as typeof ActiveRecord$Base).findBy(params).then((record) => {\n if (record) {\n return record;\n } else {\n return this.createOrThrow(params);\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_by\n */\n deleteBy(params?: Partial): Promise {\n const deleteRecordFn = (record: T): boolean => {\n return !!record.destroySync();\n };\n\n return (\n this.recordKlass\n // @ts-ignore\n .where(params)\n .superThen(({ holder }) => {\n Evaluator.all(holder);\n return Promise.all(holder.scope.map(deleteRecordFn)).then((result) => {\n return result.filter(Boolean).length;\n });\n })\n );\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_all\n */\n deleteAll(): Promise {\n return this.scoping((holder) => {\n const deleteCount = holder.scope.length;\n RecordCache.update(this.recordKlass.name, RECORD_ALL, []);\n holder.scope = [];\n return deleteCount;\n });\n }\n\n /**\n * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/relation.rb#L613-L615\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_by\n * @todo Use ActiveRecord$QueryMethods#where\n */\n destroyBy(filter?: (self: T) => boolean): Promise {\n return this.superThen(({ holder }) => {\n let leavedData = [];\n let deleteData = [];\n\n holder.scope.forEach((record) => {\n if (filter) {\n if (filter(record)) {\n deleteData.push(record);\n } else {\n leavedData.push(record);\n }\n } else {\n deleteData.push(record);\n }\n });\n\n RecordCache.update(this.recordKlass.name, RECORD_ALL, leavedData);\n holder.scope = leavedData;\n\n Evaluator.all(holder);\n\n deleteData.forEach((record) => {\n record._destroyed = true;\n Object.freeze(record);\n });\n return deleteData;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_all\n */\n destroyAll(): Promise {\n return this.scoping((holder) => {\n const destroyed = holder.scope.map((record: T) => {\n const destroyed = record.destroySync();\n Object.freeze(destroyed);\n return destroyed;\n });\n holder.scope = [];\n return destroyed;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by\n */\n findOrCreateBy(params: Partial, yielder?: (self: T) => void): Promise {\n return this.findBy(params).then((record) => {\n if (record) {\n if (yielder) yielder(record);\n return record;\n } else {\n return this.create>(params).then((createdRecord: T) => {\n if (yielder) yielder(createdRecord);\n return createdRecord;\n });\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by-21\n */\n findOrCreateByOrThrow(params: Partial, yielder?: (self: T) => void): Promise {\n // @ts-ignore\n return this.recordKlass.findBy(params).then((record) => {\n if (record) {\n if (yielder) yielder(record);\n return record;\n } else {\n return this.createOrThrow>(params).then((createdRecord) => {\n if (yielder) yielder(createdRecord);\n return createdRecord;\n });\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_initialize_by\n */\n findOrInitializeBy(params: Partial, yielder?: (self: T) => void): Promise {\n // @ts-ignore\n return this.recordKlass.findBy(params).then((record) => {\n if (record) {\n if (yielder) yielder(record);\n return record;\n } else {\n const newRecord = new this.recordKlass(params);\n // @ts-expect-error\n newRecord._newRecord = true;\n if (yielder) yielder(newRecord);\n return newRecord;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-update_all\n */\n updateAll(params: Partial): Promise {\n const updateFn = (record: T): boolean => {\n return record.update(params);\n };\n\n return this.scoping((holder) => {\n return Promise.all(holder.scope.map(updateFn)).then((result) => {\n return result.filter(Boolean).length;\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-touch_all\n */\n touchAll(\n params?: Partial,\n opts?: { withCreatedAt?: boolean; time?: string }\n ): Promise {\n const updateProps =\n opts && opts.withCreatedAt ? [RUE_CREATED_AT, RUE_UPDATED_AT] : [RUE_UPDATED_AT];\n const datetime = opts && opts.time ? dayjs(opts.time).format() : dayjs().format();\n\n const touchFn = (record: T): boolean => {\n updateProps.forEach((timestamp) => {\n record.update({ [timestamp]: datetime });\n });\n return true;\n };\n\n return (\n this.recordKlass\n // @ts-expect-error\n .where(params)\n .superThen(({ holder }) => {\n Evaluator.all(holder);\n return Promise.all(holder.scope.map(touchFn)).then((result) => {\n holder.scope = RecordCache.read(holder.recordKlass.unniqueKey, RECORD_ALL, 'array');\n return result.filter(Boolean).length;\n });\n })\n );\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toA(): Promise {\n return this.scoping((holder) => {\n return holder.scope;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toArray(): Promise {\n return this.toA();\n }\n}", - "highlightText": "\u001b[38;2;102;217;239mexport\u001b[39m \u001b[38;2;102;217;239mclass\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Relation$Base\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Base\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Relation$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m=\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Relation$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m=\u001b[39m\u001b[38;2;230;219;116m PromiseLike\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Relation$Impl\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mprotected\u001b[39m recordKlass\u001b[38;2;248;248;242m:\u001b[39m ct\u001b[38;2;248;248;242m.\u001b[39mConstructor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mconstructor\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mexecutor\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseExecutor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresolve\u001b[38;2;248;248;242m,\u001b[39m reject\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mexecutor\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresolve\u001b[38;2;248;248;242m,\u001b[39m reject\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m// instead of constructor\u001b[39m\n \u001b[38;2;102;217;239mprotected\u001b[39m \u001b[38;2;230;219;116m_init\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordKlass\u001b[38;2;248;248;242m:\u001b[39m ct\u001b[38;2;248;248;242m.\u001b[39mConstructor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass \u001b[38;2;248;248;242m=\u001b[39m recordKlass\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\u001b[39m\n\u001b[38;2;130;146;162m * @description Method for getting results. Do not call it in any other method.\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\u001b[39m\n\u001b[38;2;130;146;162m * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m r\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * value is records ((e.g.) T | T[])\u001b[39m\n\u001b[38;2;130;146;162m * @description type error\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\u001b[39m\n\u001b[38;2;130;146;162m * @alias rueThen\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mprotected\u001b[39m \u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n onFulfilled\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseResolveHolder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116m__rue_then__\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @alias rueCatch\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mcatch\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116merrFn\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m PromiseLike\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueCatch\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merrFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;230;219;116mrueCatch\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116merrFn\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m PromiseLike\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239msuper\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116m__rue_then__\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39merrors\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m err\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116m__rue_catch__\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merrFn\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-scoping\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-many-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misMany\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-none-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misNone\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-one-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misOne\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-size\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116msize\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m|\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116mkey\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m key\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n acc\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-any-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misAny\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-blank-3F\u001b[39m\n\u001b[38;2;130;146;162m * Returns true if relation is blank.\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misBlank\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m r\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-empty-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misEmpty\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-build\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mbuild\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m params\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create-21\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by\u001b[39m\n\u001b[38;2;130;146;162m * @todo Support yielder\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrFindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;102;217;239mtypeof\u001b[39m ActiveRecord$Base\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by-21\u001b[39m\n\u001b[38;2;130;146;162m * @todo Support yielder\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrFindByOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;102;217;239mtypeof\u001b[39m ActiveRecord$Base\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_by\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdeleteBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m deleteRecordFn \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mrecord\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mdestroySync\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mwhere\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdeleteRecordFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresult\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mBoolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdeleteAll\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m deleteCount \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n RecordCache\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39mname\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRECORD_ALL\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m deleteCount\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/relation.rb#L613-L615\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_by\u001b[39m\n\u001b[38;2;130;146;162m * @todo Use ActiveRecord$QueryMethods#where\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdestroyBy\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m leavedData \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m deleteData \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n deleteData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n leavedData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n deleteData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n RecordCache\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39mname\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRECORD_ALL\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m leavedData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m leavedData\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n deleteData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n record\u001b[38;2;248;248;242m.\u001b[39m_destroyed \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfreeze\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m deleteData\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdestroyAll\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyed \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyed \u001b[38;2;248;248;242m=\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mdestroySync\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfreeze\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdestroyed\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m destroyed\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m destroyed\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mfindOrCreateBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m createdRecord\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by-21\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mfindOrCreateByOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m createdRecord\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_initialize_by\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mfindOrInitializeBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m newRecord \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n newRecord\u001b[38;2;248;248;242m.\u001b[39m_newRecord \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewRecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m newRecord\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-update_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mupdateAll\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m updateFn \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mupdateFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresult\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mBoolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-touch_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtouchAll\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n opts\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m withCreatedAt\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m time\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m updateProps \u001b[38;2;248;248;242m=\u001b[39m\n opts \u001b[38;2;248;248;242m&&\u001b[39m opts\u001b[38;2;248;248;242m.\u001b[39mwithCreatedAt \u001b[38;2;248;248;242m?\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;249;38;114mRUE_CREATED_AT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRUE_UPDATED_AT\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;249;38;114mRUE_UPDATED_AT\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m datetime \u001b[38;2;248;248;242m=\u001b[39m opts \u001b[38;2;248;248;242m&&\u001b[39m opts\u001b[38;2;248;248;242m.\u001b[39mtime \u001b[38;2;248;248;242m?\u001b[39m \u001b[38;2;230;219;116mdayjs\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mopts\u001b[38;2;248;248;242m.\u001b[39mtime\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mformat\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;230;219;116mdayjs\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mformat\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mconst\u001b[39m touchFn \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n updateProps\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mtimestamp\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mtimestamp\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m datetime \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mwhere\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mtouchFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresult\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m RecordCache\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39munniqueKey\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRECORD_ALL\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;166;226;46m'array'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mBoolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\u001b[38;2;248;248;242m}\u001b[39m", + "text": "export class ActiveRecord$Relation$Base<\n T extends ActiveRecord$Base,\n H extends ActiveRecord$Relation$Holder = ActiveRecord$Relation$Holder,\n S = PromiseLike\n> extends ActiveRecord$Relation$Impl {\n protected recordKlass: ct.Constructor;\n\n constructor(executor: t.PromiseExecutor) {\n super((resolve, reject) => {\n // @ts-expect-error\n return executor(resolve, reject);\n });\n }\n\n // instead of constructor\n protected _init(recordKlass: ct.Constructor): this {\n this.recordKlass = recordKlass;\n return this;\n }\n\n /**\n * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\n * @description Method for getting results. Do not call it in any other method.\n */\n rueThen(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) {\n return super.then((value) => {\n /**\n * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\n * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\n */\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder, scope } = value;\n\n if (scope instanceof Promise) {\n scope.then((r) => {\n holder.scope = r;\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n });\n } else {\n holder.scope = scope as T[];\n\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n }\n } else {\n /**\n * value is records ((e.g.) T | T[])\n * @description type error\n */\n // @ts-expect-error\n return onFulfilled(value);\n }\n }, onRejected);\n }\n\n /**\n * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\n * @alias rueThen\n *\n * @bug typescript bug\n * @description Since the type definition of Promise is buggy, it cannot be implemented with the type of then overridden.\n * @description If healed, comment out.\n * @see https://github.com/microsoft/TypeScript/issues/33416\n *\n */\n // then(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) {\n // return this.rueThen(onFulfilled, onRejected);\n // }\n\n protected superThen(\n onFulfilled: t.PromiseResolveHolder,\n onRejected?: t.PromiseReject\n ) {\n // @ts-expect-error\n return super.__rue_then__(onFulfilled, onRejected);\n }\n\n /**\n * @alias rueCatch\n * \n * @bug typescript bug\n * @description Since the type definition of Promise is buggy, it cannot be implemented with the type of then overridden.\n * @description If healed, comment out.\n * @see https://github.com/microsoft/TypeScript/issues/33416\n */\n // catch(errFn: (err: any) => void | PromiseLike) {\n // return this.rueCatch(errFn);\n // }\n\n rueCatch(errFn: (err: any) => void | PromiseLike) {\n return (\n super\n // @ts-expect-error\n .__rue_then__((value) => {\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder } = value;\n Evaluator.all(holder);\n holder.errors.forEach((err) => {\n throw err;\n });\n }\n })\n .__rue_catch__(errFn)\n );\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-scoping\n */\n scoping(callback: (holder: H) => U | Promise): Promise {\n return super.then(({ holder, scope }) => {\n if (scope instanceof Promise) {\n return scope.then((records) => {\n holder.scope = records;\n Evaluator.all(holder);\n return callback(holder);\n });\n } else {\n holder.scope = scope as T[];\n Evaluator.all(holder);\n return callback(holder);\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-many-3F\n */\n isMany(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length > 1;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-none-3F\n */\n isNone(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length === 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-one-3F\n */\n isOne(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length === 1;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-size\n */\n size(): Promise {\n return this.scoping((holder) => {\n if (isPresent(holder.groupedRecords)) {\n return Object.keys(holder.groupedRecords).reduce((acc, key) => {\n const records = holder.groupedRecords[key];\n acc[key] = records.length;\n return acc;\n }, {});\n } else {\n return holder.scope.length;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-any-3F\n */\n isAny(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.scope.filter(filter || Boolean).length > 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-blank-3F\n * Returns true if relation is blank.\n */\n isBlank(): Promise {\n return this.superThen(({ scope }) => {\n if (scope instanceof Promise) {\n return scope.then((r) => {\n return r.length === 0;\n });\n } else {\n return (scope as T[]).length === 0;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-empty-3F\n */\n isEmpty(): Promise {\n return this.scoping((holder) => {\n return holder.scope.length === 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-build\n */\n build(params?: Partial | Array>, yielder?: (self: T) => void): Promise {\n return this.scoping((holder) => {\n if (Array.isArray(params)) {\n return params.map((param) => {\n const record = new this.recordKlass(param);\n if (yielder) yielder(record);\n holder.scope.push(record);\n return record;\n });\n } else {\n const record = new this.recordKlass(params);\n if (yielder) yielder(record);\n holder.scope.push(record);\n return record;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create\n */\n create(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n // @ts-ignore\n return this.recordKlass.create(params, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create-21\n */\n createOrThrow(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n // @ts-expect-error\n return this.recordKlass.createOrThrow(params, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by\n * @todo Support yielder\n */\n createOrFindBy(params: Partial): Promise {\n // @ts-ignore\n return (this.recordKlass as typeof ActiveRecord$Base).findBy(params).then((record) => {\n if (record) {\n return record;\n } else {\n return this.create>(params);\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by-21\n * @todo Support yielder\n */\n createOrFindByOrThrow(params: Partial): Promise {\n // @ts-ignore\n return (this.recordKlass as typeof ActiveRecord$Base).findBy(params).then((record) => {\n if (record) {\n return record;\n } else {\n return this.createOrThrow(params);\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_by\n */\n deleteBy(params?: Partial): Promise {\n const deleteRecordFn = (record: T): boolean => {\n return !!record.destroySync();\n };\n\n return (\n this.recordKlass\n // @ts-ignore\n .where(params)\n .superThen(({ holder }) => {\n Evaluator.all(holder);\n return Promise.all(holder.scope.map(deleteRecordFn)).then((result) => {\n return result.filter(Boolean).length;\n });\n })\n );\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_all\n */\n deleteAll(): Promise {\n return this.scoping((holder) => {\n const deleteCount = holder.scope.length;\n RecordCache.update(this.recordKlass.name, RECORD_ALL, []);\n holder.scope = [];\n return deleteCount;\n });\n }\n\n /**\n * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/relation.rb#L613-L615\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_by\n * @todo Use ActiveRecord$QueryMethods#where\n */\n destroyBy(filter?: (self: T) => boolean): Promise {\n return this.superThen(({ holder }) => {\n let leavedData = [];\n let deleteData = [];\n\n holder.scope.forEach((record) => {\n if (filter) {\n if (filter(record)) {\n deleteData.push(record);\n } else {\n leavedData.push(record);\n }\n } else {\n deleteData.push(record);\n }\n });\n\n RecordCache.update(this.recordKlass.name, RECORD_ALL, leavedData);\n holder.scope = leavedData;\n\n Evaluator.all(holder);\n\n deleteData.forEach((record) => {\n record._destroyed = true;\n Object.freeze(record);\n });\n return deleteData;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_all\n */\n destroyAll(): Promise {\n return this.scoping((holder) => {\n const destroyed = holder.scope.map((record: T) => {\n const destroyed = record.destroySync();\n Object.freeze(destroyed);\n return destroyed;\n });\n holder.scope = [];\n return destroyed;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by\n */\n findOrCreateBy(params: Partial, yielder?: (self: T) => void): Promise {\n return this.findBy(params).then((record) => {\n if (record) {\n if (yielder) yielder(record);\n return record;\n } else {\n return this.create>(params).then((createdRecord: T) => {\n if (yielder) yielder(createdRecord);\n return createdRecord;\n });\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by-21\n */\n findOrCreateByOrThrow(params: Partial, yielder?: (self: T) => void): Promise {\n // @ts-ignore\n return this.recordKlass.findBy(params).then((record) => {\n if (record) {\n if (yielder) yielder(record);\n return record;\n } else {\n return this.createOrThrow>(params).then((createdRecord) => {\n if (yielder) yielder(createdRecord);\n return createdRecord;\n });\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_initialize_by\n */\n findOrInitializeBy(params: Partial, yielder?: (self: T) => void): Promise {\n // @ts-ignore\n return this.recordKlass.findBy(params).then((record) => {\n if (record) {\n if (yielder) yielder(record);\n return record;\n } else {\n const newRecord = new this.recordKlass(params);\n // @ts-expect-error\n newRecord._newRecord = true;\n if (yielder) yielder(newRecord);\n return newRecord;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-update_all\n */\n updateAll(params: Partial): Promise {\n const updateFn = (record: T): boolean => {\n return record.update(params);\n };\n\n return this.scoping((holder) => {\n return Promise.all(holder.scope.map(updateFn)).then((result) => {\n return result.filter(Boolean).length;\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-touch_all\n */\n touchAll(\n params?: Partial,\n opts?: { withCreatedAt?: boolean; time?: string }\n ): Promise {\n const updateProps =\n opts && opts.withCreatedAt ? [RUE_CREATED_AT, RUE_UPDATED_AT] : [RUE_UPDATED_AT];\n const datetime = opts && opts.time ? dayjs(opts.time).format() : dayjs().format();\n\n const touchFn = (record: T): boolean => {\n updateProps.forEach((timestamp) => {\n record.update({ [timestamp]: datetime });\n });\n return true;\n };\n\n return (\n this.recordKlass\n // @ts-expect-error\n .where(params)\n .superThen(({ holder }) => {\n Evaluator.all(holder);\n return Promise.all(holder.scope.map(touchFn)).then((result) => {\n holder.scope = RecordCache.read(holder.recordKlass.unniqueKey, RECORD_ALL, 'array');\n return result.filter(Boolean).length;\n });\n })\n );\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toA(): Promise {\n return this.scoping((holder) => {\n return holder.scope;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toArray(): Promise {\n return this.toA();\n }\n}", + "highlightText": "\u001b[38;2;102;217;239mexport\u001b[39m \u001b[38;2;102;217;239mclass\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Relation$Base\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Base\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Relation$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m=\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Relation$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m=\u001b[39m\u001b[38;2;230;219;116m PromiseLike\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Relation$Impl\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mprotected\u001b[39m recordKlass\u001b[38;2;248;248;242m:\u001b[39m ct\u001b[38;2;248;248;242m.\u001b[39mConstructor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mconstructor\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mexecutor\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseExecutor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresolve\u001b[38;2;248;248;242m,\u001b[39m reject\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mexecutor\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresolve\u001b[38;2;248;248;242m,\u001b[39m reject\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m// instead of constructor\u001b[39m\n \u001b[38;2;102;217;239mprotected\u001b[39m \u001b[38;2;230;219;116m_init\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordKlass\u001b[38;2;248;248;242m:\u001b[39m ct\u001b[38;2;248;248;242m.\u001b[39mConstructor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass \u001b[38;2;248;248;242m=\u001b[39m recordKlass\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\u001b[39m\n\u001b[38;2;130;146;162m * @description Method for getting results. Do not call it in any other method.\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\u001b[39m\n\u001b[38;2;130;146;162m * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m r\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * value is records ((e.g.) T | T[])\u001b[39m\n\u001b[38;2;130;146;162m * @description type error\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\u001b[39m\n\u001b[38;2;130;146;162m * @alias rueThen\u001b[39m\n\u001b[38;2;130;146;162m *\u001b[39m\n\u001b[38;2;130;146;162m * @bug typescript bug\u001b[39m\n\u001b[38;2;130;146;162m * @description Since the type definition of Promise is buggy, it cannot be implemented with the type of then overridden.\u001b[39m\n\u001b[38;2;130;146;162m * @description If healed, comment out.\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/microsoft/TypeScript/issues/33416\u001b[39m\n\u001b[38;2;130;146;162m *\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// then(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) {\u001b[39m\n \u001b[38;2;130;146;162m// return this.rueThen(onFulfilled, onRejected);\u001b[39m\n \u001b[38;2;130;146;162m// }\u001b[39m\n\n \u001b[38;2;102;217;239mprotected\u001b[39m \u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n onFulfilled\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseResolveHolder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116m__rue_then__\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @alias rueCatch\u001b[39m\n\u001b[38;2;130;146;162m * \u001b[39m\n\u001b[38;2;130;146;162m * @bug typescript bug\u001b[39m\n\u001b[38;2;130;146;162m * @description Since the type definition of Promise is buggy, it cannot be implemented with the type of then overridden.\u001b[39m\n\u001b[38;2;130;146;162m * @description If healed, comment out.\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/microsoft/TypeScript/issues/33416\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// catch(errFn: (err: any) => void | PromiseLike) {\u001b[39m\n \u001b[38;2;130;146;162m// return this.rueCatch(errFn);\u001b[39m\n \u001b[38;2;130;146;162m// }\u001b[39m\n\n \u001b[38;2;230;219;116mrueCatch\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116merrFn\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m PromiseLike\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239msuper\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116m__rue_then__\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39merrors\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m err\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116m__rue_catch__\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merrFn\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-scoping\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-many-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misMany\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-none-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misNone\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-one-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misOne\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-size\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116msize\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m|\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116mkey\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m key\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n acc\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-any-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misAny\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-blank-3F\u001b[39m\n\u001b[38;2;130;146;162m * Returns true if relation is blank.\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misBlank\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m r\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-empty-3F\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misEmpty\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-build\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mbuild\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m params\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create-21\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by\u001b[39m\n\u001b[38;2;130;146;162m * @todo Support yielder\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrFindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;102;217;239mtypeof\u001b[39m ActiveRecord$Base\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-create_or_find_by-21\u001b[39m\n\u001b[38;2;130;146;162m * @todo Support yielder\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrFindByOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;102;217;239mtypeof\u001b[39m ActiveRecord$Base\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_by\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdeleteBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m deleteRecordFn \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mrecord\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mdestroySync\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mwhere\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdeleteRecordFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresult\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mBoolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-delete_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdeleteAll\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m deleteCount \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n RecordCache\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39mname\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRECORD_ALL\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m deleteCount\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/relation.rb#L613-L615\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_by\u001b[39m\n\u001b[38;2;130;146;162m * @todo Use ActiveRecord$QueryMethods#where\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdestroyBy\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m leavedData \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m deleteData \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n deleteData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n leavedData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n deleteData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n RecordCache\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39mname\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRECORD_ALL\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m leavedData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m leavedData\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n deleteData\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n record\u001b[38;2;248;248;242m.\u001b[39m_destroyed \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfreeze\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m deleteData\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-destroy_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdestroyAll\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyed \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyed \u001b[38;2;248;248;242m=\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mdestroySync\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfreeze\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdestroyed\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m destroyed\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m destroyed\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mfindOrCreateBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m createdRecord\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_create_by-21\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mfindOrCreateByOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mcreatedRecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m createdRecord\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-find_or_initialize_by\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mfindOrInitializeBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfindBy\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m newRecord \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n newRecord\u001b[38;2;248;248;242m.\u001b[39m_newRecord \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewRecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m newRecord\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-update_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mupdateAll\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m updateFn \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mupdateFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresult\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mBoolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/v6.1.3/classes/ActiveRecord/Relation.html#method-i-touch_all\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtouchAll\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n opts\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m withCreatedAt\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m time\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m updateProps \u001b[38;2;248;248;242m=\u001b[39m\n opts \u001b[38;2;248;248;242m&&\u001b[39m opts\u001b[38;2;248;248;242m.\u001b[39mwithCreatedAt \u001b[38;2;248;248;242m?\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;249;38;114mRUE_CREATED_AT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRUE_UPDATED_AT\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;249;38;114mRUE_UPDATED_AT\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m datetime \u001b[38;2;248;248;242m=\u001b[39m opts \u001b[38;2;248;248;242m&&\u001b[39m opts\u001b[38;2;248;248;242m.\u001b[39mtime \u001b[38;2;248;248;242m?\u001b[39m \u001b[38;2;230;219;116mdayjs\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mopts\u001b[38;2;248;248;242m.\u001b[39mtime\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mformat\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;230;219;116mdayjs\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mformat\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mconst\u001b[39m touchFn \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n updateProps\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mtimestamp\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mtimestamp\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m datetime \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mwhere\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m,\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mtouchFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresult\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m RecordCache\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mread\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39munniqueKey\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mRECORD_ALL\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;166;226;46m'array'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mBoolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\u001b[38;2;248;248;242m}\u001b[39m", "line": [ - 34, - 531 + 40, + 546 ] } ], @@ -539,8 +539,8 @@ "isAsync": false, "visibility": "protected", "line": [ - 49, - 52 + 55, + 58 ] }, "rueThen": { @@ -549,18 +549,8 @@ "isAsync": false, "visibility": "public", "line": [ - 58, - 103 - ] - }, - "then": { - "text": "then(onFulfilled: t.PromiseResolve, onRejected?: t.PromiseReject) {\n return this.rueThen(onFulfilled, onRejected);\n }", - "highlightText": "\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39monFulfilled\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", - "isAsync": false, - "visibility": "public", - "line": [ - 110, - 112 + 64, + 109 ] }, "superThen": { @@ -569,18 +559,8 @@ "isAsync": false, "visibility": "protected", "line": [ - 114, - 120 - ] - }, - "catch": { - "text": "catch(errFn: (err: any) => void | PromiseLike) {\n return this.rueCatch(errFn);\n }", - "highlightText": "\u001b[38;2;102;217;239mcatch\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116merrFn\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m PromiseLike\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueCatch\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merrFn\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", - "isAsync": false, - "visibility": "public", - "line": [ - 126, - 128 + 125, + 131 ] }, "rueCatch": { @@ -589,8 +569,8 @@ "isAsync": false, "visibility": "public", "line": [ - 130, - 150 + 145, + 165 ] }, "scoping": { @@ -599,8 +579,8 @@ "isAsync": false, "visibility": "public", "line": [ - 155, - 169 + 170, + 184 ] }, "isMany": { @@ -609,8 +589,8 @@ "isAsync": false, "visibility": "public", "line": [ - 174, - 178 + 189, + 193 ] }, "isNone": { @@ -619,8 +599,8 @@ "isAsync": false, "visibility": "public", "line": [ - 183, - 187 + 198, + 202 ] }, "isOne": { @@ -629,8 +609,8 @@ "isAsync": false, "visibility": "public", "line": [ - 192, - 196 + 207, + 211 ] }, "size": { @@ -639,8 +619,8 @@ "isAsync": false, "visibility": "public", "line": [ - 201, - 213 + 216, + 228 ] }, "isAny": { @@ -649,8 +629,8 @@ "isAsync": false, "visibility": "public", "line": [ - 218, - 222 + 233, + 237 ] }, "isBlank": { @@ -659,8 +639,8 @@ "isAsync": false, "visibility": "public", "line": [ - 228, - 238 + 243, + 253 ] }, "isEmpty": { @@ -669,8 +649,8 @@ "isAsync": false, "visibility": "public", "line": [ - 243, - 247 + 258, + 262 ] }, "build": { @@ -679,8 +659,8 @@ "isAsync": false, "visibility": "public", "line": [ - 252, - 268 + 267, + 283 ] }, "create": { @@ -689,8 +669,8 @@ "isAsync": false, "visibility": "public", "line": [ - 273, - 284 + 288, + 299 ] }, "createOrThrow": { @@ -699,8 +679,8 @@ "isAsync": false, "visibility": "public", "line": [ - 289, - 300 + 304, + 315 ] }, "createOrFindBy": { @@ -709,8 +689,8 @@ "isAsync": false, "visibility": "public", "line": [ - 306, - 315 + 321, + 330 ] }, "createOrFindByOrThrow": { @@ -719,8 +699,8 @@ "isAsync": false, "visibility": "public", "line": [ - 321, - 330 + 336, + 345 ] }, "deleteBy": { @@ -729,8 +709,8 @@ "isAsync": false, "visibility": "public", "line": [ - 335, - 351 + 350, + 366 ] }, "deleteAll": { @@ -739,8 +719,8 @@ "isAsync": false, "visibility": "public", "line": [ - 356, - 363 + 371, + 378 ] }, "destroyBy": { @@ -749,8 +729,8 @@ "isAsync": false, "visibility": "public", "line": [ - 370, - 398 + 385, + 413 ] }, "destroyAll": { @@ -759,8 +739,8 @@ "isAsync": false, "visibility": "public", "line": [ - 403, - 413 + 418, + 428 ] }, "findOrCreateBy": { @@ -769,8 +749,8 @@ "isAsync": false, "visibility": "public", "line": [ - 418, - 430 + 433, + 445 ] }, "findOrCreateByOrThrow": { @@ -779,8 +759,8 @@ "isAsync": false, "visibility": "public", "line": [ - 435, - 448 + 450, + 463 ] }, "findOrInitializeBy": { @@ -789,8 +769,8 @@ "isAsync": false, "visibility": "public", "line": [ - 453, - 467 + 468, + 482 ] }, "updateAll": { @@ -799,8 +779,8 @@ "isAsync": false, "visibility": "public", "line": [ - 472, - 482 + 487, + 497 ] }, "touchAll": { @@ -809,8 +789,8 @@ "isAsync": false, "visibility": "public", "line": [ - 487, - 514 + 502, + 529 ] }, "toA": { @@ -819,8 +799,8 @@ "isAsync": false, "visibility": "public", "line": [ - 519, - 523 + 534, + 538 ] }, "toArray": { @@ -829,8 +809,8 @@ "isAsync": false, "visibility": "public", "line": [ - 528, - 530 + 543, + 545 ] } }, @@ -838,15 +818,15 @@ "text": "constructor(executor: t.PromiseExecutor) {\n super((resolve, reject) => {\n // @ts-expect-error\n return executor(resolve, reject);\n });\n }", "highlightText": "\u001b[38;2;102;217;239mconstructor\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mexecutor\u001b[38;2;248;248;242m:\u001b[39m t\u001b[38;2;248;248;242m.\u001b[39mPromiseExecutor\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mH\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mS\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239msuper\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresolve\u001b[38;2;248;248;242m,\u001b[39m reject\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mexecutor\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mresolve\u001b[38;2;248;248;242m,\u001b[39m reject\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", "line": [ - 41, - 46 + 47, + 52 ] } }, "ActiveRecord$Relation$Holder": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/relations/holder.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:12 +09:00" }, "class": [ { @@ -870,7 +850,7 @@ "ActiveRecord$Relation$Impl": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/relations/impl.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -886,12 +866,12 @@ "ActiveRecord$Associations$CollectionProxy$Base": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/associations/collection_proxy/base.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { - "text": "export class ActiveRecord$Associations$CollectionProxy$Base<\n T extends ActiveRecord$Base\n> extends ActiveRecord$Associations$CollectionProxy$Impl {\n /**\n * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\n * @description Method for getting results. Do not call it in any other method.\n */\n rueThen(\n onFulfilled: rt.PromiseResolve>,\n onRejected?: rt.PromiseReject\n ) {\n return this.superThen((value) => {\n /**\n * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\n * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\n */\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder, scope } = value;\n\n if (scope instanceof Promise) {\n scope.then((r) => {\n holder.scope = r as T[];\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n });\n } else {\n holder.scope = scope as T[];\n\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n }\n } else {\n /**\n * value is records ((e.g.) T | T[])\n * @description type error\n */\n // @ts-expect-error\n return onFulfilled(value);\n }\n }, onRejected);\n }\n\n /**\n * @description All methods are delegated to this instance\n * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\n */\n scope(): ActiveRecord$Associations$Relation<\n T,\n ActiveRecord$Associations$CollectionProxy$Holder,\n ActiveRecord$Relation\n > {\n return this.superThen(({ holder, scope }) => {\n return { scope, holder };\n });\n }\n\n /**\n * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\n */\n scoping(\n callback: (holder: ActiveRecord$Associations$CollectionProxy$Holder) => U | Promise\n ): Promise {\n return this.superThen(({ holder, scope }) => {\n if (scope instanceof Promise) {\n return scope.then((records) => {\n holder.scope = records as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(records as T[]);\n Evaluator.all(holder);\n return callback(holder);\n });\n } else {\n holder.scope = scope as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(scope);\n Evaluator.all(holder);\n return callback(holder);\n }\n });\n }\n\n /**\n * @description delegate to `scope`\n */\n where = (params: Partial): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n Object.assign(holder.scopeParams.where, params || {});\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n rewhere = (params: Partial): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.where = params || {};\n Object.assign(params, holder.foreignKeyData);\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n order = (params: U): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n Object.assign(holder.scopeParams.order, params || {});\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n reorder = (params: U): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.order = params || {};\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n reverseOrder = (): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n const orderParams = holder.scopeParams.order;\n if (isPresent(orderParams)) {\n Object.keys(orderParams).forEach((propName) => {\n const direction = orderParams[propName];\n if (['desc', 'DESC'].includes(direction)) {\n holder.scopeParams.order[propName] = 'asc';\n } else if (['asc', 'ASC'].includes(direction)) {\n holder.scopeParams.order[propName] = 'desc';\n }\n });\n } else {\n holder.scopeParams.order['id'] = 'asc';\n }\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n offset = (value: number): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.offset = value;\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n limit = (value: number): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.limit = value;\n });\n\n return this;\n }\n\n /**\n * @description Behavior is different from rails group\n * @description delegate to `scope`\n */\n group = (...props: Array): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n // @ts-expect-error\n holder.scopeParams.group = props;\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n unscope = (...scopeMethods: rmt.QueryMethods$ScopeMethods[]): this => {\n const { SCOPE_METHODS } = ActiveRecord$QueryMethods;\n\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n if (scopeMethods.length === 0) {\n const err = errObj({\n code: ErrCodes.ARGUMENT_IS_INVALID,\n message: `'unscope()' must contain arguments.`,\n });\n holder.errors.push(err);\n } else if (isSuperset(SCOPE_METHODS, scopeMethods)) {\n scopeMethods.forEach((scopeMethod) => {\n // @ts-expect-error\n if (holder._defaultScopeParams[scopeMethod]) {\n holder.scopeParams[scopeMethod] = Object.assign(\n {},\n // @ts-expect-error\n JSON.parse(JSON.stringify(holder._defaultScopeParams[scopeMethod]))\n );\n } else {\n holder.scopeParams[scopeMethod] = undefined;\n }\n });\n } else {\n const err = errObj({\n code: ErrCodes.ARGUMENT_IS_INVALID,\n message: `Called 'unscope()' with invalid unscoping argument '[${scopeMethods}]'. Valid arguments are '[${SCOPE_METHODS}]'.`,\n });\n holder.errors.push(err);\n }\n });\n\n return this;\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-empty-3F\n * @description use holder.proxy\n */\n isEmpty(): Promise {\n return this.scoping((holder) => {\n return holder.proxy.length === 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-find\n */\n find = (...ids: it.Record$PrimaryKey[]): Promise => {\n if (ids.length === 0) {\n throw errObj({\n code: ErrCodes.RECORD_NOT_FOUND,\n // @ts-expect-error\n message: `Could'nt find '${this.recordKlass.uniqueKey}' without an 'id'`,\n });\n } else {\n // @ts-expect-error\n return this.where({ id: ids }).scoping((holder) => {\n if (holder.scope.length === 0) {\n if (ids.length === 1) {\n throw errObj({\n code: ErrCodes.RECORD_NOT_FOUND,\n params: {\n // @ts-expect-error\n resource: this.recordKlass.uniqueKey,\n id: ids[0],\n },\n });\n } else {\n throw errObj({\n code: ErrCodes.RECORD_NOT_FOUND,\n // @ts-expect-error\n message: `Could't find all '${this.recordKlass.uniqueKey}' with 'id': [${ids}] (found 0 results, but was looking for ${ids.length})`,\n });\n }\n } else if (holder.scope.length === 1) {\n return holder.scope[0];\n } else {\n return holder.scope;\n }\n });\n }\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-any-3F\n * @description use holder.proxy\n */\n isAny(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.proxy.filter(filter || Boolean).length > 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-build\n * @description use holder.proxy\n */\n build(params?: Partial | Array>, yielder?: (self: T) => void): Promise {\n return this.scoping((holder) => {\n holder.flags.useProxy = true;\n if (Array.isArray(params)) {\n return params.map((param) => {\n const merged = Object.assign(param || {}, holder.foreignKeyData);\n const record = new this.recordKlass(merged);\n if (yielder) yielder(record);\n holder.proxy.push(record);\n return record;\n });\n } else {\n const merged = Object.assign(params || {}, holder.foreignKeyData);\n const record = new this.recordKlass(merged);\n if (yielder) yielder(record);\n holder.proxy.push(record);\n return record;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create\n * @description use holder.proxy\n */\n create(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n const merged = Object.assign(params || {}, holder.foreignKeyData);\n // @ts-ignore\n return this.recordKlass.create(merged, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n holder.proxy.push(self);\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create-21\n * @description use holder.proxy\n */\n createOrThrow(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n const merged = Object.assign(params || {}, holder.foreignKeyData);\n // @ts-expect-error\n return this.recordKlass.createOrThrow(merged, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n holder.proxy.push(self);\n });\n });\n }\n\n /**\n * The return value type is different from that of rails.\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-delete\n */\n delete(...recordsOrIds: T[] | it.Record$PrimaryKey[]): Promise {\n return this.scoping((holder) => {\n let recordIds: it.Record$PrimaryKey[] = [];\n\n recordsOrIds.forEach((recordOrId) => {\n if (recordOrId instanceof ActiveRecord$Base) {\n recordIds.push((recordOrId as T).id);\n } else {\n recordIds.push(recordOrId);\n }\n });\n\n return this.find(...recordIds).then((records: T[]) => {\n const foreignKey = Object.keys(holder.foreignKeyData)[0];\n const deletedRecords = records.map((record) => {\n // dependent: 'nullify'\n record.update({ [foreignKey]: undefined });\n return record;\n });\n const destroyedIds = deletedRecords.map((r) => r.id);\n const newScope = Array.from(holder.scope).reduce((acc, record) => {\n if (!destroyedIds.includes(record.id)) {\n acc.push(record);\n }\n return acc;\n }, []);\n holder.scope = Array.from(newScope);\n holder.proxy = Array.from(newScope);\n return deletedRecords;\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-destroy\n * @description use holder.proxy\n */\n destroy(...recordsOrIds: T[] | it.Record$PrimaryKey[]): Promise {\n return this.scoping((holder) => {\n let recordIds: it.Record$PrimaryKey[] = [];\n\n recordsOrIds.forEach((recordOrId) => {\n if (recordOrId instanceof ActiveRecord$Base) {\n recordIds.push((recordOrId as T).id);\n } else {\n recordIds.push(recordOrId);\n }\n });\n\n if (recordIds.length === 0) {\n /**\n * @description Make it behave the same as rails\n */\n return null;\n } else {\n return this.find(...recordIds).then((records: T[]) => {\n const destroyedRecords = records.map((record) => {\n return record.destroySync();\n });\n const destroyedIds = destroyedRecords.map((r) => r.id);\n const newScope = Array.from(holder.scope).reduce((acc, record) => {\n if (!destroyedIds.includes(record.id)) {\n acc.push(record);\n }\n return acc;\n }, []);\n holder.scope = Array.from(newScope);\n holder.proxy = Array.from(newScope);\n return destroyedRecords;\n });\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-pluck\n * @description use holder.proxy\n */\n pluck(...propNames: Array): Promise>> {\n return this.scoping>>((holder) => {\n const plucked = holder.proxy.map((record) => {\n let result;\n\n if (propNames.length === 0) {\n result = Object.keys(record).reduce((acc, propName: string) => {\n if (\n !propName.startsWith('_') &&\n !(typeof record[propName] === 'function') &&\n !(propName == 'errors')\n ) {\n acc.push(record[propName]);\n }\n return acc;\n }, [] as Array>);\n } else {\n result = propNames.reduce((acc, propName: string) => {\n acc.push(record[propName]);\n return acc;\n }, [] as Array>);\n }\n return result;\n });\n\n if (propNames.length === 1) {\n return plucked.flat();\n } else {\n return plucked;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-count\n */\n count(\n propName?: keyof U,\n filter?: (self: T) => boolean\n ): Promise {\n return this.superThen(({ holder }) => {\n // @ts-expect-error\n return this.recordKlass.all().superThen(({ holder: newHolder }) => {\n // deep coppy\n newHolder.scopeParams = Object.assign({}, JSON.parse(JSON.stringify(holder.scopeParams)));\n Object.assign(newHolder.scopeParams.where, holder.foreignKeyData);\n Evaluator.all(newHolder);\n\n if (isPresent(newHolder.groupedRecords)) {\n return Object.keys(newHolder.groupedRecords).reduce((acc, key) => {\n const records = newHolder.groupedRecords[key];\n acc[key] = records.length;\n return acc;\n }, {});\n } else {\n let result;\n\n if (propName) {\n result = newHolder.scope.filter((record) => record[propName]);\n } else {\n result = newHolder.scope;\n }\n\n if (filter) result = result.filter(filter);\n return result.length;\n }\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-first\n * @description use holder.proxy\n */\n first = (limit?: number): Promise => {\n if (!limit) limit = 1;\n return this.scoping((holder) => {\n const records = holder.proxy;\n if (records.length === 0) {\n return null;\n } else {\n const slicedRecords = records.slice(0, limit);\n\n if (limit === 1) return slicedRecords[0];\n return slicedRecords;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-include-3F\n * @description use holder.proxy\n */\n isInclude = (record: T | T[] | Promise): Promise => {\n return this.scoping((holder) => {\n const allRecordIds = holder.proxy.map((r) => r['id']);\n if (record instanceof Promise) {\n return record.then((recordVal) => {\n if (recordVal && !Array.isArray(recordVal)) {\n return allRecordIds.includes(recordVal['id']);\n } else {\n /**\n * @description Same specifications as rails\n */\n return false;\n }\n });\n } else {\n if (record && !Array.isArray(record)) {\n return allRecordIds.includes(record['id']);\n } else {\n /**\n * @description Same specifications as rails\n */\n return false;\n }\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-last\n * @description use holder.proxy\n */\n last = (limit?: number): Promise => {\n if (!limit) limit = 1;\n return this.scoping((holder) => {\n const records = holder.proxy;\n if (records.length === 0) {\n return null;\n } else {\n const slicedRecords = records.reverse().slice(0, limit).reverse();\n\n if (limit === 1) return slicedRecords[0];\n return slicedRecords;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-many-3F\n * @description use holder.proxy\n */\n isMany(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.proxy.filter(filter || Boolean).length > 1;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-size\n * @description use holder.proxy\n */\n size(): Promise {\n return this.scoping((holder) => {\n if (isPresent(holder.groupedRecords)) {\n return Object.keys(holder.groupedRecords).reduce((acc, key) => {\n const records = holder.groupedRecords[key];\n acc[key] = records.length;\n return acc;\n }, {});\n } else {\n return holder.proxy.length;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toA(): Promise {\n return this.scoping((holder) => {\n return holder.scope;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toArray(): Promise {\n return this.toA();\n }\n\n _currentScope(): Promise {\n return this.scoping((holder) => {\n if (holder.flags.useProxy) {\n return holder.proxy;\n } else {\n return holder.scope;\n }\n });\n }\n}", - "highlightText": "\u001b[38;2;102;217;239mexport\u001b[39m \u001b[38;2;102;217;239mclass\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Associations$CollectionProxy$Base\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Base\u001b[39m\n\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Associations$CollectionProxy$Impl\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\u001b[39m\n\u001b[38;2;130;146;162m * @description Method for getting results. Do not call it in any other method.\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n onFulfilled\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m ActiveRecord$Relation\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\u001b[39m\n\u001b[38;2;130;146;162m * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m r \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * value is records ((e.g.) T | T[])\u001b[39m\n\u001b[38;2;130;146;162m * @description type error\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description All methods are delegated to this instance\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m ActiveRecord$Associations$Relation\u001b[38;2;248;248;242m<\u001b[39m\n \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n ActiveRecord$Associations$CollectionProxy$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n ActiveRecord$Relation\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m scope\u001b[38;2;248;248;242m,\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m:\u001b[39m ActiveRecord$Associations$CollectionProxy$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m records \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n where \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mit\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mwhere\u001b[38;2;248;248;242m,\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n rewhere \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mit\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mwhere \u001b[38;2;248;248;242m=\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n order \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rmt\u001b[38;2;248;248;242m.\u001b[39mQueryMethods$Directions \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m,\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n reorder \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rmt\u001b[38;2;248;248;242m.\u001b[39mQueryMethods$Directions \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder \u001b[38;2;248;248;242m=\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n reverseOrder \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m orderParams \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39morderParams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39morderParams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mpropName\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m direction \u001b[38;2;248;248;242m=\u001b[39m orderParams\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'desc'\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;166;226;46m'DESC'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdirection\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'asc'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'asc'\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;166;226;46m'ASC'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdirection\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'desc'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'asc'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n offset \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39moffset \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n limit \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mlimit \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Behavior is different from rails group\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n group \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46many\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mprops\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mkeyof\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mgroup \u001b[38;2;248;248;242m=\u001b[39m props\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n unscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mscopeMethods\u001b[38;2;248;248;242m:\u001b[39m rmt\u001b[38;2;248;248;242m.\u001b[39mQueryMethods$ScopeMethods\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;249;38;114mSCOPE_METHODS\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m ActiveRecord$QueryMethods\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscopeMethods\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m err \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mARGUMENT_IS_INVALID\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46m'unscope()' must contain arguments.\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39merrors\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misSuperset\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;249;38;114mSCOPE_METHODS\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m scopeMethods\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scopeMethods\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mscopeMethod\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39m_defaultScopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mparse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mstringify\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39m_defaultScopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mundefined\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m err \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mARGUMENT_IS_INVALID\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46mCalled 'unscope()' with invalid unscoping argument '[\u001b[39m\u001b[38;2;248;248;242m${\u001b[39mscopeMethods\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m]'. Valid arguments are '[\u001b[39m\u001b[38;2;248;248;242m${\u001b[39m\u001b[38;2;249;38;114mSCOPE_METHODS\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m]'.\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39merrors\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-empty-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misEmpty\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-find\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n find \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mit\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mids\u001b[38;2;248;248;242m:\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mids\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mRECORD_NOT_FOUND\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46mCould'nt find '\u001b[39m\u001b[38;2;248;248;242m${\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39muniqueKey\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m' without an 'id'\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mwhere\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m id\u001b[38;2;248;248;242m:\u001b[39m ids \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mids\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mRECORD_NOT_FOUND\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n params\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n resource\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39muniqueKey\u001b[38;2;248;248;242m,\u001b[39m\n id\u001b[38;2;248;248;242m:\u001b[39m ids\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mRECORD_NOT_FOUND\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46mCould't find all '\u001b[39m\u001b[38;2;248;248;242m${\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39muniqueKey\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m' with 'id': [\u001b[39m\u001b[38;2;248;248;242m${\u001b[39mids\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m] (found 0 results, but was looking for \u001b[39m\u001b[38;2;248;248;242m${\u001b[39mids\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m)\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-any-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misAny\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-build\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mbuild\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mflags\u001b[38;2;248;248;242m.\u001b[39museProxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m params\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create-21\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * The return value type is different from that of rails.\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-delete\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mdelete\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordsOrIds\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m recordIds\u001b[38;2;248;248;242m:\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n recordsOrIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Base\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfind\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordIds\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m foreignKey \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m deletedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// dependent: 'nullify'\u001b[39m\n record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mforeignKey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mundefined\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyedIds \u001b[38;2;248;248;242m=\u001b[39m deletedRecords\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m r\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m newScope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m record\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mdestroyedIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m deletedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-destroy\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdestroy\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordsOrIds\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m recordIds\u001b[38;2;248;248;242m:\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n recordsOrIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Base\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordIds\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Make it behave the same as rails\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfind\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordIds\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mdestroySync\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyedIds \u001b[38;2;248;248;242m=\u001b[39m destroyedRecords\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m r\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m newScope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m record\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mdestroyedIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m destroyedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-pluck\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mpluck\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m it\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mpropNames\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mkeyof\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mct\u001b[38;2;248;248;242m.\u001b[39mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mct\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m plucked \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m result\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mpropNames\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m propName\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;248;248;242m!\u001b[39mpropName\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mstartsWith\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;166;226;46m'_'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mtypeof\u001b[39m record\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'function'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mpropName \u001b[38;2;248;248;242m==\u001b[39m \u001b[38;2;166;226;46m'errors'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mct\u001b[38;2;248;248;242m.\u001b[39mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m propNames\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m propName\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mct\u001b[38;2;248;248;242m.\u001b[39mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mpropNames\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m plucked\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mflat\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m plucked\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-count\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcount\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m it\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n propName\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mkeyof\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n filter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m:\u001b[39m newHolder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// deep coppy\u001b[39m\n newHolder\u001b[38;2;248;248;242m.\u001b[39mscopeParams \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mparse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mstringify\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mwhere\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m key\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m newHolder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n acc\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m result\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mpropName\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m newHolder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m record\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m newHolder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m)\u001b[39m result \u001b[38;2;248;248;242m=\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-first\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n first \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mlimit\u001b[38;2;248;248;242m)\u001b[39m limit \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m slicedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mslice\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m limit\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-include-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n isInclude \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m allRecordIds \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m r\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordVal\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordVal \u001b[38;2;248;248;242m&&\u001b[39m \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordVal\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m allRecordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordVal\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Same specifications as rails\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;174;129;255mfalse\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord \u001b[38;2;248;248;242m&&\u001b[39m \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m allRecordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Same specifications as rails\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;174;129;255mfalse\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-last\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n last \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mlimit\u001b[38;2;248;248;242m)\u001b[39m limit \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m slicedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreverse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mslice\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m limit\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreverse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-many-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misMany\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-size\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116msize\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m|\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116mkey\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m key\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n acc\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;230;219;116m_currentScope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mflags\u001b[38;2;248;248;242m.\u001b[39museProxy\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\u001b[38;2;248;248;242m}\u001b[39m", + "text": "export class ActiveRecord$Associations$CollectionProxy$Base<\n T extends ActiveRecord$Base\n> extends ActiveRecord$Associations$CollectionProxy$Impl {\n /**\n * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\n * @description Method for getting results. Do not call it in any other method.\n */\n rueThen(\n onFulfilled: rt.PromiseResolve>,\n onRejected?: rt.PromiseReject\n ) {\n return this.superThen((value) => {\n /**\n * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\n * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\n */\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder, scope } = value;\n\n if (scope instanceof Promise) {\n scope.rueThen((r) => {\n holder.scope = r as T[];\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n });\n } else {\n holder.scope = scope as T[];\n\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n }\n } else {\n /**\n * value is records ((e.g.) T | T[])\n * @description type error\n */\n // @ts-expect-error\n return onFulfilled(value);\n }\n }, onRejected);\n }\n\n /**\n * @description All methods are delegated to this instance\n * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\n */\n scope(): ActiveRecord$Associations$Relation<\n T,\n ActiveRecord$Associations$CollectionProxy$Holder,\n ActiveRecord$Relation\n > {\n return this.superThen(({ holder, scope }) => {\n return { scope, holder };\n });\n }\n\n /**\n * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\n */\n scoping(\n callback: (holder: ActiveRecord$Associations$CollectionProxy$Holder) => U | Promise\n ): Promise {\n return this.superThen(({ holder, scope }) => {\n if (scope instanceof Promise) {\n return scope.rueThen((records) => {\n holder.scope = records as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(records as T[]);\n Evaluator.all(holder);\n return callback(holder);\n });\n } else {\n holder.scope = scope as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(scope);\n Evaluator.all(holder);\n return callback(holder);\n }\n });\n }\n\n /**\n * @description delegate to `scope`\n */\n where = (params: Partial): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n Object.assign(holder.scopeParams.where, params || {});\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n rewhere = (params: Partial): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.where = params || {};\n Object.assign(params, holder.foreignKeyData);\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n order = (params: U): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n Object.assign(holder.scopeParams.order, params || {});\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n reorder = (params: U): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.order = params || {};\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n reverseOrder = (): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n const orderParams = holder.scopeParams.order;\n if (isPresent(orderParams)) {\n Object.keys(orderParams).forEach((propName) => {\n const direction = orderParams[propName];\n if (['desc', 'DESC'].includes(direction)) {\n holder.scopeParams.order[propName] = 'asc';\n } else if (['asc', 'ASC'].includes(direction)) {\n holder.scopeParams.order[propName] = 'desc';\n }\n });\n } else {\n holder.scopeParams.order['id'] = 'asc';\n }\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n offset = (value: number): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.offset = value;\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n limit = (value: number): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n holder.scopeParams.limit = value;\n });\n\n return this;\n }\n\n /**\n * @description Behavior is different from rails group\n * @description delegate to `scope`\n */\n group = (...props: Array): this => {\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n // @ts-expect-error\n holder.scopeParams.group = props;\n });\n\n return this;\n }\n\n /**\n * @description delegate to `scope`\n */\n unscope = (...scopeMethods: rmt.QueryMethods$ScopeMethods[]): this => {\n const { SCOPE_METHODS } = ActiveRecord$QueryMethods;\n\n // @ts-expect-error\n this.scope().superThen(({ holder }) => {\n if (scopeMethods.length === 0) {\n const err = errObj({\n code: ErrCodes.ARGUMENT_IS_INVALID,\n message: `'unscope()' must contain arguments.`,\n });\n holder.errors.push(err);\n } else if (isSuperset(SCOPE_METHODS, scopeMethods)) {\n scopeMethods.forEach((scopeMethod) => {\n // @ts-expect-error\n if (holder._defaultScopeParams[scopeMethod]) {\n holder.scopeParams[scopeMethod] = Object.assign(\n {},\n // @ts-expect-error\n JSON.parse(JSON.stringify(holder._defaultScopeParams[scopeMethod]))\n );\n } else {\n holder.scopeParams[scopeMethod] = undefined;\n }\n });\n } else {\n const err = errObj({\n code: ErrCodes.ARGUMENT_IS_INVALID,\n message: `Called 'unscope()' with invalid unscoping argument '[${scopeMethods}]'. Valid arguments are '[${SCOPE_METHODS}]'.`,\n });\n holder.errors.push(err);\n }\n });\n\n return this;\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-empty-3F\n * @description use holder.proxy\n */\n isEmpty(): Promise {\n return this.scoping((holder) => {\n return holder.proxy.length === 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-find\n */\n find = (...ids: it.Record$PrimaryKey[]): Promise => {\n if (ids.length === 0) {\n throw errObj({\n code: ErrCodes.RECORD_NOT_FOUND,\n // @ts-expect-error\n message: `Could'nt find '${this.recordKlass.uniqueKey}' without an 'id'`,\n });\n } else {\n // @ts-expect-error\n return this.where({ id: ids }).scoping((holder) => {\n if (holder.scope.length === 0) {\n if (ids.length === 1) {\n throw errObj({\n code: ErrCodes.RECORD_NOT_FOUND,\n params: {\n // @ts-expect-error\n resource: this.recordKlass.uniqueKey,\n id: ids[0],\n },\n });\n } else {\n throw errObj({\n code: ErrCodes.RECORD_NOT_FOUND,\n // @ts-expect-error\n message: `Could't find all '${this.recordKlass.uniqueKey}' with 'id': [${ids}] (found 0 results, but was looking for ${ids.length})`,\n });\n }\n } else if (holder.scope.length === 1) {\n return holder.scope[0];\n } else {\n return holder.scope;\n }\n });\n }\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-any-3F\n * @description use holder.proxy\n */\n isAny(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.proxy.filter(filter || Boolean).length > 0;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-build\n * @description use holder.proxy\n */\n build(params?: Partial | Array>, yielder?: (self: T) => void): Promise {\n return this.scoping((holder) => {\n holder.flags.useProxy = true;\n if (Array.isArray(params)) {\n return params.map((param) => {\n const merged = Object.assign(param || {}, holder.foreignKeyData);\n const record = new this.recordKlass(merged);\n if (yielder) yielder(record);\n holder.proxy.push(record);\n return record;\n });\n } else {\n const merged = Object.assign(params || {}, holder.foreignKeyData);\n const record = new this.recordKlass(merged);\n if (yielder) yielder(record);\n holder.proxy.push(record);\n return record;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create\n * @description use holder.proxy\n */\n create(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n const merged = Object.assign(params || {}, holder.foreignKeyData);\n // @ts-ignore\n return this.recordKlass.create(merged, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n holder.proxy.push(self);\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create-21\n * @description use holder.proxy\n */\n createOrThrow(\n params?: Partial | Array>,\n yielder?: (self: T) => void\n ): Promise {\n return this.scoping((holder) => {\n const merged = Object.assign(params || {}, holder.foreignKeyData);\n // @ts-expect-error\n return this.recordKlass.createOrThrow(merged, (self) => {\n if (yielder) yielder(self);\n holder.scope.push(self);\n holder.proxy.push(self);\n });\n });\n }\n\n /**\n * The return value type is different from that of rails.\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-delete\n */\n delete(...recordsOrIds: T[] | it.Record$PrimaryKey[]): Promise {\n return this.scoping((holder) => {\n let recordIds: it.Record$PrimaryKey[] = [];\n\n recordsOrIds.forEach((recordOrId) => {\n if (recordOrId instanceof ActiveRecord$Base) {\n recordIds.push((recordOrId as T).id);\n } else {\n recordIds.push(recordOrId);\n }\n });\n\n return this.find(...recordIds).then((records: T[]) => {\n const foreignKey = Object.keys(holder.foreignKeyData)[0];\n const deletedRecords = records.map((record) => {\n // dependent: 'nullify'\n record.update({ [foreignKey]: undefined });\n return record;\n });\n const destroyedIds = deletedRecords.map((r) => r.id);\n const newScope = Array.from(holder.scope).reduce((acc, record) => {\n if (!destroyedIds.includes(record.id)) {\n acc.push(record);\n }\n return acc;\n }, []);\n holder.scope = Array.from(newScope);\n holder.proxy = Array.from(newScope);\n return deletedRecords;\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-destroy\n * @description use holder.proxy\n */\n destroy(...recordsOrIds: T[] | it.Record$PrimaryKey[]): Promise {\n return this.scoping((holder) => {\n let recordIds: it.Record$PrimaryKey[] = [];\n\n recordsOrIds.forEach((recordOrId) => {\n if (recordOrId instanceof ActiveRecord$Base) {\n recordIds.push((recordOrId as T).id);\n } else {\n recordIds.push(recordOrId);\n }\n });\n\n if (recordIds.length === 0) {\n /**\n * @description Make it behave the same as rails\n */\n return null;\n } else {\n return this.find(...recordIds).then((records: T[]) => {\n const destroyedRecords = records.map((record) => {\n return record.destroySync();\n });\n const destroyedIds = destroyedRecords.map((r) => r.id);\n const newScope = Array.from(holder.scope).reduce((acc, record) => {\n if (!destroyedIds.includes(record.id)) {\n acc.push(record);\n }\n return acc;\n }, []);\n holder.scope = Array.from(newScope);\n holder.proxy = Array.from(newScope);\n return destroyedRecords;\n });\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-pluck\n * @description use holder.proxy\n */\n pluck(...propNames: Array): Promise>> {\n return this.scoping>>((holder) => {\n const plucked = holder.proxy.map((record) => {\n let result;\n\n if (propNames.length === 0) {\n result = Object.keys(record).reduce((acc, propName: string) => {\n if (\n !propName.startsWith('_') &&\n !(typeof record[propName] === 'function') &&\n !(propName == 'errors')\n ) {\n acc.push(record[propName]);\n }\n return acc;\n }, [] as Array>);\n } else {\n result = propNames.reduce((acc, propName: string) => {\n acc.push(record[propName]);\n return acc;\n }, [] as Array>);\n }\n return result;\n });\n\n if (propNames.length === 1) {\n return plucked.flat();\n } else {\n return plucked;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-count\n */\n count(\n propName?: keyof U,\n filter?: (self: T) => boolean\n ): Promise {\n return this.superThen(({ holder }) => {\n // @ts-expect-error\n return this.recordKlass.all().superThen(({ holder: newHolder }) => {\n // deep coppy\n newHolder.scopeParams = Object.assign({}, JSON.parse(JSON.stringify(holder.scopeParams)));\n Object.assign(newHolder.scopeParams.where, holder.foreignKeyData);\n Evaluator.all(newHolder);\n\n if (isPresent(newHolder.groupedRecords)) {\n return Object.keys(newHolder.groupedRecords).reduce((acc, key) => {\n const records = newHolder.groupedRecords[key];\n acc[key] = records.length;\n return acc;\n }, {});\n } else {\n let result;\n\n if (propName) {\n result = newHolder.scope.filter((record) => record[propName]);\n } else {\n result = newHolder.scope;\n }\n\n if (filter) result = result.filter(filter);\n return result.length;\n }\n });\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-first\n * @description use holder.proxy\n */\n first = (limit?: number): Promise => {\n if (!limit) limit = 1;\n return this.scoping((holder) => {\n const records = holder.proxy;\n if (records.length === 0) {\n return null;\n } else {\n const slicedRecords = records.slice(0, limit);\n\n if (limit === 1) return slicedRecords[0];\n return slicedRecords;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-include-3F\n * @description use holder.proxy\n */\n isInclude = (record: T | T[] | Promise): Promise => {\n return this.scoping((holder) => {\n const allRecordIds = holder.proxy.map((r) => r['id']);\n if (record instanceof Promise) {\n return record.then((recordVal) => {\n if (recordVal && !Array.isArray(recordVal)) {\n return allRecordIds.includes(recordVal['id']);\n } else {\n /**\n * @description Same specifications as rails\n */\n return false;\n }\n });\n } else {\n if (record && !Array.isArray(record)) {\n return allRecordIds.includes(record['id']);\n } else {\n /**\n * @description Same specifications as rails\n */\n return false;\n }\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-last\n * @description use holder.proxy\n */\n last = (limit?: number): Promise => {\n if (!limit) limit = 1;\n return this.scoping((holder) => {\n const records = holder.proxy;\n if (records.length === 0) {\n return null;\n } else {\n const slicedRecords = records.reverse().slice(0, limit).reverse();\n\n if (limit === 1) return slicedRecords[0];\n return slicedRecords;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-many-3F\n * @description use holder.proxy\n */\n isMany(filter?: (record: T) => boolean): Promise {\n return this.scoping((holder) => {\n return holder.proxy.filter(filter || Boolean).length > 1;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-size\n * @description use holder.proxy\n */\n size(): Promise {\n return this.scoping((holder) => {\n if (isPresent(holder.groupedRecords)) {\n return Object.keys(holder.groupedRecords).reduce((acc, key) => {\n const records = holder.groupedRecords[key];\n acc[key] = records.length;\n return acc;\n }, {});\n } else {\n return holder.proxy.length;\n }\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toA(): Promise {\n return this.scoping((holder) => {\n return holder.scope;\n });\n }\n\n /**\n * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\n */\n toArray(): Promise {\n return this.toA();\n }\n\n _currentScope(): Promise {\n return this.scoping((holder) => {\n if (holder.flags.useProxy) {\n return holder.proxy;\n } else {\n return holder.scope;\n }\n });\n }\n}", + "highlightText": "\u001b[38;2;102;217;239mexport\u001b[39m \u001b[38;2;102;217;239mclass\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Associations$CollectionProxy$Base\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\n\u001b[38;2;230;219;116m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m ActiveRecord$Base\u001b[39m\n\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Associations$CollectionProxy$Impl\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://gist.github.com/domenic/8ed6048b187ee8f2ec75\u001b[39m\n\u001b[38;2;130;146;162m * @description Method for getting results. Do not call it in any other method.\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n onFulfilled\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m ActiveRecord$Relation\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\u001b[39m\n\u001b[38;2;130;146;162m * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m r \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * value is records ((e.g.) T | T[])\u001b[39m\n\u001b[38;2;130;146;162m * @description type error\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description All methods are delegated to this instance\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m ActiveRecord$Associations$Relation\u001b[38;2;248;248;242m<\u001b[39m\n \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n ActiveRecord$Associations$CollectionProxy$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n ActiveRecord$Relation\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m scope\u001b[38;2;248;248;242m,\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://github.com/rails/rails/blob/5aaaa1630ae9a71b3c3ecc4dc46074d678c08d67/activerecord/lib/active_record/associations/collection_proxy.rb#L1100-L1109\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m:\u001b[39m ActiveRecord$Associations$CollectionProxy$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m records \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n where \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mit\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mwhere\u001b[38;2;248;248;242m,\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n rewhere \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mit\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mwhere \u001b[38;2;248;248;242m=\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n order \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rmt\u001b[38;2;248;248;242m.\u001b[39mQueryMethods$Directions \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m,\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n reorder \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rmt\u001b[38;2;248;248;242m.\u001b[39mQueryMethods$Directions \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder \u001b[38;2;248;248;242m=\u001b[39m params \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n reverseOrder \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m orderParams \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39morderParams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39morderParams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mpropName\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m direction \u001b[38;2;248;248;242m=\u001b[39m orderParams\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'desc'\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;166;226;46m'DESC'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdirection\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'asc'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'asc'\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;166;226;46m'ASC'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mdirection\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'desc'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39morder\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46m'asc'\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n offset \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39moffset \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n limit \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mlimit \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Behavior is different from rails group\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n group \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46many\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mprops\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mkeyof\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mgroup \u001b[38;2;248;248;242m=\u001b[39m props\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description delegate to `scope`\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n unscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mscopeMethods\u001b[38;2;248;248;242m:\u001b[39m rmt\u001b[38;2;248;248;242m.\u001b[39mQueryMethods$ScopeMethods\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;249;38;114mSCOPE_METHODS\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m ActiveRecord$QueryMethods\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscopeMethods\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m err \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mARGUMENT_IS_INVALID\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46m'unscope()' must contain arguments.\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39merrors\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misSuperset\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;249;38;114mSCOPE_METHODS\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m scopeMethods\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scopeMethods\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mscopeMethod\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39m_defaultScopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mparse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mstringify\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39m_defaultScopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m[\u001b[39mscopeMethod\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mundefined\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m err \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mARGUMENT_IS_INVALID\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46mCalled 'unscope()' with invalid unscoping argument '[\u001b[39m\u001b[38;2;248;248;242m${\u001b[39mscopeMethods\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m]'. Valid arguments are '[\u001b[39m\u001b[38;2;248;248;242m${\u001b[39m\u001b[38;2;249;38;114mSCOPE_METHODS\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m]'.\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39merrors\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39merr\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-empty-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misEmpty\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-find\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n find \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;102;217;239mextends\u001b[39m \u001b[38;2;230;219;116mit\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mids\u001b[38;2;248;248;242m:\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mids\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mRECORD_NOT_FOUND\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46mCould'nt find '\u001b[39m\u001b[38;2;248;248;242m${\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39muniqueKey\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m' without an 'id'\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mwhere\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m id\u001b[38;2;248;248;242m:\u001b[39m ids \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mids\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mRECORD_NOT_FOUND\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n params\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n resource\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39muniqueKey\u001b[38;2;248;248;242m,\u001b[39m\n id\u001b[38;2;248;248;242m:\u001b[39m ids\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mthrow\u001b[39m \u001b[38;2;230;219;116merrObj\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\n code\u001b[38;2;248;248;242m:\u001b[39m ErrCodes\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;249;38;114mRECORD_NOT_FOUND\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n message\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;166;226;46mCould't find all '\u001b[39m\u001b[38;2;248;248;242m${\u001b[39m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39muniqueKey\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m' with 'id': [\u001b[39m\u001b[38;2;248;248;242m${\u001b[39mids\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m] (found 0 results, but was looking for \u001b[39m\u001b[38;2;248;248;242m${\u001b[39mids\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;166;226;46m)\u001b[39m\u001b[38;2;166;226;46m`\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-any-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misAny\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-build\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mbuild\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mflags\u001b[38;2;248;248;242m.\u001b[39museProxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255mtrue\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m params\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparam \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m record \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;102;217;239mnew\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrecordKlass\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m// @ts-ignore\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-create-21\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n params\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m Partial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mPartial\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n yielder\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;102;217;239mvoid\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m merged \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mparams \u001b[38;2;248;248;242m||\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mcreateOrThrow\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mmerged\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39myielder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;230;219;116myielder\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * The return value type is different from that of rails.\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-delete\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mdelete\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordsOrIds\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m recordIds\u001b[38;2;248;248;242m:\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n recordsOrIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Base\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfind\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordIds\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m foreignKey \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m deletedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// dependent: 'nullify'\u001b[39m\n record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mupdate\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mforeignKey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mundefined\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyedIds \u001b[38;2;248;248;242m=\u001b[39m deletedRecords\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m r\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m newScope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m record\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mdestroyedIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m deletedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-destroy\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mdestroy\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordsOrIds\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m recordIds\u001b[38;2;248;248;242m:\u001b[39m it\u001b[38;2;248;248;242m.\u001b[39mRecord$PrimaryKey\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n recordsOrIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mforEach\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116mActiveRecord$Base\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n recordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordOrId\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordIds\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Make it behave the same as rails\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfind\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mrecordIds\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mdestroySync\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m destroyedIds \u001b[38;2;248;248;242m=\u001b[39m destroyedRecords\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m r\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m newScope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m record\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mdestroyedIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m.\u001b[39mid\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewScope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m destroyedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-pluck\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mpluck\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m it\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m...\u001b[39mpropNames\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;102;217;239mkeyof\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mct\u001b[38;2;248;248;242m.\u001b[39mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116mct\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>>>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m plucked \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m result\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mpropNames\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m propName\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;248;248;242m!\u001b[39mpropName\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mstartsWith\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;166;226;46m'_'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;102;217;239mtypeof\u001b[39m record\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'function'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mpropName \u001b[38;2;248;248;242m==\u001b[39m \u001b[38;2;166;226;46m'errors'\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mct\u001b[38;2;248;248;242m.\u001b[39mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m propNames\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m propName\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n acc\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mpush\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m<\u001b[39mct\u001b[38;2;248;248;242m.\u001b[39mvalueOf\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mpropNames\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m plucked\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mflat\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m plucked\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-count\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mcount\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;102;217;239mextends\u001b[39m\u001b[38;2;230;219;116m it\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mRecord$Params\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n propName\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;102;217;239mkeyof\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n filter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mself\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mrecordKlass\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m:\u001b[39m newHolder \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m// deep coppy\u001b[39m\n newHolder\u001b[38;2;248;248;242m.\u001b[39mscopeParams \u001b[38;2;248;248;242m=\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mparse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;249;38;114mJSON\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mstringify\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116massign\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m.\u001b[39mscopeParams\u001b[38;2;248;248;242m.\u001b[39mwhere\u001b[38;2;248;248;242m,\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mforeignKeyData\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mnewHolder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m key\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m newHolder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n acc\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mlet\u001b[39m result\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mpropName\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m newHolder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m record\u001b[38;2;248;248;242m[\u001b[39mpropName\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n result \u001b[38;2;248;248;242m=\u001b[39m newHolder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m)\u001b[39m result \u001b[38;2;248;248;242m=\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m result\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-first\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n first \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mlimit\u001b[38;2;248;248;242m)\u001b[39m limit \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m slicedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mslice\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m limit\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-include-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n isInclude \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m allRecordIds \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mmap\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m r\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m record\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordVal\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecordVal \u001b[38;2;248;248;242m&&\u001b[39m \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordVal\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m allRecordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecordVal\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Same specifications as rails\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;174;129;255mfalse\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord \u001b[38;2;248;248;242m&&\u001b[39m \u001b[38;2;248;248;242m!\u001b[39m\u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116misArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m allRecordIds\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mincludes\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'id'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Same specifications as rails\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;174;129;255mfalse\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-last\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n last \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m!\u001b[39mlimit\u001b[38;2;248;248;242m)\u001b[39m limit \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m slicedRecords \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreverse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mslice\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m limit\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreverse\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mlimit \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m slicedRecords\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-many-3F\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116misMany\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mrecord\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mboolean\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mfilter\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mfilter \u001b[38;2;248;248;242m||\u001b[39m Boolean\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m1\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html#method-i-size\u001b[39m\n\u001b[38;2;130;146;162m * @description use holder.proxy\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116msize\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m \u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mnumber\u001b[39m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m|\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;230;219;116mkey\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mstring\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m:\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;166;226;46mnumber\u001b[39m\u001b[38;2;230;219;116m \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;230;219;116misPresent\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m Object\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mreduce\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39macc\u001b[38;2;248;248;242m,\u001b[39m key\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m records \u001b[38;2;248;248;242m=\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n acc\u001b[38;2;248;248;242m[\u001b[39mkey\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m records\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m acc\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m.\u001b[39mlength\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @see https://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-to_a\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;230;219;116mtoArray\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mtoA\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\n \u001b[38;2;230;219;116m_currentScope\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mflags\u001b[38;2;248;248;242m.\u001b[39museProxy\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n\u001b[38;2;248;248;242m}\u001b[39m", "line": [ 24, 670 @@ -900,8 +880,8 @@ ], "instance": { "rueThen": { - "text": "rueThen(\n onFulfilled: rt.PromiseResolve>,\n onRejected?: rt.PromiseReject\n ) {\n return this.superThen((value) => {\n /**\n * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\n * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\n */\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder, scope } = value;\n\n if (scope instanceof Promise) {\n scope.then((r) => {\n holder.scope = r as T[];\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n });\n } else {\n holder.scope = scope as T[];\n\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n }\n } else {\n /**\n * value is records ((e.g.) T | T[])\n * @description type error\n */\n // @ts-expect-error\n return onFulfilled(value);\n }\n }, onRejected);\n }", - "highlightText": "\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n onFulfilled\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m ActiveRecord$Relation\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\u001b[39m\n\u001b[38;2;130;146;162m * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m r \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * value is records ((e.g.) T | T[])\u001b[39m\n\u001b[38;2;130;146;162m * @description type error\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", + "text": "rueThen(\n onFulfilled: rt.PromiseResolve>,\n onRejected?: rt.PromiseReject\n ) {\n return this.superThen((value) => {\n /**\n * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\n * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\n */\n if (\n typeof value === 'object' &&\n value != null &&\n value['holder'] &&\n value['holder']['isHolder']\n ) {\n const { holder, scope } = value;\n\n if (scope instanceof Promise) {\n scope.rueThen((r) => {\n holder.scope = r as T[];\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n });\n } else {\n holder.scope = scope as T[];\n\n Evaluator.all(holder);\n\n if (Object.keys(holder.groupedRecords).length > 0) {\n return onFulfilled(holder.groupedRecords);\n } else {\n return onFulfilled(holder.scope);\n }\n }\n } else {\n /**\n * value is records ((e.g.) T | T[])\n * @description type error\n */\n // @ts-expect-error\n return onFulfilled(value);\n }\n }, onRejected);\n }", + "highlightText": "\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n onFulfilled\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseResolve\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m ActiveRecord$Relation\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>>\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m\n onRejected\u001b[38;2;248;248;242m?\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m rt\u001b[38;2;248;248;242m.\u001b[39mPromiseReject\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;166;226;46many\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * If you use the `ActiveRecord$QueryMethods` methods, it will enter this branch\u001b[39m\n\u001b[38;2;130;146;162m * There are times when 「 value['holder'] instanceof ActiveRecord$Relation$Holder 」 cannot evaluate correctly. (Cause unknown)\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;102;217;239mtypeof\u001b[39m value \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;166;226;46m'object'\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value \u001b[38;2;248;248;242m!=\u001b[39m \u001b[38;2;102;217;239mnull\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m \u001b[38;2;248;248;242m&&\u001b[39m\n value\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'holder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;166;226;46m'isHolder'\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mconst\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;248;248;242m=\u001b[39m value\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mr\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m r \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mgroupedRecords\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * value is records ((e.g.) T | T[])\u001b[39m\n\u001b[38;2;130;146;162m * @description type error\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;130;146;162m// @ts-expect-error\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116monFulfilled\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mvalue\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m,\u001b[39m onRejected\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", "isAsync": false, "visibility": "public", "line": [ @@ -920,8 +900,8 @@ ] }, "scoping": { - "text": "scoping(\n callback: (holder: ActiveRecord$Associations$CollectionProxy$Holder) => U | Promise\n ): Promise {\n return this.superThen(({ holder, scope }) => {\n if (scope instanceof Promise) {\n return scope.then((records) => {\n holder.scope = records as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(records as T[]);\n Evaluator.all(holder);\n return callback(holder);\n });\n } else {\n holder.scope = scope as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(scope);\n Evaluator.all(holder);\n return callback(holder);\n }\n });\n }", - "highlightText": "\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m:\u001b[39m ActiveRecord$Associations$CollectionProxy$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mthen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m records \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", + "text": "scoping(\n callback: (holder: ActiveRecord$Associations$CollectionProxy$Holder) => U | Promise\n ): Promise {\n return this.superThen(({ holder, scope }) => {\n if (scope instanceof Promise) {\n return scope.rueThen((records) => {\n holder.scope = records as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(records as T[]);\n Evaluator.all(holder);\n return callback(holder);\n });\n } else {\n holder.scope = scope as T[];\n /**\n * @description Pass by value so that 「proxy === record」 does not occur\n */\n if (Object.keys(holder.proxy).length === 0) holder.proxy = Array.from(scope);\n Evaluator.all(holder);\n return callback(holder);\n }\n });\n }", + "highlightText": "\u001b[38;2;230;219;116mscoping\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;230;219;116m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\n \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m:\u001b[39m ActiveRecord$Associations$CollectionProxy$Holder\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;249;38;114mU\u001b[39m \u001b[38;2;248;248;242m|\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m\n \u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m:\u001b[39m \u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;248;248;242m<\u001b[39m\u001b[38;2;249;38;114mU\u001b[39m\u001b[38;2;248;248;242m>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;102;217;239mthis\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116msuperThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m{\u001b[39m holder\u001b[38;2;248;248;242m,\u001b[39m scope \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mscope \u001b[38;2;102;217;239minstanceof\u001b[39m \u001b[38;2;230;219;116m\u001b[38;2;166;226;46mPromise\u001b[39m\u001b[38;2;230;219;116m\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m scope\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mrueThen\u001b[39m\u001b[38;2;248;248;242m(\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords\u001b[38;2;248;248;242m)\u001b[39m \u001b[38;2;248;248;242m=>\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m records \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mrecords \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m \u001b[38;2;102;217;239melse\u001b[39m \u001b[38;2;248;248;242m{\u001b[39m\n holder\u001b[38;2;248;248;242m.\u001b[39mscope \u001b[38;2;248;248;242m=\u001b[39m scope \u001b[38;2;102;217;239mas\u001b[39m \u001b[38;2;249;38;114mT\u001b[39m\u001b[38;2;248;248;242m[\u001b[39m\u001b[38;2;248;248;242m]\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;130;146;162m/**\u001b[39m\n\u001b[38;2;130;146;162m * @description Pass by value so that 「proxy === record」 does not occur\u001b[39m\n\u001b[38;2;130;146;162m */\u001b[39m\n \u001b[38;2;102;217;239mif\u001b[39m \u001b[38;2;248;248;242m(\u001b[39mObject\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mkeys\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m.\u001b[39mproxy\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m.\u001b[39mlength \u001b[38;2;248;248;242m===\u001b[39m \u001b[38;2;174;129;255m0\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m holder\u001b[38;2;248;248;242m.\u001b[39mproxy \u001b[38;2;248;248;242m=\u001b[39m \u001b[38;2;166;226;46mArray\u001b[39m\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;102;217;239mfrom\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mscope\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n Evaluator\u001b[38;2;248;248;242m.\u001b[39m\u001b[38;2;230;219;116mall\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;102;217;239mreturn\u001b[39m \u001b[38;2;230;219;116mcallback\u001b[39m\u001b[38;2;248;248;242m(\u001b[39mholder\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m\u001b[38;2;248;248;242m)\u001b[39m\u001b[38;2;248;248;242m;\u001b[39m\n \u001b[38;2;248;248;242m}\u001b[39m", "isAsync": false, "visibility": "public", "line": [ @@ -1074,7 +1054,7 @@ "ActiveRecord$Associations$CollectionProxy$Holder": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/associations/collection_proxy/holder.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1098,7 +1078,7 @@ "ActiveRecord$Associations$CollectionProxy$Impl": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/associations/collection_proxy/impl.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1122,7 +1102,7 @@ "ActiveRecord$Associations$Relation$Base": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/associations/relation/base.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1138,7 +1118,7 @@ "ActiveRecord$Associations": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/associations/core.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1228,7 +1208,7 @@ "ActiveRecord$Associations$Impl": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/associations/impl.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1252,7 +1232,7 @@ "ActiveRecord$AttributeMethods": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/attribute_methods/core.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1290,7 +1270,7 @@ "ActiveRecord$Core": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/core/core.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1318,7 +1298,7 @@ "ActiveRecord$Dirty": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/dirty/core.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1346,7 +1326,7 @@ "ActiveRecord$Persistence": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/persistences/core.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1546,7 +1526,7 @@ "ActiveRecord$Querying": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/querying/core.ts", - "updatedAt": "2021/03/31 19:45:40 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1894,7 +1874,7 @@ "ActiveRecord$Scoping": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/scoping/core.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1910,7 +1890,7 @@ "ActiveRecord$Scoping$Impl": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/scoping/impl.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1926,7 +1906,7 @@ "ActiveRecord$Scoping$Named": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/scoping/named.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -1964,7 +1944,7 @@ "ActiveRecord$Associations$Persistence": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/associations/persistence/core.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -2022,7 +2002,7 @@ "ActiveRecord$Associations$PersistenceStrategy": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/modules/associations/persistence_strategy/core.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:13 +09:00" }, "class": [ { @@ -2130,7 +2110,7 @@ "ActiveRecord$FinderMethods": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/relations/modules/finder_methods/core.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:14 +09:00" }, "class": [ { @@ -2268,7 +2248,7 @@ "ActiveRecord$QueryMethods": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/relations/modules/query_methods/core.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:14 +09:00" }, "class": [ { @@ -2376,7 +2356,7 @@ "ActiveRecord$QueryMethods$Evaluator": { "metadata": { "filepath": "@rue/packages/activerecord/src/records/relations/modules/query_methods/evaluator.ts", - "updatedAt": "2021/03/31 19:45:41 +09:00" + "updatedAt": "2021/03/31 21:15:14 +09:00" }, "class": [ { @@ -2484,7 +2464,7 @@ "RueModule": { "metadata": { "filepath": "@rue/packages/activesupport/src/modules/base.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:56 +09:00" }, "class": [ { @@ -2530,7 +2510,7 @@ "RueModuleAncestorController": { "metadata": { "filepath": "@rue/packages/activesupport/src/modules/base.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:56 +09:00" }, "class": [ { @@ -2586,7 +2566,7 @@ "ActiveSupport$Registry$Base": { "metadata": { "filepath": "@rue/packages/activesupport/src/registries/base.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:57 +09:00" }, "class": [ { @@ -2662,7 +2642,7 @@ "ActiveSupport$Base": { "metadata": { "filepath": "@rue/packages/activesupport/src/supports/base.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:57 +09:00" }, "class": [ { @@ -2690,7 +2670,7 @@ "ActiveSupport$ImplBase": { "metadata": { "filepath": "@rue/packages/activesupport/src/supports/impl.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:57 +09:00" }, "class": [ { @@ -2706,7 +2686,7 @@ "ActiveSupport$Impl": { "metadata": { "filepath": "@rue/packages/activesupport/src/supports/impl.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:57 +09:00" }, "class": [ { @@ -2730,7 +2710,7 @@ "ActiveSupport$Info": { "metadata": { "filepath": "@rue/packages/activesupport/src/supports/modules/info/core.ts", - "updatedAt": "2021/03/31 19:45:23 +09:00" + "updatedAt": "2021/03/31 21:14:57 +09:00" }, "class": [ {