@nina-protocol/nina-db 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/index.modern.js +1 -1
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/package.json +2 -1
- package/src/models/Account.js +1 -0
- package/src/models/Exchange.js +1 -0
- package/src/models/Hub.js +1 -0
- package/src/models/Post.js +1 -0
- package/src/models/Release.js +1 -0
- package/src/models/Transaction.js +1 -0
- package/src/models/Verification.js +1 -0
package/dist/index.modern.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"knex";import{Model as t}from"objection";import a from"axios";import o from"striptags";import{TwitterApi as i}from"twitter-api-v2";import r from"@project-serum/anchor";import{Metaplex as s}from"@metaplex-foundation/js";function n(e){var t,a,o,i=2;for("undefined"!=typeof Symbol&&(a=Symbol.asyncIterator,o=Symbol.iterator);i--;){if(a&&null!=(t=e[a]))return t.call(e);if(o&&null!=(t=e[o]))return new l(t.call(e));a="@@asyncIterator",o="@@iterator"}throw new TypeError("Object is not async iterable")}function l(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then(function(e){return{value:e,done:t}})}return l=function(e){this.s=e,this.n=e.next},l.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var a=this.s.return;return void 0===a?Promise.resolve({value:e,done:!0}):t(a.apply(this.s,arguments))},throw:function(e){var a=this.s.return;return void 0===a?Promise.reject(e):t(a.apply(this.s,arguments))}},new l(e)}const{Model:c}=require("objection");class u extends c{static get modelPaths(){return[__dirname]}}class d extends u{static get tableName(){return"accounts"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey"],properties:{publicKey:{type:"string"}}}}static async findOrCreate(e){let t=await d.query().findOne({publicKey:e});return t||(t=await d.query().insert({publicKey:e}),console.log("Inserted Account: ",e),t)}async format(){const e=await this.$relatedQuery("verifications").where("active",!0);if(e){var t,a=!1,o=!1;try{for(var i,r=n(e);a=!(i=await r.next()).done;a=!1){let e=i.value;await e.format()}}catch(e){o=!0,t=e}finally{try{a&&null!=r.return&&await r.return()}finally{if(o)throw t}}this.verifications=e}delete this.id}static get relationMappings(){return{published:{relation:Model.HasManyRelation,modelClass:"Release",join:{from:"accounts.id",to:"releases.publisherId"}},collected:{relation:Model.ManyToManyRelation,modelClass:"Release",join:{from:"accounts.id",through:{from:"releases_collected.accountId",to:"releases_collected.releaseId"},to:"releases.id"}},exchangesInitialized:{relation:Model.HasManyRelation,modelClass:"Exchange",join:{from:"accounts.id",to:"exchanges.initializerId"}},exchangesCompleted:{relation:Model.HasManyRelation,modelClass:"Exchange",join:{from:"accounts.id",to:"exchanges.completedById"}},hubs:{relation:Model.ManyToManyRelation,modelClass:"Hub",join:{from:"accounts.id",through:{from:"hubs_collaborators.accountId",to:"hubs_collaborators.hubId",extra:["hubCollaboratorPublicKey"]},to:"hubs.id"}},posts:{relation:Model.HasManyRelation,modelClass:"Post",join:{from:"accounts.id",to:"posts.publisherId"}},revenueShares:{relation:Model.ManyToManyRelation,modelClass:"Release",join:{from:"accounts.id",through:{from:"releases_revenue_share.accountId",to:"releases_revenue_share.releaseId"},to:"releases.id"}},verifications:{relation:Model.HasManyRelation,modelClass:"Verification",join:{from:"accounts.id",to:"verifications.accountId"}}}}}const p=(e,t)=>{let a=o(e[t],[]," ");var i;a=a.replace(" "," "),a!==e[t]&&(e[t+"Html"]=e[t],e[t]=(i=a).substring(1,i.length-1).substring(-1,i.length-1))};class y extends u{static get tableName(){return"releases"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey","mint","metadata","datetime"],properties:{publicKey:{type:"string"},mint:{type:"string"},metadata:{type:"object",required:["name","symbol","description","image","properties"],properties:{name:{type:"string"},symbol:{type:"string"},description:{type:"string"},properties:{type:"object",properties:{artist:{type:"string"},title:{type:"string"},date:{type:"string"},files:{type:"array"},category:{type:"string"},creators:{type:"array"}}}}}}}}static async findOrCreate(e){let t=await y.query().findOne({publicKey:e});if(t)return t;const a=new r.web3.Connection(process.env.SOLANA_CLUSTER_URL),o=new r.AnchorProvider(a,{},{commitment:"processed"}),i=await r.Program.at(process.env.NINA_PROGRAM_ID,o),n=new s(a),l=await i.account.release.fetch(e,"confirmed"),c=await n.nfts().findByMint(l.releaseMint,{commitment:"confirmed"}).run();let u=await d.findOrCreate(l.authority.toBase58());return t=await this.createRelease({publicKey:e,mint:l.releaseMint.toBase58(),metadata:c.json,datetime:new Date(1e3*l.releaseDatetime.toNumber()).toISOString(),publisherId:u.id,releaseAccount:l}),t}static async createRelease({publicKey:e,mint:t,metadata:a,datetime:o,publisherId:r,releaseAccount:s}){const n=await y.query().insertGraph({publicKey:e,mint:t,metadata:a,datetime:o,publisherId:r});return await this.processRevenueShares(s,n),await(async e=>{if(process.env.TWITTER_API_SECRET)try{await sleep(6e4);const t=new i({appKey:process.env.TWITTER_API_KEY,appSecret:process.env.TWITTER_API_SECRET,accessToken:process.env.TWITTER_ACCESS_TOKEN,accessSecret:process.env.TWITTER_ACCESS_TOKEN_SECRET});let a=`${e.properties.artist} - "${e.properties.title}"`.substr(0,250);a=`${a} ${e.external_url}`,await t.v2.tweet(a)}catch(t){console.warn("error sending new release tweet: ",t,e)}})(a),console.log("Inserted Release: ",e),n}static async processRevenueShares(e,t){var a;const o=(null==(a=e.account)?void 0:a.royaltyRecipients)||e.royaltyRecipients;var i,r=!1,s=!1;try{for(var l,c=n(o);r=!(l=await c.next()).done;r=!1){let e=l.value;try{if("11111111111111111111111111111111"!==e.recipientAuthority.toBase58()){const a=await d.findOrCreate(e.recipientAuthority.toBase58());(await a.$relatedQuery("revenueShares")).map(e=>e.id).includes(t.id)||await d.relatedQuery("revenueShares").for(a.id).relate(t.id)}}catch(e){console.log("error processing royaltyRecipients: ",e)}}}catch(e){s=!0,i=e}finally{try{r&&null!=c.return&&await c.return()}finally{if(s)throw i}}}async format(){const e=await this.$relatedQuery("publisher").select("publicKey"),t=await this.$relatedQuery("publishedThroughHub");t&&(this.publishedThroughHub=t.publicKey),this.publisher=e.publicKey,delete this.publisherId,delete this.hubId,delete this.id,p(this.metadata,"description")}static relationMappings(){return{publishedThroughHub:{relation:Model.BelongsToOneRelation,modelClass:"Hub",join:{from:"releases.hubId",to:"hubs.id"}},publisher:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"releases.publisherId",to:"accounts.id"}},collectors:{relation:Model.ManyToManyRelation,modelClass:"Account",join:{from:"releases.id",through:{from:"releases_collected.releaseId",to:"releases_collected.accountId"},to:"accounts.id"}},exchanges:{relation:Model.HasManyRelation,modelClass:"Exchange",join:{from:"releases.id",to:"exchanges.releaseId"}},hubs:{relation:Model.ManyToManyRelation,modelClass:"Hub",join:{from:"releases.id",through:{from:"hubs_releases.releaseId",to:"hubs_releases.hubId",extra:["hubReleasePublicKey"]},to:"hubs.id"}},posts:{relation:Model.ManyToManyRelation,modelClass:"Post",join:{from:"releases.id",through:{from:"posts_releases.releaseId",to:"posts_releases.postId"},to:"posts.id"}},revenueShareRecipients:{relation:Model.ManyToManyRelation,modelClass:"Account",join:{from:"releases.id",through:{from:"releases_revenue_share.releaseId",to:"releases_revenue_share.accountId"},to:"accounts.id"}}}}}class h extends u{static get tableName(){return"posts"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey","data","datetime"],properties:{publicKey:{type:"string"},data:{type:"object"},datetime:{type:"string"}}}}async format(){const e=await this.$relatedQuery("publisher").select("publicKey"),t=await this.$relatedQuery("publishedThroughHub").select("publicKey");this.publisher=e.publicKey,t&&(this.publishedThroughHub=t.publicKey),delete this.publisherId,delete this.id,delete this.hubId,p(this.data,"body")}static relationMappings(){return{publishedThroughHub:{relation:Model.BelongsToOneRelation,modelClass:"Hub",join:{from:"posts.hubId",to:"hubs.id"}},publisher:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"posts.publisherId",to:"accounts.id"}},hubs:{relation:Model.ManyToManyRelation,modelClass:"Hub",join:{from:"posts.id",through:{from:"hubs_posts.postId",to:"hubs_posts.hubId",extra:["hubPostPublicKey"]},to:"hubs.id"}},releases:{relation:Model.ManyToManyRelation,modelClass:"Release",join:{from:"posts.id",through:{from:"posts_releases.postId",to:"posts_releases.releaseId"},to:"releases.id"}}}}}class b extends u{static get tableName(){return"hubs"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey","handle","data","dataUri","datetime"],properties:{publicKey:{type:"string"},handle:{type:"string"},data:{type:"object"},dataUri:{type:"string"},datetime:{type:"string"}}}}async format(){const e=await this.$relatedQuery("authority").select("publicKey");this.authority=e.publicKey,delete this.authorityId,delete this.id,p(this.data,"description")}static async updateHub(e,t,o,i,r,s){var l;if("string"!=typeof t.account.uri&&(t.account.uri=(l=t.account.uri,(new TextDecoder).decode(new Uint8Array(l)).replaceAll(/\u0000/g,""))),!e.dataUri||e.dataUri!==t.account.uri){const o=(await a.get(t.account.uri)).data;await e.$query().patch({data:o,dataUri:t.account.uri})}const c=i.filter(t=>t.account.hub.toBase58()===e.publicKey),u=(await b.relatedQuery("releases").for(e)).map(e=>e.publicKey),p=c.filter(e=>!u.includes(e.account.release.toBase58()));var m,f=!1,g=!1;try{for(var w,R=n(c);f=!(w=await R.next()).done;f=!1){let t=w.value;try{if(u.includes(t.account.release.toBase58())){const a=o.filter(e=>e.account.child.toBase58()===t.publicKey.toBase58())[0],i=await y.query().findOne({publicKey:t.account.release.toBase58()});i&&await b.relatedQuery("releases").for(e.id).patch({visible:a.account.visible}).where({id:i.id})}}catch(e){console.log(e)}}}catch(e){g=!0,m=e}finally{try{f&&null!=R.return&&await R.return()}finally{if(g)throw m}}var v,I=!1,S=!1;try{for(var K,T=n(p);I=!(K=await T.next()).done;I=!1){let t=K.value;try{const a=o.filter(e=>e.account.child.toBase58()===t.publicKey.toBase58())[0],i=await y.query().findOne({publicKey:t.account.release.toBase58()});i&&(await b.relatedQuery("releases").for(e.id).relate({id:i.id,hubReleasePublicKey:t.publicKey.toBase58(),visible:a.account.visible}),a.account.publishedThroughHub&&await i.$query().patch({hubId:e.id}),console.log("Related Release to Hub:",i.publicKey,e.publicKey))}catch(e){console.log(e)}}}catch(e){S=!0,v=e}finally{try{I&&null!=T.return&&await T.return()}finally{if(S)throw v}}const M=r.filter(t=>t.account.hub.toBase58()===e.publicKey),C=(await b.relatedQuery("collaborators").for(e)).map(e=>e.publicKey),_=M.filter(e=>!C.includes(e.account.collaborator.toBase58()));var A,O=!1,j=!1;try{for(var H,E=n(_);O=!(H=await E.next()).done;O=!1){let t=H.value;try{const a=await d.findOrCreate(t.account.collaborator.toBase58());a&&(await b.relatedQuery("collaborators").for(e.id).relate({id:a.id,hubCollaboratorPublicKey:t.publicKey.toBase58()}),console.log("Related Collaborator to Hub:",a.publicKey,e.publicKey))}catch(e){console.log(e)}}}catch(e){j=!0,A=e}finally{try{O&&null!=E.return&&await E.return()}finally{if(j)throw A}}const P=C.filter(e=>!M.map(e=>e.account.collaborator.toBase58()).includes(e));var x,B=!1,q=!1;try{for(var Q,$=n(P);B=!(Q=await $.next()).done;B=!1){let t=Q.value;try{const a=await d.query().findOne({publicKey:t});a&&(await b.relatedQuery("collaborators").for(e.id).unrelate().where("accountId",a.id),console.log("Removed Collaborator from Hub:",a.publicKey,e.publicKey))}catch(e){console.log(e)}}}catch(e){q=!0,x=e}finally{try{B&&null!=$.return&&await $.return()}finally{if(q)throw x}}const D=s.filter(t=>t.account.hub.toBase58()===e.publicKey),G=(await b.relatedQuery("posts").for(e)).map(e=>e.publicKey),N=D.filter(e=>!G.includes(e.account.post.toBase58()));var W,U=!1,z=!1;try{for(var k,V=n(D);U=!(k=await V.next()).done;U=!1){let t=k.value;try{if(G.includes(t.account.post.toBase58())&&!o.filter(e=>e.account.child.toBase58()===t.publicKey.toBase58())[0].account.visible){const a=await h.query().findOne({publicKey:t.account.post.toBase58()});a&&(await h.relatedQuery("releases").for(a.id).unrelate().where("hubId",e.id),console.log("Deleted Post:",t.publicKey))}}catch(e){console.log(e)}}}catch(e){z=!0,W=e}finally{try{U&&null!=V.return&&await V.return()}finally{if(z)throw W}}var L,F=!1,X=!1;try{for(var Y,J=n(N);F=!(Y=await J.next()).done;F=!1){let t=Y.value;try{const a=o.filter(e=>e.account.child.toBase58()===t.publicKey.toBase58())[0],i=await h.query().findOne({publicKey:t.account.post.toBase58()});if(a.account.visible){if(i&&(await b.relatedQuery("posts").for(e.id).relate({id:i.id,hubPostPublicKey:t.publicKey.toBase58()}),a.account.publishedThroughHub&&await i.$query().patch({hubId:e.id}),console.log("Related Post to Hub:",i.publicKey,e.publicKey)),t.account.referenceContent){const e=await y.query().findOne({publicKey:t.account.referenceContent.toBase58()});e&&(await h.relatedQuery("releases").for(i.id).where("releaseId",e.id).first()||(await h.relatedQuery("releases").for(i.id).relate(e.id),console.log("Related Release to Post:",e.publicKey,i.publicKey)))}}else i&&a.account.publishedThroughHub&&(await h.query().deleteById(i.id),console.log("deleted Post:",i.publicKey))}catch(e){console.log(e)}}}catch(e){X=!0,L=e}finally{try{F&&null!=J.return&&await J.return()}finally{if(X)throw L}}}static get relationMappings(){return{authority:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"hubs.authorityId",to:"accounts.id"}},collaborators:{relation:Model.ManyToManyRelation,modelClass:"Account",join:{from:"hubs.id",through:{from:"hubs_collaborators.hubId",to:"hubs_collaborators.accountId",extra:["hubCollaboratorPublicKey"]},to:"accounts.id"}},posts:{relation:Model.ManyToManyRelation,modelClass:"Post",join:{from:"hubs.id",through:{from:"hubs_posts.hubId",to:"hubs_posts.postId",extra:["hubPostPublicKey"]},to:"posts.id"}},releases:{relation:Model.ManyToManyRelation,modelClass:"Release",join:{from:"hubs.id",through:{from:"hubs_releases.hubId",to:"hubs_releases.releaseId",extra:["hubReleasePublicKey","visible"]},to:"releases.id"}}}}}class m extends u{static get tableName(){return"subscriptions"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey","datetime"],properties:{publicKey:{type:"string"},datetime:{type:"string"},from:{type:"string"},to:{type:"string"},subscriptionType:{type:"string",enum:["account","hub"]}}}}static async findOrCreate({publicKey:e,from:t,to:a,datetime:o,subscriptionType:i}){let r=await m.query().findOne({publicKey:e});return r||(r=await m.query().insert({publicKey:e,from:t,to:a,datetime:o,subscriptionType:i}),console.log("Inserted subscription: ",e),r)}async format(){if("account"===this.subscriptionType){const e=await d.query().findOne({publicKey:this.to});await e.format(),this.to=e;const t=await d.query().findOne({publicKey:this.from});await t.format(),this.from=t}else if("hub"===this.subscriptionType){const e=await b.query().findOne({publicKey:this.to});await e.format(),this.to=e;const t=await d.query().findOne({publicKey:this.from});await t.format(),this.from=t}delete this.id}}var f={development:{client:"postgresql",connection:{host:process.env.POSTGRES_HOST,database:process.env.POSTGRES_DATABASE,user:process.env.POSTGRES_USER,password:process.env.POSTGRES_PASSWORD},migrations:{directory:__dirname+"/migrations"}},staging:{client:"postgresql",connection:{host:process.env.POSTGRES_HOST,database:process.env.POSTGRES_DATABASE,user:process.env.POSTGRES_USER,password:process.env.POSTGRES_PASSWORD},migrations:{directory:__dirname+"/migrations"}},production:{client:"postgresql",connection:{host:process.env.POSTGRES_HOST,database:process.env.POSTGRES_DATABASE,user:process.env.POSTGRES_USER,password:process.env.POSTGRES_PASSWORD},migrations:{directory:__dirname+"/migrations"}}};const g={initDb:async()=>{const a=e(f.development);await a.raw(`SELECT 'CREATE DATABASE ${process.env.POSTGRES_DATABASE}'\n WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${process.env.POSTGRES_DATABASE}')`),await a.migrate.latest(),t.knex(a)},connectDb:async()=>{const a=e(f.development);t.knex(a)},destroyDb:async()=>{const t=e(f.development);await t.destroy()},Account:d,Exchange:class extends u{static get tableName(){return"exchanges"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey","isSale","initializerAmount","expectedAmount","cancelled","createdAt"],properties:{publicKey:{type:"string"},isSale:{type:"boolean"},initializerAmount:{type:"number"},expectedAmount:{type:"number"},cancelled:{type:"boolean"},createdAt:{type:"string"},updatedAt:{type:"string"}}}}async format(){const e=await this.$relatedQuery("initializer"),t=await this.$relatedQuery("completedBy"),a=await this.$relatedQuery("release").select("publicKey");t&&(await t.format(),this.completedBy=t),this.release=a.publicKey,await e.format(),this.initializer=e,delete this.id,delete this.initializerId,delete this.completedById,delete this.releaseId}static get relationMappings(){return{initializer:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"exchanges.initializerId",to:"accounts.id"}},completedBy:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"exchanges.completedById",to:"accounts.id"}},release:{relation:Model.HasOneRelation,modelClass:"Release",join:{from:"exchanges.releaseId",to:"releases.id"}}}}},Hub:b,Post:h,Release:y,Subscription:m,Transaction:class extends u{static get tableName(){return"transactions"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["txid","blocktime","type"],properties:{txid:{type:"string"},blocktime:{type:"integer"},type:{type:"string",enum:["HubInitWithCredit","ReleaseInitWithCredit","ReleaseInitViaHub","ReleasePurchase","ReleasePurchaseViaHub","HubAddCollaborator","HubAddRelease","PostInitViaHub","PostInitViaHubWithReferenceRelease","SubscriptionSubscribeAccount","SubscriptionSubscribeHub"]}}}}async format(){const e=await this.$relatedQuery("hub");e&&(await e.format(),this.hub=e),delete this.hubId;const t=await this.$relatedQuery("authority");t&&(await t.format(),this.authority=t),delete this.authorityId;const a=await this.$relatedQuery("release");a&&(await a.format(),this.release=a),delete this.releaseId;const o=await this.$relatedQuery("post");o&&(await o.format(),this.post=o),delete this.postId;const i=await this.$relatedQuery("toAccount");i&&(await i.format(),this.toAccount=i),delete this.toAccountId;const r=await this.$relatedQuery("toHub");r&&(await r.format(),this.toHub=r),delete this.toHubId,this.datetime=new Date(1e3*this.blocktime).toISOString(),delete this.id}static get relationMappings(){return{authority:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"transactions.authorityId",to:"accounts.id"}},hub:{relation:Model.HasOneRelation,modelClass:"Hub",join:{from:"transactions.hubId",to:"hubs.id"}},release:{relation:Model.HasOneRelation,modelClass:"Release",join:{from:"transactions.releaseId",to:"releases.id"}},post:{relation:Model.HasOneRelation,modelClass:"Post",join:{from:"transactions.postId",to:"posts.id"}},toAccount:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"transactions.toAccountId",to:"accounts.id"}},toHub:{relation:Model.HasOneRelation,modelClass:"Hub",join:{from:"transactions.toHubId",to:"hubs.id"}}}}},Verification:class extends u{static get tableName(){return"verifications"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey","type","value"],properties:{publicKey:{type:"string"},type:{type:"string",enum:["soundcloud","instagram","twitter","ethereum"]},value:{type:"string"},displayName:{type:"string"},image:{type:"string"},description:{type:"string"}}}}async format(){delete this.id;const e=await this.$relatedQuery("account");delete this.accountId,e&&(this.account=e.publicKey)}static get relationMappings(){return{account:{relation:Model.BelongsToOneRelation,modelClass:"Account",join:{from:"verifications.accountId",to:"accounts.id"}}}}}};export{g as default};
|
|
1
|
+
import e from"knex";import{Model as t}from"objection";import a from"axios";import i from"striptags";import{TwitterApi as o}from"twitter-api-v2";import r from"@project-serum/anchor";import{Metaplex as s}from"@metaplex-foundation/js";function n(e){var t,a,i,o=2;for("undefined"!=typeof Symbol&&(a=Symbol.asyncIterator,i=Symbol.iterator);o--;){if(a&&null!=(t=e[a]))return t.call(e);if(i&&null!=(t=e[i]))return new l(t.call(e));a="@@asyncIterator",i="@@iterator"}throw new TypeError("Object is not async iterable")}function l(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then(function(e){return{value:e,done:t}})}return l=function(e){this.s=e,this.n=e.next},l.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var a=this.s.return;return void 0===a?Promise.resolve({value:e,done:!0}):t(a.apply(this.s,arguments))},throw:function(e){var a=this.s.return;return void 0===a?Promise.reject(e):t(a.apply(this.s,arguments))}},new l(e)}const{Model:c}=require("objection");class u extends c{static get modelPaths(){return[__dirname]}}class d extends u{static get tableName(){return"accounts"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey"],properties:{publicKey:{type:"string"}}}}static async findOrCreate(e){let t=await d.query().findOne({publicKey:e});return t||(t=await d.query().insert({publicKey:e}),console.log("Inserted Account: ",e),t)}async format(){const e=await this.$relatedQuery("verifications").where("active",!0);if(e){var t,a=!1,i=!1;try{for(var o,r=n(e);a=!(o=await r.next()).done;a=!1){let e=o.value;await e.format()}}catch(e){i=!0,t=e}finally{try{a&&null!=r.return&&await r.return()}finally{if(i)throw t}}this.verifications=e}delete this.id}static get relationMappings(){return{published:{relation:t.HasManyRelation,modelClass:"Release",join:{from:"accounts.id",to:"releases.publisherId"}},collected:{relation:t.ManyToManyRelation,modelClass:"Release",join:{from:"accounts.id",through:{from:"releases_collected.accountId",to:"releases_collected.releaseId"},to:"releases.id"}},exchangesInitialized:{relation:t.HasManyRelation,modelClass:"Exchange",join:{from:"accounts.id",to:"exchanges.initializerId"}},exchangesCompleted:{relation:t.HasManyRelation,modelClass:"Exchange",join:{from:"accounts.id",to:"exchanges.completedById"}},hubs:{relation:t.ManyToManyRelation,modelClass:"Hub",join:{from:"accounts.id",through:{from:"hubs_collaborators.accountId",to:"hubs_collaborators.hubId",extra:["hubCollaboratorPublicKey"]},to:"hubs.id"}},posts:{relation:t.HasManyRelation,modelClass:"Post",join:{from:"accounts.id",to:"posts.publisherId"}},revenueShares:{relation:t.ManyToManyRelation,modelClass:"Release",join:{from:"accounts.id",through:{from:"releases_revenue_share.accountId",to:"releases_revenue_share.releaseId"},to:"releases.id"}},verifications:{relation:t.HasManyRelation,modelClass:"Verification",join:{from:"accounts.id",to:"verifications.accountId"}}}}}const p=(e,t)=>{let a=i(e[t],[]," ");var o;a=a.replace(" "," "),a!==e[t]&&(e[t+"Html"]=e[t],e[t]=(o=a).substring(1,o.length-1).substring(-1,o.length-1))};class y extends u{static get tableName(){return"releases"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey","mint","metadata","datetime"],properties:{publicKey:{type:"string"},mint:{type:"string"},metadata:{type:"object",required:["name","symbol","description","image","properties"],properties:{name:{type:"string"},symbol:{type:"string"},description:{type:"string"},properties:{type:"object",properties:{artist:{type:"string"},title:{type:"string"},date:{type:"string"},files:{type:"array"},category:{type:"string"},creators:{type:"array"}}}}}}}}static async findOrCreate(e){let t=await y.query().findOne({publicKey:e});if(t)return t;const a=new r.web3.Connection(process.env.SOLANA_CLUSTER_URL),i=new r.AnchorProvider(a,{},{commitment:"processed"}),o=await r.Program.at(process.env.NINA_PROGRAM_ID,i),n=new s(a),l=await o.account.release.fetch(e,"confirmed"),c=await n.nfts().findByMint(l.releaseMint,{commitment:"confirmed"}).run();let u=await d.findOrCreate(l.authority.toBase58());return t=await this.createRelease({publicKey:e,mint:l.releaseMint.toBase58(),metadata:c.json,datetime:new Date(1e3*l.releaseDatetime.toNumber()).toISOString(),publisherId:u.id,releaseAccount:l}),t}static async createRelease({publicKey:e,mint:t,metadata:a,datetime:i,publisherId:r,releaseAccount:s}){const n=await y.query().insertGraph({publicKey:e,mint:t,metadata:a,datetime:i,publisherId:r});return await this.processRevenueShares(s,n),await(async e=>{if(process.env.TWITTER_API_SECRET)try{await sleep(6e4);const t=new o({appKey:process.env.TWITTER_API_KEY,appSecret:process.env.TWITTER_API_SECRET,accessToken:process.env.TWITTER_ACCESS_TOKEN,accessSecret:process.env.TWITTER_ACCESS_TOKEN_SECRET});let a=`${e.properties.artist} - "${e.properties.title}"`.substr(0,250);a=`${a} ${e.external_url}`,await t.v2.tweet(a)}catch(t){console.warn("error sending new release tweet: ",t,e)}})(a),console.log("Inserted Release: ",e),n}static async processRevenueShares(e,t){var a;const i=(null==(a=e.account)?void 0:a.royaltyRecipients)||e.royaltyRecipients;var o,r=!1,s=!1;try{for(var l,c=n(i);r=!(l=await c.next()).done;r=!1){let e=l.value;try{if("11111111111111111111111111111111"!==e.recipientAuthority.toBase58()){const a=await d.findOrCreate(e.recipientAuthority.toBase58());(await a.$relatedQuery("revenueShares")).map(e=>e.id).includes(t.id)||await d.relatedQuery("revenueShares").for(a.id).relate(t.id)}}catch(e){console.log("error processing royaltyRecipients: ",e)}}}catch(e){s=!0,o=e}finally{try{r&&null!=c.return&&await c.return()}finally{if(s)throw o}}}async format(){const e=await this.$relatedQuery("publisher").select("publicKey"),t=await this.$relatedQuery("publishedThroughHub");t&&(this.publishedThroughHub=t.publicKey),this.publisher=e.publicKey,delete this.publisherId,delete this.hubId,delete this.id,p(this.metadata,"description")}static relationMappings(){return{publishedThroughHub:{relation:t.BelongsToOneRelation,modelClass:"Hub",join:{from:"releases.hubId",to:"hubs.id"}},publisher:{relation:t.HasOneRelation,modelClass:"Account",join:{from:"releases.publisherId",to:"accounts.id"}},collectors:{relation:t.ManyToManyRelation,modelClass:"Account",join:{from:"releases.id",through:{from:"releases_collected.releaseId",to:"releases_collected.accountId"},to:"accounts.id"}},exchanges:{relation:t.HasManyRelation,modelClass:"Exchange",join:{from:"releases.id",to:"exchanges.releaseId"}},hubs:{relation:t.ManyToManyRelation,modelClass:"Hub",join:{from:"releases.id",through:{from:"hubs_releases.releaseId",to:"hubs_releases.hubId",extra:["hubReleasePublicKey"]},to:"hubs.id"}},posts:{relation:t.ManyToManyRelation,modelClass:"Post",join:{from:"releases.id",through:{from:"posts_releases.releaseId",to:"posts_releases.postId"},to:"posts.id"}},revenueShareRecipients:{relation:t.ManyToManyRelation,modelClass:"Account",join:{from:"releases.id",through:{from:"releases_revenue_share.releaseId",to:"releases_revenue_share.accountId"},to:"accounts.id"}}}}}class h extends u{static get tableName(){return"posts"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey","data","datetime"],properties:{publicKey:{type:"string"},data:{type:"object"},datetime:{type:"string"}}}}async format(){const e=await this.$relatedQuery("publisher").select("publicKey"),t=await this.$relatedQuery("publishedThroughHub").select("publicKey");this.publisher=e.publicKey,t&&(this.publishedThroughHub=t.publicKey),delete this.publisherId,delete this.id,delete this.hubId,p(this.data,"body")}static relationMappings(){return{publishedThroughHub:{relation:t.BelongsToOneRelation,modelClass:"Hub",join:{from:"posts.hubId",to:"hubs.id"}},publisher:{relation:t.HasOneRelation,modelClass:"Account",join:{from:"posts.publisherId",to:"accounts.id"}},hubs:{relation:t.ManyToManyRelation,modelClass:"Hub",join:{from:"posts.id",through:{from:"hubs_posts.postId",to:"hubs_posts.hubId",extra:["hubPostPublicKey"]},to:"hubs.id"}},releases:{relation:t.ManyToManyRelation,modelClass:"Release",join:{from:"posts.id",through:{from:"posts_releases.postId",to:"posts_releases.releaseId"},to:"releases.id"}}}}}class b extends u{static get tableName(){return"hubs"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey","handle","data","dataUri","datetime"],properties:{publicKey:{type:"string"},handle:{type:"string"},data:{type:"object"},dataUri:{type:"string"},datetime:{type:"string"}}}}async format(){const e=await this.$relatedQuery("authority").select("publicKey");this.authority=e.publicKey,delete this.authorityId,delete this.id,p(this.data,"description")}static async updateHub(e,t,i,o,r,s){var l;if("string"!=typeof t.account.uri&&(t.account.uri=(l=t.account.uri,(new TextDecoder).decode(new Uint8Array(l)).replaceAll(/\u0000/g,""))),!e.dataUri||e.dataUri!==t.account.uri){const i=(await a.get(t.account.uri)).data;await e.$query().patch({data:i,dataUri:t.account.uri})}const c=o.filter(t=>t.account.hub.toBase58()===e.publicKey),u=(await b.relatedQuery("releases").for(e)).map(e=>e.publicKey),p=c.filter(e=>!u.includes(e.account.release.toBase58()));var m,f=!1,g=!1;try{for(var w,R=n(c);f=!(w=await R.next()).done;f=!1){let t=w.value;try{if(u.includes(t.account.release.toBase58())){const a=i.filter(e=>e.account.child.toBase58()===t.publicKey.toBase58())[0],o=await y.query().findOne({publicKey:t.account.release.toBase58()});o&&await b.relatedQuery("releases").for(e.id).patch({visible:a.account.visible}).where({id:o.id})}}catch(e){console.log(e)}}}catch(e){g=!0,m=e}finally{try{f&&null!=R.return&&await R.return()}finally{if(g)throw m}}var v,I=!1,S=!1;try{for(var K,T=n(p);I=!(K=await T.next()).done;I=!1){let t=K.value;try{const a=i.filter(e=>e.account.child.toBase58()===t.publicKey.toBase58())[0],o=await y.query().findOne({publicKey:t.account.release.toBase58()});o&&(await b.relatedQuery("releases").for(e.id).relate({id:o.id,hubReleasePublicKey:t.publicKey.toBase58(),visible:a.account.visible}),a.account.publishedThroughHub&&await o.$query().patch({hubId:e.id}),console.log("Related Release to Hub:",o.publicKey,e.publicKey))}catch(e){console.log(e)}}}catch(e){S=!0,v=e}finally{try{I&&null!=T.return&&await T.return()}finally{if(S)throw v}}const C=r.filter(t=>t.account.hub.toBase58()===e.publicKey),_=(await b.relatedQuery("collaborators").for(e)).map(e=>e.publicKey),A=C.filter(e=>!_.includes(e.account.collaborator.toBase58()));var O,j=!1,H=!1;try{for(var E,P=n(A);j=!(E=await P.next()).done;j=!1){let t=E.value;try{const a=await d.findOrCreate(t.account.collaborator.toBase58());a&&(await b.relatedQuery("collaborators").for(e.id).relate({id:a.id,hubCollaboratorPublicKey:t.publicKey.toBase58()}),console.log("Related Collaborator to Hub:",a.publicKey,e.publicKey))}catch(e){console.log(e)}}}catch(e){H=!0,O=e}finally{try{j&&null!=P.return&&await P.return()}finally{if(H)throw O}}const x=_.filter(e=>!C.map(e=>e.account.collaborator.toBase58()).includes(e));var B,M=!1,q=!1;try{for(var Q,$=n(x);M=!(Q=await $.next()).done;M=!1){let t=Q.value;try{const a=await d.query().findOne({publicKey:t});a&&(await b.relatedQuery("collaborators").for(e.id).unrelate().where("accountId",a.id),console.log("Removed Collaborator from Hub:",a.publicKey,e.publicKey))}catch(e){console.log(e)}}}catch(e){q=!0,B=e}finally{try{M&&null!=$.return&&await $.return()}finally{if(q)throw B}}const D=s.filter(t=>t.account.hub.toBase58()===e.publicKey),G=(await b.relatedQuery("posts").for(e)).map(e=>e.publicKey),N=D.filter(e=>!G.includes(e.account.post.toBase58()));var W,U=!1,z=!1;try{for(var k,V=n(D);U=!(k=await V.next()).done;U=!1){let t=k.value;try{if(G.includes(t.account.post.toBase58())&&!i.filter(e=>e.account.child.toBase58()===t.publicKey.toBase58())[0].account.visible){const a=await h.query().findOne({publicKey:t.account.post.toBase58()});a&&(await h.relatedQuery("releases").for(a.id).unrelate().where("hubId",e.id),console.log("Deleted Post:",t.publicKey))}}catch(e){console.log(e)}}}catch(e){z=!0,W=e}finally{try{U&&null!=V.return&&await V.return()}finally{if(z)throw W}}var L,F=!1,X=!1;try{for(var Y,J=n(N);F=!(Y=await J.next()).done;F=!1){let t=Y.value;try{const a=i.filter(e=>e.account.child.toBase58()===t.publicKey.toBase58())[0],o=await h.query().findOne({publicKey:t.account.post.toBase58()});if(a.account.visible){if(o&&(await b.relatedQuery("posts").for(e.id).relate({id:o.id,hubPostPublicKey:t.publicKey.toBase58()}),a.account.publishedThroughHub&&await o.$query().patch({hubId:e.id}),console.log("Related Post to Hub:",o.publicKey,e.publicKey)),t.account.referenceContent){const e=await y.query().findOne({publicKey:t.account.referenceContent.toBase58()});e&&(await h.relatedQuery("releases").for(o.id).where("releaseId",e.id).first()||(await h.relatedQuery("releases").for(o.id).relate(e.id),console.log("Related Release to Post:",e.publicKey,o.publicKey)))}}else o&&a.account.publishedThroughHub&&(await h.query().deleteById(o.id),console.log("deleted Post:",o.publicKey))}catch(e){console.log(e)}}}catch(e){X=!0,L=e}finally{try{F&&null!=J.return&&await J.return()}finally{if(X)throw L}}}static get relationMappings(){return{authority:{relation:t.HasOneRelation,modelClass:"Account",join:{from:"hubs.authorityId",to:"accounts.id"}},collaborators:{relation:t.ManyToManyRelation,modelClass:"Account",join:{from:"hubs.id",through:{from:"hubs_collaborators.hubId",to:"hubs_collaborators.accountId",extra:["hubCollaboratorPublicKey"]},to:"accounts.id"}},posts:{relation:t.ManyToManyRelation,modelClass:"Post",join:{from:"hubs.id",through:{from:"hubs_posts.hubId",to:"hubs_posts.postId",extra:["hubPostPublicKey"]},to:"posts.id"}},releases:{relation:t.ManyToManyRelation,modelClass:"Release",join:{from:"hubs.id",through:{from:"hubs_releases.hubId",to:"hubs_releases.releaseId",extra:["hubReleasePublicKey","visible"]},to:"releases.id"}}}}}class m extends u{static get tableName(){return"subscriptions"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey","datetime"],properties:{publicKey:{type:"string"},datetime:{type:"string"},from:{type:"string"},to:{type:"string"},subscriptionType:{type:"string",enum:["account","hub"]}}}}static async findOrCreate({publicKey:e,from:t,to:a,datetime:i,subscriptionType:o}){let r=await m.query().findOne({publicKey:e});return r||(r=await m.query().insert({publicKey:e,from:t,to:a,datetime:i,subscriptionType:o}),console.log("Inserted subscription: ",e),r)}async format(){if("account"===this.subscriptionType){const e=await d.query().findOne({publicKey:this.to});await e.format(),this.to=e;const t=await d.query().findOne({publicKey:this.from});await t.format(),this.from=t}else if("hub"===this.subscriptionType){const e=await b.query().findOne({publicKey:this.to});await e.format(),this.to=e;const t=await d.query().findOne({publicKey:this.from});await t.format(),this.from=t}delete this.id}}var f={development:{client:"postgresql",connection:{host:process.env.POSTGRES_HOST,database:process.env.POSTGRES_DATABASE,user:process.env.POSTGRES_USER,password:process.env.POSTGRES_PASSWORD},migrations:{directory:__dirname+"/migrations"}},staging:{client:"postgresql",connection:{host:process.env.POSTGRES_HOST,database:process.env.POSTGRES_DATABASE,user:process.env.POSTGRES_USER,password:process.env.POSTGRES_PASSWORD},migrations:{directory:__dirname+"/migrations"}},production:{client:"postgresql",connection:{host:process.env.POSTGRES_HOST,database:process.env.POSTGRES_DATABASE,user:process.env.POSTGRES_USER,password:process.env.POSTGRES_PASSWORD},migrations:{directory:__dirname+"/migrations"}}};const g={initDb:async()=>{const a=e(f.development);await a.raw(`SELECT 'CREATE DATABASE ${process.env.POSTGRES_DATABASE}'\n WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${process.env.POSTGRES_DATABASE}')`),await a.migrate.latest(),t.knex(a)},connectDb:async()=>{const a=e(f.development);t.knex(a)},destroyDb:async()=>{const t=e(f.development);await t.destroy()},Account:d,Exchange:class extends u{static get tableName(){return"exchanges"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey","isSale","initializerAmount","expectedAmount","cancelled","createdAt"],properties:{publicKey:{type:"string"},isSale:{type:"boolean"},initializerAmount:{type:"number"},expectedAmount:{type:"number"},cancelled:{type:"boolean"},createdAt:{type:"string"},updatedAt:{type:"string"}}}}async format(){const e=await this.$relatedQuery("initializer"),t=await this.$relatedQuery("completedBy"),a=await this.$relatedQuery("release").select("publicKey");t&&(await t.format(),this.completedBy=t),this.release=a.publicKey,await e.format(),this.initializer=e,delete this.id,delete this.initializerId,delete this.completedById,delete this.releaseId}static get relationMappings(){return{initializer:{relation:t.HasOneRelation,modelClass:"Account",join:{from:"exchanges.initializerId",to:"accounts.id"}},completedBy:{relation:t.HasOneRelation,modelClass:"Account",join:{from:"exchanges.completedById",to:"accounts.id"}},release:{relation:t.HasOneRelation,modelClass:"Release",join:{from:"exchanges.releaseId",to:"releases.id"}}}}},Hub:b,Post:h,Release:y,Subscription:m,Transaction:class extends u{static get tableName(){return"transactions"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["txid","blocktime","type"],properties:{txid:{type:"string"},blocktime:{type:"integer"},type:{type:"string",enum:["HubInitWithCredit","ReleaseInitWithCredit","ReleaseInitViaHub","ReleasePurchase","ReleasePurchaseViaHub","HubAddCollaborator","HubAddRelease","PostInitViaHub","PostInitViaHubWithReferenceRelease","SubscriptionSubscribeAccount","SubscriptionSubscribeHub"]}}}}async format(){const e=await this.$relatedQuery("hub");e&&(await e.format(),this.hub=e),delete this.hubId;const t=await this.$relatedQuery("authority");t&&(await t.format(),this.authority=t),delete this.authorityId;const a=await this.$relatedQuery("release");a&&(await a.format(),this.release=a),delete this.releaseId;const i=await this.$relatedQuery("post");i&&(await i.format(),this.post=i),delete this.postId;const o=await this.$relatedQuery("toAccount");o&&(await o.format(),this.toAccount=o),delete this.toAccountId;const r=await this.$relatedQuery("toHub");r&&(await r.format(),this.toHub=r),delete this.toHubId,this.datetime=new Date(1e3*this.blocktime).toISOString(),delete this.id}static get relationMappings(){return{authority:{relation:t.HasOneRelation,modelClass:"Account",join:{from:"transactions.authorityId",to:"accounts.id"}},hub:{relation:t.HasOneRelation,modelClass:"Hub",join:{from:"transactions.hubId",to:"hubs.id"}},release:{relation:t.HasOneRelation,modelClass:"Release",join:{from:"transactions.releaseId",to:"releases.id"}},post:{relation:t.HasOneRelation,modelClass:"Post",join:{from:"transactions.postId",to:"posts.id"}},toAccount:{relation:t.HasOneRelation,modelClass:"Account",join:{from:"transactions.toAccountId",to:"accounts.id"}},toHub:{relation:t.HasOneRelation,modelClass:"Hub",join:{from:"transactions.toHubId",to:"hubs.id"}}}}},Verification:class extends u{static get tableName(){return"verifications"}static get idColumn(){return"id"}static get jsonSchema(){return{type:"object",required:["publicKey","type","value"],properties:{publicKey:{type:"string"},type:{type:"string",enum:["soundcloud","instagram","twitter","ethereum"]},value:{type:"string"},displayName:{type:"string"},image:{type:"string"},description:{type:"string"}}}}async format(){delete this.id;const e=await this.$relatedQuery("account");delete this.accountId,e&&(this.account=e.publicKey)}static get relationMappings(){return{account:{relation:t.BelongsToOneRelation,modelClass:"Account",join:{from:"verifications.accountId",to:"accounts.id"}}}}}};export{g as default};
|
|
2
2
|
//# sourceMappingURL=index.modern.js.map
|
package/dist/index.modern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/models/NinaModel.js","../src/models/Account.js","../src/utils/index.js","../src/models/Release.js","../src/models/Post.js","../src/models/Hub.js","../src/models/Subscription.js","../src/models/index.js","../src/utils/knexfile.js","../src/index.cjs","../src/models/Exchange.js","../src/models/Transaction.js","../src/models/Verification.js"],"sourcesContent":["const { Model } = require('objection');\n\nclass NinaModel extends Model {\n static get modelPaths() {\n return [__dirname];\n }\n}\n\nexport default NinaModel\n","import NinaModel from './NinaModel';\n\nclass Account extends NinaModel {\n static get tableName() {\n return 'accounts';\n }\n\n static get idColumn() {\n return 'id';\n }\n\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey'],\n properties: {\n publicKey: { type: 'string' },\n },\n };\n }\n\n static async findOrCreate(publicKey) {\n let account = await Account.query().findOne({ publicKey });\n if (account) {\n return account;\n }\n account = await Account.query().insert({ publicKey });\n console.log('Inserted Account: ', publicKey)\n return account;\n }\n\n async format () {\n const verifications = await this.$relatedQuery('verifications').where('active', true);\n if (verifications) {\n for await (let verification of verifications) {\n await verification.format();\n }\n this.verifications = verifications;\n }\n delete this.id\n }\n\n static get relationMappings() { \n return {\n published: { \n relation: Model.HasManyRelation,\n modelClass: 'Release',\n join: {\n from: 'accounts.id',\n to: 'releases.publisherId'\n }\n },\n collected: { \n relation: Model.ManyToManyRelation,\n modelClass: 'Release',\n join: {\n from: 'accounts.id',\n through: {\n from: 'releases_collected.accountId',\n to: 'releases_collected.releaseId',\n },\n to: 'releases.id'\n }\n },\n exchangesInitialized: {\n relation: Model.HasManyRelation,\n modelClass: 'Exchange',\n join: {\n from: 'accounts.id',\n to: 'exchanges.initializerId',\n },\n },\n exchangesCompleted: {\n relation: Model.HasManyRelation,\n modelClass: 'Exchange',\n join: {\n from: 'accounts.id',\n to: 'exchanges.completedById',\n },\n },\n hubs: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Hub',\n join: {\n from: 'accounts.id',\n through : {\n from: 'hubs_collaborators.accountId',\n to: 'hubs_collaborators.hubId',\n extra: ['hubCollaboratorPublicKey'],\n },\n to: 'hubs.id',\n },\n },\n posts: {\n relation: Model.HasManyRelation,\n modelClass: 'Post',\n join: {\n from: 'accounts.id',\n to: 'posts.publisherId',\n },\n },\n revenueShares: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Release',\n join: {\n from: 'accounts.id',\n through: {\n from: 'releases_revenue_share.accountId',\n to: 'releases_revenue_share.releaseId',\n },\n to: 'releases.id',\n },\n },\n verifications: {\n relation: Model.HasManyRelation,\n modelClass: 'Verification',\n join: {\n from: 'accounts.id',\n to: 'verifications.accountId',\n },\n },\n };\n }\n}\n\nexport default Account;","import striptags from 'striptags';\nimport { TwitterApi } from 'twitter-api-v2';\n\nconst removeQuotesFromStartAndEndOfString = (string) => {\n return string.substring(1, string.length - 1).substring(-1, string.length - 1);\n}\n\nexport const stripHtmlIfNeeded = (object, value) => {\n let strippedDescription = striptags(object[value], [], ' ');\n strippedDescription = strippedDescription.replace(' ', ' ');\n if (strippedDescription !== object[value]) {\n object[value+\"Html\"] = object[value];\n object[value] = removeQuotesFromStartAndEndOfString(strippedDescription);\n }\n}\n\nexport const decode = (byteArray) => {\n return new TextDecoder().decode(new Uint8Array(byteArray)).replaceAll(/\\u0000/g, '');\n}\n\nexport const tweetNewRelease = async (metadata) => {\n if (process.env.TWITTER_API_SECRET) {\n try {\n await sleep(60000)\n const client = new TwitterApi({\n appKey: process.env.TWITTER_API_KEY,\n appSecret: process.env.TWITTER_API_SECRET,\n accessToken: process.env.TWITTER_ACCESS_TOKEN,\n accessSecret: process.env.TWITTER_ACCESS_TOKEN_SECRET,\n });\n \n let text = (`${metadata.properties.artist} - \"${metadata.properties.title}\"`).substr(0, 250)\n text = `${text} ${metadata.external_url}`\n await client.v2.tweet(text); \n } catch (error) {\n console.warn('error sending new release tweet: ', error, metadata)\n }\n }\n}","import anchor from '@project-serum/anchor';\nimport { Metaplex } from '@metaplex-foundation/js';\nimport NinaModel from './NinaModel';\nimport { stripHtmlIfNeeded, tweetNewRelease }from '../utils';\nimport Account from './Account';\n\nclass Release extends NinaModel {\n static get tableName() {\n return 'releases';\n }\n static get idColumn() {\n return 'id';\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey', 'mint', 'metadata', 'datetime'],\n properties: {\n publicKey: { type: 'string' },\n mint: { type: 'string' },\n metadata: {\n type: 'object',\n required: ['name', 'symbol', 'description', 'image', 'properties'],\n properties: {\n name: { type: 'string' },\n symbol: { type: 'string' },\n description: { type: 'string' },\n properties: {\n type: 'object',\n properties: {\n artist: { type: 'string' },\n title: { type: 'string' },\n date: { type: 'string' },\n files: { type: 'array' },\n category: { type: 'string' },\n creators: { type: 'array' },\n }\n }\n }\n },\n },\n };\n }\n\n static async findOrCreate(publicKey) {\n let release = await Release.query().findOne({ publicKey });\n if (release) {\n return release;\n }\n\n const connection = new anchor.web3.Connection(process.env.SOLANA_CLUSTER_URL);\n const provider = new anchor.AnchorProvider(connection, {}, {commitment: 'processed'}) \n const program = await anchor.Program.at(\n process.env.NINA_PROGRAM_ID,\n provider,\n )\n const metaplex = new Metaplex(connection);\n\n const releaseAccount = await program.account.release.fetch(publicKey, 'confirmed')\n const metadataAccount = await metaplex.nfts().findByMint(releaseAccount.releaseMint, {commitment: \"confirmed\"}).run();\n let publisher = await Account.findOrCreate(releaseAccount.authority.toBase58());\n\n release = await this.createRelease({\n publicKey,\n mint: releaseAccount.releaseMint.toBase58(),\n metadata: metadataAccount.json,\n datetime: new Date(releaseAccount.releaseDatetime.toNumber() * 1000).toISOString(),\n publisherId: publisher.id,\n releaseAccount\n });\n return release;\n }\n\n static async createRelease({publicKey, mint, metadata, datetime, publisherId, releaseAccount}) {\n const release = await Release.query().insertGraph({\n publicKey,\n mint,\n metadata,\n datetime,\n publisherId,\n })\n await this.processRevenueShares(releaseAccount, release);\n await tweetNewRelease(metadata);\n console.log('Inserted Release: ', publicKey)\n return release;\n }\n\n static async processRevenueShares (releaseData, releaseRecord) {\n const royaltyRecipients = releaseData.account?.royaltyRecipients || releaseData.royaltyRecipients\n for await (let recipient of royaltyRecipients) {\n try {\n if (recipient.recipientAuthority.toBase58() !== \"11111111111111111111111111111111\") {\n const recipientAccount = await Account.findOrCreate(recipient.recipientAuthority.toBase58());\n const revenueShares = (await recipientAccount.$relatedQuery('revenueShares')).map(revenueShare => revenueShare.id);\n if (!revenueShares.includes(releaseRecord.id)) {\n await Account.relatedQuery('revenueShares').for(recipientAccount.id).relate(releaseRecord.id);\n }\n }\n } catch (error) {\n console.log('error processing royaltyRecipients: ', error)\n }\n }\n }\n\n async format() {\n const publisher = await this.$relatedQuery('publisher').select('publicKey');\n const publishedThroughHub = await this.$relatedQuery('publishedThroughHub');\n if (publishedThroughHub) {\n this.publishedThroughHub = publishedThroughHub.publicKey;\n }\n this.publisher = publisher.publicKey;\n delete this.publisherId\n delete this.hubId\n delete this.id\n\n stripHtmlIfNeeded(this.metadata, 'description');\n }\n\n static relationMappings() {\n return {\n publishedThroughHub: {\n relation: Model.BelongsToOneRelation,\n modelClass: 'Hub',\n join: {\n from: 'releases.hubId',\n to: 'hubs.id',\n },\n },\n publisher: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'releases.publisherId',\n to: 'accounts.id',\n },\n },\n collectors: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Account',\n join: {\n from: 'releases.id',\n through: {\n from: 'releases_collected.releaseId',\n to: 'releases_collected.accountId',\n },\n to: 'accounts.id',\n },\n },\n exchanges: {\n relation: Model.HasManyRelation,\n modelClass: 'Exchange',\n join: {\n from: 'releases.id',\n to: 'exchanges.releaseId',\n },\n },\n hubs: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Hub',\n join: {\n from: 'releases.id',\n through : {\n from: 'hubs_releases.releaseId',\n to: 'hubs_releases.hubId',\n extra: ['hubReleasePublicKey'],\n },\n to: 'hubs.id',\n },\n },\n posts: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Post',\n join: {\n from: 'releases.id',\n through : {\n from: 'posts_releases.releaseId',\n to: 'posts_releases.postId',\n },\n to: 'posts.id',\n },\n },\n revenueShareRecipients: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Account',\n join: {\n from: 'releases.id',\n through: {\n from: 'releases_revenue_share.releaseId',\n to: 'releases_revenue_share.accountId',\n },\n to: 'accounts.id',\n },\n }\n };\n }\n}\n\nexport default Release;\n","import NinaModel from './NinaModel';\nimport { stripHtmlIfNeeded } from '../utils';\n\nclass Post extends NinaModel {\n static get tableName() {\n return 'posts';\n }\n static get idColumn() {\n return 'id';\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey', 'data', 'datetime'],\n properties: {\n publicKey: { type: 'string' },\n data: { type: 'object' },\n datetime: { type: 'string' },\n },\n };\n }\n\n async format() {\n const publisher = await this.$relatedQuery('publisher').select('publicKey');\n const publishedThroughHub = await this.$relatedQuery('publishedThroughHub').select('publicKey');\n\n this.publisher = publisher.publicKey;\n if (publishedThroughHub) {\n this.publishedThroughHub = publishedThroughHub.publicKey;\n }\n \n delete this.publisherId\n delete this.id\n delete this.hubId\n \n stripHtmlIfNeeded(this.data, 'body');\n }\n\n static relationMappings() { \n return {\n publishedThroughHub: {\n relation: Model.BelongsToOneRelation,\n modelClass: 'Hub',\n join: {\n from: 'posts.hubId',\n to: 'hubs.id',\n },\n },\n publisher: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'posts.publisherId',\n to: 'accounts.id',\n },\n },\n hubs: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Hub',\n join: {\n from: 'posts.id',\n through : {\n from: 'hubs_posts.postId',\n to: 'hubs_posts.hubId',\n extra: ['hubPostPublicKey'],\n },\n to: 'hubs.id',\n },\n },\n releases: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Release',\n join: {\n from: 'posts.id',\n through : {\n from: 'posts_releases.postId',\n to: 'posts_releases.releaseId',\n },\n to: 'releases.id',\n },\n },\n }\n }\n}\n\n\nexport default Post;\n","import axios from 'axios';\nimport NinaModel from './NinaModel';\nimport { stripHtmlIfNeeded, decode } from '../utils';\nimport Account from './Account';\nimport Release from './Release';\nimport Post from './Post';\n\nclass Hub extends NinaModel {\n static get tableName() {\n return 'hubs';\n }\n static get idColumn() {\n return 'id';\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey', 'handle', 'data', 'dataUri', 'datetime'],\n properties: {\n publicKey: { type: 'string' },\n handle: { type: 'string' },\n data: { type: 'object' },\n dataUri: { type: 'string' },\n datetime: { type: 'string' },\n },\n };\n }\n\n async format () {\n const authority = await this.$relatedQuery('authority').select('publicKey');\n this.authority = authority.publicKey;\n delete this.authorityId;\n delete this.id;\n\n stripHtmlIfNeeded(this.data, 'description');\n }\n\n static async updateHub(hub, hubAccount, hubContents, hubReleases, hubCollaborators, hubPosts) {\n if (typeof hubAccount.account.uri !== 'string') {\n hubAccount.account.uri = decode(hubAccount.account.uri)\n }\n if (!hub.dataUri || hub.dataUri !== hubAccount.account.uri) {\n const data = (await axios.get(hubAccount.account.uri)).data;\n await hub.$query().patch({\n data,\n dataUri: hubAccount.account.uri\n });\n }\n\n // Update Hub Releases\n const hubReleasesForHubOnChain = hubReleases.filter(x => x.account.hub.toBase58() === hub.publicKey);\n const hubReleasesForHubDb = (await Hub.relatedQuery('releases').for(hub)).map(x => x.publicKey);\n const newHubReleasesForHub = hubReleasesForHubOnChain.filter(x => !hubReleasesForHubDb.includes(x.account.release.toBase58()));\n\n for await (let hubRelease of hubReleasesForHubOnChain) {\n try {\n if (hubReleasesForHubDb.includes(hubRelease.account.release.toBase58())) {\n const hubContent = hubContents.filter(x => x.account.child.toBase58() === hubRelease.publicKey.toBase58())[0]\n const release = await Release.query().findOne({publicKey: hubRelease.account.release.toBase58()});\n if (release) {\n await Hub.relatedQuery('releases').for(hub.id).patch({\n visible: hubContent.account.visible,\n }).where( {id: release.id });\n }\n }\n } catch (err) {\n console.log(err);\n }\n }\n for await (let hubRelease of newHubReleasesForHub) {\n try {\n const hubContent = hubContents.filter(x => x.account.child.toBase58() === hubRelease.publicKey.toBase58())[0]\n const release = await Release.query().findOne({publicKey: hubRelease.account.release.toBase58()});\n if (release) {\n await Hub.relatedQuery('releases').for(hub.id).relate({\n id: release.id,\n hubReleasePublicKey: hubRelease.publicKey.toBase58(),\n visible: hubContent.account.visible,\n });\n if (hubContent.account.publishedThroughHub) {\n await release.$query().patch({hubId: hub.id});\n }\n console.log('Related Release to Hub:', release.publicKey, hub.publicKey); \n }\n } catch (err) {\n console.log(err);\n }\n }\n \n // Update Hub Collaborators\n const hubCollaboratorsForHubOnChain = hubCollaborators.filter(x => x.account.hub.toBase58() === hub.publicKey);\n const hubCollaboratorsForHubDb = (await Hub.relatedQuery('collaborators').for(hub)).map(x => x.publicKey);\n const newHubCollaboratorsForHub = hubCollaboratorsForHubOnChain.filter(x => !hubCollaboratorsForHubDb.includes(x.account.collaborator.toBase58()));\n for await (let hubCollaborator of newHubCollaboratorsForHub) {\n try {\n const collaboratorRecord = await Account.findOrCreate(hubCollaborator.account.collaborator.toBase58());\n if (collaboratorRecord) {\n await Hub.relatedQuery('collaborators').for(hub.id).relate({\n id: collaboratorRecord.id,\n hubCollaboratorPublicKey: hubCollaborator.publicKey.toBase58(),\n })\n console.log('Related Collaborator to Hub:', collaboratorRecord.publicKey, hub.publicKey);\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n const removedCollaborators = hubCollaboratorsForHubDb.filter(x => !hubCollaboratorsForHubOnChain.map(x => x.account.collaborator.toBase58()).includes(x));\n for await (let removedCollaborator of removedCollaborators) {\n try {\n const collaboratorRecord = await Account.query().findOne({publicKey: removedCollaborator});\n if (collaboratorRecord) {\n await Hub.relatedQuery('collaborators').for(hub.id).unrelate().where('accountId', collaboratorRecord.id);\n console.log('Removed Collaborator from Hub:', collaboratorRecord.publicKey, hub.publicKey);\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n //Update HubPosts\n const hubPostsForHubOnChain = hubPosts.filter(x => x.account.hub.toBase58() === hub.publicKey);\n const hubPostsForHubDb = (await Hub.relatedQuery('posts').for(hub)).map(x => x.publicKey);\n const newHubPostsForHub = hubPostsForHubOnChain.filter(x => !hubPostsForHubDb.includes(x.account.post.toBase58()));\n\n for await (let hubPost of hubPostsForHubOnChain) {\n try {\n if (hubPostsForHubDb.includes(hubPost.account.post.toBase58())) {\n const hubContent = hubContents.filter(x => x.account.child.toBase58() === hubPost.publicKey.toBase58())[0]\n if (!hubContent.account.visible) {\n const post = await Post.query().findOne({publicKey: hubPost.account.post.toBase58()});\n if (post) {\n await Post.relatedQuery('releases').for(post.id).unrelate().where('hubId', hub.id);\n console.log('Deleted Post:', hubPost.publicKey);\n }\n } \n }\n } catch (err) {\n console.log(err);\n }\n }\n\n for await (let hubPost of newHubPostsForHub) {\n try {\n const hubContent = hubContents.filter(x => x.account.child.toBase58() === hubPost.publicKey.toBase58())[0]\n const post = await Post.query().findOne({publicKey: hubPost.account.post.toBase58()});\n if (hubContent.account.visible) {\n if (post) {\n await Hub.relatedQuery('posts').for(hub.id).relate({\n id: post.id,\n hubPostPublicKey: hubPost.publicKey.toBase58(),\n });\n if (hubContent.account.publishedThroughHub) {\n await post.$query().patch({hubId: hub.id});\n }\n console.log('Related Post to Hub:', post.publicKey, hub.publicKey);\n }\n \n if (hubPost.account.referenceContent) {\n const release = await Release.query().findOne({publicKey: hubPost.account.referenceContent.toBase58()});\n if (release) {\n const relatedRelease = await Post.relatedQuery('releases').for(post.id).where('releaseId', release.id).first();\n if (!relatedRelease) {\n await Post.relatedQuery('releases').for(post.id).relate(release.id);\n console.log('Related Release to Post:', release.publicKey, post.publicKey);\n }\n }\n }\n } else if (post) {\n if (hubContent.account.publishedThroughHub) {\n await Post.query().deleteById(post.id);\n console.log('deleted Post:', post.publicKey);\n }\n\n }\n } catch (err) {\n console.log(err);\n }\n }\n }\n \n static get relationMappings() {\n return {\n authority: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'hubs.authorityId',\n to: 'accounts.id',\n },\n },\n collaborators: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Account',\n join: {\n from: 'hubs.id',\n through: {\n from: 'hubs_collaborators.hubId',\n to: 'hubs_collaborators.accountId',\n extra: ['hubCollaboratorPublicKey'],\n },\n to: 'accounts.id',\n },\n },\n posts: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Post',\n join: {\n from: 'hubs.id',\n through: {\n from: 'hubs_posts.hubId',\n to: 'hubs_posts.postId',\n extra: ['hubPostPublicKey'],\n },\n to: 'posts.id',\n },\n },\n releases: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Release',\n join: {\n from: 'hubs.id',\n through: {\n from: 'hubs_releases.hubId',\n to: 'hubs_releases.releaseId',\n extra: ['hubReleasePublicKey', 'visible'],\n },\n to: 'releases.id',\n },\n },\n }\n }\n}\n\nexport default Hub;","import NinaModel from './NinaModel';\nimport Account from './Account';\nimport Hub from './Hub';\n\nclass Subscription extends NinaModel {\n static get tableName() {\n return 'subscriptions';\n }\n static get idColumn() {\n return 'id';\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey', 'datetime'],\n properties: {\n publicKey: { type: 'string' },\n datetime: { type: 'string' },\n from: { type: 'string' },\n to: { type: 'string' },\n subscriptionType: {\n type: 'string',\n enum: ['account', 'hub'],\n },\n },\n };\n }\n\n static async findOrCreate({publicKey, from, to, datetime, subscriptionType}) {\n let subscription = await Subscription.query().findOne({ publicKey });\n if (subscription) {\n return subscription;\n }\n\n subscription = await Subscription.query().insert({\n publicKey, from, to, datetime, subscriptionType\n });\n console.log('Inserted subscription: ', publicKey)\n return subscription;\n }\n\n async format () {\n if (this.subscriptionType === 'account') {\n const accountTo = await Account.query().findOne({ publicKey: this.to });\n await accountTo.format();\n this.to = accountTo;\n\n const accountFrom = await Account.query().findOne({ publicKey: this.from });\n await accountFrom.format();\n this.from = accountFrom;\n } else if (this.subscriptionType === 'hub') {\n const hub = await Hub.query().findOne({ publicKey: this.to });\n await hub.format();\n this.to = hub;\n \n const account = await Account.query().findOne({ publicKey: this.from });\n await account.format();\n this.from = account;\n }\n delete this.id;\n }\n}\n\nexport default Subscription;","import Account from './Account';\nimport Exchange from './Exchange';\nimport Hub from './Hub';\nimport Post from './Post';\nimport Release from './Release';\nimport Subscription from './Subscription';\nimport Transaction from './Transaction';\nimport Verification from './Verification';\n\nexport default {\n Account,\n Exchange,\n Hub,\n Post,\n Release,\n Subscription,\n Transaction,\n Verification,\n};","// Update with your config settings.\n\n/**\n * @type { Object.<string, import(\"knex\").Knex.Config> }\n */\nexport default {\n\n development: {\n client: 'postgresql',\n connection: {\n host: process.env.POSTGRES_HOST,\n database: process.env.POSTGRES_DATABASE,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + '/migrations',\n },\n },\n\n staging: {\n client: 'postgresql',\n connection: {\n host: process.env.POSTGRES_HOST,\n database: process.env.POSTGRES_DATABASE,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + '/migrations',\n },\n },\n\n production: {\n client: 'postgresql',\n connection: {\n host: process.env.POSTGRES_HOST,\n database: process.env.POSTGRES_DATABASE,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + '/migrations',\n },\n }\n\n};\n","import Knex from 'knex'\nimport { Model } from 'objection'\nimport Models from './models'\nimport knexConfig from './utils/knexfile'\n\nconst initDb = async () => {\n const db = Knex(knexConfig.development)\n await db.raw(`SELECT 'CREATE DATABASE ${process.env.POSTGRES_DATABASE}'\n WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${process.env.POSTGRES_DATABASE}')`\n )\n await db.migrate.latest();\n \n Model.knex(db) \n}\n\nconst destroyDb = async () => {\n const db = Knex(knexConfig.development)\n await db.destroy()\n}\n\nconst connectDb = async () => {\n const db = Knex(knexConfig.development)\n \n Model.knex(db) \n}\n\nconst db = {\n initDb,\n connectDb,\n destroyDb,\n ...Models,\n}\n\nexport default db","import NinaModel from './NinaModel';\n\nclass Exchange extends NinaModel {\n static get tableName() {\n return 'exchanges'\n }\n static get idColumn() {\n return 'id'\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey', 'isSale', 'initializerAmount', 'expectedAmount', 'cancelled', 'createdAt'],\n properties: {\n publicKey: { type: 'string' },\n isSale: { type: 'boolean' },\n initializerAmount: { type: 'number' },\n expectedAmount: { type: 'number' },\n cancelled: { type: 'boolean' },\n createdAt: { type: 'string' },\n updatedAt: { type: 'string' },\n },\n };\n }\n\n async format () {\n const initializer = await this.$relatedQuery('initializer');\n const completedBy = await this.$relatedQuery('completedBy');\n const release = await this.$relatedQuery('release').select('publicKey');\n\n if (completedBy) {\n await completedBy.format();\n this.completedBy = completedBy;\n }\n this.release = release.publicKey;\n await initializer.format();\n this.initializer = initializer;\n delete this.id\n delete this.initializerId\n delete this.completedById\n delete this.releaseId\n }\n\n static get relationMappings() {\n return {\n initializer: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'exchanges.initializerId',\n to: 'accounts.id',\n },\n },\n completedBy: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'exchanges.completedById', \n to: 'accounts.id',\n },\n },\n release: {\n relation: Model.HasOneRelation,\n modelClass: 'Release',\n join: {\n from: 'exchanges.releaseId',\n to: 'releases.id',\n },\n },\n }\n }\n}\n\n\nexport default Exchange;","import NinaModel from './NinaModel';\n\nclass Transaction extends NinaModel {\n static get tableName() {\n return 'transactions';\n }\n static get idColumn() {\n return 'id';\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['txid', 'blocktime', 'type'],\n properties: {\n txid: { type: 'string' },\n blocktime: { type: 'integer' },\n type: {\n type: 'string',\n enum: [\n 'HubInitWithCredit',\n 'ReleaseInitWithCredit',\n 'ReleaseInitViaHub',\n 'ReleasePurchase',\n 'ReleasePurchaseViaHub',\n 'HubAddCollaborator',\n 'HubAddRelease',\n 'PostInitViaHub',\n 'PostInitViaHubWithReferenceRelease',\n 'SubscriptionSubscribeAccount',\n 'SubscriptionSubscribeHub',\n ],\n },\n },\n };\n }\n\n async format () { \n const hub = await this.$relatedQuery('hub');\n if (hub) {\n await hub.format()\n this.hub = hub;\n }\n delete this.hubId\n\n const authority = await this.$relatedQuery('authority');\n if (authority) {\n await authority.format();\n this.authority = authority;\n }\n delete this.authorityId\n\n const release = await this.$relatedQuery('release');\n if (release) {\n await release.format();\n this.release = release;\n }\n delete this.releaseId\n\n const post = await this.$relatedQuery('post');\n if (post) {\n await post.format();\n this.post = post;\n }\n delete this.postId\n\n const toAccount = await this.$relatedQuery('toAccount');\n if (toAccount) {\n await toAccount.format();\n this.toAccount = toAccount;\n }\n delete this.toAccountId\n\n const toHub = await this.$relatedQuery('toHub');\n if (toHub) {\n await toHub.format();\n this.toHub = toHub;\n }\n delete this.toHubId\n\n this.datetime = new Date(this.blocktime * 1000).toISOString()\n delete this.id;\n }\n\n static get relationMappings() {\n return {\n authority: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'transactions.authorityId',\n to: 'accounts.id',\n },\n },\n hub: { \n relation: Model.HasOneRelation,\n modelClass: 'Hub',\n join: {\n from: 'transactions.hubId',\n to: 'hubs.id',\n },\n },\n release: {\n relation: Model.HasOneRelation,\n modelClass: 'Release',\n join: {\n from: 'transactions.releaseId',\n to: 'releases.id',\n },\n },\n post: {\n relation: Model.HasOneRelation,\n modelClass: 'Post',\n join: {\n from: 'transactions.postId',\n to: 'posts.id',\n },\n },\n toAccount: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'transactions.toAccountId',\n to: 'accounts.id',\n },\n },\n toHub: {\n relation: Model.HasOneRelation,\n modelClass: 'Hub',\n join: {\n from: 'transactions.toHubId',\n to: 'hubs.id',\n },\n },\n };\n }\n}\n\nexport default Transaction;","import NinaModel from './NinaModel';\n\nclass Verification extends NinaModel {\n static get tableName() {\n return 'verifications';\n }\n static get idColumn() {\n return 'id';\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey', 'type', 'value'],\n properties: {\n publicKey: { type: 'string' },\n type: {\n type: 'string',\n enum: [\n 'soundcloud',\n 'instagram',\n 'twitter',\n 'ethereum',\n ],\n },\n value: { type: 'string' },\n displayName: { type: 'string' },\n image: { type: 'string' },\n description: { type: 'string' },\n },\n };\n }\n\n async format () {\n delete this.id;\n const account = await this.$relatedQuery('account');\n delete this.accountId;\n if (account) {\n this.account = account.publicKey;\n }\n }\n\n static get relationMappings() {\n return {\n account: {\n relation: Model.BelongsToOneRelation,\n modelClass: 'Account',\n join: {\n from: 'verifications.accountId',\n to: 'accounts.id',\n },\n },\n };\n }\n}\n\nexport default Verification;"],"names":["Model","require","NinaModel","modelPaths","__dirname","Account","tableName","type","required","properties","publicKey","static","account","query","findOne","insert","console","log","async","verifications","$relatedQuery","where","_iteratorError","_iteratorAbruptCompletion","_didIteratorError","_step","_iterator","_asyncIterator","next","done","verification","value","format","err","return","this","id","relationMappings","published","relation","HasManyRelation","modelClass","join","from","to","collected","ManyToManyRelation","through","exchangesInitialized","exchangesCompleted","hubs","extra","posts","revenueShares","stripHtmlIfNeeded","object","strippedDescription","striptags","string","replace","substring","length","idColumn","jsonSchema","mint","metadata","name","symbol","description","artist","title","date","files","category","creators","release","Release","connection","web3","Connection","process","env","SOLANA_CLUSTER_URL","anchor","AnchorProvider","commitment","program","Program","at","NINA_PROGRAM_ID","provider","metaplex","Metaplex","releaseAccount","fetch","metadataAccount","nfts","findByMint","releaseMint","run","publisher","findOrCreate","authority","toBase58","createRelease","json","datetime","Date","releaseDatetime","toNumber","toISOString","publisherId","insertGraph","processRevenueShares","TWITTER_API_SECRET","sleep","client","TwitterApi","appKey","TWITTER_API_KEY","appSecret","accessToken","TWITTER_ACCESS_TOKEN","accessSecret","TWITTER_ACCESS_TOKEN_SECRET","text","substr","external_url","v2","tweet","error","warn","tweetNewRelease","releaseData","releaseRecord","_releaseData$account","royaltyRecipients","recipient","recipientAuthority","recipientAccount","map","revenueShare","includes","relatedQuery","for","relate","select","publishedThroughHub","hubId","BelongsToOneRelation","HasOneRelation","collectors","exchanges","revenueShareRecipients","Post","data","releases","Hub","handle","dataUri","authorityId","hub","hubAccount","hubContents","hubReleases","hubCollaborators","hubPosts","byteArray","uri","TextDecoder","decode","Uint8Array","replaceAll","get","$query","patch","filter","x","hubReleasesForHubDb","newHubReleasesForHub","hubReleasesForHubOnChain","hubRelease","hubContent","child","visible","_iteratorError2","_iteratorAbruptCompletion2","_didIteratorError2","_step2","_iterator2","hubReleasePublicKey","hubCollaboratorsForHubOnChain","hubCollaboratorsForHubDb","newHubCollaboratorsForHub","collaborator","hubCollaborator","collaboratorRecord","hubCollaboratorPublicKey","_didIteratorError3","_iteratorError3","_iteratorAbruptCompletion3","_iterator3","removedCollaborators","removedCollaborator","unrelate","_didIteratorError4","_iteratorError4","_iteratorAbruptCompletion4","_iterator4","hubPostsForHubDb","newHubPostsForHub","hubPostsForHubOnChain","post","_iteratorError5","_iteratorAbruptCompletion5","_didIteratorError5","_step5","_iterator5","hubPost","_iteratorError6","_iteratorAbruptCompletion6","_didIteratorError6","_step6","_iterator6","hubPostPublicKey","referenceContent","first","deleteById","collaborators","Subscription","subscriptionType","enum","subscription","accountTo","accountFrom","knexConfig","development","host","POSTGRES_HOST","database","POSTGRES_DATABASE","user","POSTGRES_USER","password","POSTGRES_PASSWORD","migrations","directory","staging","production","db","initDb","Knex","raw","migrate","latest","knex","connectDb","destroyDb","destroy","Exchange","isSale","initializerAmount","expectedAmount","cancelled","createdAt","updatedAt","completedBy","initializer","initializerId","completedById","releaseId","Transaction","txid","blocktime","postId","toAccount","toAccountId","toHub","toHubId","Verification","displayName","image","accountId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../src/models/NinaModel.js","../src/models/Account.js","../src/utils/index.js","../src/models/Release.js","../src/models/Post.js","../src/models/Hub.js","../src/models/Subscription.js","../src/models/index.js","../src/utils/knexfile.js","../src/index.cjs","../src/models/Exchange.js","../src/models/Transaction.js","../src/models/Verification.js"],"sourcesContent":["const { Model } = require('objection');\n\nclass NinaModel extends Model {\n static get modelPaths() {\n return [__dirname];\n }\n}\n\nexport default NinaModel\n","import { Model } from 'objection';\nimport NinaModel from './NinaModel';\n\nclass Account extends NinaModel {\n static get tableName() {\n return 'accounts';\n }\n\n static get idColumn() {\n return 'id';\n }\n\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey'],\n properties: {\n publicKey: { type: 'string' },\n },\n };\n }\n\n static async findOrCreate(publicKey) {\n let account = await Account.query().findOne({ publicKey });\n if (account) {\n return account;\n }\n account = await Account.query().insert({ publicKey });\n console.log('Inserted Account: ', publicKey)\n return account;\n }\n\n async format () {\n const verifications = await this.$relatedQuery('verifications').where('active', true);\n if (verifications) {\n for await (let verification of verifications) {\n await verification.format();\n }\n this.verifications = verifications;\n }\n delete this.id\n }\n\n static get relationMappings() { \n return {\n published: { \n relation: Model.HasManyRelation,\n modelClass: 'Release',\n join: {\n from: 'accounts.id',\n to: 'releases.publisherId'\n }\n },\n collected: { \n relation: Model.ManyToManyRelation,\n modelClass: 'Release',\n join: {\n from: 'accounts.id',\n through: {\n from: 'releases_collected.accountId',\n to: 'releases_collected.releaseId',\n },\n to: 'releases.id'\n }\n },\n exchangesInitialized: {\n relation: Model.HasManyRelation,\n modelClass: 'Exchange',\n join: {\n from: 'accounts.id',\n to: 'exchanges.initializerId',\n },\n },\n exchangesCompleted: {\n relation: Model.HasManyRelation,\n modelClass: 'Exchange',\n join: {\n from: 'accounts.id',\n to: 'exchanges.completedById',\n },\n },\n hubs: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Hub',\n join: {\n from: 'accounts.id',\n through : {\n from: 'hubs_collaborators.accountId',\n to: 'hubs_collaborators.hubId',\n extra: ['hubCollaboratorPublicKey'],\n },\n to: 'hubs.id',\n },\n },\n posts: {\n relation: Model.HasManyRelation,\n modelClass: 'Post',\n join: {\n from: 'accounts.id',\n to: 'posts.publisherId',\n },\n },\n revenueShares: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Release',\n join: {\n from: 'accounts.id',\n through: {\n from: 'releases_revenue_share.accountId',\n to: 'releases_revenue_share.releaseId',\n },\n to: 'releases.id',\n },\n },\n verifications: {\n relation: Model.HasManyRelation,\n modelClass: 'Verification',\n join: {\n from: 'accounts.id',\n to: 'verifications.accountId',\n },\n },\n };\n }\n}\n\nexport default Account;","import striptags from 'striptags';\nimport { TwitterApi } from 'twitter-api-v2';\n\nconst removeQuotesFromStartAndEndOfString = (string) => {\n return string.substring(1, string.length - 1).substring(-1, string.length - 1);\n}\n\nexport const stripHtmlIfNeeded = (object, value) => {\n let strippedDescription = striptags(object[value], [], ' ');\n strippedDescription = strippedDescription.replace(' ', ' ');\n if (strippedDescription !== object[value]) {\n object[value+\"Html\"] = object[value];\n object[value] = removeQuotesFromStartAndEndOfString(strippedDescription);\n }\n}\n\nexport const decode = (byteArray) => {\n return new TextDecoder().decode(new Uint8Array(byteArray)).replaceAll(/\\u0000/g, '');\n}\n\nexport const tweetNewRelease = async (metadata) => {\n if (process.env.TWITTER_API_SECRET) {\n try {\n await sleep(60000)\n const client = new TwitterApi({\n appKey: process.env.TWITTER_API_KEY,\n appSecret: process.env.TWITTER_API_SECRET,\n accessToken: process.env.TWITTER_ACCESS_TOKEN,\n accessSecret: process.env.TWITTER_ACCESS_TOKEN_SECRET,\n });\n \n let text = (`${metadata.properties.artist} - \"${metadata.properties.title}\"`).substr(0, 250)\n text = `${text} ${metadata.external_url}`\n await client.v2.tweet(text); \n } catch (error) {\n console.warn('error sending new release tweet: ', error, metadata)\n }\n }\n}","import anchor from '@project-serum/anchor';\nimport { Metaplex } from '@metaplex-foundation/js';\nimport { Model } from 'objection';\nimport NinaModel from './NinaModel';\nimport { stripHtmlIfNeeded, tweetNewRelease }from '../utils';\nimport Account from './Account';\n\nclass Release extends NinaModel {\n static get tableName() {\n return 'releases';\n }\n static get idColumn() {\n return 'id';\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey', 'mint', 'metadata', 'datetime'],\n properties: {\n publicKey: { type: 'string' },\n mint: { type: 'string' },\n metadata: {\n type: 'object',\n required: ['name', 'symbol', 'description', 'image', 'properties'],\n properties: {\n name: { type: 'string' },\n symbol: { type: 'string' },\n description: { type: 'string' },\n properties: {\n type: 'object',\n properties: {\n artist: { type: 'string' },\n title: { type: 'string' },\n date: { type: 'string' },\n files: { type: 'array' },\n category: { type: 'string' },\n creators: { type: 'array' },\n }\n }\n }\n },\n },\n };\n }\n\n static async findOrCreate(publicKey) {\n let release = await Release.query().findOne({ publicKey });\n if (release) {\n return release;\n }\n\n const connection = new anchor.web3.Connection(process.env.SOLANA_CLUSTER_URL);\n const provider = new anchor.AnchorProvider(connection, {}, {commitment: 'processed'}) \n const program = await anchor.Program.at(\n process.env.NINA_PROGRAM_ID,\n provider,\n )\n const metaplex = new Metaplex(connection);\n\n const releaseAccount = await program.account.release.fetch(publicKey, 'confirmed')\n const metadataAccount = await metaplex.nfts().findByMint(releaseAccount.releaseMint, {commitment: \"confirmed\"}).run();\n let publisher = await Account.findOrCreate(releaseAccount.authority.toBase58());\n\n release = await this.createRelease({\n publicKey,\n mint: releaseAccount.releaseMint.toBase58(),\n metadata: metadataAccount.json,\n datetime: new Date(releaseAccount.releaseDatetime.toNumber() * 1000).toISOString(),\n publisherId: publisher.id,\n releaseAccount\n });\n return release;\n }\n\n static async createRelease({publicKey, mint, metadata, datetime, publisherId, releaseAccount}) {\n const release = await Release.query().insertGraph({\n publicKey,\n mint,\n metadata,\n datetime,\n publisherId,\n })\n await this.processRevenueShares(releaseAccount, release);\n await tweetNewRelease(metadata);\n console.log('Inserted Release: ', publicKey)\n return release;\n }\n\n static async processRevenueShares (releaseData, releaseRecord) {\n const royaltyRecipients = releaseData.account?.royaltyRecipients || releaseData.royaltyRecipients\n for await (let recipient of royaltyRecipients) {\n try {\n if (recipient.recipientAuthority.toBase58() !== \"11111111111111111111111111111111\") {\n const recipientAccount = await Account.findOrCreate(recipient.recipientAuthority.toBase58());\n const revenueShares = (await recipientAccount.$relatedQuery('revenueShares')).map(revenueShare => revenueShare.id);\n if (!revenueShares.includes(releaseRecord.id)) {\n await Account.relatedQuery('revenueShares').for(recipientAccount.id).relate(releaseRecord.id);\n }\n }\n } catch (error) {\n console.log('error processing royaltyRecipients: ', error)\n }\n }\n }\n\n async format() {\n const publisher = await this.$relatedQuery('publisher').select('publicKey');\n const publishedThroughHub = await this.$relatedQuery('publishedThroughHub');\n if (publishedThroughHub) {\n this.publishedThroughHub = publishedThroughHub.publicKey;\n }\n this.publisher = publisher.publicKey;\n delete this.publisherId\n delete this.hubId\n delete this.id\n\n stripHtmlIfNeeded(this.metadata, 'description');\n }\n\n static relationMappings() {\n return {\n publishedThroughHub: {\n relation: Model.BelongsToOneRelation,\n modelClass: 'Hub',\n join: {\n from: 'releases.hubId',\n to: 'hubs.id',\n },\n },\n publisher: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'releases.publisherId',\n to: 'accounts.id',\n },\n },\n collectors: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Account',\n join: {\n from: 'releases.id',\n through: {\n from: 'releases_collected.releaseId',\n to: 'releases_collected.accountId',\n },\n to: 'accounts.id',\n },\n },\n exchanges: {\n relation: Model.HasManyRelation,\n modelClass: 'Exchange',\n join: {\n from: 'releases.id',\n to: 'exchanges.releaseId',\n },\n },\n hubs: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Hub',\n join: {\n from: 'releases.id',\n through : {\n from: 'hubs_releases.releaseId',\n to: 'hubs_releases.hubId',\n extra: ['hubReleasePublicKey'],\n },\n to: 'hubs.id',\n },\n },\n posts: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Post',\n join: {\n from: 'releases.id',\n through : {\n from: 'posts_releases.releaseId',\n to: 'posts_releases.postId',\n },\n to: 'posts.id',\n },\n },\n revenueShareRecipients: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Account',\n join: {\n from: 'releases.id',\n through: {\n from: 'releases_revenue_share.releaseId',\n to: 'releases_revenue_share.accountId',\n },\n to: 'accounts.id',\n },\n }\n };\n }\n}\n\nexport default Release;\n","import { Model } from 'objection';\nimport NinaModel from './NinaModel';\nimport { stripHtmlIfNeeded } from '../utils';\n\nclass Post extends NinaModel {\n static get tableName() {\n return 'posts';\n }\n static get idColumn() {\n return 'id';\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey', 'data', 'datetime'],\n properties: {\n publicKey: { type: 'string' },\n data: { type: 'object' },\n datetime: { type: 'string' },\n },\n };\n }\n\n async format() {\n const publisher = await this.$relatedQuery('publisher').select('publicKey');\n const publishedThroughHub = await this.$relatedQuery('publishedThroughHub').select('publicKey');\n\n this.publisher = publisher.publicKey;\n if (publishedThroughHub) {\n this.publishedThroughHub = publishedThroughHub.publicKey;\n }\n \n delete this.publisherId\n delete this.id\n delete this.hubId\n \n stripHtmlIfNeeded(this.data, 'body');\n }\n\n static relationMappings() { \n return {\n publishedThroughHub: {\n relation: Model.BelongsToOneRelation,\n modelClass: 'Hub',\n join: {\n from: 'posts.hubId',\n to: 'hubs.id',\n },\n },\n publisher: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'posts.publisherId',\n to: 'accounts.id',\n },\n },\n hubs: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Hub',\n join: {\n from: 'posts.id',\n through : {\n from: 'hubs_posts.postId',\n to: 'hubs_posts.hubId',\n extra: ['hubPostPublicKey'],\n },\n to: 'hubs.id',\n },\n },\n releases: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Release',\n join: {\n from: 'posts.id',\n through : {\n from: 'posts_releases.postId',\n to: 'posts_releases.releaseId',\n },\n to: 'releases.id',\n },\n },\n }\n }\n}\n\n\nexport default Post;\n","import axios from 'axios';\nimport { Model } from 'objection';\nimport NinaModel from './NinaModel';\nimport { stripHtmlIfNeeded, decode } from '../utils';\nimport Account from './Account';\nimport Release from './Release';\nimport Post from './Post';\n\nclass Hub extends NinaModel {\n static get tableName() {\n return 'hubs';\n }\n static get idColumn() {\n return 'id';\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey', 'handle', 'data', 'dataUri', 'datetime'],\n properties: {\n publicKey: { type: 'string' },\n handle: { type: 'string' },\n data: { type: 'object' },\n dataUri: { type: 'string' },\n datetime: { type: 'string' },\n },\n };\n }\n\n async format () {\n const authority = await this.$relatedQuery('authority').select('publicKey');\n this.authority = authority.publicKey;\n delete this.authorityId;\n delete this.id;\n\n stripHtmlIfNeeded(this.data, 'description');\n }\n\n static async updateHub(hub, hubAccount, hubContents, hubReleases, hubCollaborators, hubPosts) {\n if (typeof hubAccount.account.uri !== 'string') {\n hubAccount.account.uri = decode(hubAccount.account.uri)\n }\n if (!hub.dataUri || hub.dataUri !== hubAccount.account.uri) {\n const data = (await axios.get(hubAccount.account.uri)).data;\n await hub.$query().patch({\n data,\n dataUri: hubAccount.account.uri\n });\n }\n\n // Update Hub Releases\n const hubReleasesForHubOnChain = hubReleases.filter(x => x.account.hub.toBase58() === hub.publicKey);\n const hubReleasesForHubDb = (await Hub.relatedQuery('releases').for(hub)).map(x => x.publicKey);\n const newHubReleasesForHub = hubReleasesForHubOnChain.filter(x => !hubReleasesForHubDb.includes(x.account.release.toBase58()));\n\n for await (let hubRelease of hubReleasesForHubOnChain) {\n try {\n if (hubReleasesForHubDb.includes(hubRelease.account.release.toBase58())) {\n const hubContent = hubContents.filter(x => x.account.child.toBase58() === hubRelease.publicKey.toBase58())[0]\n const release = await Release.query().findOne({publicKey: hubRelease.account.release.toBase58()});\n if (release) {\n await Hub.relatedQuery('releases').for(hub.id).patch({\n visible: hubContent.account.visible,\n }).where( {id: release.id });\n }\n }\n } catch (err) {\n console.log(err);\n }\n }\n for await (let hubRelease of newHubReleasesForHub) {\n try {\n const hubContent = hubContents.filter(x => x.account.child.toBase58() === hubRelease.publicKey.toBase58())[0]\n const release = await Release.query().findOne({publicKey: hubRelease.account.release.toBase58()});\n if (release) {\n await Hub.relatedQuery('releases').for(hub.id).relate({\n id: release.id,\n hubReleasePublicKey: hubRelease.publicKey.toBase58(),\n visible: hubContent.account.visible,\n });\n if (hubContent.account.publishedThroughHub) {\n await release.$query().patch({hubId: hub.id});\n }\n console.log('Related Release to Hub:', release.publicKey, hub.publicKey); \n }\n } catch (err) {\n console.log(err);\n }\n }\n \n // Update Hub Collaborators\n const hubCollaboratorsForHubOnChain = hubCollaborators.filter(x => x.account.hub.toBase58() === hub.publicKey);\n const hubCollaboratorsForHubDb = (await Hub.relatedQuery('collaborators').for(hub)).map(x => x.publicKey);\n const newHubCollaboratorsForHub = hubCollaboratorsForHubOnChain.filter(x => !hubCollaboratorsForHubDb.includes(x.account.collaborator.toBase58()));\n for await (let hubCollaborator of newHubCollaboratorsForHub) {\n try {\n const collaboratorRecord = await Account.findOrCreate(hubCollaborator.account.collaborator.toBase58());\n if (collaboratorRecord) {\n await Hub.relatedQuery('collaborators').for(hub.id).relate({\n id: collaboratorRecord.id,\n hubCollaboratorPublicKey: hubCollaborator.publicKey.toBase58(),\n })\n console.log('Related Collaborator to Hub:', collaboratorRecord.publicKey, hub.publicKey);\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n const removedCollaborators = hubCollaboratorsForHubDb.filter(x => !hubCollaboratorsForHubOnChain.map(x => x.account.collaborator.toBase58()).includes(x));\n for await (let removedCollaborator of removedCollaborators) {\n try {\n const collaboratorRecord = await Account.query().findOne({publicKey: removedCollaborator});\n if (collaboratorRecord) {\n await Hub.relatedQuery('collaborators').for(hub.id).unrelate().where('accountId', collaboratorRecord.id);\n console.log('Removed Collaborator from Hub:', collaboratorRecord.publicKey, hub.publicKey);\n }\n } catch (err) {\n console.log(err);\n }\n }\n\n //Update HubPosts\n const hubPostsForHubOnChain = hubPosts.filter(x => x.account.hub.toBase58() === hub.publicKey);\n const hubPostsForHubDb = (await Hub.relatedQuery('posts').for(hub)).map(x => x.publicKey);\n const newHubPostsForHub = hubPostsForHubOnChain.filter(x => !hubPostsForHubDb.includes(x.account.post.toBase58()));\n\n for await (let hubPost of hubPostsForHubOnChain) {\n try {\n if (hubPostsForHubDb.includes(hubPost.account.post.toBase58())) {\n const hubContent = hubContents.filter(x => x.account.child.toBase58() === hubPost.publicKey.toBase58())[0]\n if (!hubContent.account.visible) {\n const post = await Post.query().findOne({publicKey: hubPost.account.post.toBase58()});\n if (post) {\n await Post.relatedQuery('releases').for(post.id).unrelate().where('hubId', hub.id);\n console.log('Deleted Post:', hubPost.publicKey);\n }\n } \n }\n } catch (err) {\n console.log(err);\n }\n }\n\n for await (let hubPost of newHubPostsForHub) {\n try {\n const hubContent = hubContents.filter(x => x.account.child.toBase58() === hubPost.publicKey.toBase58())[0]\n const post = await Post.query().findOne({publicKey: hubPost.account.post.toBase58()});\n if (hubContent.account.visible) {\n if (post) {\n await Hub.relatedQuery('posts').for(hub.id).relate({\n id: post.id,\n hubPostPublicKey: hubPost.publicKey.toBase58(),\n });\n if (hubContent.account.publishedThroughHub) {\n await post.$query().patch({hubId: hub.id});\n }\n console.log('Related Post to Hub:', post.publicKey, hub.publicKey);\n }\n \n if (hubPost.account.referenceContent) {\n const release = await Release.query().findOne({publicKey: hubPost.account.referenceContent.toBase58()});\n if (release) {\n const relatedRelease = await Post.relatedQuery('releases').for(post.id).where('releaseId', release.id).first();\n if (!relatedRelease) {\n await Post.relatedQuery('releases').for(post.id).relate(release.id);\n console.log('Related Release to Post:', release.publicKey, post.publicKey);\n }\n }\n }\n } else if (post) {\n if (hubContent.account.publishedThroughHub) {\n await Post.query().deleteById(post.id);\n console.log('deleted Post:', post.publicKey);\n }\n\n }\n } catch (err) {\n console.log(err);\n }\n }\n }\n \n static get relationMappings() {\n return {\n authority: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'hubs.authorityId',\n to: 'accounts.id',\n },\n },\n collaborators: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Account',\n join: {\n from: 'hubs.id',\n through: {\n from: 'hubs_collaborators.hubId',\n to: 'hubs_collaborators.accountId',\n extra: ['hubCollaboratorPublicKey'],\n },\n to: 'accounts.id',\n },\n },\n posts: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Post',\n join: {\n from: 'hubs.id',\n through: {\n from: 'hubs_posts.hubId',\n to: 'hubs_posts.postId',\n extra: ['hubPostPublicKey'],\n },\n to: 'posts.id',\n },\n },\n releases: {\n relation: Model.ManyToManyRelation,\n modelClass: 'Release',\n join: {\n from: 'hubs.id',\n through: {\n from: 'hubs_releases.hubId',\n to: 'hubs_releases.releaseId',\n extra: ['hubReleasePublicKey', 'visible'],\n },\n to: 'releases.id',\n },\n },\n }\n }\n}\n\nexport default Hub;","import NinaModel from './NinaModel';\nimport Account from './Account';\nimport Hub from './Hub';\n\nclass Subscription extends NinaModel {\n static get tableName() {\n return 'subscriptions';\n }\n static get idColumn() {\n return 'id';\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey', 'datetime'],\n properties: {\n publicKey: { type: 'string' },\n datetime: { type: 'string' },\n from: { type: 'string' },\n to: { type: 'string' },\n subscriptionType: {\n type: 'string',\n enum: ['account', 'hub'],\n },\n },\n };\n }\n\n static async findOrCreate({publicKey, from, to, datetime, subscriptionType}) {\n let subscription = await Subscription.query().findOne({ publicKey });\n if (subscription) {\n return subscription;\n }\n\n subscription = await Subscription.query().insert({\n publicKey, from, to, datetime, subscriptionType\n });\n console.log('Inserted subscription: ', publicKey)\n return subscription;\n }\n\n async format () {\n if (this.subscriptionType === 'account') {\n const accountTo = await Account.query().findOne({ publicKey: this.to });\n await accountTo.format();\n this.to = accountTo;\n\n const accountFrom = await Account.query().findOne({ publicKey: this.from });\n await accountFrom.format();\n this.from = accountFrom;\n } else if (this.subscriptionType === 'hub') {\n const hub = await Hub.query().findOne({ publicKey: this.to });\n await hub.format();\n this.to = hub;\n \n const account = await Account.query().findOne({ publicKey: this.from });\n await account.format();\n this.from = account;\n }\n delete this.id;\n }\n}\n\nexport default Subscription;","import Account from './Account';\nimport Exchange from './Exchange';\nimport Hub from './Hub';\nimport Post from './Post';\nimport Release from './Release';\nimport Subscription from './Subscription';\nimport Transaction from './Transaction';\nimport Verification from './Verification';\n\nexport default {\n Account,\n Exchange,\n Hub,\n Post,\n Release,\n Subscription,\n Transaction,\n Verification,\n};","// Update with your config settings.\n\n/**\n * @type { Object.<string, import(\"knex\").Knex.Config> }\n */\nexport default {\n\n development: {\n client: 'postgresql',\n connection: {\n host: process.env.POSTGRES_HOST,\n database: process.env.POSTGRES_DATABASE,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + '/migrations',\n },\n },\n\n staging: {\n client: 'postgresql',\n connection: {\n host: process.env.POSTGRES_HOST,\n database: process.env.POSTGRES_DATABASE,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + '/migrations',\n },\n },\n\n production: {\n client: 'postgresql',\n connection: {\n host: process.env.POSTGRES_HOST,\n database: process.env.POSTGRES_DATABASE,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + '/migrations',\n },\n }\n\n};\n","import Knex from 'knex'\nimport { Model } from 'objection'\nimport Models from './models'\nimport knexConfig from './utils/knexfile'\n\nconst initDb = async () => {\n const db = Knex(knexConfig.development)\n await db.raw(`SELECT 'CREATE DATABASE ${process.env.POSTGRES_DATABASE}'\n WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${process.env.POSTGRES_DATABASE}')`\n )\n await db.migrate.latest();\n \n Model.knex(db) \n}\n\nconst destroyDb = async () => {\n const db = Knex(knexConfig.development)\n await db.destroy()\n}\n\nconst connectDb = async () => {\n const db = Knex(knexConfig.development)\n \n Model.knex(db) \n}\n\nconst db = {\n initDb,\n connectDb,\n destroyDb,\n ...Models,\n}\n\nexport default db","import { Model } from 'objection';\nimport NinaModel from './NinaModel';\n\nclass Exchange extends NinaModel {\n static get tableName() {\n return 'exchanges'\n }\n static get idColumn() {\n return 'id'\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey', 'isSale', 'initializerAmount', 'expectedAmount', 'cancelled', 'createdAt'],\n properties: {\n publicKey: { type: 'string' },\n isSale: { type: 'boolean' },\n initializerAmount: { type: 'number' },\n expectedAmount: { type: 'number' },\n cancelled: { type: 'boolean' },\n createdAt: { type: 'string' },\n updatedAt: { type: 'string' },\n },\n };\n }\n\n async format () {\n const initializer = await this.$relatedQuery('initializer');\n const completedBy = await this.$relatedQuery('completedBy');\n const release = await this.$relatedQuery('release').select('publicKey');\n\n if (completedBy) {\n await completedBy.format();\n this.completedBy = completedBy;\n }\n this.release = release.publicKey;\n await initializer.format();\n this.initializer = initializer;\n delete this.id\n delete this.initializerId\n delete this.completedById\n delete this.releaseId\n }\n\n static get relationMappings() {\n return {\n initializer: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'exchanges.initializerId',\n to: 'accounts.id',\n },\n },\n completedBy: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'exchanges.completedById', \n to: 'accounts.id',\n },\n },\n release: {\n relation: Model.HasOneRelation,\n modelClass: 'Release',\n join: {\n from: 'exchanges.releaseId',\n to: 'releases.id',\n },\n },\n }\n }\n}\n\n\nexport default Exchange;","import { Model } from 'objection';\nimport NinaModel from './NinaModel';\n\nclass Transaction extends NinaModel {\n static get tableName() {\n return 'transactions';\n }\n static get idColumn() {\n return 'id';\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['txid', 'blocktime', 'type'],\n properties: {\n txid: { type: 'string' },\n blocktime: { type: 'integer' },\n type: {\n type: 'string',\n enum: [\n 'HubInitWithCredit',\n 'ReleaseInitWithCredit',\n 'ReleaseInitViaHub',\n 'ReleasePurchase',\n 'ReleasePurchaseViaHub',\n 'HubAddCollaborator',\n 'HubAddRelease',\n 'PostInitViaHub',\n 'PostInitViaHubWithReferenceRelease',\n 'SubscriptionSubscribeAccount',\n 'SubscriptionSubscribeHub',\n ],\n },\n },\n };\n }\n\n async format () { \n const hub = await this.$relatedQuery('hub');\n if (hub) {\n await hub.format()\n this.hub = hub;\n }\n delete this.hubId\n\n const authority = await this.$relatedQuery('authority');\n if (authority) {\n await authority.format();\n this.authority = authority;\n }\n delete this.authorityId\n\n const release = await this.$relatedQuery('release');\n if (release) {\n await release.format();\n this.release = release;\n }\n delete this.releaseId\n\n const post = await this.$relatedQuery('post');\n if (post) {\n await post.format();\n this.post = post;\n }\n delete this.postId\n\n const toAccount = await this.$relatedQuery('toAccount');\n if (toAccount) {\n await toAccount.format();\n this.toAccount = toAccount;\n }\n delete this.toAccountId\n\n const toHub = await this.$relatedQuery('toHub');\n if (toHub) {\n await toHub.format();\n this.toHub = toHub;\n }\n delete this.toHubId\n\n this.datetime = new Date(this.blocktime * 1000).toISOString()\n delete this.id;\n }\n\n static get relationMappings() {\n return {\n authority: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'transactions.authorityId',\n to: 'accounts.id',\n },\n },\n hub: { \n relation: Model.HasOneRelation,\n modelClass: 'Hub',\n join: {\n from: 'transactions.hubId',\n to: 'hubs.id',\n },\n },\n release: {\n relation: Model.HasOneRelation,\n modelClass: 'Release',\n join: {\n from: 'transactions.releaseId',\n to: 'releases.id',\n },\n },\n post: {\n relation: Model.HasOneRelation,\n modelClass: 'Post',\n join: {\n from: 'transactions.postId',\n to: 'posts.id',\n },\n },\n toAccount: {\n relation: Model.HasOneRelation,\n modelClass: 'Account',\n join: {\n from: 'transactions.toAccountId',\n to: 'accounts.id',\n },\n },\n toHub: {\n relation: Model.HasOneRelation,\n modelClass: 'Hub',\n join: {\n from: 'transactions.toHubId',\n to: 'hubs.id',\n },\n },\n };\n }\n}\n\nexport default Transaction;","import { Model } from 'objection';\nimport NinaModel from './NinaModel';\n\nclass Verification extends NinaModel {\n static get tableName() {\n return 'verifications';\n }\n static get idColumn() {\n return 'id';\n }\n static get jsonSchema() {\n return {\n type: 'object',\n required: ['publicKey', 'type', 'value'],\n properties: {\n publicKey: { type: 'string' },\n type: {\n type: 'string',\n enum: [\n 'soundcloud',\n 'instagram',\n 'twitter',\n 'ethereum',\n ],\n },\n value: { type: 'string' },\n displayName: { type: 'string' },\n image: { type: 'string' },\n description: { type: 'string' },\n },\n };\n }\n\n async format () {\n delete this.id;\n const account = await this.$relatedQuery('account');\n delete this.accountId;\n if (account) {\n this.account = account.publicKey;\n }\n }\n\n static get relationMappings() {\n return {\n account: {\n relation: Model.BelongsToOneRelation,\n modelClass: 'Account',\n join: {\n from: 'verifications.accountId',\n to: 'accounts.id',\n },\n },\n };\n }\n}\n\nexport default Verification;"],"names":["Model","require","NinaModel","modelPaths","__dirname","Account","tableName","idColumn","jsonSchema","type","required","properties","publicKey","static","query","findOne","account","insert","console","log","async","verifications","this","$relatedQuery","where","_iteratorError","_iteratorAbruptCompletion","_didIteratorError","_step","_iterator","next","done","value","verification","format","err","return","id","relationMappings","published","relation","HasManyRelation","modelClass","join","from","to","collected","ManyToManyRelation","through","exchangesInitialized","exchangesCompleted","hubs","extra","posts","revenueShares","stripHtmlIfNeeded","object","strippedDescription","striptags","string","replace","substring","length","Release","mint","metadata","name","symbol","description","artist","title","date","files","category","creators","release","connection","anchor","web3","Connection","process","env","SOLANA_CLUSTER_URL","provider","AnchorProvider","commitment","program","Program","at","NINA_PROGRAM_ID","metaplex","Metaplex","releaseAccount","fetch","metadataAccount","nfts","findByMint","releaseMint","run","publisher","findOrCreate","authority","toBase58","createRelease","json","datetime","Date","releaseDatetime","toNumber","toISOString","publisherId","insertGraph","processRevenueShares","TWITTER_API_SECRET","sleep","client","TwitterApi","appKey","TWITTER_API_KEY","appSecret","accessToken","TWITTER_ACCESS_TOKEN","accessSecret","TWITTER_ACCESS_TOKEN_SECRET","text","substr","external_url","v2","tweet","error","warn","tweetNewRelease","releaseData","releaseRecord","_releaseData$account","royaltyRecipients","_asyncIterator","recipient","recipientAuthority","recipientAccount","map","revenueShare","includes","relatedQuery","for","relate","select","publishedThroughHub","hubId","BelongsToOneRelation","HasOneRelation","collectors","exchanges","revenueShareRecipients","Post","data","releases","Hub","handle","dataUri","authorityId","hub","hubAccount","hubContents","hubReleases","hubCollaborators","hubPosts","byteArray","uri","TextDecoder","decode","Uint8Array","replaceAll","axios","get","$query","patch","filter","x","newHubReleasesForHub","hubReleasesForHubOnChain","hubReleasesForHubDb","hubRelease","hubContent","child","visible","_iteratorError2","_iteratorAbruptCompletion2","_didIteratorError2","_step2","_iterator2","hubReleasePublicKey","hubCollaboratorsForHubOnChain","hubCollaboratorsForHubDb","newHubCollaboratorsForHub","collaborator","_iteratorError3","_iteratorAbruptCompletion3","_didIteratorError3","_step3","_iterator3","hubCollaborator","collaboratorRecord","hubCollaboratorPublicKey","removedCollaborators","_iteratorError4","_iteratorAbruptCompletion4","_didIteratorError4","_step4","_iterator4","removedCollaborator","unrelate","hubPostsForHubOnChain","hubPostsForHubDb","newHubPostsForHub","post","_iteratorError5","_iteratorAbruptCompletion5","_didIteratorError5","hubPost","_iterator5","_iteratorError6","_iteratorAbruptCompletion6","_didIteratorError6","_step6","_iterator6","hubPostPublicKey","referenceContent","first","deleteById","collaborators","Subscription","subscriptionType","enum","subscription","accountTo","accountFrom","knexConfig","development","host","POSTGRES_HOST","database","POSTGRES_DATABASE","user","POSTGRES_USER","password","POSTGRES_PASSWORD","migrations","directory","staging","production","db","initDb","Knex","raw","migrate","latest","knex","connectDb","destroyDb","destroy","Exchange","isSale","initializerAmount","expectedAmount","cancelled","createdAt","updatedAt","initializer","completedBy","initializerId","completedById","releaseId","Transaction","txid","blocktime","postId","toAccount","toAccountId","toHub","toHubId","Verification","displayName","image","accountId"],"mappings":"8iCAAA,MAAMA,MAAEA,GAAUC,QAAQ,aAE1B,MAAeC,YACQC,wBACnB,MAAO,CAACC,UACV,ECFF,MAAMC,UAA0BH,EACVI,uBAClB,MAAO,UACT,CAEmBC,sBACjB,MAAO,IACT,CAEWC,wBACT,MAAO,CACLC,KAAM,SACNC,SAAU,CAAC,aACXC,WAAY,CACVC,UAAW,CAAEH,KAAM,WAGzB,CAEAI,0BAA0BD,GACxB,cAA4BE,QAAQC,QAAQ,CAAEH,cAC9C,OAAII,IAGJA,QAAgBX,EAAQS,QAAQG,OAAO,CAAEL,cACzCM,QAAQC,IAAI,qBAAsBP,GAEpCI,EAAA,CAEAI,eACE,MAAmBC,QAAaC,KAACC,cAAc,iBAAiBC,MAAM,UAAU,GAChF,GAAIH,EAAe,CAAA,IAAAI,EAAAC,GAAA,EAAAC,GAAA,EAAA,IACjB,IAA+BN,IAAeO,EAAfP,EAAAA,EAAAA,GAAeK,IAAAE,QAAAC,EAAAC,QAAAC,KAAAL,GAAA,EAAA,CAAA,MAC5CE,EAAAI,YAAkBC,EAACC,QACrB,CAAC,CAAA,MAAAC,GAAAR,GAAA,EAAAF,EAAAU,CAAA,CAAA,QAAA,IAAAT,GAAA,MAAAG,EAAAO,cAAAP,EAAAO,QAAA,CAAA,QAAA,GAAAT,EAAA,MAAAF,CAAA,CAAA,CACDH,KAAKD,cAAgBA,CACvB,aACYgB,EACd,CAEWC,8BACT,MAAO,CACLC,UAAW,CACTC,SAAUxC,EAAMyC,gBAChBC,WAAY,UACZC,KAAM,CACJC,KAAM,cACNC,GAAI,yBAGRC,UAAW,CACTN,SAAUxC,EAAM+C,mBAChBL,WAAY,UACZC,KAAM,CACJC,KAAM,cACNI,QAAS,CACPJ,KAAM,+BACNC,GAAI,gCAENA,GAAI,gBAGRI,qBAAsB,CACpBT,SAAUxC,EAAMyC,gBAChBC,WAAY,WACZC,KAAM,CACJC,KAAM,cACNC,GAAI,4BAGRK,mBAAoB,CAClBV,SAAUxC,EAAMyC,gBAChBC,WAAY,WACZC,KAAM,CACJC,KAAM,cACNC,GAAI,4BAGRM,KAAM,CACJX,SAAUxC,EAAM+C,mBAChBL,WAAY,MACZC,KAAM,CACJC,KAAM,cACNI,QAAU,CACRJ,KAAM,+BACNC,GAAI,2BACJO,MAAO,CAAC,6BAEVP,GAAI,YAGRQ,MAAO,CACLb,SAAUxC,EAAMyC,gBAChBC,WAAY,OACZC,KAAM,CACJC,KAAM,cACNC,GAAI,sBAGRS,cAAe,CACbd,SAAUxC,EAAM+C,mBAChBL,WAAY,UACZC,KAAM,CACJC,KAAM,cACNI,QAAS,CACPJ,KAAM,mCACNC,GAAI,oCAENA,GAAI,gBAGRxB,cAAe,CACbmB,SAAUxC,EAAMyC,gBAChBC,WAAY,eACZC,KAAM,CACJC,KAAM,cACNC,GAAI,4BAIZ,ECxHF,MAIaU,EAAoB,CAACC,EAAQxB,KACxC,IAAIyB,EAAsBC,EAAUF,EAAOxB,GAAQ,GAAI,KALZ2B,MAM3CF,EAAsBA,EAAoBG,QAAQ,SAAU,KACxDH,IAAwBD,EAAOxB,KACjCwB,EAAOxB,EAAM,QAAUwB,EAAOxB,GAC9BwB,EAAOxB,IATkC2B,EASWF,GARxCI,UAAU,EAAGF,EAAOG,OAAS,GAAGD,WAAW,EAAGF,EAAOG,OAAS,GAS5E,ECNF,MAAaC,YACSzD,uBAClB,MAAO,UACT,CACmBC,sBACjB,MAAO,IACT,CACWC,wBACT,MAAO,CACLC,KAAM,SACNC,SAAU,CAAC,YAAa,OAAQ,WAAY,YAC5CC,WAAY,CACVC,UAAW,CAAEH,KAAM,UACnBuD,KAAM,CAAEvD,KAAM,UACdwD,SAAU,CACRxD,KAAM,SACNC,SAAU,CAAC,OAAQ,SAAU,cAAe,QAAS,cACrDC,WAAY,CACVuD,KAAM,CAAEzD,KAAM,UACd0D,OAAQ,CAAE1D,KAAM,UAChB2D,YAAa,CAAE3D,KAAM,UACrBE,WAAY,CACVF,KAAM,SACNE,WAAY,CACV0D,OAAQ,CAAE5D,KAAM,UAChB6D,MAAO,CAAE7D,KAAM,UACf8D,KAAM,CAAE9D,KAAM,UACd+D,MAAO,CAAE/D,KAAM,SACfgE,SAAU,CAAEhE,KAAM,UAClBiE,SAAU,CAAEjE,KAAM,cAOhC,CAEAI,0BAA0BD,GACxB,IAAI+D,QAAuBZ,EAACjD,QAAQC,QAAQ,CAAEH,cAC9C,GAAI+D,EACF,OACFA,EAEA,MAAgBC,EAAG,IAAIC,EAAOC,KAAKC,WAAWC,QAAQC,IAAIC,oBACpDC,EAAW,IAAUN,EAACO,eAAeR,EAAY,CAAE,EAAE,CAACS,WAAY,cAClEC,QAAsBT,EAACU,QAAQC,GACnCR,QAAQC,IAAIQ,gBACZN,GAEIO,EAAW,IAAIC,EAASf,GAEVgB,QAASN,EAAQtE,QAAQ2D,QAAQkB,MAAMjF,EAAW,aACjDkF,QAASJ,EAASK,OAAOC,WAAWJ,EAAeK,YAAa,CAACZ,WAAY,cAAca,MAChH,IAAIC,QAAyB9F,EAAC+F,aAAaR,EAAeS,UAAUC,YAUpE,OARA3B,QAAgBrD,KAAKiF,cAAc,CACjC3F,YACAoD,KAAM4B,EAAeK,YAAYK,WACjCrC,SAAU6B,EAAgBU,KAC1BC,SAAU,IAAQC,KAA6C,IAA5Cd,EAAee,gBAAgBC,YAAmBC,cACrEC,YAAaX,EAAU9D,GACvBuD,mBAEKjB,CACT,CAEA9D,4BAA2BD,UAACA,EAASoD,KAAEA,EAAIC,SAAEA,EAAQwC,SAAEA,EAAQK,YAAEA,EAAWlB,eAAEA,IAC5E,MAAajB,QAASZ,EAAQjD,QAAQiG,YAAY,CAChDnG,YACAoD,OACAC,WACAwC,WACAK,gBAKF,aAHUxF,KAAC0F,qBAAqBpB,EAAgBjB,QD9DrBvD,WAC7B,GAAI4D,QAAQC,IAAIgC,mBACd,UACQC,MAAM,KACZ,MAAYC,EAAG,IAAIC,EAAW,CAC5BC,OAAQrC,QAAQC,IAAIqC,gBACpBC,UAAWvC,QAAQC,IAAIgC,mBACvBO,YAAaxC,QAAQC,IAAIwC,qBACzBC,aAAc1C,QAAQC,IAAI0C,8BAG5B,IAAIC,EAAS,GAAE3D,EAAStD,WAAW0D,aAAaJ,EAAStD,WAAW2D,SAAUuD,OAAO,EAAG,KACxFD,EAAQ,GAAEA,KAAQ3D,EAAS6D,qBACrBX,EAAOY,GAAGC,MAAMJ,EAGxB,CAFE,MAAOK,GACP/G,QAAQgH,KAAK,oCAAqCD,EAAOhE,EAC3D,CACF,EC8CuBkE,CAAClE,GACtB/C,QAAQC,IAAI,qBAAsBP,GAC3B+D,CACT,CAEA9D,kCAAmCuH,EAAaC,GAAe,IAAAC,EAC7D,MAAMC,GAAoB,OAAAD,EAAAF,EAAYpH,cAAZ,EAAAsH,EAAqBC,oBAAqBH,EAAYG,kBAChF,IAAA9G,EAAAC,GAAA,EAAAC,GAAA,EAAA,IAAA,IAAA,IAA6CC,EAA7CC,EAAA2G,EAA4BD,GAAiB7G,IAAAE,QAAAC,EAAAC,QAAAC,KAAAL,GAAA,EAAE,CAAhC+G,IAAAA,UACb,IACE,GAAgD,qCAA5CA,EAAUC,mBAAmBpC,WAAmD,CAClF,cAAsCjG,EAAC+F,aAAaqC,EAAUC,mBAAmBpC,mBACpDqC,EAAiBpH,cAAc,kBAAkBqH,IAAIC,GAAgBA,EAAaxG,IAC5FyG,SAAST,EAAchG,WAC3BhC,EAAC0I,aAAa,iBAAiBC,IAAIL,EAAiBtG,IAAI4G,OAAOZ,EAAchG,GAE9F,CAGF,CAFE,MAAO4F,GACP/G,QAAQC,IAAI,uCAAwC8G,EACtD,CACF,CAAC,CAAA,MAAA9F,GAAAR,GAAA,EAAAF,EAAAU,CAAA,CAAA,QAAA,IAAAT,GAAA,MAAAG,EAAAO,cAAAP,EAAAO,QAAA,CAAA,QAAA,GAAAT,EAAA,MAAAF,CAAA,CAAA,CACH,CAEAL,eACE,MAAM+E,QAAkB7E,KAAKC,cAAc,aAAa2H,OAAO,aACzDC,QAAgC7H,KAACC,cAAc,uBACjD4H,IACF7H,KAAK6H,oBAAsBA,EAAoBvI,WAEjDU,KAAK6E,UAAYA,EAAUvF,iBACpBU,KAAKwF,wBACAsC,aACD9H,KAACe,GAEZkB,EAAkBjC,KAAK2C,SAAU,cACnC,CAEApD,0BACE,MAAO,CACLsI,oBAAqB,CACnB3G,SAAUxC,EAAMqJ,qBAChB3G,WAAY,MACZC,KAAM,CACJC,KAAM,iBACNC,GAAI,YAGRsD,UAAW,CACT3D,SAAUxC,EAAMsJ,eAChB5G,WAAY,UACZC,KAAM,CACJC,KAAM,uBACNC,GAAI,gBAGR0G,WAAY,CACV/G,SAAUxC,EAAM+C,mBAChBL,WAAY,UACZC,KAAM,CACJC,KAAM,cACNI,QAAS,CACPJ,KAAM,+BACNC,GAAI,gCAENA,GAAI,gBAGR2G,UAAW,CACThH,SAAUxC,EAAMyC,gBAChBC,WAAY,WACZC,KAAM,CACJC,KAAM,cACNC,GAAI,wBAGRM,KAAM,CACJX,SAAUxC,EAAM+C,mBAChBL,WAAY,MACZC,KAAM,CACJC,KAAM,cACNI,QAAU,CACRJ,KAAM,0BACNC,GAAI,sBACJO,MAAO,CAAC,wBAEVP,GAAI,YAGRQ,MAAO,CACLb,SAAUxC,EAAM+C,mBAChBL,WAAY,OACZC,KAAM,CACJC,KAAM,cACNI,QAAU,CACRJ,KAAM,2BACNC,GAAI,yBAENA,GAAI,aAGR4G,uBAAwB,CACtBjH,SAAUxC,EAAM+C,mBAChBL,WAAY,UACZC,KAAM,CACJC,KAAM,cACNI,QAAS,CACPJ,KAAM,mCACNC,GAAI,oCAENA,GAAI,gBAIZ,EC/LF,MAAU6G,UAAmBxJ,EAChBI,uBACT,MAAO,OACT,CACWC,sBACT,MAAO,IACT,CACqBC,wBACnB,MAAO,CACLC,KAAM,SACNC,SAAU,CAAC,YAAa,OAAQ,YAChCC,WAAY,CACVC,UAAW,CAAEH,KAAM,UACnBkJ,KAAM,CAAElJ,KAAM,UACdgG,SAAU,CAAEhG,KAAM,WAGxB,CAEAW,eACE,MAAe+E,QAAS7E,KAAKC,cAAc,aAAa2H,OAAO,aACtCC,QAAa7H,KAACC,cAAc,uBAAuB2H,OAAO,aAEnF5H,KAAK6E,UAAYA,EAAUvF,UACvBuI,IACF7H,KAAK6H,oBAAsBA,EAAoBvI,uBAGrCkG,wBACAzE,eACA+G,MAEZ7F,EAAkBjC,KAAKqI,KAAM,OAC/B,CAEA9I,0BACE,MAAO,CACLsI,oBAAqB,CACnB3G,SAAUxC,EAAMqJ,qBAChB3G,WAAY,MACZC,KAAM,CACJC,KAAM,cACNC,GAAI,YAGRsD,UAAW,CACT3D,SAAUxC,EAAMsJ,eAChB5G,WAAY,UACZC,KAAM,CACJC,KAAM,oBACNC,GAAI,gBAGRM,KAAM,CACJX,SAAUxC,EAAM+C,mBAChBL,WAAY,MACZC,KAAM,CACJC,KAAM,WACNI,QAAU,CACRJ,KAAM,oBACNC,GAAI,mBACJO,MAAO,CAAC,qBAEVP,GAAI,YAGR+G,SAAU,CACRpH,SAAUxC,EAAM+C,mBAChBL,WAAY,UACZC,KAAM,CACJC,KAAM,WACNI,QAAU,CACRJ,KAAM,wBACNC,GAAI,4BAENA,GAAI,gBAIZ,EC3EF,MAASgH,mCAEL,MAAO,MACT,uBAEE,MAAO,IACT,CACqBrJ,wBACnB,MAAO,CACLC,KAAM,SACNC,SAAU,CAAC,YAAa,SAAU,OAAQ,UAAW,YACrDC,WAAY,CACVC,UAAW,CAAEH,KAAM,UACnBqJ,OAAQ,CAAErJ,KAAM,UAChBkJ,KAAM,CAAElJ,KAAM,UACdsJ,QAAS,CAAEtJ,KAAM,UACjBgG,SAAU,CAAEhG,KAAM,WAGxB,CAEAW,eACE,MAAeiF,QAAa/E,KAACC,cAAc,aAAa2H,OAAO,aAC/D5H,KAAK+E,UAAYA,EAAUzF,iBACpBU,KAAK0I,mBACD1I,KAACe,GAEZkB,EAAkBjC,KAAKqI,KAAM,cAC/B,CAEA9I,uBAAuBoJ,EAAKC,EAAYC,EAAaC,EAAaC,EAAkBC,GHtB/DC,MG0BnB,GAHsC,iBAA3BL,EAAWlJ,QAAQwJ,MAC5BN,EAAWlJ,QAAQwJ,KHxBFD,EGwBeL,EAAWlJ,QAAQwJ,KHvB5CC,IAAAA,aAAcC,OAAO,IAAIC,WAAWJ,IAAYK,WAAW,UAAW,OGyB1EX,EAAIF,SAAWE,EAAIF,UAAYG,EAAWlJ,QAAQwJ,IAAK,CAC1D,eAAyBK,EAACC,IAAIZ,EAAWlJ,QAAQwJ,MAAMb,WACjDM,EAAIc,SAASC,MAAM,CACvBrB,OACAI,QAASG,EAAWlJ,QAAQwJ,KAEhC,CAGA,QAAiCJ,EAAYa,OAAOC,GAAKA,EAAElK,QAAQiJ,IAAI3D,aAAe2D,EAAIrJ,oBACpDiJ,EAACd,aAAa,YAAYC,IAAIiB,IAAMrB,IAAIsC,GAAKA,EAAEtK,WAC3DuK,EAAGC,EAAyBH,OAAOC,IAAMG,EAAoBvC,SAASoC,EAAElK,QAAQ2D,QAAQ2B,aAAa,IAAA7E,EAAAC,GAAA,EAAAC,GAAA,EAAA,IAE/H,QAAqDC,MAAxBwJ,GAAwB1J,IAAAE,QAAAC,EAAAC,QAAAC,KAAAL,GAAA,EAAE,KAA9B4J,EAAA1J,EAAAI,MACvB,IACE,GAAIqJ,EAAoBvC,SAASwC,EAAWtK,QAAQ2D,QAAQ2B,YAAa,CACvE,MAAMiF,EAAapB,EAAYc,OAAOC,GAAKA,EAAElK,QAAQwK,MAAMlF,aAAegF,EAAW1K,UAAU0F,YAAY,GACrG3B,QAAgBZ,EAAQjD,QAAQC,QAAQ,CAACH,UAAW0K,EAAWtK,QAAQ2D,QAAQ2B,aACjF3B,WACQoE,aAAa,YAAYC,IAAIiB,EAAI5H,IAAI2I,MAAM,CACnDS,QAASF,EAAWvK,QAAQyK,UAC3BjK,MAAO,CAACa,GAAIsC,EAAQtC,IAE3B,CAGF,CAFE,MAAOF,GACPjB,QAAQC,IAAIgB,EACd,CACF,CAAC,CAAA,MAAAA,GAAAR,GAAA,EAAAF,EAAAU,CAAA,CAAA,QAAA,IAAAT,GAAA,MAAAG,EAAAO,cAAAP,EAAAO,QAAA,CAAA,QAAA,GAAAT,EAAA,MAAAF,CAAA,CAAA,CAAA,IAAAiK,EAAAC,GAAA,EAAAC,GAAA,EAAA,IACD,IAA6BT,IAAsBU,EAAtBV,EAAAA,EAAAA,GAAsBQ,IAAAE,QAAAC,EAAAhK,QAAAC,KAAA4J,GAAA,EAAA,CAAA,MACjDE,EAAA7J,MAAA,IACE,MAAMuJ,EAAapB,EAAYc,OAAOC,GAAKA,EAAElK,QAAQwK,MAAMlF,aAAegF,EAAW1K,UAAU0F,YAAY,GACrG3B,QAAgBZ,EAAQjD,QAAQC,QAAQ,CAACH,UAAW0K,EAAWtK,QAAQ2D,QAAQ2B,aACjF3B,UACIkF,EAAId,aAAa,YAAYC,IAAIiB,EAAI5H,IAAI4G,OAAO,CACpD5G,GAAIsC,EAAQtC,GACZ0J,oBAAqBT,EAAW1K,UAAU0F,WAC1CmF,QAASF,EAAWvK,QAAQyK,UAE1BF,EAAWvK,QAAQmI,2BACRxE,EAACoG,SAASC,MAAM,CAAC5B,MAAOa,EAAI5H,KAE3CnB,QAAQC,IAAI,0BAA2BwD,EAAQ/D,UAAWqJ,EAAIrJ,WAIlE,CAFE,MAAOuB,GACPjB,QAAQC,IAAIgB,EACd,CACF,CAAC,CAAA,MAAAA,GAAAyJ,GAAA,EAAAF,EAAAvJ,CAAA,CAAA,QAAA,IAAAwJ,GAAA,MAAAG,EAAA1J,cAAA0J,EAAA1J,QAAA,CAAA,QAAA,GAAAwJ,EAAA,MAAAF,CAAA,CAAA,CAGD,MAAmCM,EAAG3B,EAAiBY,OAAOC,GAAKA,EAAElK,QAAQiJ,IAAI3D,aAAe2D,EAAIrJ,WACtEqL,SAAUpC,EAAId,aAAa,iBAAiBC,IAAIiB,IAAMrB,IAAIsC,GAAKA,EAAEtK,WAChEsL,EAAGF,EAA8Bf,OAAOC,IAAMe,EAAyBnD,SAASoC,EAAElK,QAAQmL,aAAa7F,aAAa,IAAA8F,EAAAC,GAAA,EAAAC,GAAA,EAAA,IACnJ,QAA2DC,MAAzBL,GAAyBG,IAAAE,QAAAC,EAAA1K,QAAAC,KAAAsK,GAAA,EAAE,KAA/BI,EAAAF,EAAAvK,MAC5B,IACE,gBAAyCoE,aAAaqG,EAAgBzL,QAAQmL,aAAa7F,YACvFoG,UACO7C,EAACd,aAAa,iBAAiBC,IAAIiB,EAAI5H,IAAI4G,OAAO,CACzD5G,GAAIqK,EAAmBrK,GACvBsK,yBAA0BF,EAAgB7L,UAAU0F,aAEtDpF,QAAQC,IAAI,+BAAgCuL,EAAmB9L,UAAWqJ,EAAIrJ,WAIlF,CAFE,MAAOuB,GACPjB,QAAQC,IAAIgB,EACd,CACF,CAEA,CAAA,MAAAA,GAAAmK,GAAA,EAAAF,EAAAjK,CAAA,CAAA,QAAA,IAAAkK,GAAA,MAAAG,EAAApK,cAAAoK,EAAApK,QAAA,CAAA,QAAA,GAAAkK,EAAA,MAAAF,CAAA,CAAA,CAAA,MAA0BQ,EAAGX,EAAyBhB,OAAOC,IAAMc,EAA8BpD,IAAIsC,GAAKA,EAAElK,QAAQmL,aAAa7F,YAAYwC,SAASoC,IAAI,IAAA2B,EAAAC,GAAA,EAAAC,GAAA,EAAA,IAC1J,QAA0DC,MAApBJ,GAAoBE,IAAAE,QAAAC,EAAAnL,QAAAC,KAAA+K,GAAA,EAAE,KAA1BI,EAAAF,EAAAhL,MAChC,IACE,MAAM0K,QAA2BrM,EAAQS,QAAQC,QAAQ,CAACH,UAAWsM,IACjER,UACI7C,EAAId,aAAa,iBAAiBC,IAAIiB,EAAI5H,IAAI8K,WAAW3L,MAAM,YAAakL,EAAmBrK,IACrGnB,QAAQC,IAAI,iCAAkCuL,EAAmB9L,UAAWqJ,EAAIrJ,WAIpF,CAFE,MAAOuB,GACPjB,QAAQC,IAAIgB,EACd,CACF,0FAGA,MAAMiL,EAAwB9C,EAASW,OAAOC,GAAKA,EAAElK,QAAQiJ,IAAI3D,aAAe2D,EAAIrJ,WAC9EyM,WAA8BtE,aAAa,SAASC,IAAIiB,IAAMrB,IAAIsC,GAAKA,EAAEtK,WACzE0M,EAAoBF,EAAsBnC,OAAOC,IAAMmC,EAAiBvE,SAASoC,EAAElK,QAAQuM,KAAKjH,aAAa,IAAAkH,EAAAC,GAAA,EAAAC,GAAA,EAAA,IAEnH,IAA0BN,MAAAA,EAAAA,EAAAA,mCAAuB,CAAlCO,IAAAA,UACb,IACE,GAAIN,EAAiBvE,SAAS6E,EAAQ3M,QAAQuM,KAAKjH,cAC9B6D,EAAYc,OAAOC,GAAKA,EAAElK,QAAQwK,MAAMlF,aAAeqH,EAAQ/M,UAAU0F,YAAY,GACxFtF,QAAQyK,QAAS,CAC/B,MAAM8B,UAAkBzM,QAAQC,QAAQ,CAACH,UAAW+M,EAAQ3M,QAAQuM,KAAKjH,aACrEiH,YACSxE,aAAa,YAAYC,IAAIuE,EAAKlL,IAAI8K,WAAW3L,MAAM,QAASyI,EAAI5H,IAC/EnB,QAAQC,IAAI,gBAAiBwM,EAAQ/M,WAEzC,CAIJ,CAFE,MAAOuB,GACPjB,QAAQC,IAAIgB,EACd,CACF,CAAC,CAAA,MAAAA,GAAAuL,GAAA,EAAAF,EAAArL,CAAA,CAAA,QAAA,IAAAsL,GAAA,MAAAG,EAAAxL,cAAAwL,EAAAxL,QAAA,CAAA,QAAA,GAAAsL,EAAA,MAAAF,CAAA,CAAA,CAAA,IAAAK,EAAAC,GAAA,EAAAC,GAAA,EAAA,IAED,QAA2CC,MAAjBV,GAAiBQ,IAAAE,QAAAC,EAAAnM,QAAAC,KAAA+L,GAAA,EAAE,KAAvBH,EAAAK,EAAAhM,MACpB,IACE,MAAMuJ,EAAapB,EAAYc,OAAOC,GAAKA,EAAElK,QAAQwK,MAAMlF,aAAeqH,EAAQ/M,UAAU0F,YAAY,GAClGiH,QAAa7D,EAAK5I,QAAQC,QAAQ,CAACH,UAAW+M,EAAQ3M,QAAQuM,KAAKjH,aACzE,GAAIiF,EAAWvK,QAAQyK,SAYrB,GAXI8B,YACQxE,aAAa,SAASC,IAAIiB,EAAI5H,IAAI4G,OAAO,CACjD5G,GAAIkL,EAAKlL,GACT6L,iBAAkBP,EAAQ/M,UAAU0F,aAElCiF,EAAWvK,QAAQmI,2BACfoE,EAAKxC,SAASC,MAAM,CAAC5B,MAAOa,EAAI5H,KAExCnB,QAAQC,IAAI,uBAAwBoM,EAAK3M,UAAWqJ,EAAIrJ,YAGtD+M,EAAQ3M,QAAQmN,iBAAkB,CACpC,MAAaxJ,QAASZ,EAAQjD,QAAQC,QAAQ,CAACH,UAAW+M,EAAQ3M,QAAQmN,iBAAiB7H,aACvF3B,UAC+B+E,EAACX,aAAa,YAAYC,IAAIuE,EAAKlL,IAAIb,MAAM,YAAamD,EAAQtC,IAAI+L,gBAE3F1E,EAACX,aAAa,YAAYC,IAAIuE,EAAKlL,IAAI4G,OAAOtE,EAAQtC,IAChEnB,QAAQC,IAAI,2BAA4BwD,EAAQ/D,UAAW2M,EAAK3M,YAGtE,OACS2M,GACLhC,EAAWvK,QAAQmI,4BACfO,EAAK5I,QAAQuN,WAAWd,EAAKlL,IACnCnB,QAAQC,IAAI,gBAAiBoM,EAAK3M,WAMxC,CAFE,MAAOuB,GACPjB,QAAQC,IAAIgB,EACd,CACF,CAAC,CAAA,MAAAA,GAAA4L,GAAA,EAAAF,EAAA1L,CAAA,CAAA,QAAA,IAAA2L,GAAA,MAAAG,EAAA7L,cAAA6L,EAAA7L,QAAA,CAAA,QAAA,GAAA2L,EAAA,MAAAF,CAAA,CAAA,CACH,CAE2BvL,8BACzB,MAAO,CACL+D,UAAW,CACT7D,SAAUxC,EAAMsJ,eAChB5G,WAAY,UACZC,KAAM,CACJC,KAAM,mBACNC,GAAI,gBAGRyL,cAAe,CACb9L,SAAUxC,EAAM+C,mBAChBL,WAAY,UACZC,KAAM,CACJC,KAAM,UACNI,QAAS,CACPJ,KAAM,2BACNC,GAAI,+BACJO,MAAO,CAAC,6BAEVP,GAAI,gBAGRQ,MAAO,CACLb,SAAUxC,EAAM+C,mBAChBL,WAAY,OACZC,KAAM,CACJC,KAAM,UACNI,QAAS,CACPJ,KAAM,mBACNC,GAAI,oBACJO,MAAO,CAAC,qBAEVP,GAAI,aAGR+G,SAAU,CACRpH,SAAUxC,EAAM+C,mBAChBL,WAAY,UACZC,KAAM,CACJC,KAAM,UACNI,QAAS,CACPJ,KAAM,sBACNC,GAAI,0BACJO,MAAO,CAAC,sBAAuB,YAEjCP,GAAI,gBAIZ,ECrOF,MAAM0L,UAA+BrO,EACxBI,uBACT,MAAO,eACT,CACmBC,sBACjB,MAAO,IACT,yBAEE,MAAO,CACLE,KAAM,SACNC,SAAU,CAAC,YAAa,YACxBC,WAAY,CACVC,UAAW,CAAEH,KAAM,UACnBgG,SAAU,CAAEhG,KAAM,UAClBmC,KAAM,CAAEnC,KAAM,UACdoC,GAAI,CAAEpC,KAAM,UACZ+N,iBAAkB,CAChB/N,KAAM,SACNgO,KAAM,CAAC,UAAW,SAI1B,CAEA5N,2BAA0BD,UAACA,EAASgC,KAAEA,EAAIC,GAAEA,EAAE4D,SAAEA,EAAQ+H,iBAAEA,IACxD,YAAqCD,EAACzN,QAAQC,QAAQ,CAAEH,cACxD,OAAI8N,IAIJA,QAAqBH,EAAazN,QAAQG,OAAO,CAC/CL,YAAWgC,OAAMC,KAAI4D,WAAU+H,qBAEjCtN,QAAQC,IAAI,0BAA2BP,GAChC8N,EACT,CAEAtN,eACE,GAA8B,YAA1BE,KAAKkN,iBAAgC,CACvC,MAAeG,QAAStO,EAAQS,QAAQC,QAAQ,CAAEH,UAAWU,KAAKuB,aAClDX,SAChBZ,KAAKuB,GAAK8L,EAEV,MAAMC,QAAoBvO,EAAQS,QAAQC,QAAQ,CAAEH,UAAWU,KAAKsB,aACnDgM,EAAC1M,SAClBZ,KAAKsB,KAAOgM,CACd,MAAO,GAA8B,QAA1BtN,KAAKkN,iBAA4B,CAC1C,MAASvE,QAAYJ,EAAC/I,QAAQC,QAAQ,CAAEH,UAAWU,KAAKuB,aAC9CX,SACVZ,KAAKuB,GAAKoH,EAEV,MAAajJ,QAASX,EAAQS,QAAQC,QAAQ,CAAEH,UAAWU,KAAKsB,eAClDV,SACdZ,KAAKsB,KAAO5B,CACd,QACWM,KAACe,EACd,ECnDF,ICJAwM,EAAe,CAEbC,YAAa,CACX3H,OAAQ,aACRvC,WAAY,CACVmK,KAAU/J,QAAQC,IAAI+J,cACtBC,SAAUjK,QAAQC,IAAIiK,kBACtBC,KAAUnK,QAAQC,IAAImK,cACtBC,SAAUrK,QAAQC,IAAIqK,mBAExBC,WAAY,CACVC,UAAWpP,UAAY,gBAI3BqP,QAAS,CACPtI,OAAQ,aACRvC,WAAY,CACVmK,KAAU/J,QAAQC,IAAI+J,cACtBC,SAAUjK,QAAQC,IAAIiK,kBACtBC,KAAUnK,QAAQC,IAAImK,cACtBC,SAAUrK,QAAQC,IAAIqK,mBAExBC,WAAY,CACVC,UAAWpP,UAAY,gBAI3BsP,WAAY,CACVvI,OAAQ,aACRvC,WAAY,CACVmK,KAAU/J,QAAQC,IAAI+J,cACtBC,SAAUjK,QAAQC,IAAIiK,kBACtBC,KAAUnK,QAAQC,IAAImK,cACtBC,SAAUrK,QAAQC,IAAIqK,mBAExBC,WAAY,CACVC,UAAWpP,UAAY,iBCrC7B,MAqBMuP,EAAK,CACTC,OAtBaxO,UACb,MAAMuO,EAAKE,EAAKhB,EAAWC,mBACrBa,EAAGG,IAAI,2BAA2B9K,QAAQC,IAAIiK,sFACWlK,QAAQC,IAAIiK,6BAErES,EAAGI,QAAQC,SAEjBhQ,EAAMiQ,KAAKN,EAAG,EAgBdO,UARgB9O,UAChB,MAAMuO,EAAKE,EAAKhB,EAAWC,aAE3B9O,EAAMiQ,KAAKN,EAAG,EAMdQ,UAdgB/O,UAChB,MAAMuO,EAAKE,EAAKhB,EAAWC,mBACrBa,EAAGS,SAAS,EFPlB/P,UACAgQ,SGRF,cAAiCnQ,EACXI,uBAClB,MAAO,WACT,CACWC,sBACT,MAAO,IACT,CACqBC,wBACnB,MAAO,CACLC,KAAM,SACNC,SAAU,CAAC,YAAa,SAAU,oBAAqB,iBAAkB,YAAa,aACtFC,WAAY,CACVC,UAAW,CAAEH,KAAM,UACnB6P,OAAQ,CAAE7P,KAAM,WAChB8P,kBAAmB,CAAE9P,KAAM,UAC3B+P,eAAgB,CAAE/P,KAAM,UACxBgQ,UAAW,CAAEhQ,KAAM,WACnBiQ,UAAW,CAAEjQ,KAAM,UACnBkQ,UAAW,CAAElQ,KAAM,WAGzB,CAEAW,eACE,MAAMwP,aAAyBrP,cAAc,eAC5BsP,QAASvP,KAAKC,cAAc,uBACnBD,KAACC,cAAc,WAAW2H,OAAO,aAEvD2H,UACeA,EAAC3O,SAClBZ,KAAKuP,YAAcA,GAErBvP,KAAKqD,QAAUA,EAAQ/D,gBACjBgQ,EAAY1O,SAClBZ,KAAKsP,YAAcA,cACPvO,eACAyO,0BACAC,qBACDzP,KAAC0P,SACd,CAE2B1O,8BACzB,MAAO,CACLsO,YAAa,CACXpO,SAAUxC,EAAMsJ,eAChB5G,WAAY,UACZC,KAAM,CACJC,KAAM,0BACNC,GAAI,gBAGRgO,YAAa,CACXrO,SAAUxC,EAAMsJ,eAChB5G,WAAY,UACZC,KAAM,CACJC,KAAM,0BACNC,GAAI,gBAGR8B,QAAS,CACPnC,SAAUxC,EAAMsJ,eAChB5G,WAAY,UACZC,KAAM,CACJC,KAAM,sBACNC,GAAI,gBAIZ,GH3DAgH,MACAH,OACA3F,UACAwK,eACA0C,YIbF,cAA0B/Q,EACbI,uBACT,MAAO,cACT,CACmBC,sBACjB,MAAO,IACT,CACqBC,wBACnB,MAAO,CACLC,KAAM,SACNC,SAAU,CAAC,OAAQ,YAAa,QAChCC,WAAY,CACVuQ,KAAM,CAAEzQ,KAAM,UACd0Q,UAAW,CAAE1Q,KAAM,WACnBA,KAAM,CACJA,KAAM,SACNgO,KAAM,CACJ,oBACA,wBACA,oBACA,kBACA,wBACA,qBACA,gBACA,iBACA,qCACA,+BACA,8BAKV,CAEArN,eACE,MAAS6I,QAAS3I,KAAKC,cAAc,OACjC0I,UACOA,EAAC/H,SACVZ,KAAK2I,IAAMA,eAEDb,MAEZ,MAAe/C,QAAS/E,KAAKC,cAAc,aACvC8E,UACaA,EAACnE,SAChBZ,KAAK+E,UAAYA,UAER/E,KAAC0I,YAEZ,MAAMrF,QAAoBrD,KAACC,cAAc,WACrCoD,UACIA,EAAQzC,SACdZ,KAAKqD,QAAUA,UAEVrD,KAAK0P,UAEZ,MAAUzD,QAASjM,KAAKC,cAAc,QAClCgM,UACQA,EAACrL,SACXZ,KAAKiM,KAAOA,UAEHjM,KAAC8P,OAEZ,MAAMC,QAAsB/P,KAACC,cAAc,aACvC8P,UACIA,EAAUnP,SAChBZ,KAAK+P,UAAYA,UAER/P,KAACgQ,YAEZ,MAAMC,QAAkBjQ,KAACC,cAAc,SACnCgQ,UACIA,EAAMrP,SACZZ,KAAKiQ,MAAQA,UAERjQ,KAAKkQ,QAEZlQ,KAAKmF,SAAW,SAA0B,IAAjBnF,KAAK6P,WAAkBtK,qBACrCvF,KAACe,EACd,CAE2BC,8BACzB,MAAO,CACL+D,UAAW,CACT7D,SAAUxC,EAAMsJ,eAChB5G,WAAY,UACZC,KAAM,CACJC,KAAM,2BACNC,GAAI,gBAGRoH,IAAK,CACHzH,SAAUxC,EAAMsJ,eAChB5G,WAAY,MACZC,KAAM,CACJC,KAAM,qBACNC,GAAI,YAGR8B,QAAS,CACPnC,SAAUxC,EAAMsJ,eAChB5G,WAAY,UACZC,KAAM,CACJC,KAAM,yBACNC,GAAI,gBAGR0K,KAAM,CACJ/K,SAAUxC,EAAMsJ,eAChB5G,WAAY,OACZC,KAAM,CACJC,KAAM,sBACNC,GAAI,aAGRwO,UAAW,CACT7O,SAAUxC,EAAMsJ,eAChB5G,WAAY,UACZC,KAAM,CACJC,KAAM,2BACNC,GAAI,gBAGR0O,MAAO,CACL/O,SAAUxC,EAAMsJ,eAChB5G,WAAY,MACZC,KAAM,CACJC,KAAM,uBACNC,GAAI,YAIZ,GJtHA4O,aKdF,uCAEI,MAAO,eACT,CACmBlR,sBACjB,MAAO,IACT,CACWC,wBACT,MAAO,CACLC,KAAM,SACNC,SAAU,CAAC,YAAa,OAAQ,SAChCC,WAAY,CACVC,UAAW,CAAEH,KAAM,UACnBA,KAAM,CACJA,KAAM,SACNgO,KAAM,CACJ,aACA,YACA,UACA,aAGJzM,MAAO,CAAEvB,KAAM,UACfiR,YAAa,CAAEjR,KAAM,UACrBkR,MAAO,CAAElR,KAAM,UACf2D,YAAa,CAAE3D,KAAM,WAG3B,CAEAW,sBACSE,KAAKe,GACZ,MAAarB,QAAaM,KAACC,cAAc,uBAC7BqQ,UACR5Q,IACFM,KAAKN,QAAUA,EAAQJ,UAE3B,+BAGE,MAAO,CACLI,QAAS,CACPwB,SAAUxC,EAAMqJ,qBAChB3G,WAAY,UACZC,KAAM,CACJC,KAAM,0BACNC,GAAI,gBAIZ"}
|
package/dist/index.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("knex"),require("objection"),require("axios"),require("striptags"),require("twitter-api-v2"),require("@project-serum/anchor"),require("@metaplex-foundation/js")):"function"==typeof define&&define.amd?define(["knex","objection","axios","striptags","twitter-api-v2","@project-serum/anchor","@metaplex-foundation/js"],t):(e||self).ninaDb=t(e.knex,e.objection,e.axios,e.striptags,e.twitterApiV2,e.anchor,e.js)}(this,function(e,t,n,r,o,i,u){function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=/*#__PURE__*/s(e),a=/*#__PURE__*/s(n),l=/*#__PURE__*/s(r),f=/*#__PURE__*/s(i);function h(e){var t,n,r,o=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);o--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new d(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function d(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then(function(e){return{value:e,done:t}})}return d=function(e){this.s=e,this.n=e.next},d.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new d(e)}function p(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,"symbol"==typeof(o=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key))?o:String(o),r)}var o}function v(e,t,n){return t&&p(e.prototype,t),n&&p(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function y(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},m(e,t)}var b=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),v(t,null,[{key:"modelPaths",get:function(){return[__dirname]}}]),t}(require("objection").Model);function P(e,t,n){if(!e.s){if(n instanceof R){if(!n.s)return void(n.o=P.bind(null,e,t));1&t&&(t=n.s),n=n.v}if(n&&n.then)return void n.then(P.bind(null,e,t),P.bind(null,e,2));e.s=t,e.v=n;var r=e.o;r&&r(e)}}var g=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),t.findOrCreate=function(e){try{return Promise.resolve(t.query().findOne({publicKey:e})).then(function(n){return n||Promise.resolve(t.query().insert({publicKey:e})).then(function(t){return n=t,console.log("Inserted Account: ",e),n})})}catch(e){return Promise.reject(e)}},t.prototype.format=function(){try{var e,t,n=this;return Promise.resolve(n.$relatedQuery("verifications").where("active",!0)).then(function(r){function o(e){delete n.id}var i=function(){if(r){var o,i=function(e){n.verifications=r},u=!1,s=!1,c=j(function(){return function(n,o){try{var i=function(){e=h(r);var n=function(e,t,n){for(var r;;){var o=e();if(I(o)&&(o=o.v),!o)return i;if(o.then){r=0;break}var i=n();if(i&&i.then){if(!I(i)){r=1;break}i=i.s}if(t){var u=t();if(u&&u.then&&!I(u)){r=2;break}}}var s=new R,c=P.bind(null,s,2);return(0===r?o.then(l):1===r?i.then(a):u.then(f)).then(void 0,c),s;function a(r){i=r;do{if(t&&(u=t())&&u.then&&!I(u))return void u.then(f).then(void 0,c);if(!(o=e())||I(o)&&!o.v)return void P(s,1,i);if(o.then)return void o.then(l).then(void 0,c);I(i=n())&&(i=i.v)}while(!i||!i.then);i.then(a).then(void 0,c)}function l(e){e?(i=n())&&i.then?i.then(a).then(void 0,c):a(i):P(s,1,i)}function f(){(o=e())?o.then?o.then(l).then(void 0,c):l(o):P(s,1,i)}}(function(){return Promise.resolve(e.next()).then(function(e){return u=!(t=e).done})},function(){return!!(u=!1)},function(){return Promise.resolve(t.value.format()).then(function(){})});if(n&&n.then)return n.then(function(){})}()}catch(e){return o(e)}return i&&i.then?i.then(void 0,o):i}(0,function(e){s=!0,o=e})},function(t,n){function r(e){if(t)throw n;return n}var i=j(function(){var t=function(){if(u&&null!=e.return)return Promise.resolve(e.return()).then(function(){})}();if(t&&t.then)return t.then(function(){})},function(e,t){if(s)throw o;if(e)throw t;return t});return i&&i.then?i.then(r):r()});return c&&c.then?c.then(i):i()}}();return i&&i.then?i.then(o):o()})}catch(e){return Promise.reject(e)}},v(t,null,[{key:"tableName",get:function(){return"accounts"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey"],properties:{publicKey:{type:"string"}}}}},{key:"relationMappings",get:function(){return{published:{relation:Model.HasManyRelation,modelClass:"Release",join:{from:"accounts.id",to:"releases.publisherId"}},collected:{relation:Model.ManyToManyRelation,modelClass:"Release",join:{from:"accounts.id",through:{from:"releases_collected.accountId",to:"releases_collected.releaseId"},to:"releases.id"}},exchangesInitialized:{relation:Model.HasManyRelation,modelClass:"Exchange",join:{from:"accounts.id",to:"exchanges.initializerId"}},exchangesCompleted:{relation:Model.HasManyRelation,modelClass:"Exchange",join:{from:"accounts.id",to:"exchanges.completedById"}},hubs:{relation:Model.ManyToManyRelation,modelClass:"Hub",join:{from:"accounts.id",through:{from:"hubs_collaborators.accountId",to:"hubs_collaborators.hubId",extra:["hubCollaboratorPublicKey"]},to:"hubs.id"}},posts:{relation:Model.HasManyRelation,modelClass:"Post",join:{from:"accounts.id",to:"posts.publisherId"}},revenueShares:{relation:Model.ManyToManyRelation,modelClass:"Release",join:{from:"accounts.id",through:{from:"releases_revenue_share.accountId",to:"releases_revenue_share.releaseId"},to:"releases.id"}},verifications:{relation:Model.HasManyRelation,modelClass:"Verification",join:{from:"accounts.id",to:"verifications.accountId"}}}}}]),t}(b);const R=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(t,n){const r=new e,o=this.s;if(o){const e=1&o?t:n;if(e){try{P(r,1,e(this.v))}catch(e){P(r,2,e)}return r}return this}return this.o=function(e){try{const o=e.v;1&e.s?P(r,1,t?t(o):o):n?P(r,1,n(o)):P(r,2,o)}catch(e){P(r,2,e)}},r},e}();function I(e){return e instanceof R&&1&e.s}function j(e,t){try{var n=e()}catch(e){return t(!0,e)}return n&&n.then?n.then(t.bind(null,!1),t.bind(null,!0)):t(!1,n)}var S=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),t.prototype.format=function(){try{var e=this;return Promise.resolve(e.$relatedQuery("initializer")).then(function(t){return Promise.resolve(e.$relatedQuery("completedBy")).then(function(n){return Promise.resolve(e.$relatedQuery("release").select("publicKey")).then(function(r){function o(){return e.release=r.publicKey,Promise.resolve(t.format()).then(function(){e.initializer=t,delete e.id,delete e.initializerId,delete e.completedById,delete e.releaseId})}var i=function(){if(n)return Promise.resolve(n.format()).then(function(){e.completedBy=n})}();return i&&i.then?i.then(o):o()})})})}catch(e){return Promise.reject(e)}},v(t,null,[{key:"tableName",get:function(){return"exchanges"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey","isSale","initializerAmount","expectedAmount","cancelled","createdAt"],properties:{publicKey:{type:"string"},isSale:{type:"boolean"},initializerAmount:{type:"number"},expectedAmount:{type:"number"},cancelled:{type:"boolean"},createdAt:{type:"string"},updatedAt:{type:"string"}}}}},{key:"relationMappings",get:function(){return{initializer:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"exchanges.initializerId",to:"accounts.id"}},completedBy:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"exchanges.completedById",to:"accounts.id"}},release:{relation:Model.HasOneRelation,modelClass:"Release",join:{from:"exchanges.releaseId",to:"releases.id"}}}}}]),t}(b),T=function(e,t){var n,r=l.default(e[t],[]," ");(r=r.replace(" "," "))!==e[t]&&(e[t+"Html"]=e[t],e[t]=(n=r).substring(1,n.length-1).substring(-1,n.length-1))};function K(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var M=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),t.findOrCreate=function(e){try{var n=this;return Promise.resolve(t.query().findOne({publicKey:e})).then(function(t){if(t)return t;var r=new f.default.web3.Connection(process.env.SOLANA_CLUSTER_URL),o=new f.default.AnchorProvider(r,{},{commitment:"processed"});return Promise.resolve(f.default.Program.at(process.env.NINA_PROGRAM_ID,o)).then(function(o){var i=new u.Metaplex(r);return Promise.resolve(o.account.release.fetch(e,"confirmed")).then(function(r){return Promise.resolve(i.nfts().findByMint(r.releaseMint,{commitment:"confirmed"}).run()).then(function(o){return Promise.resolve(g.findOrCreate(r.authority.toBase58())).then(function(i){return Promise.resolve(n.createRelease({publicKey:e,mint:r.releaseMint.toBase58(),metadata:o.json,datetime:new Date(1e3*r.releaseDatetime.toNumber()).toISOString(),publisherId:i.id,releaseAccount:r})).then(function(e){return t=e})})})})})})}catch(e){return Promise.reject(e)}},t.createRelease=function(e){var n=e.publicKey,r=e.mint,i=e.metadata,u=e.datetime,s=e.publisherId,c=e.releaseAccount;try{var a=this;return Promise.resolve(t.query().insertGraph({publicKey:n,mint:r,metadata:i,datetime:u,publisherId:s})).then(function(e){return Promise.resolve(a.processRevenueShares(c,e)).then(function(){return Promise.resolve(function(e){try{var t=function(){if(process.env.TWITTER_API_SECRET){var t=function(t,n){try{var r=Promise.resolve(sleep(6e4)).then(function(){var t=new o.TwitterApi({appKey:process.env.TWITTER_API_KEY,appSecret:process.env.TWITTER_API_SECRET,accessToken:process.env.TWITTER_ACCESS_TOKEN,accessSecret:process.env.TWITTER_ACCESS_TOKEN_SECRET}),n=(e.properties.artist+' - "'+e.properties.title+'"').substr(0,250);return n=n+" "+e.external_url,Promise.resolve(t.v2.tweet(n)).then(function(){})})}catch(e){return n(e)}return r&&r.then?r.then(void 0,n):r}(0,function(t){console.warn("error sending new release tweet: ",t,e)});if(t&&t.then)return t.then(function(){})}}();return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}}(i)).then(function(){return console.log("Inserted Release: ",n),e})})})}catch(e){return Promise.reject(e)}},t.processRevenueShares=function(e,t){try{var n,r,o,i,u=(null==(n=e.account)?void 0:n.royaltyRecipients)||e.royaltyRecipients,s=!1,c=!1;return Promise.resolve(C(function(){return K(function(){return r=h(u),function(e,t,n){for(var r;;){var o=e();if(_(o)&&(o=o.v),!o)return i;if(o.then){r=0;break}var i=n();if(i&&i.then){if(!_(i)){r=1;break}i=i.s}if(t){var u=t();if(u&&u.then&&!_(u)){r=2;break}}}var s=new O,c=w.bind(null,s,2);return(0===r?o.then(l):1===r?i.then(a):u.then(f)).then(void 0,c),s;function a(r){i=r;do{if(t&&(u=t())&&u.then&&!_(u))return void u.then(f).then(void 0,c);if(!(o=e())||_(o)&&!o.v)return void w(s,1,i);if(o.then)return void o.then(l).then(void 0,c);_(i=n())&&(i=i.v)}while(!i||!i.then);i.then(a).then(void 0,c)}function l(e){e?(i=n())&&i.then?i.then(a).then(void 0,c):a(i):w(s,1,i)}function f(){(o=e())?o.then?o.then(l).then(void 0,c):l(o):w(s,1,i)}}(function(){return Promise.resolve(r.next()).then(function(e){return s=!(o=e).done})},function(){return!!(s=!1)},function(){var e=o.value;return K(function(){var n=function(){if("11111111111111111111111111111111"!==e.recipientAuthority.toBase58())return Promise.resolve(g.findOrCreate(e.recipientAuthority.toBase58())).then(function(e){return Promise.resolve(e.$relatedQuery("revenueShares")).then(function(n){var r=n.map(function(e){return e.id}),o=function(){if(!r.includes(t.id))return Promise.resolve(g.relatedQuery("revenueShares").for(e.id).relate(t.id)).then(function(){})}();if(o&&o.then)return o.then(function(){})})})}();if(n&&n.then)return n.then(function(){})},function(e){console.log("error processing royaltyRecipients: ",e)})})},function(e){c=!0,i=e})},function(e,t){function n(n){if(e)throw t;return t}var o=C(function(){var e=function(){if(s&&null!=r.return)return Promise.resolve(r.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(c)throw i;if(e)throw t;return t});return o&&o.then?o.then(n):n()}))}catch(e){return Promise.reject(e)}},t.prototype.format=function(){try{var e=this;return Promise.resolve(e.$relatedQuery("publisher").select("publicKey")).then(function(t){return Promise.resolve(e.$relatedQuery("publishedThroughHub")).then(function(n){n&&(e.publishedThroughHub=n.publicKey),e.publisher=t.publicKey,delete e.publisherId,delete e.hubId,delete e.id,T(e.metadata,"description")})})}catch(e){return Promise.reject(e)}},t.relationMappings=function(){return{publishedThroughHub:{relation:Model.BelongsToOneRelation,modelClass:"Hub",join:{from:"releases.hubId",to:"hubs.id"}},publisher:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"releases.publisherId",to:"accounts.id"}},collectors:{relation:Model.ManyToManyRelation,modelClass:"Account",join:{from:"releases.id",through:{from:"releases_collected.releaseId",to:"releases_collected.accountId"},to:"accounts.id"}},exchanges:{relation:Model.HasManyRelation,modelClass:"Exchange",join:{from:"releases.id",to:"exchanges.releaseId"}},hubs:{relation:Model.ManyToManyRelation,modelClass:"Hub",join:{from:"releases.id",through:{from:"hubs_releases.releaseId",to:"hubs_releases.hubId",extra:["hubReleasePublicKey"]},to:"hubs.id"}},posts:{relation:Model.ManyToManyRelation,modelClass:"Post",join:{from:"releases.id",through:{from:"posts_releases.releaseId",to:"posts_releases.postId"},to:"posts.id"}},revenueShareRecipients:{relation:Model.ManyToManyRelation,modelClass:"Account",join:{from:"releases.id",through:{from:"releases_revenue_share.releaseId",to:"releases_revenue_share.accountId"},to:"accounts.id"}}}},v(t,null,[{key:"tableName",get:function(){return"releases"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey","mint","metadata","datetime"],properties:{publicKey:{type:"string"},mint:{type:"string"},metadata:{type:"object",required:["name","symbol","description","image","properties"],properties:{name:{type:"string"},symbol:{type:"string"},description:{type:"string"},properties:{type:"object",properties:{artist:{type:"string"},title:{type:"string"},date:{type:"string"},files:{type:"array"},category:{type:"string"},creators:{type:"array"}}}}}}}}}]),t}(b);function w(e,t,n){if(!e.s){if(n instanceof O){if(!n.s)return void(n.o=w.bind(null,e,t));1&t&&(t=n.s),n=n.v}if(n&&n.then)return void n.then(w.bind(null,e,t),w.bind(null,e,2));e.s=t,e.v=n;const r=e.o;r&&r(e)}}var O=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(t,n){var r=new e,o=this.s;if(o){var i=1&o?t:n;if(i){try{w(r,1,i(this.v))}catch(e){w(r,2,e)}return r}return this}return this.o=function(e){try{var o=e.v;1&e.s?w(r,1,t?t(o):o):n?w(r,1,n(o)):w(r,2,o)}catch(e){w(r,2,e)}},r},e}();function _(e){return e instanceof O&&1&e.s}function C(e,t){try{var n=e()}catch(e){return t(!0,e)}return n&&n.then?n.then(t.bind(null,!1),t.bind(null,!0)):t(!1,n)}var A=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),t.prototype.format=function(){try{var e=this;return Promise.resolve(e.$relatedQuery("publisher").select("publicKey")).then(function(t){return Promise.resolve(e.$relatedQuery("publishedThroughHub").select("publicKey")).then(function(n){e.publisher=t.publicKey,n&&(e.publishedThroughHub=n.publicKey),delete e.publisherId,delete e.id,delete e.hubId,T(e.data,"body")})})}catch(e){return Promise.reject(e)}},t.relationMappings=function(){return{publishedThroughHub:{relation:Model.BelongsToOneRelation,modelClass:"Hub",join:{from:"posts.hubId",to:"hubs.id"}},publisher:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"posts.publisherId",to:"accounts.id"}},hubs:{relation:Model.ManyToManyRelation,modelClass:"Hub",join:{from:"posts.id",through:{from:"hubs_posts.postId",to:"hubs_posts.hubId",extra:["hubPostPublicKey"]},to:"hubs.id"}},releases:{relation:Model.ManyToManyRelation,modelClass:"Release",join:{from:"posts.id",through:{from:"posts_releases.postId",to:"posts_releases.releaseId"},to:"releases.id"}}}},v(t,null,[{key:"tableName",get:function(){return"posts"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey","data","datetime"],properties:{publicKey:{type:"string"},data:{type:"object"},datetime:{type:"string"}}}}}]),t}(b);function H(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var E=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),t.prototype.format=function(){try{var e=this;return Promise.resolve(e.$relatedQuery("authority").select("publicKey")).then(function(t){e.authority=t.publicKey,delete e.authorityId,delete e.id,T(e.data,"description")})}catch(e){return Promise.reject(e)}},t.updateHub=function(e,n,r,o,i,u){try{var s,c,l,f,d,p,v,y,m,b,P,R,I=function(){var n=o.filter(function(t){return t.account.hub.toBase58()===e.publicKey});return Promise.resolve(t.relatedQuery("releases").for(e)).then(function(o){function a(n){function o(n){var o=i.filter(function(t){return t.account.hub.toBase58()===e.publicKey});return Promise.resolve(t.relatedQuery("collaborators").for(e)).then(function(n){function i(n){function i(n){var o=u.filter(function(t){return t.account.hub.toBase58()===e.publicKey});return Promise.resolve(t.relatedQuery("posts").for(e)).then(function(n){function i(n){var o,i=!1,u=!1;return Q(function(){return H(function(){P=h(c);var n=q(function(){return Promise.resolve(P.next()).then(function(e){return i=!(R=e).done})},function(){return!!(i=!1)},function(){var n=R.value,o=H(function(){var o=r.filter(function(e){return e.account.child.toBase58()===n.publicKey.toBase58()})[0];return Promise.resolve(A.query().findOne({publicKey:n.account.post.toBase58()})).then(function(r){var i=function(){if(o.account.visible){var i=function(){var e=function(){if(n.account.referenceContent)return Promise.resolve(M.query().findOne({publicKey:n.account.referenceContent.toBase58()})).then(function(e){var t=function(){if(e)return Promise.resolve(A.relatedQuery("releases").for(r.id).where("releaseId",e.id).first()).then(function(t){var n=function(){if(!t)return Promise.resolve(A.relatedQuery("releases").for(r.id).relate(e.id)).then(function(){console.log("Related Release to Post:",e.publicKey,r.publicKey)})}();if(n&&n.then)return n.then(function(){})})}();if(t&&t.then)return t.then(function(){})})}();if(e&&e.then)return e.then(function(){})},u=function(){if(r)return Promise.resolve(t.relatedQuery("posts").for(e.id).relate({id:r.id,hubPostPublicKey:n.publicKey.toBase58()})).then(function(){function t(){console.log("Related Post to Hub:",r.publicKey,e.publicKey)}var n=function(){if(o.account.publishedThroughHub)return Promise.resolve(r.$query().patch({hubId:e.id})).then(function(){})}();return n&&n.then?n.then(t):t()})}();return u&&u.then?u.then(i):i()}var s=function(){if(r){var e=function(){if(o.account.publishedThroughHub)return Promise.resolve(A.query().deleteById(r.id)).then(function(){console.log("deleted Post:",r.publicKey)})}();if(e&&e.then)return e.then(function(){})}}();if(s&&s.then)return s.then(function(){})}();if(i&&i.then)return i.then(function(){})})},function(e){console.log(e)});return o&&o.then?o.then(function(){}):void 0});if(n&&n.then)return n.then(function(){})},function(e){u=!0,o=e})},function(e,t){function n(n){if(e)throw t;return t}var r=Q(function(){var e=function(){if(i&&null!=P.return)return Promise.resolve(P.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(u)throw o;if(e)throw t;return t});return r&&r.then?r.then(n):n()})}var u,s=n.map(function(e){return e.publicKey}),c=o.filter(function(e){return!s.includes(e.account.post.toBase58())}),a=!1,l=!1,f=Q(function(){return H(function(){return m=h(o),q(function(){return Promise.resolve(m.next()).then(function(e){return a=!(b=e).done})},function(){return!!(a=!1)},function(){var t=b.value;return H(function(){var n=function(){if(s.includes(t.account.post.toBase58())){var n=r.filter(function(e){return e.account.child.toBase58()===t.publicKey.toBase58()})[0],o=function(){if(!n.account.visible)return Promise.resolve(A.query().findOne({publicKey:t.account.post.toBase58()})).then(function(n){var r=function(){if(n)return Promise.resolve(A.relatedQuery("releases").for(n.id).unrelate().where("hubId",e.id)).then(function(){console.log("Deleted Post:",t.publicKey)})}();if(r&&r.then)return r.then(function(){})})}();if(o&&o.then)return o.then(function(){})}}();if(n&&n.then)return n.then(function(){})},function(e){console.log(e)})})},function(e){l=!0,u=e})},function(e,t){function n(n){if(e)throw t;return t}var r=Q(function(){var e=function(){if(a&&null!=m.return)return Promise.resolve(m.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(l)throw u;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return f&&f.then?f.then(i):i()})}var s,a=c.filter(function(e){return!o.map(function(e){return e.account.collaborator.toBase58()}).includes(e)}),l=!1,f=!1,d=Q(function(){return H(function(){v=h(a);var n=q(function(){return Promise.resolve(v.next()).then(function(e){return l=!(y=e).done})},function(){return!!(l=!1)},function(){var n=y.value,r=H(function(){return Promise.resolve(g.query().findOne({publicKey:n})).then(function(n){var r=function(){if(n)return Promise.resolve(t.relatedQuery("collaborators").for(e.id).unrelate().where("accountId",n.id)).then(function(){console.log("Removed Collaborator from Hub:",n.publicKey,e.publicKey)})}();if(r&&r.then)return r.then(function(){})})},function(e){console.log(e)});return r&&r.then?r.then(function(){}):void 0});if(n&&n.then)return n.then(function(){})},function(e){f=!0,s=e})},function(e,t){function n(n){if(e)throw t;return t}var r=Q(function(){var e=function(){if(l&&null!=v.return)return Promise.resolve(v.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(f)throw s;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return d&&d.then?d.then(i):i()}var s,c=n.map(function(e){return e.publicKey}),a=o.filter(function(e){return!c.includes(e.account.collaborator.toBase58())}),l=!1,f=!1,I=Q(function(){return H(function(){d=h(a);var n=q(function(){return Promise.resolve(d.next()).then(function(e){return l=!(p=e).done})},function(){return!!(l=!1)},function(){var n=p.value,r=H(function(){return Promise.resolve(g.findOrCreate(n.account.collaborator.toBase58())).then(function(r){var o=function(){if(r)return Promise.resolve(t.relatedQuery("collaborators").for(e.id).relate({id:r.id,hubCollaboratorPublicKey:n.publicKey.toBase58()})).then(function(){console.log("Related Collaborator to Hub:",r.publicKey,e.publicKey)})}();if(o&&o.then)return o.then(function(){})})},function(e){console.log(e)});return r&&r.then?r.then(function(){}):void 0});if(n&&n.then)return n.then(function(){})},function(e){f=!0,s=e})},function(e,t){function n(n){if(e)throw t;return t}var r=Q(function(){var e=function(){if(l&&null!=d.return)return Promise.resolve(d.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(f)throw s;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return I&&I.then?I.then(i):i()})}var s,c=!1,a=!1,I=Q(function(){return H(function(){l=h(S);var n=q(function(){return Promise.resolve(l.next()).then(function(e){return c=!(f=e).done})},function(){return!!(c=!1)},function(){var n=f.value,o=H(function(){var o=r.filter(function(e){return e.account.child.toBase58()===n.publicKey.toBase58()})[0];return Promise.resolve(M.query().findOne({publicKey:n.account.release.toBase58()})).then(function(r){var i=function(){if(r)return Promise.resolve(t.relatedQuery("releases").for(e.id).relate({id:r.id,hubReleasePublicKey:n.publicKey.toBase58(),visible:o.account.visible})).then(function(){function t(){console.log("Related Release to Hub:",r.publicKey,e.publicKey)}var n=function(){if(o.account.publishedThroughHub)return Promise.resolve(r.$query().patch({hubId:e.id})).then(function(){})}();return n&&n.then?n.then(t):t()})}();if(i&&i.then)return i.then(function(){})})},function(e){console.log(e)});return o&&o.then?o.then(function(){}):void 0});if(n&&n.then)return n.then(function(){})},function(e){a=!0,s=e})},function(e,t){function n(n){if(e)throw t;return t}var r=Q(function(){var e=function(){if(c&&null!=l.return)return Promise.resolve(l.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(a)throw s;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return I&&I.then?I.then(o):o()}var I,j=o.map(function(e){return e.publicKey}),S=n.filter(function(e){return!j.includes(e.account.release.toBase58())}),T=!1,K=!1,w=Q(function(){return H(function(){return s=h(n),q(function(){return Promise.resolve(s.next()).then(function(e){return T=!(c=e).done})},function(){return!!(T=!1)},function(){var n=c.value;return H(function(){var o=function(){if(j.includes(n.account.release.toBase58())){var o=r.filter(function(e){return e.account.child.toBase58()===n.publicKey.toBase58()})[0];return Promise.resolve(M.query().findOne({publicKey:n.account.release.toBase58()})).then(function(n){var r=function(){if(n)return Promise.resolve(t.relatedQuery("releases").for(e.id).patch({visible:o.account.visible}).where({id:n.id})).then(function(){})}();if(r&&r.then)return r.then(function(){})})}}();if(o&&o.then)return o.then(function(){})},function(e){console.log(e)})})},function(e){K=!0,I=e})},function(e,t){function n(n){if(e)throw t;return t}var r=Q(function(){var e=function(){if(T&&null!=s.return)return Promise.resolve(s.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(K)throw I;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return w&&w.then?w.then(a):a()})};"string"!=typeof n.account.uri&&(n.account.uri=(S=n.account.uri,(new TextDecoder).decode(new Uint8Array(S)).replaceAll(/\u0000/g,"")));var j=function(){if(!e.dataUri||e.dataUri!==n.account.uri)return Promise.resolve(a.default.get(n.account.uri)).then(function(t){var r=t.data;return Promise.resolve(e.$query().patch({data:r,dataUri:n.account.uri})).then(function(){})})}();return Promise.resolve(j&&j.then?j.then(I):I())}catch(e){return Promise.reject(e)}var S},v(t,null,[{key:"tableName",get:function(){return"hubs"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey","handle","data","dataUri","datetime"],properties:{publicKey:{type:"string"},handle:{type:"string"},data:{type:"object"},dataUri:{type:"string"},datetime:{type:"string"}}}}},{key:"relationMappings",get:function(){return{authority:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"hubs.authorityId",to:"accounts.id"}},collaborators:{relation:Model.ManyToManyRelation,modelClass:"Account",join:{from:"hubs.id",through:{from:"hubs_collaborators.hubId",to:"hubs_collaborators.accountId",extra:["hubCollaboratorPublicKey"]},to:"accounts.id"}},posts:{relation:Model.ManyToManyRelation,modelClass:"Post",join:{from:"hubs.id",through:{from:"hubs_posts.hubId",to:"hubs_posts.postId",extra:["hubPostPublicKey"]},to:"posts.id"}},releases:{relation:Model.ManyToManyRelation,modelClass:"Release",join:{from:"hubs.id",through:{from:"hubs_releases.hubId",to:"hubs_releases.releaseId",extra:["hubReleasePublicKey","visible"]},to:"releases.id"}}}}}]),t}(b);function k(e,t,n){if(!e.s){if(n instanceof x){if(!n.s)return void(n.o=k.bind(null,e,t));1&t&&(t=n.s),n=n.v}if(n&&n.then)return void n.then(k.bind(null,e,t),k.bind(null,e,2));e.s=t,e.v=n;const r=e.o;r&&r(e)}}var x=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(t,n){var r=new e,o=this.s;if(o){var i=1&o?t:n;if(i){try{k(r,1,i(this.v))}catch(e){k(r,2,e)}return r}return this}return this.o=function(e){try{var o=e.v;1&e.s?k(r,1,t?t(o):o):n?k(r,1,n(o)):k(r,2,o)}catch(e){k(r,2,e)}},r},e}();function B(e){return e instanceof x&&1&e.s}function q(e,t,n){for(var r;;){var o=e();if(B(o)&&(o=o.v),!o)return i;if(o.then){r=0;break}var i=n();if(i&&i.then){if(!B(i)){r=1;break}i=i.s}if(t){var u=t();if(u&&u.then&&!B(u)){r=2;break}}}var s=new x,c=k.bind(null,s,2);return(0===r?o.then(l):1===r?i.then(a):u.then(f)).then(void 0,c),s;function a(r){i=r;do{if(t&&(u=t())&&u.then&&!B(u))return void u.then(f).then(void 0,c);if(!(o=e())||B(o)&&!o.v)return void k(s,1,i);if(o.then)return void o.then(l).then(void 0,c);B(i=n())&&(i=i.v)}while(!i||!i.then);i.then(a).then(void 0,c)}function l(e){e?(i=n())&&i.then?i.then(a).then(void 0,c):a(i):k(s,1,i)}function f(){(o=e())?o.then?o.then(l).then(void 0,c):l(o):k(s,1,i)}}function Q(e,t){try{var n=e()}catch(e){return t(!0,e)}return n&&n.then?n.then(t.bind(null,!1),t.bind(null,!0)):t(!1,n)}var $=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),t.findOrCreate=function(e){var n=e.publicKey,r=e.from,o=e.to,i=e.datetime,u=e.subscriptionType;try{return Promise.resolve(t.query().findOne({publicKey:n})).then(function(e){return e||Promise.resolve(t.query().insert({publicKey:n,from:r,to:o,datetime:i,subscriptionType:u})).then(function(t){return e=t,console.log("Inserted subscription: ",n),e})})}catch(e){return Promise.reject(e)}},t.prototype.format=function(){try{var e=function(){delete t.id},t=this,n=function(){if("account"===t.subscriptionType)return Promise.resolve(g.query().findOne({publicKey:t.to})).then(function(e){return Promise.resolve(e.format()).then(function(){return t.to=e,Promise.resolve(g.query().findOne({publicKey:t.from})).then(function(e){return Promise.resolve(e.format()).then(function(){t.from=e})})})});var e=function(){if("hub"===t.subscriptionType)return Promise.resolve(E.query().findOne({publicKey:t.to})).then(function(e){return Promise.resolve(e.format()).then(function(){return t.to=e,Promise.resolve(g.query().findOne({publicKey:t.from})).then(function(e){return Promise.resolve(e.format()).then(function(){t.from=e})})})})}();return e&&e.then?e.then(function(){}):void 0}();return Promise.resolve(n&&n.then?n.then(e):e())}catch(e){return Promise.reject(e)}},v(t,null,[{key:"tableName",get:function(){return"subscriptions"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey","datetime"],properties:{publicKey:{type:"string"},datetime:{type:"string"},from:{type:"string"},to:{type:"string"},subscriptionType:{type:"string",enum:["account","hub"]}}}}}]),t}(b),D=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),t.prototype.format=function(){try{var e=this;return Promise.resolve(e.$relatedQuery("hub")).then(function(t){function n(){return delete e.hubId,Promise.resolve(e.$relatedQuery("authority")).then(function(t){function n(){return delete e.authorityId,Promise.resolve(e.$relatedQuery("release")).then(function(t){function n(){return delete e.releaseId,Promise.resolve(e.$relatedQuery("post")).then(function(t){function n(){return delete e.postId,Promise.resolve(e.$relatedQuery("toAccount")).then(function(t){function n(){return delete e.toAccountId,Promise.resolve(e.$relatedQuery("toHub")).then(function(t){function n(){delete e.toHubId,e.datetime=new Date(1e3*e.blocktime).toISOString(),delete e.id}var r=function(){if(t)return Promise.resolve(t.format()).then(function(){e.toHub=t})}();return r&&r.then?r.then(n):n()})}var r=function(){if(t)return Promise.resolve(t.format()).then(function(){e.toAccount=t})}();return r&&r.then?r.then(n):n()})}var r=function(){if(t)return Promise.resolve(t.format()).then(function(){e.post=t})}();return r&&r.then?r.then(n):n()})}var r=function(){if(t)return Promise.resolve(t.format()).then(function(){e.release=t})}();return r&&r.then?r.then(n):n()})}var r=function(){if(t)return Promise.resolve(t.format()).then(function(){e.authority=t})}();return r&&r.then?r.then(n):n()})}var r=function(){if(t)return Promise.resolve(t.format()).then(function(){e.hub=t})}();return r&&r.then?r.then(n):n()})}catch(e){return Promise.reject(e)}},v(t,null,[{key:"tableName",get:function(){return"transactions"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["txid","blocktime","type"],properties:{txid:{type:"string"},blocktime:{type:"integer"},type:{type:"string",enum:["HubInitWithCredit","ReleaseInitWithCredit","ReleaseInitViaHub","ReleasePurchase","ReleasePurchaseViaHub","HubAddCollaborator","HubAddRelease","PostInitViaHub","PostInitViaHubWithReferenceRelease","SubscriptionSubscribeAccount","SubscriptionSubscribeHub"]}}}}},{key:"relationMappings",get:function(){return{authority:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"transactions.authorityId",to:"accounts.id"}},hub:{relation:Model.HasOneRelation,modelClass:"Hub",join:{from:"transactions.hubId",to:"hubs.id"}},release:{relation:Model.HasOneRelation,modelClass:"Release",join:{from:"transactions.releaseId",to:"releases.id"}},post:{relation:Model.HasOneRelation,modelClass:"Post",join:{from:"transactions.postId",to:"posts.id"}},toAccount:{relation:Model.HasOneRelation,modelClass:"Account",join:{from:"transactions.toAccountId",to:"accounts.id"}},toHub:{relation:Model.HasOneRelation,modelClass:"Hub",join:{from:"transactions.toHubId",to:"hubs.id"}}}}}]),t}(b),G=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),t.prototype.format=function(){try{var e=this;return delete e.id,Promise.resolve(e.$relatedQuery("account")).then(function(t){delete e.accountId,t&&(e.account=t.publicKey)})}catch(e){return Promise.reject(e)}},v(t,null,[{key:"tableName",get:function(){return"verifications"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey","type","value"],properties:{publicKey:{type:"string"},type:{type:"string",enum:["soundcloud","instagram","twitter","ethereum"]},value:{type:"string"},displayName:{type:"string"},image:{type:"string"},description:{type:"string"}}}}},{key:"relationMappings",get:function(){return{account:{relation:Model.BelongsToOneRelation,modelClass:"Account",join:{from:"verifications.accountId",to:"accounts.id"}}}}}]),t}(b),N={development:{client:"postgresql",connection:{host:process.env.POSTGRES_HOST,database:process.env.POSTGRES_DATABASE,user:process.env.POSTGRES_USER,password:process.env.POSTGRES_PASSWORD},migrations:{directory:__dirname+"/migrations"}},staging:{client:"postgresql",connection:{host:process.env.POSTGRES_HOST,database:process.env.POSTGRES_DATABASE,user:process.env.POSTGRES_USER,password:process.env.POSTGRES_PASSWORD},migrations:{directory:__dirname+"/migrations"}},production:{client:"postgresql",connection:{host:process.env.POSTGRES_HOST,database:process.env.POSTGRES_DATABASE,user:process.env.POSTGRES_USER,password:process.env.POSTGRES_PASSWORD},migrations:{directory:__dirname+"/migrations"}}};return{initDb:async()=>{const e=c.default(N.development);await e.raw(`SELECT 'CREATE DATABASE ${process.env.POSTGRES_DATABASE}'\n WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${process.env.POSTGRES_DATABASE}')`),await e.migrate.latest(),t.Model.knex(e)},connectDb:async()=>{const e=c.default(N.development);t.Model.knex(e)},destroyDb:async()=>{const e=c.default(N.development);await e.destroy()},Account:g,Exchange:S,Hub:E,Post:A,Release:M,Subscription:$,Transaction:D,Verification:G}});
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("knex"),require("objection"),require("axios"),require("striptags"),require("twitter-api-v2"),require("@project-serum/anchor"),require("@metaplex-foundation/js")):"function"==typeof define&&define.amd?define(["knex","objection","axios","striptags","twitter-api-v2","@project-serum/anchor","@metaplex-foundation/js"],t):(e||self).ninaDb=t(e.knex,e.objection,e.axios,e.striptags,e.twitterApiV2,e.anchor,e.js)}(this,function(e,t,n,r,o,i,u){function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=/*#__PURE__*/s(e),a=/*#__PURE__*/s(n),l=/*#__PURE__*/s(r),f=/*#__PURE__*/s(i);function h(e){var t,n,r,o=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);o--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new d(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function d(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then(function(e){return{value:e,done:t}})}return d=function(e){this.s=e,this.n=e.next},d.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new d(e)}function p(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,"symbol"==typeof(o=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(r.key))?o:String(o),r)}var o}function v(e,t,n){return t&&p(e.prototype,t),n&&p(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function y(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},m(e,t)}var b=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),v(t,null,[{key:"modelPaths",get:function(){return[__dirname]}}]),t}(require("objection").Model);function P(e,t,n){if(!e.s){if(n instanceof R){if(!n.s)return void(n.o=P.bind(null,e,t));1&t&&(t=n.s),n=n.v}if(n&&n.then)return void n.then(P.bind(null,e,t),P.bind(null,e,2));e.s=t,e.v=n;var r=e.o;r&&r(e)}}var g=/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return y(n,e),n.findOrCreate=function(e){try{return Promise.resolve(n.query().findOne({publicKey:e})).then(function(t){return t||Promise.resolve(n.query().insert({publicKey:e})).then(function(n){return t=n,console.log("Inserted Account: ",e),t})})}catch(e){return Promise.reject(e)}},n.prototype.format=function(){try{var e,t,n=this;return Promise.resolve(n.$relatedQuery("verifications").where("active",!0)).then(function(r){function o(e){delete n.id}var i=function(){if(r){var o,i=function(e){n.verifications=r},u=!1,s=!1,c=j(function(){return function(n,o){try{var i=function(){e=h(r);var n=function(e,t,n){for(var r;;){var o=e();if(I(o)&&(o=o.v),!o)return i;if(o.then){r=0;break}var i=n();if(i&&i.then){if(!I(i)){r=1;break}i=i.s}if(t){var u=t();if(u&&u.then&&!I(u)){r=2;break}}}var s=new R,c=P.bind(null,s,2);return(0===r?o.then(l):1===r?i.then(a):u.then(f)).then(void 0,c),s;function a(r){i=r;do{if(t&&(u=t())&&u.then&&!I(u))return void u.then(f).then(void 0,c);if(!(o=e())||I(o)&&!o.v)return void P(s,1,i);if(o.then)return void o.then(l).then(void 0,c);I(i=n())&&(i=i.v)}while(!i||!i.then);i.then(a).then(void 0,c)}function l(e){e?(i=n())&&i.then?i.then(a).then(void 0,c):a(i):P(s,1,i)}function f(){(o=e())?o.then?o.then(l).then(void 0,c):l(o):P(s,1,i)}}(function(){return Promise.resolve(e.next()).then(function(e){return u=!(t=e).done})},function(){return!!(u=!1)},function(){return Promise.resolve(t.value.format()).then(function(){})});if(n&&n.then)return n.then(function(){})}()}catch(e){return o(e)}return i&&i.then?i.then(void 0,o):i}(0,function(e){s=!0,o=e})},function(t,n){function r(e){if(t)throw n;return n}var i=j(function(){var t=function(){if(u&&null!=e.return)return Promise.resolve(e.return()).then(function(){})}();if(t&&t.then)return t.then(function(){})},function(e,t){if(s)throw o;if(e)throw t;return t});return i&&i.then?i.then(r):r()});return c&&c.then?c.then(i):i()}}();return i&&i.then?i.then(o):o()})}catch(e){return Promise.reject(e)}},v(n,null,[{key:"tableName",get:function(){return"accounts"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey"],properties:{publicKey:{type:"string"}}}}},{key:"relationMappings",get:function(){return{published:{relation:t.Model.HasManyRelation,modelClass:"Release",join:{from:"accounts.id",to:"releases.publisherId"}},collected:{relation:t.Model.ManyToManyRelation,modelClass:"Release",join:{from:"accounts.id",through:{from:"releases_collected.accountId",to:"releases_collected.releaseId"},to:"releases.id"}},exchangesInitialized:{relation:t.Model.HasManyRelation,modelClass:"Exchange",join:{from:"accounts.id",to:"exchanges.initializerId"}},exchangesCompleted:{relation:t.Model.HasManyRelation,modelClass:"Exchange",join:{from:"accounts.id",to:"exchanges.completedById"}},hubs:{relation:t.Model.ManyToManyRelation,modelClass:"Hub",join:{from:"accounts.id",through:{from:"hubs_collaborators.accountId",to:"hubs_collaborators.hubId",extra:["hubCollaboratorPublicKey"]},to:"hubs.id"}},posts:{relation:t.Model.HasManyRelation,modelClass:"Post",join:{from:"accounts.id",to:"posts.publisherId"}},revenueShares:{relation:t.Model.ManyToManyRelation,modelClass:"Release",join:{from:"accounts.id",through:{from:"releases_revenue_share.accountId",to:"releases_revenue_share.releaseId"},to:"releases.id"}},verifications:{relation:t.Model.HasManyRelation,modelClass:"Verification",join:{from:"accounts.id",to:"verifications.accountId"}}}}}]),n}(b);const R=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(t,n){const r=new e,o=this.s;if(o){const e=1&o?t:n;if(e){try{P(r,1,e(this.v))}catch(e){P(r,2,e)}return r}return this}return this.o=function(e){try{const o=e.v;1&e.s?P(r,1,t?t(o):o):n?P(r,1,n(o)):P(r,2,o)}catch(e){P(r,2,e)}},r},e}();function I(e){return e instanceof R&&1&e.s}function j(e,t){try{var n=e()}catch(e){return t(!0,e)}return n&&n.then?n.then(t.bind(null,!1),t.bind(null,!0)):t(!1,n)}var S=/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return y(n,e),n.prototype.format=function(){try{var e=this;return Promise.resolve(e.$relatedQuery("initializer")).then(function(t){return Promise.resolve(e.$relatedQuery("completedBy")).then(function(n){return Promise.resolve(e.$relatedQuery("release").select("publicKey")).then(function(r){function o(){return e.release=r.publicKey,Promise.resolve(t.format()).then(function(){e.initializer=t,delete e.id,delete e.initializerId,delete e.completedById,delete e.releaseId})}var i=function(){if(n)return Promise.resolve(n.format()).then(function(){e.completedBy=n})}();return i&&i.then?i.then(o):o()})})})}catch(e){return Promise.reject(e)}},v(n,null,[{key:"tableName",get:function(){return"exchanges"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey","isSale","initializerAmount","expectedAmount","cancelled","createdAt"],properties:{publicKey:{type:"string"},isSale:{type:"boolean"},initializerAmount:{type:"number"},expectedAmount:{type:"number"},cancelled:{type:"boolean"},createdAt:{type:"string"},updatedAt:{type:"string"}}}}},{key:"relationMappings",get:function(){return{initializer:{relation:t.Model.HasOneRelation,modelClass:"Account",join:{from:"exchanges.initializerId",to:"accounts.id"}},completedBy:{relation:t.Model.HasOneRelation,modelClass:"Account",join:{from:"exchanges.completedById",to:"accounts.id"}},release:{relation:t.Model.HasOneRelation,modelClass:"Release",join:{from:"exchanges.releaseId",to:"releases.id"}}}}}]),n}(b),T=function(e,t){var n,r=l.default(e[t],[]," ");(r=r.replace(" "," "))!==e[t]&&(e[t+"Html"]=e[t],e[t]=(n=r).substring(1,n.length-1).substring(-1,n.length-1))};function K(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var M=/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return y(n,e),n.findOrCreate=function(e){try{var t=this;return Promise.resolve(n.query().findOne({publicKey:e})).then(function(n){if(n)return n;var r=new f.default.web3.Connection(process.env.SOLANA_CLUSTER_URL),o=new f.default.AnchorProvider(r,{},{commitment:"processed"});return Promise.resolve(f.default.Program.at(process.env.NINA_PROGRAM_ID,o)).then(function(o){var i=new u.Metaplex(r);return Promise.resolve(o.account.release.fetch(e,"confirmed")).then(function(r){return Promise.resolve(i.nfts().findByMint(r.releaseMint,{commitment:"confirmed"}).run()).then(function(o){return Promise.resolve(g.findOrCreate(r.authority.toBase58())).then(function(i){return Promise.resolve(t.createRelease({publicKey:e,mint:r.releaseMint.toBase58(),metadata:o.json,datetime:new Date(1e3*r.releaseDatetime.toNumber()).toISOString(),publisherId:i.id,releaseAccount:r})).then(function(e){return n=e})})})})})})}catch(e){return Promise.reject(e)}},n.createRelease=function(e){var t=e.publicKey,r=e.mint,i=e.metadata,u=e.datetime,s=e.publisherId,c=e.releaseAccount;try{var a=this;return Promise.resolve(n.query().insertGraph({publicKey:t,mint:r,metadata:i,datetime:u,publisherId:s})).then(function(e){return Promise.resolve(a.processRevenueShares(c,e)).then(function(){return Promise.resolve(function(e){try{var t=function(){if(process.env.TWITTER_API_SECRET){var t=function(t,n){try{var r=Promise.resolve(sleep(6e4)).then(function(){var t=new o.TwitterApi({appKey:process.env.TWITTER_API_KEY,appSecret:process.env.TWITTER_API_SECRET,accessToken:process.env.TWITTER_ACCESS_TOKEN,accessSecret:process.env.TWITTER_ACCESS_TOKEN_SECRET}),n=(e.properties.artist+' - "'+e.properties.title+'"').substr(0,250);return n=n+" "+e.external_url,Promise.resolve(t.v2.tweet(n)).then(function(){})})}catch(e){return n(e)}return r&&r.then?r.then(void 0,n):r}(0,function(t){console.warn("error sending new release tweet: ",t,e)});if(t&&t.then)return t.then(function(){})}}();return Promise.resolve(t&&t.then?t.then(function(){}):void 0)}catch(e){return Promise.reject(e)}}(i)).then(function(){return console.log("Inserted Release: ",t),e})})})}catch(e){return Promise.reject(e)}},n.processRevenueShares=function(e,t){try{var n,r,o,i,u=(null==(n=e.account)?void 0:n.royaltyRecipients)||e.royaltyRecipients,s=!1,c=!1;return Promise.resolve(C(function(){return K(function(){return r=h(u),function(e,t,n){for(var r;;){var o=e();if(_(o)&&(o=o.v),!o)return i;if(o.then){r=0;break}var i=n();if(i&&i.then){if(!_(i)){r=1;break}i=i.s}if(t){var u=t();if(u&&u.then&&!_(u)){r=2;break}}}var s=new O,c=w.bind(null,s,2);return(0===r?o.then(l):1===r?i.then(a):u.then(f)).then(void 0,c),s;function a(r){i=r;do{if(t&&(u=t())&&u.then&&!_(u))return void u.then(f).then(void 0,c);if(!(o=e())||_(o)&&!o.v)return void w(s,1,i);if(o.then)return void o.then(l).then(void 0,c);_(i=n())&&(i=i.v)}while(!i||!i.then);i.then(a).then(void 0,c)}function l(e){e?(i=n())&&i.then?i.then(a).then(void 0,c):a(i):w(s,1,i)}function f(){(o=e())?o.then?o.then(l).then(void 0,c):l(o):w(s,1,i)}}(function(){return Promise.resolve(r.next()).then(function(e){return s=!(o=e).done})},function(){return!!(s=!1)},function(){var e=o.value;return K(function(){var n=function(){if("11111111111111111111111111111111"!==e.recipientAuthority.toBase58())return Promise.resolve(g.findOrCreate(e.recipientAuthority.toBase58())).then(function(e){return Promise.resolve(e.$relatedQuery("revenueShares")).then(function(n){var r=n.map(function(e){return e.id}),o=function(){if(!r.includes(t.id))return Promise.resolve(g.relatedQuery("revenueShares").for(e.id).relate(t.id)).then(function(){})}();if(o&&o.then)return o.then(function(){})})})}();if(n&&n.then)return n.then(function(){})},function(e){console.log("error processing royaltyRecipients: ",e)})})},function(e){c=!0,i=e})},function(e,t){function n(n){if(e)throw t;return t}var o=C(function(){var e=function(){if(s&&null!=r.return)return Promise.resolve(r.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(c)throw i;if(e)throw t;return t});return o&&o.then?o.then(n):n()}))}catch(e){return Promise.reject(e)}},n.prototype.format=function(){try{var e=this;return Promise.resolve(e.$relatedQuery("publisher").select("publicKey")).then(function(t){return Promise.resolve(e.$relatedQuery("publishedThroughHub")).then(function(n){n&&(e.publishedThroughHub=n.publicKey),e.publisher=t.publicKey,delete e.publisherId,delete e.hubId,delete e.id,T(e.metadata,"description")})})}catch(e){return Promise.reject(e)}},n.relationMappings=function(){return{publishedThroughHub:{relation:t.Model.BelongsToOneRelation,modelClass:"Hub",join:{from:"releases.hubId",to:"hubs.id"}},publisher:{relation:t.Model.HasOneRelation,modelClass:"Account",join:{from:"releases.publisherId",to:"accounts.id"}},collectors:{relation:t.Model.ManyToManyRelation,modelClass:"Account",join:{from:"releases.id",through:{from:"releases_collected.releaseId",to:"releases_collected.accountId"},to:"accounts.id"}},exchanges:{relation:t.Model.HasManyRelation,modelClass:"Exchange",join:{from:"releases.id",to:"exchanges.releaseId"}},hubs:{relation:t.Model.ManyToManyRelation,modelClass:"Hub",join:{from:"releases.id",through:{from:"hubs_releases.releaseId",to:"hubs_releases.hubId",extra:["hubReleasePublicKey"]},to:"hubs.id"}},posts:{relation:t.Model.ManyToManyRelation,modelClass:"Post",join:{from:"releases.id",through:{from:"posts_releases.releaseId",to:"posts_releases.postId"},to:"posts.id"}},revenueShareRecipients:{relation:t.Model.ManyToManyRelation,modelClass:"Account",join:{from:"releases.id",through:{from:"releases_revenue_share.releaseId",to:"releases_revenue_share.accountId"},to:"accounts.id"}}}},v(n,null,[{key:"tableName",get:function(){return"releases"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey","mint","metadata","datetime"],properties:{publicKey:{type:"string"},mint:{type:"string"},metadata:{type:"object",required:["name","symbol","description","image","properties"],properties:{name:{type:"string"},symbol:{type:"string"},description:{type:"string"},properties:{type:"object",properties:{artist:{type:"string"},title:{type:"string"},date:{type:"string"},files:{type:"array"},category:{type:"string"},creators:{type:"array"}}}}}}}}}]),n}(b);function w(e,t,n){if(!e.s){if(n instanceof O){if(!n.s)return void(n.o=w.bind(null,e,t));1&t&&(t=n.s),n=n.v}if(n&&n.then)return void n.then(w.bind(null,e,t),w.bind(null,e,2));e.s=t,e.v=n;const r=e.o;r&&r(e)}}var O=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(t,n){var r=new e,o=this.s;if(o){var i=1&o?t:n;if(i){try{w(r,1,i(this.v))}catch(e){w(r,2,e)}return r}return this}return this.o=function(e){try{var o=e.v;1&e.s?w(r,1,t?t(o):o):n?w(r,1,n(o)):w(r,2,o)}catch(e){w(r,2,e)}},r},e}();function _(e){return e instanceof O&&1&e.s}function C(e,t){try{var n=e()}catch(e){return t(!0,e)}return n&&n.then?n.then(t.bind(null,!1),t.bind(null,!0)):t(!1,n)}var A=/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return y(n,e),n.prototype.format=function(){try{var e=this;return Promise.resolve(e.$relatedQuery("publisher").select("publicKey")).then(function(t){return Promise.resolve(e.$relatedQuery("publishedThroughHub").select("publicKey")).then(function(n){e.publisher=t.publicKey,n&&(e.publishedThroughHub=n.publicKey),delete e.publisherId,delete e.id,delete e.hubId,T(e.data,"body")})})}catch(e){return Promise.reject(e)}},n.relationMappings=function(){return{publishedThroughHub:{relation:t.Model.BelongsToOneRelation,modelClass:"Hub",join:{from:"posts.hubId",to:"hubs.id"}},publisher:{relation:t.Model.HasOneRelation,modelClass:"Account",join:{from:"posts.publisherId",to:"accounts.id"}},hubs:{relation:t.Model.ManyToManyRelation,modelClass:"Hub",join:{from:"posts.id",through:{from:"hubs_posts.postId",to:"hubs_posts.hubId",extra:["hubPostPublicKey"]},to:"hubs.id"}},releases:{relation:t.Model.ManyToManyRelation,modelClass:"Release",join:{from:"posts.id",through:{from:"posts_releases.postId",to:"posts_releases.releaseId"},to:"releases.id"}}}},v(n,null,[{key:"tableName",get:function(){return"posts"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey","data","datetime"],properties:{publicKey:{type:"string"},data:{type:"object"},datetime:{type:"string"}}}}}]),n}(b);function H(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var E=/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return y(n,e),n.prototype.format=function(){try{var e=this;return Promise.resolve(e.$relatedQuery("authority").select("publicKey")).then(function(t){e.authority=t.publicKey,delete e.authorityId,delete e.id,T(e.data,"description")})}catch(e){return Promise.reject(e)}},n.updateHub=function(e,t,r,o,i,u){try{var s,c,l,f,d,p,v,y,m,b,P,R,I=function(){var t=o.filter(function(t){return t.account.hub.toBase58()===e.publicKey});return Promise.resolve(n.relatedQuery("releases").for(e)).then(function(o){function a(t){function o(t){var o=i.filter(function(t){return t.account.hub.toBase58()===e.publicKey});return Promise.resolve(n.relatedQuery("collaborators").for(e)).then(function(t){function i(t){function i(t){var o=u.filter(function(t){return t.account.hub.toBase58()===e.publicKey});return Promise.resolve(n.relatedQuery("posts").for(e)).then(function(t){function i(t){var o,i=!1,u=!1;return Q(function(){return H(function(){P=h(c);var t=q(function(){return Promise.resolve(P.next()).then(function(e){return i=!(R=e).done})},function(){return!!(i=!1)},function(){var t=R.value,o=H(function(){var o=r.filter(function(e){return e.account.child.toBase58()===t.publicKey.toBase58()})[0];return Promise.resolve(A.query().findOne({publicKey:t.account.post.toBase58()})).then(function(r){var i=function(){if(o.account.visible){var i=function(){var e=function(){if(t.account.referenceContent)return Promise.resolve(M.query().findOne({publicKey:t.account.referenceContent.toBase58()})).then(function(e){var t=function(){if(e)return Promise.resolve(A.relatedQuery("releases").for(r.id).where("releaseId",e.id).first()).then(function(t){var n=function(){if(!t)return Promise.resolve(A.relatedQuery("releases").for(r.id).relate(e.id)).then(function(){console.log("Related Release to Post:",e.publicKey,r.publicKey)})}();if(n&&n.then)return n.then(function(){})})}();if(t&&t.then)return t.then(function(){})})}();if(e&&e.then)return e.then(function(){})},u=function(){if(r)return Promise.resolve(n.relatedQuery("posts").for(e.id).relate({id:r.id,hubPostPublicKey:t.publicKey.toBase58()})).then(function(){function t(){console.log("Related Post to Hub:",r.publicKey,e.publicKey)}var n=function(){if(o.account.publishedThroughHub)return Promise.resolve(r.$query().patch({hubId:e.id})).then(function(){})}();return n&&n.then?n.then(t):t()})}();return u&&u.then?u.then(i):i()}var s=function(){if(r){var e=function(){if(o.account.publishedThroughHub)return Promise.resolve(A.query().deleteById(r.id)).then(function(){console.log("deleted Post:",r.publicKey)})}();if(e&&e.then)return e.then(function(){})}}();if(s&&s.then)return s.then(function(){})}();if(i&&i.then)return i.then(function(){})})},function(e){console.log(e)});return o&&o.then?o.then(function(){}):void 0});if(t&&t.then)return t.then(function(){})},function(e){u=!0,o=e})},function(e,t){function n(n){if(e)throw t;return t}var r=Q(function(){var e=function(){if(i&&null!=P.return)return Promise.resolve(P.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(u)throw o;if(e)throw t;return t});return r&&r.then?r.then(n):n()})}var u,s=t.map(function(e){return e.publicKey}),c=o.filter(function(e){return!s.includes(e.account.post.toBase58())}),a=!1,l=!1,f=Q(function(){return H(function(){return m=h(o),q(function(){return Promise.resolve(m.next()).then(function(e){return a=!(b=e).done})},function(){return!!(a=!1)},function(){var t=b.value;return H(function(){var n=function(){if(s.includes(t.account.post.toBase58())){var n=r.filter(function(e){return e.account.child.toBase58()===t.publicKey.toBase58()})[0],o=function(){if(!n.account.visible)return Promise.resolve(A.query().findOne({publicKey:t.account.post.toBase58()})).then(function(n){var r=function(){if(n)return Promise.resolve(A.relatedQuery("releases").for(n.id).unrelate().where("hubId",e.id)).then(function(){console.log("Deleted Post:",t.publicKey)})}();if(r&&r.then)return r.then(function(){})})}();if(o&&o.then)return o.then(function(){})}}();if(n&&n.then)return n.then(function(){})},function(e){console.log(e)})})},function(e){l=!0,u=e})},function(e,t){function n(n){if(e)throw t;return t}var r=Q(function(){var e=function(){if(a&&null!=m.return)return Promise.resolve(m.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(l)throw u;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return f&&f.then?f.then(i):i()})}var s,a=c.filter(function(e){return!o.map(function(e){return e.account.collaborator.toBase58()}).includes(e)}),l=!1,f=!1,d=Q(function(){return H(function(){v=h(a);var t=q(function(){return Promise.resolve(v.next()).then(function(e){return l=!(y=e).done})},function(){return!!(l=!1)},function(){var t=y.value,r=H(function(){return Promise.resolve(g.query().findOne({publicKey:t})).then(function(t){var r=function(){if(t)return Promise.resolve(n.relatedQuery("collaborators").for(e.id).unrelate().where("accountId",t.id)).then(function(){console.log("Removed Collaborator from Hub:",t.publicKey,e.publicKey)})}();if(r&&r.then)return r.then(function(){})})},function(e){console.log(e)});return r&&r.then?r.then(function(){}):void 0});if(t&&t.then)return t.then(function(){})},function(e){f=!0,s=e})},function(e,t){function n(n){if(e)throw t;return t}var r=Q(function(){var e=function(){if(l&&null!=v.return)return Promise.resolve(v.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(f)throw s;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return d&&d.then?d.then(i):i()}var s,c=t.map(function(e){return e.publicKey}),a=o.filter(function(e){return!c.includes(e.account.collaborator.toBase58())}),l=!1,f=!1,I=Q(function(){return H(function(){d=h(a);var t=q(function(){return Promise.resolve(d.next()).then(function(e){return l=!(p=e).done})},function(){return!!(l=!1)},function(){var t=p.value,r=H(function(){return Promise.resolve(g.findOrCreate(t.account.collaborator.toBase58())).then(function(r){var o=function(){if(r)return Promise.resolve(n.relatedQuery("collaborators").for(e.id).relate({id:r.id,hubCollaboratorPublicKey:t.publicKey.toBase58()})).then(function(){console.log("Related Collaborator to Hub:",r.publicKey,e.publicKey)})}();if(o&&o.then)return o.then(function(){})})},function(e){console.log(e)});return r&&r.then?r.then(function(){}):void 0});if(t&&t.then)return t.then(function(){})},function(e){f=!0,s=e})},function(e,t){function n(n){if(e)throw t;return t}var r=Q(function(){var e=function(){if(l&&null!=d.return)return Promise.resolve(d.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(f)throw s;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return I&&I.then?I.then(i):i()})}var s,c=!1,a=!1,I=Q(function(){return H(function(){l=h(S);var t=q(function(){return Promise.resolve(l.next()).then(function(e){return c=!(f=e).done})},function(){return!!(c=!1)},function(){var t=f.value,o=H(function(){var o=r.filter(function(e){return e.account.child.toBase58()===t.publicKey.toBase58()})[0];return Promise.resolve(M.query().findOne({publicKey:t.account.release.toBase58()})).then(function(r){var i=function(){if(r)return Promise.resolve(n.relatedQuery("releases").for(e.id).relate({id:r.id,hubReleasePublicKey:t.publicKey.toBase58(),visible:o.account.visible})).then(function(){function t(){console.log("Related Release to Hub:",r.publicKey,e.publicKey)}var n=function(){if(o.account.publishedThroughHub)return Promise.resolve(r.$query().patch({hubId:e.id})).then(function(){})}();return n&&n.then?n.then(t):t()})}();if(i&&i.then)return i.then(function(){})})},function(e){console.log(e)});return o&&o.then?o.then(function(){}):void 0});if(t&&t.then)return t.then(function(){})},function(e){a=!0,s=e})},function(e,t){function n(n){if(e)throw t;return t}var r=Q(function(){var e=function(){if(c&&null!=l.return)return Promise.resolve(l.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(a)throw s;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return I&&I.then?I.then(o):o()}var I,j=o.map(function(e){return e.publicKey}),S=t.filter(function(e){return!j.includes(e.account.release.toBase58())}),T=!1,K=!1,w=Q(function(){return H(function(){return s=h(t),q(function(){return Promise.resolve(s.next()).then(function(e){return T=!(c=e).done})},function(){return!!(T=!1)},function(){var t=c.value;return H(function(){var o=function(){if(j.includes(t.account.release.toBase58())){var o=r.filter(function(e){return e.account.child.toBase58()===t.publicKey.toBase58()})[0];return Promise.resolve(M.query().findOne({publicKey:t.account.release.toBase58()})).then(function(t){var r=function(){if(t)return Promise.resolve(n.relatedQuery("releases").for(e.id).patch({visible:o.account.visible}).where({id:t.id})).then(function(){})}();if(r&&r.then)return r.then(function(){})})}}();if(o&&o.then)return o.then(function(){})},function(e){console.log(e)})})},function(e){K=!0,I=e})},function(e,t){function n(n){if(e)throw t;return t}var r=Q(function(){var e=function(){if(T&&null!=s.return)return Promise.resolve(s.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(K)throw I;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return w&&w.then?w.then(a):a()})};"string"!=typeof t.account.uri&&(t.account.uri=(S=t.account.uri,(new TextDecoder).decode(new Uint8Array(S)).replaceAll(/\u0000/g,"")));var j=function(){if(!e.dataUri||e.dataUri!==t.account.uri)return Promise.resolve(a.default.get(t.account.uri)).then(function(n){var r=n.data;return Promise.resolve(e.$query().patch({data:r,dataUri:t.account.uri})).then(function(){})})}();return Promise.resolve(j&&j.then?j.then(I):I())}catch(e){return Promise.reject(e)}var S},v(n,null,[{key:"tableName",get:function(){return"hubs"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey","handle","data","dataUri","datetime"],properties:{publicKey:{type:"string"},handle:{type:"string"},data:{type:"object"},dataUri:{type:"string"},datetime:{type:"string"}}}}},{key:"relationMappings",get:function(){return{authority:{relation:t.Model.HasOneRelation,modelClass:"Account",join:{from:"hubs.authorityId",to:"accounts.id"}},collaborators:{relation:t.Model.ManyToManyRelation,modelClass:"Account",join:{from:"hubs.id",through:{from:"hubs_collaborators.hubId",to:"hubs_collaborators.accountId",extra:["hubCollaboratorPublicKey"]},to:"accounts.id"}},posts:{relation:t.Model.ManyToManyRelation,modelClass:"Post",join:{from:"hubs.id",through:{from:"hubs_posts.hubId",to:"hubs_posts.postId",extra:["hubPostPublicKey"]},to:"posts.id"}},releases:{relation:t.Model.ManyToManyRelation,modelClass:"Release",join:{from:"hubs.id",through:{from:"hubs_releases.hubId",to:"hubs_releases.releaseId",extra:["hubReleasePublicKey","visible"]},to:"releases.id"}}}}}]),n}(b);function k(e,t,n){if(!e.s){if(n instanceof x){if(!n.s)return void(n.o=k.bind(null,e,t));1&t&&(t=n.s),n=n.v}if(n&&n.then)return void n.then(k.bind(null,e,t),k.bind(null,e,2));e.s=t,e.v=n;const r=e.o;r&&r(e)}}var x=/*#__PURE__*/function(){function e(){}return e.prototype.then=function(t,n){var r=new e,o=this.s;if(o){var i=1&o?t:n;if(i){try{k(r,1,i(this.v))}catch(e){k(r,2,e)}return r}return this}return this.o=function(e){try{var o=e.v;1&e.s?k(r,1,t?t(o):o):n?k(r,1,n(o)):k(r,2,o)}catch(e){k(r,2,e)}},r},e}();function B(e){return e instanceof x&&1&e.s}function q(e,t,n){for(var r;;){var o=e();if(B(o)&&(o=o.v),!o)return i;if(o.then){r=0;break}var i=n();if(i&&i.then){if(!B(i)){r=1;break}i=i.s}if(t){var u=t();if(u&&u.then&&!B(u)){r=2;break}}}var s=new x,c=k.bind(null,s,2);return(0===r?o.then(l):1===r?i.then(a):u.then(f)).then(void 0,c),s;function a(r){i=r;do{if(t&&(u=t())&&u.then&&!B(u))return void u.then(f).then(void 0,c);if(!(o=e())||B(o)&&!o.v)return void k(s,1,i);if(o.then)return void o.then(l).then(void 0,c);B(i=n())&&(i=i.v)}while(!i||!i.then);i.then(a).then(void 0,c)}function l(e){e?(i=n())&&i.then?i.then(a).then(void 0,c):a(i):k(s,1,i)}function f(){(o=e())?o.then?o.then(l).then(void 0,c):l(o):k(s,1,i)}}function Q(e,t){try{var n=e()}catch(e){return t(!0,e)}return n&&n.then?n.then(t.bind(null,!1),t.bind(null,!0)):t(!1,n)}var $=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return y(t,e),t.findOrCreate=function(e){var n=e.publicKey,r=e.from,o=e.to,i=e.datetime,u=e.subscriptionType;try{return Promise.resolve(t.query().findOne({publicKey:n})).then(function(e){return e||Promise.resolve(t.query().insert({publicKey:n,from:r,to:o,datetime:i,subscriptionType:u})).then(function(t){return e=t,console.log("Inserted subscription: ",n),e})})}catch(e){return Promise.reject(e)}},t.prototype.format=function(){try{var e=function(){delete t.id},t=this,n=function(){if("account"===t.subscriptionType)return Promise.resolve(g.query().findOne({publicKey:t.to})).then(function(e){return Promise.resolve(e.format()).then(function(){return t.to=e,Promise.resolve(g.query().findOne({publicKey:t.from})).then(function(e){return Promise.resolve(e.format()).then(function(){t.from=e})})})});var e=function(){if("hub"===t.subscriptionType)return Promise.resolve(E.query().findOne({publicKey:t.to})).then(function(e){return Promise.resolve(e.format()).then(function(){return t.to=e,Promise.resolve(g.query().findOne({publicKey:t.from})).then(function(e){return Promise.resolve(e.format()).then(function(){t.from=e})})})})}();return e&&e.then?e.then(function(){}):void 0}();return Promise.resolve(n&&n.then?n.then(e):e())}catch(e){return Promise.reject(e)}},v(t,null,[{key:"tableName",get:function(){return"subscriptions"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey","datetime"],properties:{publicKey:{type:"string"},datetime:{type:"string"},from:{type:"string"},to:{type:"string"},subscriptionType:{type:"string",enum:["account","hub"]}}}}}]),t}(b),D=/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return y(n,e),n.prototype.format=function(){try{var e=this;return Promise.resolve(e.$relatedQuery("hub")).then(function(t){function n(){return delete e.hubId,Promise.resolve(e.$relatedQuery("authority")).then(function(t){function n(){return delete e.authorityId,Promise.resolve(e.$relatedQuery("release")).then(function(t){function n(){return delete e.releaseId,Promise.resolve(e.$relatedQuery("post")).then(function(t){function n(){return delete e.postId,Promise.resolve(e.$relatedQuery("toAccount")).then(function(t){function n(){return delete e.toAccountId,Promise.resolve(e.$relatedQuery("toHub")).then(function(t){function n(){delete e.toHubId,e.datetime=new Date(1e3*e.blocktime).toISOString(),delete e.id}var r=function(){if(t)return Promise.resolve(t.format()).then(function(){e.toHub=t})}();return r&&r.then?r.then(n):n()})}var r=function(){if(t)return Promise.resolve(t.format()).then(function(){e.toAccount=t})}();return r&&r.then?r.then(n):n()})}var r=function(){if(t)return Promise.resolve(t.format()).then(function(){e.post=t})}();return r&&r.then?r.then(n):n()})}var r=function(){if(t)return Promise.resolve(t.format()).then(function(){e.release=t})}();return r&&r.then?r.then(n):n()})}var r=function(){if(t)return Promise.resolve(t.format()).then(function(){e.authority=t})}();return r&&r.then?r.then(n):n()})}var r=function(){if(t)return Promise.resolve(t.format()).then(function(){e.hub=t})}();return r&&r.then?r.then(n):n()})}catch(e){return Promise.reject(e)}},v(n,null,[{key:"tableName",get:function(){return"transactions"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["txid","blocktime","type"],properties:{txid:{type:"string"},blocktime:{type:"integer"},type:{type:"string",enum:["HubInitWithCredit","ReleaseInitWithCredit","ReleaseInitViaHub","ReleasePurchase","ReleasePurchaseViaHub","HubAddCollaborator","HubAddRelease","PostInitViaHub","PostInitViaHubWithReferenceRelease","SubscriptionSubscribeAccount","SubscriptionSubscribeHub"]}}}}},{key:"relationMappings",get:function(){return{authority:{relation:t.Model.HasOneRelation,modelClass:"Account",join:{from:"transactions.authorityId",to:"accounts.id"}},hub:{relation:t.Model.HasOneRelation,modelClass:"Hub",join:{from:"transactions.hubId",to:"hubs.id"}},release:{relation:t.Model.HasOneRelation,modelClass:"Release",join:{from:"transactions.releaseId",to:"releases.id"}},post:{relation:t.Model.HasOneRelation,modelClass:"Post",join:{from:"transactions.postId",to:"posts.id"}},toAccount:{relation:t.Model.HasOneRelation,modelClass:"Account",join:{from:"transactions.toAccountId",to:"accounts.id"}},toHub:{relation:t.Model.HasOneRelation,modelClass:"Hub",join:{from:"transactions.toHubId",to:"hubs.id"}}}}}]),n}(b),G=/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return y(n,e),n.prototype.format=function(){try{var e=this;return delete e.id,Promise.resolve(e.$relatedQuery("account")).then(function(t){delete e.accountId,t&&(e.account=t.publicKey)})}catch(e){return Promise.reject(e)}},v(n,null,[{key:"tableName",get:function(){return"verifications"}},{key:"idColumn",get:function(){return"id"}},{key:"jsonSchema",get:function(){return{type:"object",required:["publicKey","type","value"],properties:{publicKey:{type:"string"},type:{type:"string",enum:["soundcloud","instagram","twitter","ethereum"]},value:{type:"string"},displayName:{type:"string"},image:{type:"string"},description:{type:"string"}}}}},{key:"relationMappings",get:function(){return{account:{relation:t.Model.BelongsToOneRelation,modelClass:"Account",join:{from:"verifications.accountId",to:"accounts.id"}}}}}]),n}(b),N={development:{client:"postgresql",connection:{host:process.env.POSTGRES_HOST,database:process.env.POSTGRES_DATABASE,user:process.env.POSTGRES_USER,password:process.env.POSTGRES_PASSWORD},migrations:{directory:__dirname+"/migrations"}},staging:{client:"postgresql",connection:{host:process.env.POSTGRES_HOST,database:process.env.POSTGRES_DATABASE,user:process.env.POSTGRES_USER,password:process.env.POSTGRES_PASSWORD},migrations:{directory:__dirname+"/migrations"}},production:{client:"postgresql",connection:{host:process.env.POSTGRES_HOST,database:process.env.POSTGRES_DATABASE,user:process.env.POSTGRES_USER,password:process.env.POSTGRES_PASSWORD},migrations:{directory:__dirname+"/migrations"}}};return{initDb:async()=>{const e=c.default(N.development);await e.raw(`SELECT 'CREATE DATABASE ${process.env.POSTGRES_DATABASE}'\n WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${process.env.POSTGRES_DATABASE}')`),await e.migrate.latest(),t.Model.knex(e)},connectDb:async()=>{const e=c.default(N.development);t.Model.knex(e)},destroyDb:async()=>{const e=c.default(N.development);await e.destroy()},Account:g,Exchange:S,Hub:E,Post:A,Release:M,Subscription:$,Transaction:D,Verification:G}});
|
|
2
2
|
//# sourceMappingURL=index.umd.js.map
|