Skip to content

Commit 9222d4e

Browse files
authored
Merge pull request #61 from cardinal-labs/jeremy/handle-durations
Handle duration
2 parents 3c60d8c + 8ee7152 commit 9222d4e

File tree

12 files changed

+155
-617
lines changed

12 files changed

+155
-617
lines changed

api/img-generator/generator.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,31 @@ export async function getImage(
311311
bottomLeft += 0.075 * WIDTH;
312312
}
313313

314+
const durationSeconds =
315+
tokenData.timeInvalidatorData?.parsed?.durationSeconds;
316+
if (durationSeconds && durationSeconds.toNumber()) {
317+
const dateTime = new Date(
318+
(Date.now() / 1000 + durationSeconds.toNumber()) * 1000
319+
);
320+
bottomLeftCtx.font = `${0.055 * WIDTH}px SFPro`;
321+
bottomLeftCtx.fillStyle = "white";
322+
bottomLeftCtx.fillText(
323+
`${dateTime.toLocaleDateString(["en-US"], {
324+
month: "2-digit",
325+
day: "2-digit",
326+
year: "2-digit",
327+
})} ${dateTime.toLocaleTimeString(["en-US"], {
328+
hour: "2-digit",
329+
minute: "2-digit",
330+
timeZone: "UTC",
331+
timeZoneName: "short",
332+
})}`,
333+
PADDING,
334+
HEIGHT - bottomLeft
335+
);
336+
bottomLeft += 0.075 * WIDTH;
337+
}
338+
314339
const usages =
315340
tokenData.useInvalidatorData?.parsed?.usages ||
316341
tokenData?.certificateData?.parsed?.usages;

api/metadata-generator/generator.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,20 @@ export async function getMetadata(
244244
};
245245
}
246246

247+
if (tokenData.timeInvalidatorData?.parsed?.durationSeconds) {
248+
response = {
249+
...response,
250+
attributes: [
251+
...(response.attributes || []),
252+
{
253+
trait_type: "duration",
254+
value: `${tokenData.timeInvalidatorData?.parsed?.durationSeconds.toNumber()}`,
255+
display_type: "Duration",
256+
},
257+
],
258+
};
259+
}
260+
247261
// // certificate
248262
// if (
249263
// tokenData.certificateData?.parsed.usages &&

