@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.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"knex";import{Model as t}from"objection";import n from"axios";import r from"striptags";import{TwitterApi as o}from"twitter-api-v2";import i from"@project-serum/anchor";import{Metaplex as u}from"@metaplex-foundation/js";function s(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 c(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function c(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 c=function(e){this.s=e,this.n=e.next},c.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 c(e)}function a(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 l(e,t,n){return t&&a(e.prototype,t),n&&a(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},h(e,t)}var d=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return f(t,e),l(t,null,[{key:"modelPaths",get:function(){return[__dirname]}}]),t}(require("objection").Model);function p(e,t,n){if(!e.s){if(n instanceof y){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 v=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return f(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,c=!1,a=b(function(){return function(n,o){try{var i=function(){e=s(r);var n=function(e,t,n){for(var r;;){var o=e();if(m(o)&&(o=o.v),!o)return i;if(o.then){r=0;break}var i=n();if(i&&i.then){if(!m(i)){r=1;break}i=i.s}if(t){var u=t();if(u&&u.then&&!m(u)){r=2;break}}}var s=new y,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&&!m(u))return void u.then(f).then(void 0,c);if(!(o=e())||m(o)&&!o.v)return void p(s,1,i);if(o.then)return void o.then(l).then(void 0,c);m(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){c=!0,o=e})},function(t,n){function r(e){if(t)throw n;return n}var i=b(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(c)throw o;if(e)throw t;return t});return i&&i.then?i.then(r):r()});return a&&a.then?a.then(i):i()}}();return i&&i.then?i.then(o):o()})}catch(e){return Promise.reject(e)}},l(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}(d);const y=/*#__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 m(e){return e instanceof y&&1&e.s}function b(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 P=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return f(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)}},l(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}(d),g=function(e,t){var n,o=r(e[t],[]," ");(o=o.replace(" "," "))!==e[t]&&(e[t+"Html"]=e[t],e[t]=(n=o).substring(1,n.length-1).substring(-1,n.length-1))};function R(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var I=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return f(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 i.web3.Connection(process.env.SOLANA_CLUSTER_URL),o=new i.AnchorProvider(r,{},{commitment:"processed"});return Promise.resolve(i.Program.at(process.env.NINA_PROGRAM_ID,o)).then(function(o){var i=new u(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(v.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({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,c=!1,a=!1;return Promise.resolve(K(function(){return R(function(){return r=s(u),function(e,t,n){for(var r;;){var o=e();if(T(o)&&(o=o.v),!o)return i;if(o.then){r=0;break}var i=n();if(i&&i.then){if(!T(i)){r=1;break}i=i.s}if(t){var u=t();if(u&&u.then&&!T(u)){r=2;break}}}var s=new j,c=S.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&&!T(u))return void u.then(f).then(void 0,c);if(!(o=e())||T(o)&&!o.v)return void S(s,1,i);if(o.then)return void o.then(l).then(void 0,c);T(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):S(s,1,i)}function f(){(o=e())?o.then?o.then(l).then(void 0,c):l(o):S(s,1,i)}}(function(){return Promise.resolve(r.next()).then(function(e){return c=!(o=e).done})},function(){return!!(c=!1)},function(){var e=o.value;return R(function(){var n=function(){if("11111111111111111111111111111111"!==e.recipientAuthority.toBase58())return Promise.resolve(v.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(v.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){a=!0,i=e})},function(e,t){function n(n){if(e)throw t;return t}var o=K(function(){var e=function(){if(c&&null!=r.return)return Promise.resolve(r.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(a)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,g(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"}}}},l(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}(d);function S(e,t,n){if(!e.s){if(n instanceof j){if(!n.s)return void(n.o=S.bind(null,e,t));1&t&&(t=n.s),n=n.v}if(n&&n.then)return void n.then(S.bind(null,e,t),S.bind(null,e,2));e.s=t,e.v=n;const r=e.o;r&&r(e)}}var j=/*#__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{S(r,1,i(this.v))}catch(e){S(r,2,e)}return r}return this}return this.o=function(e){try{var o=e.v;1&e.s?S(r,1,t?t(o):o):n?S(r,1,n(o)):S(r,2,o)}catch(e){S(r,2,e)}},r},e}();function T(e){return e instanceof j&&1&e.s}function K(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 M=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return f(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,g(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"}}}},l(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}(d);function O(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var _=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return f(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,g(e.data,"description")})}catch(e){return Promise.reject(e)}},t.updateHub=function(e,r,o,i,u,c){try{var a,l,f,h,d,p,y,m,b,P,g,R,S=function(){var n=i.filter(function(t){return t.account.hub.toBase58()===e.publicKey});return Promise.resolve(t.relatedQuery("releases").for(e)).then(function(r){function i(n){function r(n){var r=u.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 r=c.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 r,i=!1,u=!1;return E(function(){return O(function(){g=s(a);var n=H(function(){return Promise.resolve(g.next()).then(function(e){return i=!(R=e).done})},function(){return!!(i=!1)},function(){var n=R.value,r=O(function(){var r=o.filter(function(e){return e.account.child.toBase58()===n.publicKey.toBase58()})[0];return Promise.resolve(M.query().findOne({publicKey:n.account.post.toBase58()})).then(function(o){var i=function(){if(r.account.visible){var i=function(){var e=function(){if(n.account.referenceContent)return Promise.resolve(I.query().findOne({publicKey:n.account.referenceContent.toBase58()})).then(function(e){var t=function(){if(e)return Promise.resolve(M.relatedQuery("releases").for(o.id).where("releaseId",e.id).first()).then(function(t){var n=function(){if(!t)return Promise.resolve(M.relatedQuery("releases").for(o.id).relate(e.id)).then(function(){console.log("Related Release to Post:",e.publicKey,o.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(o)return Promise.resolve(t.relatedQuery("posts").for(e.id).relate({id:o.id,hubPostPublicKey:n.publicKey.toBase58()})).then(function(){function t(){console.log("Related Post to Hub:",o.publicKey,e.publicKey)}var n=function(){if(r.account.publishedThroughHub)return Promise.resolve(o.$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(o){var e=function(){if(r.account.publishedThroughHub)return Promise.resolve(M.query().deleteById(o.id)).then(function(){console.log("deleted Post:",o.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 r&&r.then?r.then(function(){}):void 0});if(n&&n.then)return n.then(function(){})},function(e){u=!0,r=e})},function(e,t){function n(n){if(e)throw t;return t}var o=E(function(){var e=function(){if(i&&null!=g.return)return Promise.resolve(g.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(u)throw r;if(e)throw t;return t});return o&&o.then?o.then(n):n()})}var u,c=n.map(function(e){return e.publicKey}),a=r.filter(function(e){return!c.includes(e.account.post.toBase58())}),l=!1,f=!1,h=E(function(){return O(function(){return b=s(r),H(function(){return Promise.resolve(b.next()).then(function(e){return l=!(P=e).done})},function(){return!!(l=!1)},function(){var t=P.value;return O(function(){var n=function(){if(c.includes(t.account.post.toBase58())){var n=o.filter(function(e){return e.account.child.toBase58()===t.publicKey.toBase58()})[0],r=function(){if(!n.account.visible)return Promise.resolve(M.query().findOne({publicKey:t.account.post.toBase58()})).then(function(n){var r=function(){if(n)return Promise.resolve(M.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(r&&r.then)return r.then(function(){})}}();if(n&&n.then)return n.then(function(){})},function(e){console.log(e)})})},function(e){f=!0,u=e})},function(e,t){function n(n){if(e)throw t;return t}var r=E(function(){var e=function(){if(l&&null!=b.return)return Promise.resolve(b.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(f)throw u;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return h&&h.then?h.then(i):i()})}var u,l=a.filter(function(e){return!r.map(function(e){return e.account.collaborator.toBase58()}).includes(e)}),f=!1,h=!1,d=E(function(){return O(function(){y=s(l);var n=H(function(){return Promise.resolve(y.next()).then(function(e){return f=!(m=e).done})},function(){return!!(f=!1)},function(){var n=m.value,r=O(function(){return Promise.resolve(v.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){h=!0,u=e})},function(e,t){function n(n){if(e)throw t;return t}var r=E(function(){var e=function(){if(f&&null!=y.return)return Promise.resolve(y.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(h)throw u;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return d&&d.then?d.then(i):i()}var u,a=n.map(function(e){return e.publicKey}),l=r.filter(function(e){return!a.includes(e.account.collaborator.toBase58())}),f=!1,h=!1,S=E(function(){return O(function(){d=s(l);var n=H(function(){return Promise.resolve(d.next()).then(function(e){return f=!(p=e).done})},function(){return!!(f=!1)},function(){var n=p.value,r=O(function(){return Promise.resolve(v.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){h=!0,u=e})},function(e,t){function n(n){if(e)throw t;return t}var r=E(function(){var e=function(){if(f&&null!=d.return)return Promise.resolve(d.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(h)throw u;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return S&&S.then?S.then(i):i()})}var i,a=!1,l=!1,S=E(function(){return O(function(){f=s(T);var n=H(function(){return Promise.resolve(f.next()).then(function(e){return a=!(h=e).done})},function(){return!!(a=!1)},function(){var n=h.value,r=O(function(){var r=o.filter(function(e){return e.account.child.toBase58()===n.publicKey.toBase58()})[0];return Promise.resolve(I.query().findOne({publicKey:n.account.release.toBase58()})).then(function(o){var i=function(){if(o)return Promise.resolve(t.relatedQuery("releases").for(e.id).relate({id:o.id,hubReleasePublicKey:n.publicKey.toBase58(),visible:r.account.visible})).then(function(){function t(){console.log("Related Release to Hub:",o.publicKey,e.publicKey)}var n=function(){if(r.account.publishedThroughHub)return Promise.resolve(o.$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 r&&r.then?r.then(function(){}):void 0});if(n&&n.then)return n.then(function(){})},function(e){l=!0,i=e})},function(e,t){function n(n){if(e)throw t;return t}var r=E(function(){var e=function(){if(a&&null!=f.return)return Promise.resolve(f.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(l)throw i;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return S&&S.then?S.then(r):r()}var S,j=r.map(function(e){return e.publicKey}),T=n.filter(function(e){return!j.includes(e.account.release.toBase58())}),K=!1,_=!1,w=E(function(){return O(function(){return a=s(n),H(function(){return Promise.resolve(a.next()).then(function(e){return K=!(l=e).done})},function(){return!!(K=!1)},function(){var n=l.value;return O(function(){var r=function(){if(j.includes(n.account.release.toBase58())){var r=o.filter(function(e){return e.account.child.toBase58()===n.publicKey.toBase58()})[0];return Promise.resolve(I.query().findOne({publicKey:n.account.release.toBase58()})).then(function(n){var o=function(){if(n)return Promise.resolve(t.relatedQuery("releases").for(e.id).patch({visible:r.account.visible}).where({id:n.id})).then(function(){})}();if(o&&o.then)return o.then(function(){})})}}();if(r&&r.then)return r.then(function(){})},function(e){console.log(e)})})},function(e){_=!0,S=e})},function(e,t){function n(n){if(e)throw t;return t}var r=E(function(){var e=function(){if(K&&null!=a.return)return Promise.resolve(a.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(_)throw S;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return w&&w.then?w.then(i):i()})};"string"!=typeof r.account.uri&&(r.account.uri=(T=r.account.uri,(new TextDecoder).decode(new Uint8Array(T)).replaceAll(/\u0000/g,"")));var j=function(){if(!e.dataUri||e.dataUri!==r.account.uri)return Promise.resolve(n.get(r.account.uri)).then(function(t){var n=t.data;return Promise.resolve(e.$query().patch({data:n,dataUri:r.account.uri})).then(function(){})})}();return Promise.resolve(j&&j.then?j.then(S):S())}catch(e){return Promise.reject(e)}var T},l(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}(d);function w(e,t,n){if(!e.s){if(n instanceof C){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 C=/*#__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 A(e){return e instanceof C&&1&e.s}function H(e,t,n){for(var r;;){var o=e();if(A(o)&&(o=o.v),!o)return i;if(o.then){r=0;break}var i=n();if(i&&i.then){if(!A(i)){r=1;break}i=i.s}if(t){var u=t();if(u&&u.then&&!A(u)){r=2;break}}}var s=new C,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&&!A(u))return void u.then(f).then(void 0,c);if(!(o=e())||A(o)&&!o.v)return void w(s,1,i);if(o.then)return void o.then(l).then(void 0,c);A(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 E(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 k=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return f(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(v.query().findOne({publicKey:t.to})).then(function(e){return Promise.resolve(e.format()).then(function(){return t.to=e,Promise.resolve(v.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(_.query().findOne({publicKey:t.to})).then(function(e){return Promise.resolve(e.format()).then(function(){return t.to=e,Promise.resolve(v.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)}},l(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}(d),B={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 x={initDb:async()=>{const n=e(B.development);await n.raw(`SELECT 'CREATE DATABASE ${process.env.POSTGRES_DATABASE}'\n WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${process.env.POSTGRES_DATABASE}')`),await n.migrate.latest(),t.knex(n)},connectDb:async()=>{const n=e(B.development);t.knex(n)},destroyDb:async()=>{const t=e(B.development);await t.destroy()},Account:v,Exchange:P,Hub:_,Post:M,Release:I,Subscription:k,Transaction:/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return f(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)}},l(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}(d),Verification:/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return f(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)}},l(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}(d)};export{x as default};
|
|
1
|
+
import e from"knex";import{Model as t}from"objection";import n from"axios";import r from"striptags";import{TwitterApi as o}from"twitter-api-v2";import i from"@project-serum/anchor";import{Metaplex as u}from"@metaplex-foundation/js";function s(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 c(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function c(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 c=function(e){this.s=e,this.n=e.next},c.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 c(e)}function a(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 l(e,t,n){return t&&a(e.prototype,t),n&&a(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function f(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,h(e,t)}function h(e,t){return h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},h(e,t)}var d=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return f(t,e),l(t,null,[{key:"modelPaths",get:function(){return[__dirname]}}]),t}(require("objection").Model);function p(e,t,n){if(!e.s){if(n instanceof y){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 v=/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return f(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,c=!1,a=b(function(){return function(n,o){try{var i=function(){e=s(r);var n=function(e,t,n){for(var r;;){var o=e();if(m(o)&&(o=o.v),!o)return i;if(o.then){r=0;break}var i=n();if(i&&i.then){if(!m(i)){r=1;break}i=i.s}if(t){var u=t();if(u&&u.then&&!m(u)){r=2;break}}}var s=new y,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&&!m(u))return void u.then(f).then(void 0,c);if(!(o=e())||m(o)&&!o.v)return void p(s,1,i);if(o.then)return void o.then(l).then(void 0,c);m(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){c=!0,o=e})},function(t,n){function r(e){if(t)throw n;return n}var i=b(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(c)throw o;if(e)throw t;return t});return i&&i.then?i.then(r):r()});return a&&a.then?a.then(i):i()}}();return i&&i.then?i.then(o):o()})}catch(e){return Promise.reject(e)}},l(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.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"}}}}}]),n}(d);const y=/*#__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 m(e){return e instanceof y&&1&e.s}function b(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 P=/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return f(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)}},l(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.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"}}}}}]),n}(d),g=function(e,t){var n,o=r(e[t],[]," ");(o=o.replace(" "," "))!==e[t]&&(e[t+"Html"]=e[t],e[t]=(n=o).substring(1,n.length-1).substring(-1,n.length-1))};function R(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var I=/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return f(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 i.web3.Connection(process.env.SOLANA_CLUSTER_URL),o=new i.AnchorProvider(r,{},{commitment:"processed"});return Promise.resolve(i.Program.at(process.env.NINA_PROGRAM_ID,o)).then(function(o){var i=new u(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(v.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({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,c=!1,a=!1;return Promise.resolve(K(function(){return R(function(){return r=s(u),function(e,t,n){for(var r;;){var o=e();if(T(o)&&(o=o.v),!o)return i;if(o.then){r=0;break}var i=n();if(i&&i.then){if(!T(i)){r=1;break}i=i.s}if(t){var u=t();if(u&&u.then&&!T(u)){r=2;break}}}var s=new j,c=S.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&&!T(u))return void u.then(f).then(void 0,c);if(!(o=e())||T(o)&&!o.v)return void S(s,1,i);if(o.then)return void o.then(l).then(void 0,c);T(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):S(s,1,i)}function f(){(o=e())?o.then?o.then(l).then(void 0,c):l(o):S(s,1,i)}}(function(){return Promise.resolve(r.next()).then(function(e){return c=!(o=e).done})},function(){return!!(c=!1)},function(){var e=o.value;return R(function(){var n=function(){if("11111111111111111111111111111111"!==e.recipientAuthority.toBase58())return Promise.resolve(v.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(v.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){a=!0,i=e})},function(e,t){function n(n){if(e)throw t;return t}var o=K(function(){var e=function(){if(c&&null!=r.return)return Promise.resolve(r.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(a)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,g(e.metadata,"description")})})}catch(e){return Promise.reject(e)}},n.relationMappings=function(){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"}}}},l(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}(d);function S(e,t,n){if(!e.s){if(n instanceof j){if(!n.s)return void(n.o=S.bind(null,e,t));1&t&&(t=n.s),n=n.v}if(n&&n.then)return void n.then(S.bind(null,e,t),S.bind(null,e,2));e.s=t,e.v=n;const r=e.o;r&&r(e)}}var j=/*#__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{S(r,1,i(this.v))}catch(e){S(r,2,e)}return r}return this}return this.o=function(e){try{var o=e.v;1&e.s?S(r,1,t?t(o):o):n?S(r,1,n(o)):S(r,2,o)}catch(e){S(r,2,e)}},r},e}();function T(e){return e instanceof j&&1&e.s}function K(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 O=/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return f(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,g(e.data,"body")})})}catch(e){return Promise.reject(e)}},n.relationMappings=function(){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"}}}},l(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}(d);function _(e,t){try{var n=e()}catch(e){return t(e)}return n&&n.then?n.then(void 0,t):n}var w=/*#__PURE__*/function(e){function r(){return e.apply(this,arguments)||this}return f(r,e),r.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,g(e.data,"description")})}catch(e){return Promise.reject(e)}},r.updateHub=function(e,t,o,i,u,c){try{var a,l,f,h,d,p,y,m,b,P,g,R,S=function(){var t=i.filter(function(t){return t.account.hub.toBase58()===e.publicKey});return Promise.resolve(r.relatedQuery("releases").for(e)).then(function(n){function i(t){function n(t){var n=u.filter(function(t){return t.account.hub.toBase58()===e.publicKey});return Promise.resolve(r.relatedQuery("collaborators").for(e)).then(function(t){function i(t){function i(t){var n=c.filter(function(t){return t.account.hub.toBase58()===e.publicKey});return Promise.resolve(r.relatedQuery("posts").for(e)).then(function(t){function i(t){var n,i=!1,u=!1;return k(function(){return _(function(){g=s(a);var t=E(function(){return Promise.resolve(g.next()).then(function(e){return i=!(R=e).done})},function(){return!!(i=!1)},function(){var t=R.value,n=_(function(){var n=o.filter(function(e){return e.account.child.toBase58()===t.publicKey.toBase58()})[0];return Promise.resolve(O.query().findOne({publicKey:t.account.post.toBase58()})).then(function(o){var i=function(){if(n.account.visible){var i=function(){var e=function(){if(t.account.referenceContent)return Promise.resolve(I.query().findOne({publicKey:t.account.referenceContent.toBase58()})).then(function(e){var t=function(){if(e)return Promise.resolve(O.relatedQuery("releases").for(o.id).where("releaseId",e.id).first()).then(function(t){var n=function(){if(!t)return Promise.resolve(O.relatedQuery("releases").for(o.id).relate(e.id)).then(function(){console.log("Related Release to Post:",e.publicKey,o.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(o)return Promise.resolve(r.relatedQuery("posts").for(e.id).relate({id:o.id,hubPostPublicKey:t.publicKey.toBase58()})).then(function(){function t(){console.log("Related Post to Hub:",o.publicKey,e.publicKey)}var r=function(){if(n.account.publishedThroughHub)return Promise.resolve(o.$query().patch({hubId:e.id})).then(function(){})}();return r&&r.then?r.then(t):t()})}();return u&&u.then?u.then(i):i()}var s=function(){if(o){var e=function(){if(n.account.publishedThroughHub)return Promise.resolve(O.query().deleteById(o.id)).then(function(){console.log("deleted Post:",o.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 n&&n.then?n.then(function(){}):void 0});if(t&&t.then)return t.then(function(){})},function(e){u=!0,n=e})},function(e,t){function r(n){if(e)throw t;return t}var o=k(function(){var e=function(){if(i&&null!=g.return)return Promise.resolve(g.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(u)throw n;if(e)throw t;return t});return o&&o.then?o.then(r):r()})}var u,c=t.map(function(e){return e.publicKey}),a=n.filter(function(e){return!c.includes(e.account.post.toBase58())}),l=!1,f=!1,h=k(function(){return _(function(){return b=s(n),E(function(){return Promise.resolve(b.next()).then(function(e){return l=!(P=e).done})},function(){return!!(l=!1)},function(){var t=P.value;return _(function(){var n=function(){if(c.includes(t.account.post.toBase58())){var n=o.filter(function(e){return e.account.child.toBase58()===t.publicKey.toBase58()})[0],r=function(){if(!n.account.visible)return Promise.resolve(O.query().findOne({publicKey:t.account.post.toBase58()})).then(function(n){var r=function(){if(n)return Promise.resolve(O.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(r&&r.then)return r.then(function(){})}}();if(n&&n.then)return n.then(function(){})},function(e){console.log(e)})})},function(e){f=!0,u=e})},function(e,t){function n(n){if(e)throw t;return t}var r=k(function(){var e=function(){if(l&&null!=b.return)return Promise.resolve(b.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(f)throw u;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return h&&h.then?h.then(i):i()})}var u,l=a.filter(function(e){return!n.map(function(e){return e.account.collaborator.toBase58()}).includes(e)}),f=!1,h=!1,d=k(function(){return _(function(){y=s(l);var t=E(function(){return Promise.resolve(y.next()).then(function(e){return f=!(m=e).done})},function(){return!!(f=!1)},function(){var t=m.value,n=_(function(){return Promise.resolve(v.query().findOne({publicKey:t})).then(function(t){var n=function(){if(t)return Promise.resolve(r.relatedQuery("collaborators").for(e.id).unrelate().where("accountId",t.id)).then(function(){console.log("Removed Collaborator from Hub:",t.publicKey,e.publicKey)})}();if(n&&n.then)return n.then(function(){})})},function(e){console.log(e)});return n&&n.then?n.then(function(){}):void 0});if(t&&t.then)return t.then(function(){})},function(e){h=!0,u=e})},function(e,t){function n(n){if(e)throw t;return t}var r=k(function(){var e=function(){if(f&&null!=y.return)return Promise.resolve(y.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(h)throw u;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return d&&d.then?d.then(i):i()}var u,a=t.map(function(e){return e.publicKey}),l=n.filter(function(e){return!a.includes(e.account.collaborator.toBase58())}),f=!1,h=!1,S=k(function(){return _(function(){d=s(l);var t=E(function(){return Promise.resolve(d.next()).then(function(e){return f=!(p=e).done})},function(){return!!(f=!1)},function(){var t=p.value,n=_(function(){return Promise.resolve(v.findOrCreate(t.account.collaborator.toBase58())).then(function(n){var o=function(){if(n)return Promise.resolve(r.relatedQuery("collaborators").for(e.id).relate({id:n.id,hubCollaboratorPublicKey:t.publicKey.toBase58()})).then(function(){console.log("Related Collaborator to Hub:",n.publicKey,e.publicKey)})}();if(o&&o.then)return o.then(function(){})})},function(e){console.log(e)});return n&&n.then?n.then(function(){}):void 0});if(t&&t.then)return t.then(function(){})},function(e){h=!0,u=e})},function(e,t){function n(n){if(e)throw t;return t}var r=k(function(){var e=function(){if(f&&null!=d.return)return Promise.resolve(d.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(h)throw u;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return S&&S.then?S.then(i):i()})}var i,a=!1,l=!1,S=k(function(){return _(function(){f=s(T);var t=E(function(){return Promise.resolve(f.next()).then(function(e){return a=!(h=e).done})},function(){return!!(a=!1)},function(){var t=h.value,n=_(function(){var n=o.filter(function(e){return e.account.child.toBase58()===t.publicKey.toBase58()})[0];return Promise.resolve(I.query().findOne({publicKey:t.account.release.toBase58()})).then(function(o){var i=function(){if(o)return Promise.resolve(r.relatedQuery("releases").for(e.id).relate({id:o.id,hubReleasePublicKey:t.publicKey.toBase58(),visible:n.account.visible})).then(function(){function t(){console.log("Related Release to Hub:",o.publicKey,e.publicKey)}var r=function(){if(n.account.publishedThroughHub)return Promise.resolve(o.$query().patch({hubId:e.id})).then(function(){})}();return r&&r.then?r.then(t):t()})}();if(i&&i.then)return i.then(function(){})})},function(e){console.log(e)});return n&&n.then?n.then(function(){}):void 0});if(t&&t.then)return t.then(function(){})},function(e){l=!0,i=e})},function(e,t){function n(n){if(e)throw t;return t}var r=k(function(){var e=function(){if(a&&null!=f.return)return Promise.resolve(f.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(l)throw i;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return S&&S.then?S.then(n):n()}var S,j=n.map(function(e){return e.publicKey}),T=t.filter(function(e){return!j.includes(e.account.release.toBase58())}),K=!1,w=!1,C=k(function(){return _(function(){return a=s(t),E(function(){return Promise.resolve(a.next()).then(function(e){return K=!(l=e).done})},function(){return!!(K=!1)},function(){var t=l.value;return _(function(){var n=function(){if(j.includes(t.account.release.toBase58())){var n=o.filter(function(e){return e.account.child.toBase58()===t.publicKey.toBase58()})[0];return Promise.resolve(I.query().findOne({publicKey:t.account.release.toBase58()})).then(function(t){var o=function(){if(t)return Promise.resolve(r.relatedQuery("releases").for(e.id).patch({visible:n.account.visible}).where({id:t.id})).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){w=!0,S=e})},function(e,t){function n(n){if(e)throw t;return t}var r=k(function(){var e=function(){if(K&&null!=a.return)return Promise.resolve(a.return()).then(function(){})}();if(e&&e.then)return e.then(function(){})},function(e,t){if(w)throw S;if(e)throw t;return t});return r&&r.then?r.then(n):n()});return C&&C.then?C.then(i):i()})};"string"!=typeof t.account.uri&&(t.account.uri=(T=t.account.uri,(new TextDecoder).decode(new Uint8Array(T)).replaceAll(/\u0000/g,"")));var j=function(){if(!e.dataUri||e.dataUri!==t.account.uri)return Promise.resolve(n.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(S):S())}catch(e){return Promise.reject(e)}var T},l(r,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.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"}}}}}]),r}(d);function C(e,t,n){if(!e.s){if(n instanceof A){if(!n.s)return void(n.o=C.bind(null,e,t));1&t&&(t=n.s),n=n.v}if(n&&n.then)return void n.then(C.bind(null,e,t),C.bind(null,e,2));e.s=t,e.v=n;const r=e.o;r&&r(e)}}var A=/*#__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{C(r,1,i(this.v))}catch(e){C(r,2,e)}return r}return this}return this.o=function(e){try{var o=e.v;1&e.s?C(r,1,t?t(o):o):n?C(r,1,n(o)):C(r,2,o)}catch(e){C(r,2,e)}},r},e}();function H(e){return e instanceof A&&1&e.s}function E(e,t,n){for(var r;;){var o=e();if(H(o)&&(o=o.v),!o)return i;if(o.then){r=0;break}var i=n();if(i&&i.then){if(!H(i)){r=1;break}i=i.s}if(t){var u=t();if(u&&u.then&&!H(u)){r=2;break}}}var s=new A,c=C.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&&!H(u))return void u.then(f).then(void 0,c);if(!(o=e())||H(o)&&!o.v)return void C(s,1,i);if(o.then)return void o.then(l).then(void 0,c);H(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):C(s,1,i)}function f(){(o=e())?o.then?o.then(l).then(void 0,c):l(o):C(s,1,i)}}function k(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 B=/*#__PURE__*/function(e){function t(){return e.apply(this,arguments)||this}return f(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(v.query().findOne({publicKey:t.to})).then(function(e){return Promise.resolve(e.format()).then(function(){return t.to=e,Promise.resolve(v.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(w.query().findOne({publicKey:t.to})).then(function(e){return Promise.resolve(e.format()).then(function(){return t.to=e,Promise.resolve(v.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)}},l(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}(d),M={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 x={initDb:async()=>{const n=e(M.development);await n.raw(`SELECT 'CREATE DATABASE ${process.env.POSTGRES_DATABASE}'\n WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${process.env.POSTGRES_DATABASE}')`),await n.migrate.latest(),t.knex(n)},connectDb:async()=>{const n=e(M.development);t.knex(n)},destroyDb:async()=>{const t=e(M.development);await t.destroy()},Account:v,Exchange:P,Hub:w,Post:O,Release:I,Subscription:B,Transaction:/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return f(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)}},l(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.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"}}}}}]),n}(d),Verification:/*#__PURE__*/function(e){function n(){return e.apply(this,arguments)||this}return f(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)}},l(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.BelongsToOneRelation,modelClass:"Account",join:{from:"verifications.accountId",to:"accounts.id"}}}}}]),n}(d)};export{x as default};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../src/models/NinaModel.js","../src/models/Account.js","../src/models/Exchange.js","../src/utils/index.js","../src/models/Release.js","../src/models/Post.js","../src/models/Hub.js","../src/models/Subscription.js","../src/utils/knexfile.js","../src/index.cjs","../src/models/index.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 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 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;","// 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 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};","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":["NinaModel","Model","__dirname","require","_settle","pact","state","value","s","o","bind","v","then","observer","findOrCreate","publicKey","Account","query","findOne","account","insert","_Account$query$insert","console","log","e","Promise","reject","prototype","format","this","resolve","_this","$relatedQuery","where","verifications","_temp8","_result3","id","_temp6","_result","body","recover","result","test","update","stage","shouldContinue","_isSettledPact","updateValue","_Pact","_resumeAfterTest","_resumeAfterBody","_resumeAfterUpdate","verification","_createClass","key","get","type","required","properties","published","relation","HasManyRelation","modelClass","join","from","to","collected","ManyToManyRelation","through","exchangesInitialized","exchangesCompleted","hubs","extra","posts","revenueShares","onFulfilled","onRejected","callback","thenable","_finallyRethrows","finalizer","Exchange","initializer","completedBy","select","release","_temp2","initializerId","completedById","releaseId","_temp","isSale","initializerAmount","expectedAmount","cancelled","createdAt","updatedAt","HasOneRelation","stripHtmlIfNeeded","object","string","strippedDescription","striptags","replace","substring","length","_catch","Release","_NinaModel","apply","arguments","_inheritsLoose","connection","anchor","web3","Connection","process","env","SOLANA_CLUSTER_URL","provider","AnchorProvider","commitment","Program","at","NINA_PROGRAM_ID","program","metaplex","fetch","releaseAccount","nfts","findByMint","releaseMint","run","metadataAccount","authority","toBase58","publisher","createRelease","mint","metadata","json","datetime","releaseDatetime","toNumber","toISOString","publisherId","_ref","_this2","insertGraph","processRevenueShares","tweetNewRelease","TWITTER_API_SECRET","sleep","client","TwitterApi","appKey","TWITTER_API_KEY","appSecret","accessToken","TWITTER_ACCESS_TOKEN","accessSecret","TWITTER_ACCESS_TOKEN_SECRET","artist","title","substr","text","external_url","v2","tweet","error","warn","releaseData","releaseRecord","_releaseData$account","_iterator","_step","_iteratorError","royaltyRecipients","_iteratorAbruptCompletion","_didIteratorError","_asyncIterator","_for","next","_iterator$next","done","recipient","recipientAuthority","recipientAccount","_recipientAccount$$re","map","revenueShare","includes","relatedQuery","relate","err","_wasThrown","_temp5","_result2","_temp4","_temp3","_wasThrown2","_this3","publishedThroughHub","hubId","relationMappings","BelongsToOneRelation","collectors","exchanges","revenueShareRecipients","name","symbol","description","date","files","category","creators","Post","data","releases","Hub","authorityId","updateHub","hub","hubAccount","hubContents","hubReleases","hubCollaborators","hubPosts","_iterator2","_step2","_iterator3","_step3","_iterator4","_step4","_iterator5","_step5","_iterator6","_step6","_temp58","filter","x","_Hub$relatedQuery$for","_temp56","_temp54","hubCollaboratorsForHubOnChain","hubPostsForHubOnChain","newHubPostsForHub","hubPost","_temp42","hubContent","child","post","visible","_temp38","_temp36","referenceContent","first","relatedRelease","_temp34","hubPostPublicKey","$query","patch","_temp39","deleteById","_temp59","_temp41","_temp43","_didIteratorError6","_iteratorError6","_wasThrown11","_result11","_temp46","_result12","_temp45","_temp44","_iteratorAbruptCompletion6","_wasThrown12","_iteratorError5","hubPostsForHubDb","_Hub$relatedQuery$for3","_iteratorAbruptCompletion5","_didIteratorError5","_temp47","_iterator5$next","_temp26","unrelate","_temp27","_temp28","_wasThrown9","_result9","_temp31","_result10","_temp30","_temp29","_wasThrown10","_temp48","_iteratorError4","hubCollaboratorsForHubDb","collaborator","_iteratorAbruptCompletion4","_didIteratorError4","_temp49","removedCollaborators","_temp22","_iterator4$next","removedCollaborator","collaboratorRecord","_temp20","_temp21","_wasThrown7","_result7","_temp25","_result8","_temp24","_temp23","_wasThrown8","_temp50","_iteratorError3","_Hub$relatedQuery$for2","newHubCollaboratorsForHub","_iteratorAbruptCompletion3","_didIteratorError3","_temp51","_temp16","_iterator3$next","hubCollaborator","_temp15","hubCollaboratorPublicKey","_temp14","_wasThrown5","_result5","_temp19","_result6","_temp18","_temp17","_wasThrown6","_temp52","_iteratorError2","_iteratorAbruptCompletion2","_didIteratorError2","_temp53","newHubReleasesForHub","_temp10","_iterator2$next","hubRelease","hubReleasePublicKey","_temp7","_temp9","_wasThrown3","_temp13","_result4","_temp12","_temp11","_wasThrown4","hubReleasesForHubOnChain","hubReleasesForHubDb","_temp55","uri","byteArray","TextDecoder","decode","Uint8Array","replaceAll","_temp57","dataUri","axios","_axios$get","handle","collaborators","subscriptionType","Subscription","subscription","accountTo","accountFrom","enum","knexConfig","development","host","POSTGRES_HOST","database","POSTGRES_DATABASE","user","POSTGRES_USER","password","POSTGRES_PASSWORD","migrations","directory","staging","production","db","initDb","async","Knex","raw","migrate","latest","knex","connectDb","destroyDb","destroy","Transaction","postId","toAccount","toAccountId","toHub","toHubId","Date","blocktime","txid","Verification","accountId","displayName","image"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/models/NinaModel.js","../src/models/Account.js","../src/models/Exchange.js","../src/utils/index.js","../src/models/Release.js","../src/models/Post.js","../src/models/Hub.js","../src/models/Subscription.js","../src/utils/knexfile.js","../src/index.cjs","../src/models/index.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 { 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 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;","// 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 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};","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":["NinaModel","Model","__dirname","require","pact","state","value","s","_Pact","o","_settle","bind","v","then","observer","Account","findOrCreate","publicKey","query","findOne","account","insert","_Account$query$insert","console","log","format","_iterator","_step","_this","this","Promise","resolve","$relatedQuery","where","verifications","_temp8","_result3","id","_iteratorError","_temp6","_result","_iteratorAbruptCompletion","_didIteratorError","_temp5","_finallyRethrows","body","recover","result","_asyncIterator","_temp","test","update","stage","shouldContinue","_isSettledPact","updateValue","reject","_resumeAfterTest","_resumeAfterBody","_resumeAfterUpdate","_for","next","_iterator$next","done","e","_catch","err","_wasThrown","_temp4","_result2","_temp3","_temp2","_wasThrown2","_temp7","_createClass","key","get","type","required","properties","published","relation","HasManyRelation","modelClass","join","from","to","collected","ManyToManyRelation","through","exchangesInitialized","exchangesCompleted","hubs","extra","posts","revenueShares","prototype","onFulfilled","onRejected","callback","thenable","finalizer","Exchange","_NinaModel","apply","arguments","_inheritsLoose","initializer","completedBy","select","release","initializerId","completedById","releaseId","isSale","initializerAmount","expectedAmount","cancelled","createdAt","updatedAt","HasOneRelation","stripHtmlIfNeeded","object","string","strippedDescription","striptags","replace","substring","length","Release","connection","anchor","web3","Connection","process","env","SOLANA_CLUSTER_URL","provider","AnchorProvider","commitment","Program","at","NINA_PROGRAM_ID","program","metaplex","Metaplex","fetch","releaseAccount","nfts","findByMint","releaseMint","run","metadataAccount","authority","toBase58","publisher","createRelease","mint","metadata","json","datetime","Date","releaseDatetime","toNumber","toISOString","publisherId","_this$createRelease","_ref","_this2","insertGraph","processRevenueShares","TWITTER_API_SECRET","sleep","client","TwitterApi","appKey","TWITTER_API_KEY","appSecret","accessToken","TWITTER_ACCESS_TOKEN","accessSecret","TWITTER_ACCESS_TOKEN_SECRET","artist","title","substr","text","external_url","v2","tweet","error","warn","tweetNewRelease","releaseData","releaseRecord","royaltyRecipients","_releaseData$account","recipient","recipientAuthority","recipientAccount","_recipientAccount$$re","map","revenueShare","includes","relatedQuery","relate","_this3","publishedThroughHub","hubId","relationMappings","BelongsToOneRelation","collectors","exchanges","revenueShareRecipients","name","symbol","description","date","files","category","creators","Post","data","releases","Hub","authorityId","updateHub","hub","hubAccount","hubContents","hubReleases","hubCollaborators","hubPosts","_iterator2","_step2","_iterator3","_step3","_iterator4","_step4","_iterator5","_step5","_iterator6","_step6","_temp58","filter","x","_Hub$relatedQuery$for","_temp56","_temp54","hubCollaboratorsForHubOnChain","hubPostsForHubOnChain","newHubPostsForHub","hubPost","_temp42","hubContent","child","post","visible","_temp38","_temp36","referenceContent","first","relatedRelease","_temp34","hubPostPublicKey","$query","patch","_temp32","_temp33","_temp37","_temp59","deleteById","_temp39","_temp41","_temp43","_didIteratorError6","_iteratorError6","_wasThrown11","_result11","_temp46","_result12","_temp45","_temp44","_iteratorAbruptCompletion6","_wasThrown12","_Hub$relatedQuery$for3","hubPostsForHubDb","_iterator5$next","_iteratorAbruptCompletion5","_temp28","_temp27","unrelate","_temp26","_didIteratorError5","_iteratorError5","_wasThrown9","_result9","_temp31","_result10","_temp30","_temp29","_wasThrown10","_temp47","_temp48","_iteratorError4","removedCollaborators","hubCollaboratorsForHubDb","collaborator","_iteratorAbruptCompletion4","_didIteratorError4","_temp49","_temp22","_iterator4$next","removedCollaborator","_temp21","collaboratorRecord","_temp20","_wasThrown7","_result7","_temp25","_result8","_temp24","_temp23","_wasThrown8","_temp50","newHubCollaboratorsForHub","_Hub$relatedQuery$for2","_temp16","_iterator3$next","_iteratorAbruptCompletion3","_temp15","hubCollaborator","_temp14","hubCollaboratorPublicKey","_didIteratorError3","_iteratorError3","_wasThrown5","_result5","_temp19","_result6","_temp18","_temp17","_wasThrown6","_temp51","_temp52","_iteratorError2","_iteratorAbruptCompletion2","_didIteratorError2","_temp53","newHubReleasesForHub","_temp10","_iterator2$next","hubRelease","_temp9","hubReleasePublicKey","_wasThrown3","_temp13","_result4","_temp12","_temp11","_wasThrown4","hubReleasesForHubDb","hubReleasesForHubOnChain","_temp55","uri","byteArray","TextDecoder","decode","Uint8Array","replaceAll","_temp57","dataUri","axios","_axios$get","handle","collaborators","subscriptionType","Subscription","subscription","accountTo","accountFrom","enum","knexConfig","development","host","POSTGRES_HOST","database","POSTGRES_DATABASE","user","POSTGRES_USER","password","POSTGRES_PASSWORD","migrations","directory","staging","production","db","initDb","async","Knex","raw","migrate","latest","knex","connectDb","destroyDb","destroy","Transaction","postId","toAccount","toAccountId","toHub","toHubId","blocktime","txid","Verification","accountId","displayName","image"],"mappings":"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"}
|