@medialane/ui 0.183.0 → 0.185.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/drop/create/artwork-section.cjs +115 -0
- package/dist/components/drop/create/artwork-section.cjs.map +1 -0
- package/dist/components/drop/create/artwork-section.d.cts +23 -0
- package/dist/components/drop/create/artwork-section.d.ts +23 -0
- package/dist/components/drop/create/artwork-section.js +79 -0
- package/dist/components/drop/create/artwork-section.js.map +1 -0
- package/dist/components/drop/create/details-section.cjs +110 -0
- package/dist/components/drop/create/details-section.cjs.map +1 -0
- package/dist/components/drop/create/details-section.d.cts +11 -0
- package/dist/components/drop/create/details-section.d.ts +11 -0
- package/dist/components/drop/create/details-section.js +86 -0
- package/dist/components/drop/create/details-section.js.map +1 -0
- package/dist/components/drop/create/drop-create.cjs +114 -0
- package/dist/components/drop/create/drop-create.cjs.map +1 -0
- package/dist/components/drop/create/drop-create.d.cts +20 -0
- package/dist/components/drop/create/drop-create.d.ts +20 -0
- package/dist/components/drop/create/drop-create.js +79 -0
- package/dist/components/drop/create/drop-create.js.map +1 -0
- package/dist/components/drop/create/exclusive-fields.cjs +45 -0
- package/dist/components/drop/create/exclusive-fields.cjs.map +1 -0
- package/dist/components/drop/create/exclusive-fields.d.cts +14 -0
- package/dist/components/drop/create/exclusive-fields.d.ts +14 -0
- package/dist/components/drop/create/exclusive-fields.js +21 -0
- package/dist/components/drop/create/exclusive-fields.js.map +1 -0
- package/dist/components/drop/create/launch-dialog.cjs +196 -0
- package/dist/components/drop/create/launch-dialog.cjs.map +1 -0
- package/dist/components/drop/create/launch-dialog.d.cts +21 -0
- package/dist/components/drop/create/launch-dialog.d.ts +21 -0
- package/dist/components/drop/create/launch-dialog.js +171 -0
- package/dist/components/drop/create/launch-dialog.js.map +1 -0
- package/dist/components/drop/create/list-section.cjs +67 -0
- package/dist/components/drop/create/list-section.cjs.map +1 -0
- package/dist/components/drop/create/list-section.d.cts +11 -0
- package/dist/components/drop/create/list-section.d.ts +11 -0
- package/dist/components/drop/create/list-section.js +43 -0
- package/dist/components/drop/create/list-section.js.map +1 -0
- package/dist/components/drop/create/sale-section.cjs +78 -0
- package/dist/components/drop/create/sale-section.cjs.map +1 -0
- package/dist/components/drop/create/sale-section.d.cts +13 -0
- package/dist/components/drop/create/sale-section.d.ts +13 -0
- package/dist/components/drop/create/sale-section.js +54 -0
- package/dist/components/drop/create/sale-section.js.map +1 -0
- package/dist/components/drop/drop-card.cjs +81 -0
- package/dist/components/drop/drop-card.cjs.map +1 -0
- package/dist/components/drop/drop-card.d.cts +18 -0
- package/dist/components/drop/drop-card.d.ts +18 -0
- package/dist/components/drop/drop-card.js +45 -0
- package/dist/components/drop/drop-card.js.map +1 -0
- package/dist/components/drop/drop-features.cjs +44 -0
- package/dist/components/drop/drop-features.cjs.map +1 -0
- package/dist/components/drop/drop-features.d.cts +5 -0
- package/dist/components/drop/drop-features.d.ts +5 -0
- package/dist/components/drop/drop-features.js +20 -0
- package/dist/components/drop/drop-features.js.map +1 -0
- package/dist/components/drop/drop-listing.cjs +79 -0
- package/dist/components/drop/drop-listing.cjs.map +1 -0
- package/dist/components/drop/drop-listing.d.cts +10 -0
- package/dist/components/drop/drop-listing.d.ts +10 -0
- package/dist/components/drop/drop-listing.js +45 -0
- package/dist/components/drop/drop-listing.js.map +1 -0
- package/dist/components/{drop-status-display.cjs → drop/drop-status.cjs} +12 -43
- package/dist/components/drop/drop-status.cjs.map +1 -0
- package/dist/components/drop/drop-status.d.cts +13 -0
- package/dist/components/drop/drop-status.d.ts +13 -0
- package/dist/components/drop/drop-status.js +47 -0
- package/dist/components/drop/drop-status.js.map +1 -0
- package/dist/components/drop/drop-token-link.cjs +63 -0
- package/dist/components/drop/drop-token-link.cjs.map +1 -0
- package/dist/components/drop/drop-token-link.d.cts +9 -0
- package/dist/components/drop/drop-token-link.d.ts +9 -0
- package/dist/components/drop/drop-token-link.js +29 -0
- package/dist/components/drop/drop-token-link.js.map +1 -0
- package/dist/components/drop/my-drops.cjs +71 -0
- package/dist/components/drop/my-drops.cjs.map +1 -0
- package/dist/components/drop/my-drops.d.cts +12 -0
- package/dist/components/drop/my-drops.d.ts +12 -0
- package/dist/components/drop/my-drops.js +37 -0
- package/dist/components/drop/my-drops.js.map +1 -0
- package/dist/components/drop/page/drop-action-box.cjs +63 -0
- package/dist/components/drop/page/drop-action-box.cjs.map +1 -0
- package/dist/components/drop/page/drop-action-box.d.cts +15 -0
- package/dist/components/drop/page/drop-action-box.d.ts +15 -0
- package/dist/components/drop/page/drop-action-box.js +39 -0
- package/dist/components/drop/page/drop-action-box.js.map +1 -0
- package/dist/components/drop/page/drop-activity.cjs +42 -0
- package/dist/components/drop/page/drop-activity.cjs.map +1 -0
- package/dist/components/drop/page/drop-activity.d.cts +8 -0
- package/dist/components/drop/page/drop-activity.d.ts +8 -0
- package/dist/components/drop/page/drop-activity.js +18 -0
- package/dist/components/drop/page/drop-activity.js.map +1 -0
- package/dist/components/drop/page/drop-manage.cjs +161 -0
- package/dist/components/drop/page/drop-manage.cjs.map +1 -0
- package/dist/components/drop/page/drop-manage.d.cts +24 -0
- package/dist/components/drop/page/drop-manage.d.ts +24 -0
- package/dist/components/drop/page/drop-manage.js +137 -0
- package/dist/components/drop/page/drop-manage.js.map +1 -0
- package/dist/components/drop/page/drop-mint-dialog.cjs +97 -0
- package/dist/components/drop/page/drop-mint-dialog.cjs.map +1 -0
- package/dist/components/drop/page/drop-mint-dialog.d.cts +15 -0
- package/dist/components/drop/page/drop-mint-dialog.d.ts +15 -0
- package/dist/components/drop/page/drop-mint-dialog.js +73 -0
- package/dist/components/drop/page/drop-mint-dialog.js.map +1 -0
- package/dist/components/drop/page/drop-page.cjs +167 -0
- package/dist/components/drop/page/drop-page.cjs.map +1 -0
- package/dist/components/drop/page/drop-page.d.cts +15 -0
- package/dist/components/drop/page/drop-page.d.ts +15 -0
- package/dist/components/drop/page/drop-page.js +133 -0
- package/dist/components/drop/page/drop-page.js.map +1 -0
- package/dist/components/image.d.cts +2 -0
- package/dist/components/image.d.ts +2 -0
- package/dist/index.cjs +54 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -11
- package/dist/index.d.ts +21 -11
- package/dist/index.js +34 -25
- package/dist/index.js.map +1 -1
- package/dist/utils/drop/actions.cjs +76 -0
- package/dist/utils/drop/actions.cjs.map +1 -0
- package/dist/utils/drop/actions.d.cts +46 -0
- package/dist/utils/drop/actions.d.ts +46 -0
- package/dist/utils/drop/actions.js +49 -0
- package/dist/utils/drop/actions.js.map +1 -0
- package/dist/utils/drop/allowlist.cjs +50 -0
- package/dist/utils/drop/allowlist.cjs.map +1 -0
- package/dist/utils/drop/allowlist.d.cts +10 -0
- package/dist/utils/drop/allowlist.d.ts +10 -0
- package/dist/utils/drop/allowlist.js +26 -0
- package/dist/utils/drop/allowlist.js.map +1 -0
- package/dist/utils/drop/chain.cjs +37 -0
- package/dist/utils/drop/chain.cjs.map +1 -0
- package/dist/utils/drop/chain.d.cts +5 -0
- package/dist/utils/drop/chain.d.ts +5 -0
- package/dist/utils/drop/chain.js +13 -0
- package/dist/utils/drop/chain.js.map +1 -0
- package/dist/utils/drop/claim-proof.cjs +48 -0
- package/dist/utils/drop/claim-proof.cjs.map +1 -0
- package/dist/utils/drop/claim-proof.d.cts +9 -0
- package/dist/utils/drop/claim-proof.d.ts +9 -0
- package/dist/utils/drop/claim-proof.js +24 -0
- package/dist/utils/drop/claim-proof.js.map +1 -0
- package/dist/utils/drop/draft.cjs +87 -0
- package/dist/utils/drop/draft.cjs.map +1 -0
- package/dist/utils/drop/draft.d.cts +32 -0
- package/dist/utils/drop/draft.d.ts +32 -0
- package/dist/utils/drop/draft.js +61 -0
- package/dist/utils/drop/draft.js.map +1 -0
- package/dist/utils/drop/metadata.cjs +70 -0
- package/dist/utils/drop/metadata.cjs.map +1 -0
- package/dist/utils/drop/metadata.d.cts +34 -0
- package/dist/utils/drop/metadata.d.ts +34 -0
- package/dist/utils/drop/metadata.js +43 -0
- package/dist/utils/drop/metadata.js.map +1 -0
- package/dist/utils/{drop-status.cjs → drop/preview.cjs} +14 -14
- package/dist/utils/drop/preview.cjs.map +1 -0
- package/dist/utils/drop/preview.d.cts +4 -0
- package/dist/utils/drop/preview.d.ts +4 -0
- package/dist/utils/drop/preview.js +13 -0
- package/dist/utils/drop/preview.js.map +1 -0
- package/dist/utils/drop/receipt.cjs +39 -0
- package/dist/utils/drop/receipt.cjs.map +1 -0
- package/dist/utils/drop/receipt.d.cts +6 -0
- package/dist/utils/drop/receipt.d.ts +6 -0
- package/dist/utils/drop/receipt.js +15 -0
- package/dist/utils/drop/receipt.js.map +1 -0
- package/dist/utils/drop/sale.cjs +108 -0
- package/dist/utils/drop/sale.cjs.map +1 -0
- package/dist/utils/drop/sale.d.cts +52 -0
- package/dist/utils/drop/sale.d.ts +52 -0
- package/dist/utils/drop/sale.js +78 -0
- package/dist/utils/drop/sale.js.map +1 -0
- package/dist/utils/drop/types.cjs +17 -0
- package/dist/utils/drop/types.cjs.map +1 -0
- package/dist/utils/drop/types.d.cts +20 -0
- package/dist/utils/drop/types.d.ts +20 -0
- package/dist/utils/drop/types.js +1 -0
- package/dist/utils/drop/types.js.map +1 -0
- package/dist/utils/drop/upload.cjs +48 -0
- package/dist/utils/drop/upload.cjs.map +1 -0
- package/dist/utils/drop/upload.d.cts +11 -0
- package/dist/utils/drop/upload.d.ts +11 -0
- package/dist/utils/drop/upload.js +24 -0
- package/dist/utils/drop/upload.js.map +1 -0
- package/dist/utils/drop/use-now.cjs +38 -0
- package/dist/utils/drop/use-now.cjs.map +1 -0
- package/dist/utils/drop/use-now.d.cts +4 -0
- package/dist/utils/drop/use-now.d.ts +4 -0
- package/dist/utils/drop/use-now.js +14 -0
- package/dist/utils/drop/use-now.js.map +1 -0
- package/dist/utils/drop/view.cjs +89 -0
- package/dist/utils/drop/view.cjs.map +1 -0
- package/dist/utils/drop/view.d.cts +34 -0
- package/dist/utils/drop/view.d.ts +34 -0
- package/dist/utils/drop/view.js +64 -0
- package/dist/utils/drop/view.js.map +1 -0
- package/dist/utils/launchpad-defaults.cjs +0 -22
- package/dist/utils/launchpad-defaults.cjs.map +1 -1
- package/dist/utils/launchpad-defaults.d.cts +1 -7
- package/dist/utils/launchpad-defaults.d.ts +1 -7
- package/dist/utils/launchpad-defaults.js +0 -21
- package/dist/utils/launchpad-defaults.js.map +1 -1
- package/dist/utils/use-drops.cjs +48 -45
- package/dist/utils/use-drops.cjs.map +1 -1
- package/dist/utils/use-drops.d.cts +33 -23
- package/dist/utils/use-drops.d.ts +33 -23
- package/dist/utils/use-drops.js +41 -40
- package/dist/utils/use-drops.js.map +1 -1
- package/package.json +3 -3
- package/dist/components/account/account.test.cjs +0 -86
- package/dist/components/account/account.test.cjs.map +0 -1
- package/dist/components/account/account.test.d.cts +0 -2
- package/dist/components/account/account.test.d.ts +0 -2
- package/dist/components/account/account.test.js +0 -85
- package/dist/components/account/account.test.js.map +0 -1
- package/dist/components/drop-create-form.cjs +0 -341
- package/dist/components/drop-create-form.cjs.map +0 -1
- package/dist/components/drop-create-form.d.cts +0 -39
- package/dist/components/drop-create-form.d.ts +0 -39
- package/dist/components/drop-create-form.js +0 -322
- package/dist/components/drop-create-form.js.map +0 -1
- package/dist/components/drop-preview-card.cjs +0 -106
- package/dist/components/drop-preview-card.cjs.map +0 -1
- package/dist/components/drop-preview-card.d.cts +0 -17
- package/dist/components/drop-preview-card.d.ts +0 -17
- package/dist/components/drop-preview-card.js +0 -82
- package/dist/components/drop-preview-card.js.map +0 -1
- package/dist/components/drop-preview-card.test.cjs +0 -84
- package/dist/components/drop-preview-card.test.cjs.map +0 -1
- package/dist/components/drop-preview-card.test.d.cts +0 -3
- package/dist/components/drop-preview-card.test.d.ts +0 -3
- package/dist/components/drop-preview-card.test.js +0 -83
- package/dist/components/drop-preview-card.test.js.map +0 -1
- package/dist/components/drop-status-display.cjs.map +0 -1
- package/dist/components/drop-status-display.d.cts +0 -15
- package/dist/components/drop-status-display.d.ts +0 -15
- package/dist/components/drop-status-display.js +0 -77
- package/dist/components/drop-status-display.js.map +0 -1
- package/dist/components/drop-status-display.test.cjs +0 -29
- package/dist/components/drop-status-display.test.cjs.map +0 -1
- package/dist/components/drop-status-display.test.d.cts +0 -2
- package/dist/components/drop-status-display.test.d.ts +0 -2
- package/dist/components/drop-status-display.test.js +0 -28
- package/dist/components/drop-status-display.test.js.map +0 -1
- package/dist/components/exclusive-content-section.cjs +0 -88
- package/dist/components/exclusive-content-section.cjs.map +0 -1
- package/dist/components/exclusive-content-section.d.cts +0 -10
- package/dist/components/exclusive-content-section.d.ts +0 -10
- package/dist/components/exclusive-content-section.js +0 -64
- package/dist/components/exclusive-content-section.js.map +0 -1
- package/dist/data/drop-create-schema.cjs +0 -92
- package/dist/data/drop-create-schema.cjs.map +0 -1
- package/dist/data/drop-create-schema.d.cts +0 -131
- package/dist/data/drop-create-schema.d.ts +0 -131
- package/dist/data/drop-create-schema.js +0 -58
- package/dist/data/drop-create-schema.js.map +0 -1
- package/dist/utils/drop-status.cjs.map +0 -1
- package/dist/utils/drop-status.d.cts +0 -12
- package/dist/utils/drop-status.d.ts +0 -12
- package/dist/utils/drop-status.js +0 -13
- package/dist/utils/drop-status.js.map +0 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface ParsedAllowlist {
|
|
2
|
+
/** Normalized, each once, in the order pasted. */
|
|
3
|
+
addresses: string[];
|
|
4
|
+
invalid: string[];
|
|
5
|
+
duplicates: string[];
|
|
6
|
+
}
|
|
7
|
+
/** Reads a pasted list or CSV: one wallet per line, comma or space; a header named "address" is skipped. */
|
|
8
|
+
declare function parseAllowlist(raw: string): ParsedAllowlist;
|
|
9
|
+
|
|
10
|
+
export { type ParsedAllowlist, parseAllowlist };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { normalizeAddress } from "@medialane/sdk";
|
|
2
|
+
const STARKNET_ADDRESS_BOUND = 2n ** 251n;
|
|
3
|
+
function parseAllowlist(raw) {
|
|
4
|
+
const out = { addresses: [], invalid: [], duplicates: [] };
|
|
5
|
+
const seen = /* @__PURE__ */ new Set();
|
|
6
|
+
for (const entry of raw.split(/[\s,;]+/).map((s) => s.trim()).filter(Boolean)) {
|
|
7
|
+
if (/^address$/i.test(entry)) continue;
|
|
8
|
+
const valid = /^0x[0-9a-fA-F]{1,64}$/.test(entry) && BigInt(entry) !== 0n && BigInt(entry) < STARKNET_ADDRESS_BOUND;
|
|
9
|
+
if (!valid) {
|
|
10
|
+
out.invalid.push(entry);
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
const address = normalizeAddress("STARKNET", entry);
|
|
14
|
+
if (seen.has(address)) {
|
|
15
|
+
out.duplicates.push(entry);
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
seen.add(address);
|
|
19
|
+
out.addresses.push(address);
|
|
20
|
+
}
|
|
21
|
+
return out;
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
parseAllowlist
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=allowlist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/drop/allowlist.ts"],"sourcesContent":["import { normalizeAddress } from \"@medialane/sdk\";\n\nconst STARKNET_ADDRESS_BOUND = 2n ** 251n;\n\nexport interface ParsedAllowlist {\n /** Normalized, each once, in the order pasted. */\n addresses: string[];\n invalid: string[];\n duplicates: string[];\n}\n\n/** Reads a pasted list or CSV: one wallet per line, comma or space; a header named \"address\" is skipped. */\nexport function parseAllowlist(raw: string): ParsedAllowlist {\n const out: ParsedAllowlist = { addresses: [], invalid: [], duplicates: [] };\n const seen = new Set<string>();\n for (const entry of raw.split(/[\\s,;]+/).map((s) => s.trim()).filter(Boolean)) {\n if (/^address$/i.test(entry)) continue;\n const valid = /^0x[0-9a-fA-F]{1,64}$/.test(entry) && BigInt(entry) !== 0n && BigInt(entry) < STARKNET_ADDRESS_BOUND;\n if (!valid) {\n out.invalid.push(entry);\n continue;\n }\n const address = normalizeAddress(\"STARKNET\", entry);\n if (seen.has(address)) {\n out.duplicates.push(entry);\n continue;\n }\n seen.add(address);\n out.addresses.push(address);\n }\n return out;\n}\n"],"mappings":"AAAA,SAAS,wBAAwB;AAEjC,MAAM,yBAAyB,MAAM;AAU9B,SAAS,eAAe,KAA8B;AAC3D,QAAM,MAAuB,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC,GAAG,YAAY,CAAC,EAAE;AAC1E,QAAM,OAAO,oBAAI,IAAY;AAC7B,aAAW,SAAS,IAAI,MAAM,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO,GAAG;AAC7E,QAAI,aAAa,KAAK,KAAK,EAAG;AAC9B,UAAM,QAAQ,wBAAwB,KAAK,KAAK,KAAK,OAAO,KAAK,MAAM,MAAM,OAAO,KAAK,IAAI;AAC7F,QAAI,CAAC,OAAO;AACV,UAAI,QAAQ,KAAK,KAAK;AACtB;AAAA,IACF;AACA,UAAM,UAAU,iBAAiB,YAAY,KAAK;AAClD,QAAI,KAAK,IAAI,OAAO,GAAG;AACrB,UAAI,WAAW,KAAK,KAAK;AACzB;AAAA,IACF;AACA,SAAK,IAAI,OAAO;AAChB,QAAI,UAAU,KAAK,OAAO;AAAA,EAC5B;AACA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var chain_exports = {};
|
|
20
|
+
__export(chain_exports, {
|
|
21
|
+
erc20Balance: () => erc20Balance
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(chain_exports);
|
|
24
|
+
var import_sdk = require("@medialane/sdk");
|
|
25
|
+
async function erc20Balance(provider, token, wallet) {
|
|
26
|
+
const res = await provider.callContract({
|
|
27
|
+
contractAddress: (0, import_sdk.normalizeAddress)("STARKNET", token),
|
|
28
|
+
entrypoint: "balance_of",
|
|
29
|
+
calldata: [(0, import_sdk.normalizeAddress)("STARKNET", wallet)]
|
|
30
|
+
});
|
|
31
|
+
return BigInt(res[0] ?? "0x0") + (BigInt(res[1] ?? "0x0") << 128n);
|
|
32
|
+
}
|
|
33
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
34
|
+
0 && (module.exports = {
|
|
35
|
+
erc20Balance
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=chain.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/drop/chain.ts"],"sourcesContent":["import { normalizeAddress } from \"@medialane/sdk\";\nimport type { ProviderInterface } from \"starknet\";\n\nexport async function erc20Balance(provider: Pick<ProviderInterface, \"callContract\">, token: string, wallet: string): Promise<bigint> {\n const res = await provider.callContract({\n contractAddress: normalizeAddress(\"STARKNET\", token),\n entrypoint: \"balance_of\",\n calldata: [normalizeAddress(\"STARKNET\", wallet)],\n });\n return BigInt(res[0] ?? \"0x0\") + (BigInt(res[1] ?? \"0x0\") << 128n);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiC;AAGjC,eAAsB,aAAa,UAAmD,OAAe,QAAiC;AACpI,QAAM,MAAM,MAAM,SAAS,aAAa;AAAA,IACtC,qBAAiB,6BAAiB,YAAY,KAAK;AAAA,IACnD,YAAY;AAAA,IACZ,UAAU,KAAC,6BAAiB,YAAY,MAAM,CAAC;AAAA,EACjD,CAAC;AACD,SAAO,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK;AAC/D;","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { normalizeAddress } from "@medialane/sdk";
|
|
2
|
+
async function erc20Balance(provider, token, wallet) {
|
|
3
|
+
const res = await provider.callContract({
|
|
4
|
+
contractAddress: normalizeAddress("STARKNET", token),
|
|
5
|
+
entrypoint: "balance_of",
|
|
6
|
+
calldata: [normalizeAddress("STARKNET", wallet)]
|
|
7
|
+
});
|
|
8
|
+
return BigInt(res[0] ?? "0x0") + (BigInt(res[1] ?? "0x0") << 128n);
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
erc20Balance
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=chain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/drop/chain.ts"],"sourcesContent":["import { normalizeAddress } from \"@medialane/sdk\";\nimport type { ProviderInterface } from \"starknet\";\n\nexport async function erc20Balance(provider: Pick<ProviderInterface, \"callContract\">, token: string, wallet: string): Promise<bigint> {\n const res = await provider.callContract({\n contractAddress: normalizeAddress(\"STARKNET\", token),\n entrypoint: \"balance_of\",\n calldata: [normalizeAddress(\"STARKNET\", wallet)],\n });\n return BigInt(res[0] ?? \"0x0\") + (BigInt(res[1] ?? \"0x0\") << 128n);\n}\n"],"mappings":"AAAA,SAAS,wBAAwB;AAGjC,eAAsB,aAAa,UAAmD,OAAe,QAAiC;AACpI,QAAM,MAAM,MAAM,SAAS,aAAa;AAAA,IACtC,iBAAiB,iBAAiB,YAAY,KAAK;AAAA,IACnD,YAAY;AAAA,IACZ,UAAU,CAAC,iBAAiB,YAAY,MAAM,CAAC;AAAA,EACjD,CAAC;AACD,SAAO,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK;AAC/D;","names":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var claim_proof_exports = {};
|
|
20
|
+
__export(claim_proof_exports, {
|
|
21
|
+
claimProofFor: () => claimProofFor
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(claim_proof_exports);
|
|
24
|
+
var import_sdk = require("@medialane/sdk");
|
|
25
|
+
var import_starknet = require("@medialane/sdk/starknet");
|
|
26
|
+
function claimProofFor(storage, collection, fragment, keyPrefix = "pop-proof") {
|
|
27
|
+
const key = `${keyPrefix}:${(0, import_sdk.normalizeAddress)("STARKNET", collection)}`;
|
|
28
|
+
const fromLink = (0, import_starknet.decodePopClaimFragment)(fragment);
|
|
29
|
+
if (fromLink !== null) {
|
|
30
|
+
try {
|
|
31
|
+
storage?.setItem(key, JSON.stringify(fromLink));
|
|
32
|
+
} catch {
|
|
33
|
+
}
|
|
34
|
+
return fromLink;
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const saved = storage?.getItem(key);
|
|
38
|
+
const parsed = saved ? JSON.parse(saved) : null;
|
|
39
|
+
return Array.isArray(parsed) && parsed.every((p) => typeof p === "string") ? parsed : null;
|
|
40
|
+
} catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
45
|
+
0 && (module.exports = {
|
|
46
|
+
claimProofFor
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=claim-proof.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/drop/claim-proof.ts"],"sourcesContent":["import { normalizeAddress } from \"@medialane/sdk\";\nimport { decodePopClaimFragment } from \"@medialane/sdk/starknet\";\n\ntype ProofStorage = Pick<Storage, \"getItem\" | \"setItem\">;\n\n/**\n * The claim proof for `collection`: from the link's fragment when present (and remembered),\n * otherwise the one remembered from an earlier visit — so it survives a sign-in redirect,\n * which keeps only the page path.\n */\nexport function claimProofFor(\n storage: ProofStorage | null,\n collection: string,\n fragment: string,\n keyPrefix = \"pop-proof\",\n): string[] | null {\n const key = `${keyPrefix}:${normalizeAddress(\"STARKNET\", collection)}`;\n const fromLink = decodePopClaimFragment(fragment);\n if (fromLink !== null) {\n try {\n storage?.setItem(key, JSON.stringify(fromLink));\n } catch {\n // Storage may be unavailable (private mode); the link still works on this visit.\n }\n return fromLink;\n }\n try {\n const saved = storage?.getItem(key);\n const parsed: unknown = saved ? JSON.parse(saved) : null;\n return Array.isArray(parsed) && parsed.every((p) => typeof p === \"string\") ? parsed : null;\n } catch {\n return null;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiC;AACjC,sBAAuC;AAShC,SAAS,cACd,SACA,YACA,UACA,YAAY,aACK;AACjB,QAAM,MAAM,GAAG,SAAS,QAAI,6BAAiB,YAAY,UAAU,CAAC;AACpE,QAAM,eAAW,wCAAuB,QAAQ;AAChD,MAAI,aAAa,MAAM;AACrB,QAAI;AACF,eAAS,QAAQ,KAAK,KAAK,UAAU,QAAQ,CAAC;AAAA,IAChD,QAAQ;AAAA,IAER;AACA,WAAO;AAAA,EACT;AACA,MAAI;AACF,UAAM,QAAQ,SAAS,QAAQ,GAAG;AAClC,UAAM,SAAkB,QAAQ,KAAK,MAAM,KAAK,IAAI;AACpD,WAAO,MAAM,QAAQ,MAAM,KAAK,OAAO,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ,IAAI,SAAS;AAAA,EACxF,QAAQ;AACN,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type ProofStorage = Pick<Storage, "getItem" | "setItem">;
|
|
2
|
+
/**
|
|
3
|
+
* The claim proof for `collection`: from the link's fragment when present (and remembered),
|
|
4
|
+
* otherwise the one remembered from an earlier visit — so it survives a sign-in redirect,
|
|
5
|
+
* which keeps only the page path.
|
|
6
|
+
*/
|
|
7
|
+
declare function claimProofFor(storage: ProofStorage | null, collection: string, fragment: string, keyPrefix?: string): string[] | null;
|
|
8
|
+
|
|
9
|
+
export { claimProofFor };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type ProofStorage = Pick<Storage, "getItem" | "setItem">;
|
|
2
|
+
/**
|
|
3
|
+
* The claim proof for `collection`: from the link's fragment when present (and remembered),
|
|
4
|
+
* otherwise the one remembered from an earlier visit — so it survives a sign-in redirect,
|
|
5
|
+
* which keeps only the page path.
|
|
6
|
+
*/
|
|
7
|
+
declare function claimProofFor(storage: ProofStorage | null, collection: string, fragment: string, keyPrefix?: string): string[] | null;
|
|
8
|
+
|
|
9
|
+
export { claimProofFor };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { normalizeAddress } from "@medialane/sdk";
|
|
2
|
+
import { decodePopClaimFragment } from "@medialane/sdk/starknet";
|
|
3
|
+
function claimProofFor(storage, collection, fragment, keyPrefix = "pop-proof") {
|
|
4
|
+
const key = `${keyPrefix}:${normalizeAddress("STARKNET", collection)}`;
|
|
5
|
+
const fromLink = decodePopClaimFragment(fragment);
|
|
6
|
+
if (fromLink !== null) {
|
|
7
|
+
try {
|
|
8
|
+
storage?.setItem(key, JSON.stringify(fromLink));
|
|
9
|
+
} catch {
|
|
10
|
+
}
|
|
11
|
+
return fromLink;
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
const saved = storage?.getItem(key);
|
|
15
|
+
const parsed = saved ? JSON.parse(saved) : null;
|
|
16
|
+
return Array.isArray(parsed) && parsed.every((p) => typeof p === "string") ? parsed : null;
|
|
17
|
+
} catch {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
claimProofFor
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=claim-proof.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/drop/claim-proof.ts"],"sourcesContent":["import { normalizeAddress } from \"@medialane/sdk\";\nimport { decodePopClaimFragment } from \"@medialane/sdk/starknet\";\n\ntype ProofStorage = Pick<Storage, \"getItem\" | \"setItem\">;\n\n/**\n * The claim proof for `collection`: from the link's fragment when present (and remembered),\n * otherwise the one remembered from an earlier visit — so it survives a sign-in redirect,\n * which keeps only the page path.\n */\nexport function claimProofFor(\n storage: ProofStorage | null,\n collection: string,\n fragment: string,\n keyPrefix = \"pop-proof\",\n): string[] | null {\n const key = `${keyPrefix}:${normalizeAddress(\"STARKNET\", collection)}`;\n const fromLink = decodePopClaimFragment(fragment);\n if (fromLink !== null) {\n try {\n storage?.setItem(key, JSON.stringify(fromLink));\n } catch {\n // Storage may be unavailable (private mode); the link still works on this visit.\n }\n return fromLink;\n }\n try {\n const saved = storage?.getItem(key);\n const parsed: unknown = saved ? JSON.parse(saved) : null;\n return Array.isArray(parsed) && parsed.every((p) => typeof p === \"string\") ? parsed : null;\n } catch {\n return null;\n }\n}\n"],"mappings":"AAAA,SAAS,wBAAwB;AACjC,SAAS,8BAA8B;AAShC,SAAS,cACd,SACA,YACA,UACA,YAAY,aACK;AACjB,QAAM,MAAM,GAAG,SAAS,IAAI,iBAAiB,YAAY,UAAU,CAAC;AACpE,QAAM,WAAW,uBAAuB,QAAQ;AAChD,MAAI,aAAa,MAAM;AACrB,QAAI;AACF,eAAS,QAAQ,KAAK,KAAK,UAAU,QAAQ,CAAC;AAAA,IAChD,QAAQ;AAAA,IAER;AACA,WAAO;AAAA,EACT;AACA,MAAI;AACF,UAAM,QAAQ,SAAS,QAAQ,GAAG;AAClC,UAAM,SAAkB,QAAQ,KAAK,MAAM,KAAK,IAAI;AACpD,WAAO,MAAM,QAAQ,MAAM,KAAK,OAAO,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ,IAAI,SAAS;AAAA,EACxF,QAAQ;AACN,WAAO;AAAA,EACT;AACF;","names":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var draft_exports = {};
|
|
20
|
+
__export(draft_exports, {
|
|
21
|
+
EMPTY_DRAFT: () => EMPTY_DRAFT,
|
|
22
|
+
draftSupply: () => draftSupply,
|
|
23
|
+
validateDropDraft: () => validateDropDraft
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(draft_exports);
|
|
26
|
+
var import_allowlist = require("./allowlist.js");
|
|
27
|
+
var import_metadata = require("./metadata.js");
|
|
28
|
+
var import_sale = require("./sale.js");
|
|
29
|
+
const EMPTY_DRAFT = {
|
|
30
|
+
kind: "edition",
|
|
31
|
+
edition: null,
|
|
32
|
+
supply: "100",
|
|
33
|
+
items: [],
|
|
34
|
+
cover: null,
|
|
35
|
+
name: "",
|
|
36
|
+
symbol: "",
|
|
37
|
+
description: "",
|
|
38
|
+
license: {
|
|
39
|
+
ipType: "Art",
|
|
40
|
+
licenseType: "CC BY-SA",
|
|
41
|
+
commercialUse: "Yes",
|
|
42
|
+
derivatives: "Share-Alike",
|
|
43
|
+
attribution: "Required",
|
|
44
|
+
geographicScope: "Worldwide",
|
|
45
|
+
aiPolicy: "Allowed",
|
|
46
|
+
royalty: "0"
|
|
47
|
+
},
|
|
48
|
+
sale: import_sale.EMPTY_SALE,
|
|
49
|
+
listOnly: false,
|
|
50
|
+
allowlist: "",
|
|
51
|
+
gated: { enabled: false, title: "", url: "", type: "" }
|
|
52
|
+
};
|
|
53
|
+
function draftSupply(d) {
|
|
54
|
+
return d.kind === "edition" ? Number(d.supply) : d.items.length;
|
|
55
|
+
}
|
|
56
|
+
const thousands = import_metadata.MAX_DROP_SUPPLY.toLocaleString("en-US");
|
|
57
|
+
function validateDropDraft(d, now) {
|
|
58
|
+
const e = { ...(0, import_sale.validateSale)(d.sale, now) };
|
|
59
|
+
if (d.kind === "edition") {
|
|
60
|
+
if (!d.edition) e.artwork = "Add the artwork";
|
|
61
|
+
if (!/^[1-9]\d*$/.test(d.supply) || Number(d.supply) > import_metadata.MAX_DROP_SUPPLY) e.supply = `Enter a supply from 1 to ${thousands}`;
|
|
62
|
+
} else if (d.items.length === 0) {
|
|
63
|
+
e.artwork = "Add at least one item";
|
|
64
|
+
} else if (d.items.length > import_metadata.MAX_DROP_SUPPLY) {
|
|
65
|
+
e.artwork = `A collection holds up to ${thousands} items`;
|
|
66
|
+
}
|
|
67
|
+
if (!d.name.trim()) e.name = "Name your drop";
|
|
68
|
+
if (!/^[A-Z0-9]{1,10}$/.test(d.symbol)) e.symbol = "Use 1\u201310 capital letters or digits";
|
|
69
|
+
if (d.listOnly) {
|
|
70
|
+
const list = (0, import_allowlist.parseAllowlist)(d.allowlist);
|
|
71
|
+
if (list.invalid.length > 0) {
|
|
72
|
+
const n = list.invalid.length;
|
|
73
|
+
e.allowlist = `${n} line${n === 1 ? " isn't a wallet address" : "s aren't wallet addresses"}: ${list.invalid.slice(0, 3).join(", ")}`;
|
|
74
|
+
} else if (list.addresses.length === 0) {
|
|
75
|
+
e.allowlist = "Add at least one wallet address";
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (d.gated.enabled && !/^https:\/\//.test(d.gated.url)) e.gated = "Add a link starting with https://";
|
|
79
|
+
return e;
|
|
80
|
+
}
|
|
81
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
82
|
+
0 && (module.exports = {
|
|
83
|
+
EMPTY_DRAFT,
|
|
84
|
+
draftSupply,
|
|
85
|
+
validateDropDraft
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=draft.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/drop/draft.ts"],"sourcesContent":["import type { DraftItem } from \"../../components/drop-item-list.js\";\nimport { parseAllowlist } from \"./allowlist.js\";\nimport { MAX_DROP_SUPPLY, type DropKind, type DropLicense } from \"./metadata.js\";\nimport { EMPTY_SALE, validateSale, type SaleDraft, type SaleErrors } from \"./sale.js\";\n\nexport interface DropDraft {\n kind: DropKind;\n edition: File | null;\n supply: string;\n items: DraftItem[];\n cover: File | null;\n name: string;\n symbol: string;\n description: string;\n license: DropLicense;\n sale: SaleDraft;\n listOnly: boolean;\n allowlist: string;\n gated: { enabled: boolean; title: string; url: string; type: string };\n}\n\nexport const EMPTY_DRAFT: DropDraft = {\n kind: \"edition\",\n edition: null,\n supply: \"100\",\n items: [],\n cover: null,\n name: \"\",\n symbol: \"\",\n description: \"\",\n license: {\n ipType: \"Art\", licenseType: \"CC BY-SA\", commercialUse: \"Yes\", derivatives: \"Share-Alike\",\n attribution: \"Required\", geographicScope: \"Worldwide\", aiPolicy: \"Allowed\", royalty: \"0\",\n },\n sale: EMPTY_SALE,\n listOnly: false,\n allowlist: \"\",\n gated: { enabled: false, title: \"\", url: \"\", type: \"\" },\n};\n\nexport type DropDraftErrors = SaleErrors & Partial<Record<\"artwork\" | \"supply\" | \"name\" | \"symbol\" | \"allowlist\" | \"gated\", string>>;\n\nexport function draftSupply(d: DropDraft): number {\n return d.kind === \"edition\" ? Number(d.supply) : d.items.length;\n}\n\nconst thousands = MAX_DROP_SUPPLY.toLocaleString(\"en-US\");\n\nexport function validateDropDraft(d: DropDraft, now: number): DropDraftErrors {\n const e: DropDraftErrors = { ...validateSale(d.sale, now) };\n if (d.kind === \"edition\") {\n if (!d.edition) e.artwork = \"Add the artwork\";\n if (!/^[1-9]\\d*$/.test(d.supply) || Number(d.supply) > MAX_DROP_SUPPLY) e.supply = `Enter a supply from 1 to ${thousands}`;\n } else if (d.items.length === 0) {\n e.artwork = \"Add at least one item\";\n } else if (d.items.length > MAX_DROP_SUPPLY) {\n e.artwork = `A collection holds up to ${thousands} items`;\n }\n if (!d.name.trim()) e.name = \"Name your drop\";\n if (!/^[A-Z0-9]{1,10}$/.test(d.symbol)) e.symbol = \"Use 1–10 capital letters or digits\";\n if (d.listOnly) {\n const list = parseAllowlist(d.allowlist);\n if (list.invalid.length > 0) {\n const n = list.invalid.length;\n e.allowlist = `${n} line${n === 1 ? \" isn't a wallet address\" : \"s aren't wallet addresses\"}: ${list.invalid.slice(0, 3).join(\", \")}`;\n } else if (list.addresses.length === 0) {\n e.allowlist = \"Add at least one wallet address\";\n }\n }\n if (d.gated.enabled && !/^https:\\/\\//.test(d.gated.url)) e.gated = \"Add a link starting with https://\";\n return e;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAA+B;AAC/B,sBAAiE;AACjE,kBAA0E;AAkBnE,MAAM,cAAyB;AAAA,EACpC,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO,CAAC;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS;AAAA,IACP,QAAQ;AAAA,IAAO,aAAa;AAAA,IAAY,eAAe;AAAA,IAAO,aAAa;AAAA,IAC3E,aAAa;AAAA,IAAY,iBAAiB;AAAA,IAAa,UAAU;AAAA,IAAW,SAAS;AAAA,EACvF;AAAA,EACA,MAAM;AAAA,EACN,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO,EAAE,SAAS,OAAO,OAAO,IAAI,KAAK,IAAI,MAAM,GAAG;AACxD;AAIO,SAAS,YAAY,GAAsB;AAChD,SAAO,EAAE,SAAS,YAAY,OAAO,EAAE,MAAM,IAAI,EAAE,MAAM;AAC3D;AAEA,MAAM,YAAY,gCAAgB,eAAe,OAAO;AAEjD,SAAS,kBAAkB,GAAc,KAA8B;AAC5E,QAAM,IAAqB,EAAE,OAAG,0BAAa,EAAE,MAAM,GAAG,EAAE;AAC1D,MAAI,EAAE,SAAS,WAAW;AACxB,QAAI,CAAC,EAAE,QAAS,GAAE,UAAU;AAC5B,QAAI,CAAC,aAAa,KAAK,EAAE,MAAM,KAAK,OAAO,EAAE,MAAM,IAAI,gCAAiB,GAAE,SAAS,4BAA4B,SAAS;AAAA,EAC1H,WAAW,EAAE,MAAM,WAAW,GAAG;AAC/B,MAAE,UAAU;AAAA,EACd,WAAW,EAAE,MAAM,SAAS,iCAAiB;AAC3C,MAAE,UAAU,4BAA4B,SAAS;AAAA,EACnD;AACA,MAAI,CAAC,EAAE,KAAK,KAAK,EAAG,GAAE,OAAO;AAC7B,MAAI,CAAC,mBAAmB,KAAK,EAAE,MAAM,EAAG,GAAE,SAAS;AACnD,MAAI,EAAE,UAAU;AACd,UAAM,WAAO,iCAAe,EAAE,SAAS;AACvC,QAAI,KAAK,QAAQ,SAAS,GAAG;AAC3B,YAAM,IAAI,KAAK,QAAQ;AACvB,QAAE,YAAY,GAAG,CAAC,QAAQ,MAAM,IAAI,4BAA4B,2BAA2B,KAAK,KAAK,QAAQ,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,IACrI,WAAW,KAAK,UAAU,WAAW,GAAG;AACtC,QAAE,YAAY;AAAA,IAChB;AAAA,EACF;AACA,MAAI,EAAE,MAAM,WAAW,CAAC,cAAc,KAAK,EAAE,MAAM,GAAG,EAAG,GAAE,QAAQ;AACnE,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { DraftItem } from '../../components/drop-item-list.cjs';
|
|
2
|
+
import { DropKind, DropLicense } from './metadata.cjs';
|
|
3
|
+
import { SaleDraft, SaleErrors } from './sale.cjs';
|
|
4
|
+
import 'react/jsx-runtime';
|
|
5
|
+
import '@medialane/sdk';
|
|
6
|
+
|
|
7
|
+
interface DropDraft {
|
|
8
|
+
kind: DropKind;
|
|
9
|
+
edition: File | null;
|
|
10
|
+
supply: string;
|
|
11
|
+
items: DraftItem[];
|
|
12
|
+
cover: File | null;
|
|
13
|
+
name: string;
|
|
14
|
+
symbol: string;
|
|
15
|
+
description: string;
|
|
16
|
+
license: DropLicense;
|
|
17
|
+
sale: SaleDraft;
|
|
18
|
+
listOnly: boolean;
|
|
19
|
+
allowlist: string;
|
|
20
|
+
gated: {
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
title: string;
|
|
23
|
+
url: string;
|
|
24
|
+
type: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
declare const EMPTY_DRAFT: DropDraft;
|
|
28
|
+
type DropDraftErrors = SaleErrors & Partial<Record<"artwork" | "supply" | "name" | "symbol" | "allowlist" | "gated", string>>;
|
|
29
|
+
declare function draftSupply(d: DropDraft): number;
|
|
30
|
+
declare function validateDropDraft(d: DropDraft, now: number): DropDraftErrors;
|
|
31
|
+
|
|
32
|
+
export { type DropDraft, type DropDraftErrors, EMPTY_DRAFT, draftSupply, validateDropDraft };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { DraftItem } from '../../components/drop-item-list.js';
|
|
2
|
+
import { DropKind, DropLicense } from './metadata.js';
|
|
3
|
+
import { SaleDraft, SaleErrors } from './sale.js';
|
|
4
|
+
import 'react/jsx-runtime';
|
|
5
|
+
import '@medialane/sdk';
|
|
6
|
+
|
|
7
|
+
interface DropDraft {
|
|
8
|
+
kind: DropKind;
|
|
9
|
+
edition: File | null;
|
|
10
|
+
supply: string;
|
|
11
|
+
items: DraftItem[];
|
|
12
|
+
cover: File | null;
|
|
13
|
+
name: string;
|
|
14
|
+
symbol: string;
|
|
15
|
+
description: string;
|
|
16
|
+
license: DropLicense;
|
|
17
|
+
sale: SaleDraft;
|
|
18
|
+
listOnly: boolean;
|
|
19
|
+
allowlist: string;
|
|
20
|
+
gated: {
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
title: string;
|
|
23
|
+
url: string;
|
|
24
|
+
type: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
declare const EMPTY_DRAFT: DropDraft;
|
|
28
|
+
type DropDraftErrors = SaleErrors & Partial<Record<"artwork" | "supply" | "name" | "symbol" | "allowlist" | "gated", string>>;
|
|
29
|
+
declare function draftSupply(d: DropDraft): number;
|
|
30
|
+
declare function validateDropDraft(d: DropDraft, now: number): DropDraftErrors;
|
|
31
|
+
|
|
32
|
+
export { type DropDraft, type DropDraftErrors, EMPTY_DRAFT, draftSupply, validateDropDraft };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { parseAllowlist } from "./allowlist.js";
|
|
2
|
+
import { MAX_DROP_SUPPLY } from "./metadata.js";
|
|
3
|
+
import { EMPTY_SALE, validateSale } from "./sale.js";
|
|
4
|
+
const EMPTY_DRAFT = {
|
|
5
|
+
kind: "edition",
|
|
6
|
+
edition: null,
|
|
7
|
+
supply: "100",
|
|
8
|
+
items: [],
|
|
9
|
+
cover: null,
|
|
10
|
+
name: "",
|
|
11
|
+
symbol: "",
|
|
12
|
+
description: "",
|
|
13
|
+
license: {
|
|
14
|
+
ipType: "Art",
|
|
15
|
+
licenseType: "CC BY-SA",
|
|
16
|
+
commercialUse: "Yes",
|
|
17
|
+
derivatives: "Share-Alike",
|
|
18
|
+
attribution: "Required",
|
|
19
|
+
geographicScope: "Worldwide",
|
|
20
|
+
aiPolicy: "Allowed",
|
|
21
|
+
royalty: "0"
|
|
22
|
+
},
|
|
23
|
+
sale: EMPTY_SALE,
|
|
24
|
+
listOnly: false,
|
|
25
|
+
allowlist: "",
|
|
26
|
+
gated: { enabled: false, title: "", url: "", type: "" }
|
|
27
|
+
};
|
|
28
|
+
function draftSupply(d) {
|
|
29
|
+
return d.kind === "edition" ? Number(d.supply) : d.items.length;
|
|
30
|
+
}
|
|
31
|
+
const thousands = MAX_DROP_SUPPLY.toLocaleString("en-US");
|
|
32
|
+
function validateDropDraft(d, now) {
|
|
33
|
+
const e = { ...validateSale(d.sale, now) };
|
|
34
|
+
if (d.kind === "edition") {
|
|
35
|
+
if (!d.edition) e.artwork = "Add the artwork";
|
|
36
|
+
if (!/^[1-9]\d*$/.test(d.supply) || Number(d.supply) > MAX_DROP_SUPPLY) e.supply = `Enter a supply from 1 to ${thousands}`;
|
|
37
|
+
} else if (d.items.length === 0) {
|
|
38
|
+
e.artwork = "Add at least one item";
|
|
39
|
+
} else if (d.items.length > MAX_DROP_SUPPLY) {
|
|
40
|
+
e.artwork = `A collection holds up to ${thousands} items`;
|
|
41
|
+
}
|
|
42
|
+
if (!d.name.trim()) e.name = "Name your drop";
|
|
43
|
+
if (!/^[A-Z0-9]{1,10}$/.test(d.symbol)) e.symbol = "Use 1\u201310 capital letters or digits";
|
|
44
|
+
if (d.listOnly) {
|
|
45
|
+
const list = parseAllowlist(d.allowlist);
|
|
46
|
+
if (list.invalid.length > 0) {
|
|
47
|
+
const n = list.invalid.length;
|
|
48
|
+
e.allowlist = `${n} line${n === 1 ? " isn't a wallet address" : "s aren't wallet addresses"}: ${list.invalid.slice(0, 3).join(", ")}`;
|
|
49
|
+
} else if (list.addresses.length === 0) {
|
|
50
|
+
e.allowlist = "Add at least one wallet address";
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (d.gated.enabled && !/^https:\/\//.test(d.gated.url)) e.gated = "Add a link starting with https://";
|
|
54
|
+
return e;
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
EMPTY_DRAFT,
|
|
58
|
+
draftSupply,
|
|
59
|
+
validateDropDraft
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=draft.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/drop/draft.ts"],"sourcesContent":["import type { DraftItem } from \"../../components/drop-item-list.js\";\nimport { parseAllowlist } from \"./allowlist.js\";\nimport { MAX_DROP_SUPPLY, type DropKind, type DropLicense } from \"./metadata.js\";\nimport { EMPTY_SALE, validateSale, type SaleDraft, type SaleErrors } from \"./sale.js\";\n\nexport interface DropDraft {\n kind: DropKind;\n edition: File | null;\n supply: string;\n items: DraftItem[];\n cover: File | null;\n name: string;\n symbol: string;\n description: string;\n license: DropLicense;\n sale: SaleDraft;\n listOnly: boolean;\n allowlist: string;\n gated: { enabled: boolean; title: string; url: string; type: string };\n}\n\nexport const EMPTY_DRAFT: DropDraft = {\n kind: \"edition\",\n edition: null,\n supply: \"100\",\n items: [],\n cover: null,\n name: \"\",\n symbol: \"\",\n description: \"\",\n license: {\n ipType: \"Art\", licenseType: \"CC BY-SA\", commercialUse: \"Yes\", derivatives: \"Share-Alike\",\n attribution: \"Required\", geographicScope: \"Worldwide\", aiPolicy: \"Allowed\", royalty: \"0\",\n },\n sale: EMPTY_SALE,\n listOnly: false,\n allowlist: \"\",\n gated: { enabled: false, title: \"\", url: \"\", type: \"\" },\n};\n\nexport type DropDraftErrors = SaleErrors & Partial<Record<\"artwork\" | \"supply\" | \"name\" | \"symbol\" | \"allowlist\" | \"gated\", string>>;\n\nexport function draftSupply(d: DropDraft): number {\n return d.kind === \"edition\" ? Number(d.supply) : d.items.length;\n}\n\nconst thousands = MAX_DROP_SUPPLY.toLocaleString(\"en-US\");\n\nexport function validateDropDraft(d: DropDraft, now: number): DropDraftErrors {\n const e: DropDraftErrors = { ...validateSale(d.sale, now) };\n if (d.kind === \"edition\") {\n if (!d.edition) e.artwork = \"Add the artwork\";\n if (!/^[1-9]\\d*$/.test(d.supply) || Number(d.supply) > MAX_DROP_SUPPLY) e.supply = `Enter a supply from 1 to ${thousands}`;\n } else if (d.items.length === 0) {\n e.artwork = \"Add at least one item\";\n } else if (d.items.length > MAX_DROP_SUPPLY) {\n e.artwork = `A collection holds up to ${thousands} items`;\n }\n if (!d.name.trim()) e.name = \"Name your drop\";\n if (!/^[A-Z0-9]{1,10}$/.test(d.symbol)) e.symbol = \"Use 1–10 capital letters or digits\";\n if (d.listOnly) {\n const list = parseAllowlist(d.allowlist);\n if (list.invalid.length > 0) {\n const n = list.invalid.length;\n e.allowlist = `${n} line${n === 1 ? \" isn't a wallet address\" : \"s aren't wallet addresses\"}: ${list.invalid.slice(0, 3).join(\", \")}`;\n } else if (list.addresses.length === 0) {\n e.allowlist = \"Add at least one wallet address\";\n }\n }\n if (d.gated.enabled && !/^https:\\/\\//.test(d.gated.url)) e.gated = \"Add a link starting with https://\";\n return e;\n}\n"],"mappings":"AACA,SAAS,sBAAsB;AAC/B,SAAS,uBAAwD;AACjE,SAAS,YAAY,oBAAqD;AAkBnE,MAAM,cAAyB;AAAA,EACpC,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO,CAAC;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,SAAS;AAAA,IACP,QAAQ;AAAA,IAAO,aAAa;AAAA,IAAY,eAAe;AAAA,IAAO,aAAa;AAAA,IAC3E,aAAa;AAAA,IAAY,iBAAiB;AAAA,IAAa,UAAU;AAAA,IAAW,SAAS;AAAA,EACvF;AAAA,EACA,MAAM;AAAA,EACN,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO,EAAE,SAAS,OAAO,OAAO,IAAI,KAAK,IAAI,MAAM,GAAG;AACxD;AAIO,SAAS,YAAY,GAAsB;AAChD,SAAO,EAAE,SAAS,YAAY,OAAO,EAAE,MAAM,IAAI,EAAE,MAAM;AAC3D;AAEA,MAAM,YAAY,gBAAgB,eAAe,OAAO;AAEjD,SAAS,kBAAkB,GAAc,KAA8B;AAC5E,QAAM,IAAqB,EAAE,GAAG,aAAa,EAAE,MAAM,GAAG,EAAE;AAC1D,MAAI,EAAE,SAAS,WAAW;AACxB,QAAI,CAAC,EAAE,QAAS,GAAE,UAAU;AAC5B,QAAI,CAAC,aAAa,KAAK,EAAE,MAAM,KAAK,OAAO,EAAE,MAAM,IAAI,gBAAiB,GAAE,SAAS,4BAA4B,SAAS;AAAA,EAC1H,WAAW,EAAE,MAAM,WAAW,GAAG;AAC/B,MAAE,UAAU;AAAA,EACd,WAAW,EAAE,MAAM,SAAS,iBAAiB;AAC3C,MAAE,UAAU,4BAA4B,SAAS;AAAA,EACnD;AACA,MAAI,CAAC,EAAE,KAAK,KAAK,EAAG,GAAE,OAAO;AAC7B,MAAI,CAAC,mBAAmB,KAAK,EAAE,MAAM,EAAG,GAAE,SAAS;AACnD,MAAI,EAAE,UAAU;AACd,UAAM,OAAO,eAAe,EAAE,SAAS;AACvC,QAAI,KAAK,QAAQ,SAAS,GAAG;AAC3B,YAAM,IAAI,KAAK,QAAQ;AACvB,QAAE,YAAY,GAAG,CAAC,QAAQ,MAAM,IAAI,4BAA4B,2BAA2B,KAAK,KAAK,QAAQ,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,IACrI,WAAW,KAAK,UAAU,WAAW,GAAG;AACtC,QAAE,YAAY;AAAA,IAChB;AAAA,EACF;AACA,MAAI,EAAE,MAAM,WAAW,CAAC,cAAc,KAAK,EAAE,MAAM,GAAG,EAAG,GAAE,QAAQ;AACnE,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var metadata_exports = {};
|
|
20
|
+
__export(metadata_exports, {
|
|
21
|
+
MAX_DROP_METADATA_BYTES: () => MAX_DROP_METADATA_BYTES,
|
|
22
|
+
MAX_DROP_SUPPLY: () => MAX_DROP_SUPPLY,
|
|
23
|
+
buildDropMetadataFiles: () => buildDropMetadataFiles,
|
|
24
|
+
metadataBytes: () => metadataBytes
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(metadata_exports);
|
|
27
|
+
var import_sdk = require("@medialane/sdk");
|
|
28
|
+
const MAX_DROP_SUPPLY = 2e3;
|
|
29
|
+
const MAX_DROP_METADATA_BYTES = 5 * 1024 * 1024;
|
|
30
|
+
function buildDropMetadataFiles(input) {
|
|
31
|
+
const edition = input.kind === "edition";
|
|
32
|
+
const count = edition ? input.supply : input.items.length;
|
|
33
|
+
const files = [];
|
|
34
|
+
for (let id = 1; id <= count; id++) {
|
|
35
|
+
const item = edition ? input.items[0] : input.items[id - 1];
|
|
36
|
+
files.push({
|
|
37
|
+
name: String(id),
|
|
38
|
+
content: (0, import_sdk.buildAssetMetadata)({
|
|
39
|
+
...input.license,
|
|
40
|
+
name: edition || !item.name ? `${input.name} #${id}` : item.name,
|
|
41
|
+
description: item.description || input.description,
|
|
42
|
+
imageUri: item.imageUri,
|
|
43
|
+
creator: input.creator,
|
|
44
|
+
edition: edition ? `${id}/${count}` : null,
|
|
45
|
+
registrationDate: input.registrationDate
|
|
46
|
+
})
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
files.push({
|
|
50
|
+
name: "collection.json",
|
|
51
|
+
content: {
|
|
52
|
+
name: input.name,
|
|
53
|
+
description: input.description,
|
|
54
|
+
image: input.coverUri ?? input.items[0]?.imageUri ?? null,
|
|
55
|
+
drop_kind: input.kind
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return files;
|
|
59
|
+
}
|
|
60
|
+
function metadataBytes(files) {
|
|
61
|
+
return files.reduce((n, f) => n + JSON.stringify(f.content).length, 0);
|
|
62
|
+
}
|
|
63
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
64
|
+
0 && (module.exports = {
|
|
65
|
+
MAX_DROP_METADATA_BYTES,
|
|
66
|
+
MAX_DROP_SUPPLY,
|
|
67
|
+
buildDropMetadataFiles,
|
|
68
|
+
metadataBytes
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=metadata.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/drop/metadata.ts"],"sourcesContent":["import { buildAssetMetadata, type BuildAssetMetadataInput } from \"@medialane/sdk\";\n\n/** The metadata folder upload holds 2,001 files (tokens + collection.json). */\nexport const MAX_DROP_SUPPLY = 2000;\nexport const MAX_DROP_METADATA_BYTES = 5 * 1024 * 1024;\n\nexport type DropKind = \"edition\" | \"collection\";\n\nexport type DropLicense = Record<\n keyof Pick<BuildAssetMetadataInput, \"ipType\" | \"licenseType\" | \"commercialUse\" | \"derivatives\" | \"attribution\" | \"geographicScope\" | \"aiPolicy\" | \"royalty\">,\n string\n>;\n\nexport interface DropMetadataInput {\n kind: DropKind;\n name: string;\n description: string;\n creator: string;\n coverUri: string | null;\n license: DropLicense;\n registrationDate: string;\n /** Edition: the one artwork. Collection: one per token. */\n items: { name: string; description: string; imageUri: string }[];\n /** Edition copies; ignored for a collection. */\n supply: number;\n}\n\nexport interface DropMetadataFile {\n name: string;\n content: unknown;\n}\n\n/** Token files 1…N (token URI = base URI + id) and collection.json. */\nexport function buildDropMetadataFiles(input: DropMetadataInput): DropMetadataFile[] {\n const edition = input.kind === \"edition\";\n const count = edition ? input.supply : input.items.length;\n const files: DropMetadataFile[] = [];\n for (let id = 1; id <= count; id++) {\n const item = edition ? input.items[0]! : input.items[id - 1]!;\n files.push({\n name: String(id),\n content: buildAssetMetadata({\n ...input.license,\n name: edition || !item.name ? `${input.name} #${id}` : item.name,\n description: item.description || input.description,\n imageUri: item.imageUri,\n creator: input.creator,\n edition: edition ? `${id}/${count}` : null,\n registrationDate: input.registrationDate,\n }),\n });\n }\n files.push({\n name: \"collection.json\",\n content: {\n name: input.name,\n description: input.description,\n image: input.coverUri ?? input.items[0]?.imageUri ?? null,\n drop_kind: input.kind,\n },\n });\n return files;\n}\n\n/** Size as the upload route counts it. */\nexport function metadataBytes(files: DropMetadataFile[]): number {\n return files.reduce((n, f) => n + JSON.stringify(f.content).length, 0);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAiE;AAG1D,MAAM,kBAAkB;AACxB,MAAM,0BAA0B,IAAI,OAAO;AA6B3C,SAAS,uBAAuB,OAA8C;AACnF,QAAM,UAAU,MAAM,SAAS;AAC/B,QAAM,QAAQ,UAAU,MAAM,SAAS,MAAM,MAAM;AACnD,QAAM,QAA4B,CAAC;AACnC,WAAS,KAAK,GAAG,MAAM,OAAO,MAAM;AAClC,UAAM,OAAO,UAAU,MAAM,MAAM,CAAC,IAAK,MAAM,MAAM,KAAK,CAAC;AAC3D,UAAM,KAAK;AAAA,MACT,MAAM,OAAO,EAAE;AAAA,MACf,aAAS,+BAAmB;AAAA,QAC1B,GAAG,MAAM;AAAA,QACT,MAAM,WAAW,CAAC,KAAK,OAAO,GAAG,MAAM,IAAI,KAAK,EAAE,KAAK,KAAK;AAAA,QAC5D,aAAa,KAAK,eAAe,MAAM;AAAA,QACvC,UAAU,KAAK;AAAA,QACf,SAAS,MAAM;AAAA,QACf,SAAS,UAAU,GAAG,EAAE,IAAI,KAAK,KAAK;AAAA,QACtC,kBAAkB,MAAM;AAAA,MAC1B,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACA,QAAM,KAAK;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP,MAAM,MAAM;AAAA,MACZ,aAAa,MAAM;AAAA,MACnB,OAAO,MAAM,YAAY,MAAM,MAAM,CAAC,GAAG,YAAY;AAAA,MACrD,WAAW,MAAM;AAAA,IACnB;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAGO,SAAS,cAAc,OAAmC;AAC/D,SAAO,MAAM,OAAO,CAAC,GAAG,MAAM,IAAI,KAAK,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC;AACvE;","names":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { BuildAssetMetadataInput } from '@medialane/sdk';
|
|
2
|
+
|
|
3
|
+
/** The metadata folder upload holds 2,001 files (tokens + collection.json). */
|
|
4
|
+
declare const MAX_DROP_SUPPLY = 2000;
|
|
5
|
+
declare const MAX_DROP_METADATA_BYTES: number;
|
|
6
|
+
type DropKind = "edition" | "collection";
|
|
7
|
+
type DropLicense = Record<keyof Pick<BuildAssetMetadataInput, "ipType" | "licenseType" | "commercialUse" | "derivatives" | "attribution" | "geographicScope" | "aiPolicy" | "royalty">, string>;
|
|
8
|
+
interface DropMetadataInput {
|
|
9
|
+
kind: DropKind;
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
creator: string;
|
|
13
|
+
coverUri: string | null;
|
|
14
|
+
license: DropLicense;
|
|
15
|
+
registrationDate: string;
|
|
16
|
+
/** Edition: the one artwork. Collection: one per token. */
|
|
17
|
+
items: {
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
imageUri: string;
|
|
21
|
+
}[];
|
|
22
|
+
/** Edition copies; ignored for a collection. */
|
|
23
|
+
supply: number;
|
|
24
|
+
}
|
|
25
|
+
interface DropMetadataFile {
|
|
26
|
+
name: string;
|
|
27
|
+
content: unknown;
|
|
28
|
+
}
|
|
29
|
+
/** Token files 1…N (token URI = base URI + id) and collection.json. */
|
|
30
|
+
declare function buildDropMetadataFiles(input: DropMetadataInput): DropMetadataFile[];
|
|
31
|
+
/** Size as the upload route counts it. */
|
|
32
|
+
declare function metadataBytes(files: DropMetadataFile[]): number;
|
|
33
|
+
|
|
34
|
+
export { type DropKind, type DropLicense, type DropMetadataFile, type DropMetadataInput, MAX_DROP_METADATA_BYTES, MAX_DROP_SUPPLY, buildDropMetadataFiles, metadataBytes };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { BuildAssetMetadataInput } from '@medialane/sdk';
|
|
2
|
+
|
|
3
|
+
/** The metadata folder upload holds 2,001 files (tokens + collection.json). */
|
|
4
|
+
declare const MAX_DROP_SUPPLY = 2000;
|
|
5
|
+
declare const MAX_DROP_METADATA_BYTES: number;
|
|
6
|
+
type DropKind = "edition" | "collection";
|
|
7
|
+
type DropLicense = Record<keyof Pick<BuildAssetMetadataInput, "ipType" | "licenseType" | "commercialUse" | "derivatives" | "attribution" | "geographicScope" | "aiPolicy" | "royalty">, string>;
|
|
8
|
+
interface DropMetadataInput {
|
|
9
|
+
kind: DropKind;
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
creator: string;
|
|
13
|
+
coverUri: string | null;
|
|
14
|
+
license: DropLicense;
|
|
15
|
+
registrationDate: string;
|
|
16
|
+
/** Edition: the one artwork. Collection: one per token. */
|
|
17
|
+
items: {
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
imageUri: string;
|
|
21
|
+
}[];
|
|
22
|
+
/** Edition copies; ignored for a collection. */
|
|
23
|
+
supply: number;
|
|
24
|
+
}
|
|
25
|
+
interface DropMetadataFile {
|
|
26
|
+
name: string;
|
|
27
|
+
content: unknown;
|
|
28
|
+
}
|
|
29
|
+
/** Token files 1…N (token URI = base URI + id) and collection.json. */
|
|
30
|
+
declare function buildDropMetadataFiles(input: DropMetadataInput): DropMetadataFile[];
|
|
31
|
+
/** Size as the upload route counts it. */
|
|
32
|
+
declare function metadataBytes(files: DropMetadataFile[]): number;
|
|
33
|
+
|
|
34
|
+
export { type DropKind, type DropLicense, type DropMetadataFile, type DropMetadataInput, MAX_DROP_METADATA_BYTES, MAX_DROP_SUPPLY, buildDropMetadataFiles, metadataBytes };
|