api/package.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@
1818
"dependencies": {
1919
"@cardinal/certificates": "^1.2.6",
2020
"@cardinal/common": "^1.0.6",
21-
"@cardinal/namespaces": "=3.0.32",
21+
"@cardinal/namespaces": "^3.0.32",
2222
"@cardinal/quest-pool": "^1.1.3",
2323
"@cardinal/stake-pool": "^1.1.1",
24-
"@cardinal/token-manager": "=1.1.0",
24+
"@cardinal/token-manager": "^1.3.10",
2525
"@metaplex/js": "^4.2.1",
26-
"@project-serum/anchor": "=0.21.0",
27-
"@saberhq/anchor-contrib": "=1.12.48",
28-
"@saberhq/solana-contrib": "^1.11",
26+
"@rushstack/eslint-patch": "^1.1.0",
27+
"@project-serum/anchor": "^0.24.2",
28+
"@saberhq/anchor-contrib": "^1.12.44",
29+
"@saberhq/solana-contrib": "^1.12.44",
2930
"@saberhq/token-utils": "^1.12.48",
3031
"@solana/spl-token": "^0.1.8",
3132
"bignumber.js": "^9.0.2",

api/serverless.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,14 @@ custom:
5252
domainName: nft.cardinal.so
5353
dev:
5454
domainName: dev-nft.cardinal.so
55-
customDomain:
56-
domainName: ${self:custom.domains.${opt:stage}.domainName}
57-
certificateName: "*.cardinal.so"
58-
createRoute53Record: true
59-
autoDomain: true
55+
# customDomain:
56+
# domainName: ${self:custom.domains.${opt:stage}.domainName}
57+
# certificateName: "*.cardinal.so"
58+
# createRoute53Record: true
59+
# autoDomain: true
6060

6161
plugins:
62-
- serverless-domain-manager
62+
# - serverless-domain-manager
6363
- serverless-apigw-binary
6464
- serverless-apigwy-binary
6565
- serverless-plugin-typescript

api/yarn.lock

Lines changed: 104 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@
7272
tiny-invariant "^1.2.0"
7373
tslib "^2.3.1"
7474

75-
"@cardinal/namespaces@=3.0.32":
76-
version "3.0.32"
77-
resolved "https://registry.yarnpkg.com/@cardinal/namespaces/-/namespaces-3.0.32.tgz#b3f89694f70542a1dc89bff954029d783c782ee5"
78-
integrity sha512-ZJrw3wxYfzJ3g2tmnqoesX5tTAfdXLHhr+Ix+SF91b16b5XZahb1YkTPc5rhwTa63D1OUwgqckuXHZ4zUVmziA==
75+
"@cardinal/namespaces@^2.0.42":
76+
version "2.0.59"
77+
resolved "https://registry.yarnpkg.com/@cardinal/namespaces/-/namespaces-2.0.59.tgz#9e251c3a38f78faca58e208d1c5f2e10fa8c829b"
78+
integrity sha512-2waZMfLyzAKi5y7bWBPzuqP/FDSjLS5u9VhsBLfEQbNOR3BHmHrSwrYPpAfV+IrULNBSSg8jobxoD5b94C3GEQ==
7979
dependencies:
8080
"@cardinal/certificates" "^1.2.3"
8181
"@cardinal/namespaces" "^2.0.42"
@@ -85,10 +85,10 @@
8585
"@solana/spl-token" "^0.1.8"
8686
typescript "^4.5.4"
8787

88-
"@cardinal/namespaces@^2.0.42":
89-
version "2.0.59"
90-
resolved "https://registry.yarnpkg.com/@cardinal/namespaces/-/namespaces-2.0.59.tgz#9e251c3a38f78faca58e208d1c5f2e10fa8c829b"
91-
integrity sha512-2waZMfLyzAKi5y7bWBPzuqP/FDSjLS5u9VhsBLfEQbNOR3BHmHrSwrYPpAfV+IrULNBSSg8jobxoD5b94C3GEQ==
88+
"@cardinal/namespaces@^3.0.32":
89+
version "3.1.0"
90+
resolved "https://registry.yarnpkg.com/@cardinal/namespaces/-/namespaces-3.1.0.tgz#bee4acdf3d2bcf63aa5c02502f61fb8024ac4039"
91+
integrity sha512-eX44mI0EFZrzvIHKGS/j0iUJPmCrl1av89jfSqWf6ldYYwLyENQysyOQv2az718pbJd9H5IQb+kJX0JLlQCo/w==
9292
dependencies:
9393
"@cardinal/certificates" "^1.2.3"
9494
"@cardinal/namespaces" "^2.0.42"
@@ -132,16 +132,17 @@
132132
ts-mocha "^8.0.0"
133133
typescript "^4.5.5"
134134

135-
"@cardinal/token-manager@=1.1.0":
136-
version "1.1.0"
137-
resolved "https://registry.yarnpkg.com/@cardinal/token-manager/-/token-manager-1.1.0.tgz#5c64e2cdeaea0e7455ebca96f3d86180dc5c45e4"
138-
integrity sha512-632KWT2fSB+3s/+vc5RCiFXPLjvUbnaFS/0NMa9h7dlZ7gVG1pV2A8ICv+IAhMAAN4jTt+Lr4d6M6244mlWRTg==
135+
"@cardinal/token-manager@^1.3.10":
136+
version "1.3.10"
137+
resolved "https://registry.yarnpkg.com/@cardinal/token-manager/-/token-manager-1.3.10.tgz#f8e0bc23f80fb2d8479394837d6feccbabc3e904"
138+
integrity sha512-yMG32kl+JKvvtCUmQ+ZE/WMk5hMq1gy1AVr7SMb9wTbAFoJmKuen/MBbF8IuGn3sjzqn/EIirbW6h+LlCAtqgw==
139139
dependencies:
140140
"@metaplex-foundation/mpl-token-metadata" "^1.2.3"
141141
"@solana/buffer-layout" "^4.0.0"
142142
"@solana/spl-token" "^0.1.8"
143143
borsh "^0.7.0"
144144
bs58 "^4.0.1"
145+
superstruct "^0.15.4"
145146
tiny-invariant "^1.2.0"
146147
tslib "^2.3.1"
147148

@@ -641,7 +642,7 @@
641642
snake-case "^3.0.4"
642643
toml "^3.0.0"
643644

644-
"@project-serum/anchor@0.21.0", "@project-serum/anchor@=0.21.0":
645+
"@project-serum/anchor@0.21.0":
645646
version "0.21.0"
646647
resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.21.0.tgz#ad5fb33744991ec1900cdb2fd22707c908b12b5f"
647648
integrity sha512-flRuW/F+iC8mitNokx82LOXyND7Dyk6n5UUPJpQv/+NfySFrNFlzuQZaBZJ4CG5g9s8HS/uaaIz1nVkDR8V/QA==
@@ -683,6 +684,26 @@
683684
snake-case "^3.0.4"
684685
toml "^3.0.0"
685686

687+
"@project-serum/anchor@^0.24.2":
688+
version "0.24.2"
689+
resolved "https://registry.yarnpkg.com/@project-serum/anchor/-/anchor-0.24.2.tgz#a3c52a99605c80735f446ca9b3a4885034731004"
690+
integrity sha512-0/718g8/DnEuwAidUwh5wLYphUYXhUbiClkuRNhvNoa+1Y8a4g2tJyxoae+emV+PG/Gikd/QUBNMkIcimiIRTA==
691+
dependencies:
692+
"@project-serum/borsh" "^0.2.5"
693+
"@solana/web3.js" "^1.36.0"
694+
base64-js "^1.5.1"
695+
bn.js "^5.1.2"
696+
bs58 "^4.0.1"
697+
buffer-layout "^1.2.2"
698+
camelcase "^5.3.1"
699+
cross-fetch "^3.1.5"
700+
crypto-hash "^1.3.0"
701+
eventemitter3 "^4.0.7"
702+
js-sha256 "^0.9.0"
703+
pako "^2.0.3"
704+
snake-case "^3.0.4"
705+
toml "^3.0.0"
706+
686707
"@project-serum/borsh@^0.2.2", "@project-serum/borsh@^0.2.4", "@project-serum/borsh@^0.2.5":
687708
version "0.2.5"
688709
resolved "https://registry.yarnpkg.com/@project-serum/borsh/-/borsh-0.2.5.tgz#6059287aa624ecebbfc0edd35e4c28ff987d8663"
@@ -744,16 +765,21 @@
744765
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
745766
integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=
746767

747-
"@saberhq/anchor-contrib@=1.12.48":
748-
version "1.12.48"
749-
resolved "https://registry.yarnpkg.com/@saberhq/anchor-contrib/-/anchor-contrib-1.12.48.tgz#76f577df2fd3405086c80f2b9d7b30ca91e2ace0"
750-
integrity sha512-UPITsnMazZXfCv4rI3Zx5aAxXZc2wPX09j2Bf5M6zVT1wYTbTEGp0yNLY4f926LBda+EngMkc19SrOYu94ODfw==
768+
"@rushstack/eslint-patch@^1.1.0":
769+
version "1.1.3"
770+
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz#6801033be7ff87a6b7cadaf5b337c9f366a3c4b0"
771+
integrity sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==
772+
773+
"@saberhq/anchor-contrib@^1.12.44":
774+
version "1.13.15"
775+
resolved "https://registry.yarnpkg.com/@saberhq/anchor-contrib/-/anchor-contrib-1.13.15.tgz#d45906deb196bfae70f23960d98b86d120710769"
776+
integrity sha512-/n9cP7CiUr8g9h1TQXI/S+lfpD8efVEZFmqqF0LtWfLb6zNoOR+WQ9AMcl+XD+sz1pcsbUh0ncZIIma7uC3Q1w==
751777
dependencies:
752-
"@saberhq/solana-contrib" "^1.12.48"
778+
"@saberhq/solana-contrib" "^1.13.15"
753779
eventemitter3 "^4.0.7"
754780
lodash.camelcase "^4.3.0"
755781
lodash.mapvalues "^4.6.0"
756-
tslib "^2.3.1"
782+
tslib "^2.4.0"
757783

758784
"@saberhq/anchor-contrib@^1.12.47", "@saberhq/anchor-contrib@^1.12.48":
759785
version "1.12.66"
@@ -766,7 +792,7 @@
766792
lodash.mapvalues "^4.6.0"
767793
tslib "^2.4.0"
768794

769-
"@saberhq/solana-contrib@^1.11", "@saberhq/solana-contrib@^1.12.23", "@saberhq/solana-contrib@^1.12.47", "@saberhq/solana-contrib@^1.12.48", "@saberhq/solana-contrib@^1.12.66":
795+
"@saberhq/solana-contrib@^1.12.23", "@saberhq/solana-contrib@^1.12.47", "@saberhq/solana-contrib@^1.12.48", "@saberhq/solana-contrib@^1.12.66":
770796
version "1.12.66"
771797
resolved "https://registry.yarnpkg.com/@saberhq/solana-contrib/-/solana-contrib-1.12.66.tgz#19677f54fe56f4d02ad1bf75749d6e14e673f309"
772798
integrity sha512-rFivOXpx5TaFv7JrPA/uhwA9TmPfMym4SY/WP3OZROXO7eh0+JLlecFvy3kkh0mnbM7LPcmQUUPPJ16Ox9+vKA==
@@ -779,6 +805,19 @@
779805
tiny-invariant "^1.2.0"
780806
tslib "^2.4.0"
781807

808+
"@saberhq/solana-contrib@^1.12.44", "@saberhq/solana-contrib@^1.13.15":
809+
version "1.13.15"
810+
resolved "https://registry.yarnpkg.com/@saberhq/solana-contrib/-/solana-contrib-1.13.15.tgz#e5d9a86b6b2b9fdce3eca05eae00f39e0295307a"
811+
integrity sha512-4IldAgysqQCuiq38DZzld3x1qVv7Jp4WJJ8vv/xPHh3DXeOiWxAtvgqd+aHAFOzyoCRLa9TG2wx21YOrQ/YIxw==
812+
dependencies:
813+
"@solana/buffer-layout" "^4.0.0"
814+
"@types/promise-retry" "^1.1.3"
815+
"@types/retry" "^0.12.2"
816+
promise-retry "^2.0.1"
817+
retry "^0.13.1"
818+
tiny-invariant "^1.2.0"
819+
tslib "^2.4.0"
820+
782821
"@saberhq/token-utils@^1.12.48":
783822
version "1.12.66"
784823
resolved "https://registry.yarnpkg.com/@saberhq/token-utils/-/token-utils-1.12.66.tgz#35bedfe728c2722c006716c77e4faf512c9915a7"
@@ -1080,6 +1119,28 @@
10801119
superstruct "^0.14.2"
10811120
tweetnacl "^1.0.0"
10821121

1122+
"@solana/web3.js@^1.36.0":
1123+
version "1.43.1"
1124+
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.43.1.tgz#f0cfffe7feb798563440f9ca0b0e9ba099e13967"
1125+
integrity sha512-s6TRcWz3rYvxM8gg1eQmUAUJQeoXIFMG9MbSWb/uRrLU0q7Xd9Ic1PNbACp1n1O0wyCogTAyFWXXPK476aIVSg==
1126+
dependencies:
1127+
"@babel/runtime" "^7.12.5"
1128+
"@ethersproject/sha2" "^5.5.0"
1129+
"@solana/buffer-layout" "^4.0.0"
1130+
bigint-buffer "^1.1.5"
1131+
bn.js "^5.0.0"
1132+
borsh "^0.7.0"
1133+
bs58 "^4.0.1"
1134+
buffer "6.0.1"
1135+
cross-fetch "^3.1.4"
1136+
fast-stable-stringify "^1.0.0"
1137+
jayson "^3.4.4"
1138+
js-sha3 "^0.8.0"
1139+
rpc-websockets "^7.4.2"
1140+
secp256k1 "^4.0.2"
1141+
superstruct "^0.14.2"
1142+
tweetnacl "^1.0.0"
1143+
10831144
"@szmarczak/http-timer@^1.1.2":
10841145
version "1.1.2"
10851146
resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
@@ -1279,6 +1340,11 @@
12791340
resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065"
12801341
integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==
12811342

1343+
"@types/retry@^0.12.2":
1344+
version "0.12.2"
1345+
resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.2.tgz#ed279a64fa438bb69f2480eda44937912bb7480a"
1346+
integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==
1347+
12821348
"@types/ws@^7.4.4":
12831349
version "7.4.7"
12841350
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702"
@@ -1670,6 +1736,13 @@ big.js@^6.1.1:
16701736
resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.1.1.tgz#63b35b19dc9775c94991ee5db7694880655d5537"
16711737
integrity sha512-1vObw81a8ylZO5ePrtMay0n018TcftpTA5HFKDaSuiUDBo8biRBtjIobw60OpwuvrGk+FsxKamqN4cnmj/eXdg==
16721738

1739+
bigint-buffer@^1.1.5:
1740+
version "1.1.5"
1741+
resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442"
1742+
integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==
1743+
dependencies:
1744+
bindings "^1.3.0"
1745+
16731746
bignumber.js@^9.0.2:
16741747
version "9.0.2"
16751748
resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673"
@@ -1688,7 +1761,7 @@ binary@~0.3.0:
16881761
buffers "~0.1.1"
16891762
chainsaw "~0.1.0"
16901763

1691-
bindings@^1.3.1:
1764+
bindings@^1.3.0, bindings@^1.3.1:
16921765
version "1.5.0"
16931766
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
16941767
integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
@@ -3158,6 +3231,11 @@ fast-levenshtein@~2.0.6:
31583231
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
31593232
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
31603233

3234+
fast-stable-stringify@^1.0.0:
3235+
version "1.0.0"
3236+
resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313"
3237+
integrity sha1-XFVDRisiru79NtBbNOUceMuG0xM=
3238+
31613239
fastest-levenshtein@^1.0.12:
31623240
version "1.0.12"
31633241
resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
@@ -6600,6 +6678,11 @@ superstruct@^0.14.2:
66006678
resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.14.2.tgz#0dbcdf3d83676588828f1cf5ed35cda02f59025b"
66016679
integrity sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==
66026680

6681+
superstruct@^0.15.4:
6682+
version "0.15.4"
6683+
resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.15.4.tgz#e3381dd84ca07e704e19f69eda74eee1a5efb1f9"
6684+
integrity sha512-eOoMeSbP9ZJChNOm/9RYjE+F36rYR966AAqeG3xhQB02j2sfAUXDp4EQ/7bAOqnlJnuFDB8yvOu50SocvKpUEw==
6685+
66036686
supports-color@8.1.1, supports-color@^8.1.1:
66046687
version "8.1.1"
66056688
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"

workflows/deps.yml

Lines changed: 0 additions & 41 deletions
This file was deleted.

0 commit comments

Comments
 (0)