{"version":3,"file":"static/chunks/pages/index-94d13f6303131e7f.js","mappings":"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","sources":["webpack://_N_E/","webpack://_N_E/./components/box.js","webpack://_N_E/./components/hashlink.js","webpack://_N_E/./components/inline-code.js","webpack://_N_E/./lib/faqContent.js","webpack://_N_E/./pages/faq.js","webpack://_N_E/./components/hero.js","webpack://_N_E/./components/step.js","webpack://_N_E/./pages/index.js"],"sourcesContent":["\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/\",\n function () {\n return require(\"private-next-pages/index.js\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/\"])\n });\n }\n ","import clsx from 'clsx'\n\n/**\n * @typedef {Object} BoxProps\n * @prop {string} [bgColor]\n * @prop {string} [borderColor]\n * @prop {string} [wrapperClassName]\n * @prop {string} [className]\n * @prop {any} children\n */\n\n/**\n *\n * @param {BoxProps} props\n * @returns\n */\nexport default function Box({\n bgColor = 'white',\n borderColor = 'nsgray',\n wrapperClassName,\n className,\n children,\n}) {\n return (\n \n \n {children}\n \n \n )\n}\n","/**\n * HashLink Component\n *\n * @param {Object} props\n * @param {string} props.id\n * @param {any} props.children\n */\nexport default function HashLink({ id, children }) {\n return (\n \n \n #\n \n {children}\n \n )\n}\n","import clsx from 'clsx'\n\n/**\n * Code Text Component\n *\n * @param {Object} props\n * @param {string} [props.color]\n * @param {string} [props.bgColor]\n * @param {string} [props.className]\n * @param {string | JSX.Element | JSX.Element[]} [props.children]\n */\nconst InlineCode = ({\n color = 'black',\n bgColor = 'nsgray',\n className,\n children,\n}) => (\n \n {children}\n \n)\n\nexport default InlineCode\n","import InlineCode from '../components/inline-code'\nimport Link from 'next/link'\n\nconst faqContent = {\n longTermVision: (\n

\n NFT.Storage helps NFT developers today who are looking for easy APIs and\n best practices for storing their NFT data securely and resiliently. Even\n in the short-term, it is a trustless and decentralized solution. Users are\n able to cryptographically verify that the{' '}\n \n content identifiers\n {' '}\n that the service provides corresponds to their data, and that this data is\n hosted in multiple ways across the IPFS and Filecoin networks (allowing\n for accessibility across the network and preventing lock-in, with users\n also able to pin their data elsewhere to increase redundance).\n
\n
\n Though we believe that there will always be value in some form of the\n libraries and services NFT.Storage provides, in the long-term the goal is\n to increasingly decentralize NFT.Storage. This includes relying more\n directly on the Filecoin network as the protocol continues to evolve. Some\n examples include storing data directly on the Filecoin network without\n putting it on a centralized IPFS node first and building oracles + DAOs +\n bridges to ensure n copies of data on the network (as Filecoin continues\n to evolve). We also want to make it easy for users to deploy and run their\n own NFT.Storage storage service. This, and other exciting things on the\n horizon, will help upgrade {\"today's\"} NFT.Storage implementation into the\n provably permanent storage solutions of tomorrow.\n

\n ),\n dataStorageLength: (\n

\n Data will be available in IPFS indefinitely as well as stored in\n long-term, redundant Filecoin storage deals with the global community of\n miners. See the{' '}\n \n Terms of Service\n {' '}\n for details.\n

\n ),\n nftSizeRestrictions: (\n

\n NFT.Storage can store NFTs up to 31GiB \n in size!\n

\n ),\n nftBestPractices: (\n

\n Visit{' '}\n \n NFT School\n {' '}\n for information on NFT best practices as well as a variety of helpful\n tutorials and how-to guides for NFT developers.\n

\n ),\n whoHasAccess: (\n

\n All data uploaded to NFT.Storage is available to anyone who requests it\n using the correct CID. Do not store any private or sensitive information\n in an unencrypted form using NFT.Storage.\n

\n ),\n dataDeletion: (\n

\n You can delete data from being associated with your account, and it will\n no longer appear on the Files page of your account. However, this doesn’t\n prevent nodes in the IPFS decentralized storage network from retaining\n copies of the data indefinitely. Do not use NFT.Storage for data that may\n need to be permanently deleted in the future.\n

\n ),\n httpGatewayError: (\n

\n Not necessarily! HTTP gateways are a great way for users who {\"aren't\"}{' '}\n running their own IPFS nodes to retrieve content from the IPFS network.\n However, they do introduce a centralized point of failure to a user flow.\n If a given gateway is down, or is under too much load, or is facing other\n issues, users who are accessing content through that gateway might be\n unable to access content. In this case, we recommend trying another\n gateway or running and using your own IPFS node.\n
\n
\n Additionally, if the data was not stored on NFT.Storage, then there might\n be issues with the IPFS node(s) with a copy of the data providing that\n data to the gateway. Using NFT.Storage makes sure that the content stored\n is broadcasted to the network using best practices!\n

\n ),\n howIsNftStorageFree: (\n

\n Filecoin storage providers commit their hard drive capacity to the\n Filecoin network, and earn significant block rewards for doing so. This\n translates into real-world profits for storage providers, which\n incentivizes them to continue committing additional hard disk space to the\n Filecoin network. However, when storage providers are storing data from\n Filecoin users, their likelihood of winning block rewards goes up by a big\n factor 一 10x! Because NFT.Storage participates in\n the \n \n Filecoin Plus\n {' '}\n program, all data uploaded through the service is eligible for this 10x\n reward multiplier. This is such a powerful incentive for Filecoin storage\n providers to store user data that they tend to be willing to offer free\n storage and retrieval services in order to get this block reward multiple.\n As a result, most storage providers offer free storage and retrieval on\n Filecoin today and will continue to do so as long as block rewards\n continue to be a powerful incentive. This should be true for a very long\n time 一 for example, it is still the case that block rewards are powerful\n incentives for Bitcoin miners today. While there is some additional\n infrastructure cost associated with running the NFT.Storage service, \n \n Protocol Labs\n {' '}\n is committed to maintaining this infrastructure indefinitely as part of\n our mission to grow the decentralized storage ecosystem and preserve\n humanity's information for future generations.\n

\n ),\n filesLimit: (\n

\n There are no limits enforced by the service, other than the 31GiB upload,\n limit. However, if your directory is large or has a lot of files, you\n might have some difficulty uploading it due to memory issues (especially\n if you are uploading to the website via your browser or the directory size\n is larger than your device's memory) or connection issues. If this is\n the case for you, we recommend splitting up your directory into smaller\n directories.\n

\n ),\n unexpectedToken: (\n

\n Try updating to Node version 14 or later. We no longer\n offer support for versions prior to v14 (\n \n see here\n \n ). This error can occur when attempting to use{' '}\n \n Optional Chaining\n {' '}\n with an old version of Node.\n

\n ),\n importStatementOutsideModule: (\n

\n Try updating to Node version 14 or later. This error can\n occur because of having an old version of Node. We no longer offer support\n for Node versions prior to v14 (\n \n see here\n \n ). With Node v14 or greater, you should be able to use{' '}\n import if you are using ESM Modules, otherwise\n you will need to use require.\n

\n ),\n nodeSupport: (\n

\n We do not support versions of Node prior to v14 because they are not\n considered active{' '}\n \n releases\n {' '}\n and that would mean loss of important, newer features such as{' '}\n \n Optional Chaining\n \n .\n

\n ),\n httpUrls: (\n

\n We generally try to steer people away from linking to specific HTTP\n gateways, since they can be a single point of failure and may go down or\n disappear some point. If your heart is set on using HTTP URLs, I'd say\n your best bet is to create the metadata json manually and store it using{' '}\n storeBlob. There's an example app called{' '}\n \n minty\n {' '}\n that creates metadata like this, which might help demonstrate. Minty\n stores IPFS URIs in the metadata, but it could easily be modified to store\n gateway URLs instead.\n

\n ),\n webpack4: (\n

\n We are working on a long-term solution but for now, you can import the\n prebuilt bundle directly in the browser from{' '}\n \n https://cdn.jsdelivr.net/npm/nft.storage@v5.1.3/dist/bundle.esm.min.js\n \n
\n You may also see this error in relation to the issue:\n
\n \n Uncaught SyntaxError: The requested module\n "/-/ipfs-core-utils@v0.10.5-qUdqS0pJ7xHVq6EQnGSz/dist=es2019,mode=imports/unoptimized/src/files/normalise-input/index.js"\n does not provide an export named "normaliseInput"\n \n

\n ),\n}\n\nexport default faqContent\n","import Link from 'next/link'\nimport HashLink from '../components/hashlink.js'\nimport InlineCode from '../components/inline-code.js'\nimport faqContent from '../lib/faqContent'\n\n/**\n * @param {string} title\n * @returns {string}\n */\nconst hashify = (title) =>\n title\n .substring(0, title.length - 1)\n .toLowerCase()\n .replace(/\\s|\\./g, '-')\n\n/**\n * Static Props\n *\n * @returns {{ props: import('../components/types.js').LayoutProps}}\n */\nexport const getStaticProps = () => ({\n props: {\n title: 'FAQ - NFT Storage',\n description: 'NFT.Storage FAQ',\n navBgColor: 'bg-nsforest',\n needsUser: false,\n },\n})\n\nconst faqs = [\n {\n question: 'What is the long-term vision for NFT.Storage?',\n content: faqContent.longTermVision,\n },\n {\n question: 'How long will data be stored on NFT.Storage?',\n content: faqContent.dataStorageLength,\n },\n {\n question: 'Are there any size restrictions for stored NFTs?',\n content: faqContent.nftSizeRestrictions,\n },\n {\n question: 'Where can I learn more about NFT best practices?',\n content: faqContent.nftBestPractices,\n },\n {\n question: 'Who can access the data I store on NFT.Storage?',\n content: faqContent.whoHasAccess,\n },\n {\n question: 'Can I delete my data on NFT.Storage?',\n content: faqContent.dataDeletion,\n },\n {\n question:\n 'I tried using an HTTP gateway to retrieve my content from IPFS but am receiving an HTTP error. Does this mean my content was not stored successfully on NFT.Storage?',\n content: faqContent.httpGatewayError,\n },\n {\n question: 'How is NFT.Storage free to use?',\n content: faqContent.howIsNftStorageFree,\n },\n {\n question: 'Is there a limit on numbers of files in a directory?',\n content: faqContent.filesLimit,\n },\n {\n question: 'Why am I seeing syntax error unexpected token?',\n error: `SyntaxError: Unexpected token '.'`,\n content: faqContent.unexpectedToken,\n },\n {\n question:\n 'Why am I seeing syntax error cannot use import statement outside a module?',\n error: 'SyntaxError: Cannot use import statement outside a module',\n content: faqContent.importStatementOutsideModule,\n },\n {\n question: `Why don't you support versions of Node prior to v14?`,\n content: faqContent.nodeSupport,\n },\n {\n question: 'How can I upload metadata with an existing HTTP image url?',\n content: faqContent.httpUrls,\n },\n {\n question: 'Skypack issues or Webpack 4 not bundling?',\n content: faqContent.webpack4,\n },\n]\n\nconst TOC = () => (\n
\n

Table Of Contents

\n {faqs.map((faq, index) => (\n \n \n {faq.error ? `Why am I seeing: ${faq.error}` : faq.question}\n \n \n ))}\n
\n)\n\n/**\n * @param {Object} props\n * @param {number} [props.limit]\n */\nexport const FAQ = ({ limit = faqs.length }) => {\n const items = limit ? faqs.slice(0, limit) : faqs\n return (\n <>\n {items.slice(0, limit).map((faq, index) => (\n
\n

\n \n {faq.error ? (\n <>\n Why am I seeing: {faq.error}\n \n ) : (\n faq.question\n )}\n \n

\n
{faq.content}
\n
\n ))}\n \n )\n}\n\n/**\n * FAQ Page\n *\n */\nconst Faq = () => (\n
\n
\n

FAQ

\n
\n \n
\n \n
\n
\n)\n\nexport default Faq\n","import countly from '../lib/countly'\nimport Button from './button.js'\n\nconst crossStyle = {\n backgroundImage:\n \"url(\\\"data:image/svg+xml;utf8,\\\")\",\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center center',\n backgroundSize: '100% 100%',\n}\n\nexport default function Hero() {\n return (\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n

Free Storage for NFTs

\n

\n Free decentralized storage and bandwidth for NFTs on{' '}\n {' '}\n IPFS and{' '}\n {' '}\n Filecoin.\n

\n
\n
\n \n Get Started\n \n
\n
\n
\n \n )\n}\n\nconst greenBoxStyle = {\n paddingTop: 'min(3.6vw, 32px)',\n paddingBottom: 'min(3.6vw, 32px)',\n paddingRight: 'min(3.88vw, 54px)',\n paddingLeft: 'min(3.88vw, 54px)',\n}\n\n/**\n * Green Box\n *\n * @param {Object} props\n * @param {string} [props.className]\n * @param {any} [props.style]\n * @param {any} props.children\n * @returns\n */\nfunction GreenBox({ className, style, children }) {\n style = style ? { ...greenBoxStyle, ...style } : greenBoxStyle\n className = className ?? 'ba b--black'\n return (\n
\n {children}\n
\n )\n}\n","/**\n * Step Component\n *\n * @param {Object} props\n * @param {string} [props.wrapperClassName]\n * @param {string} [props.className]\n * @param {string} props.children\n */\nexport default function Step({ wrapperClassName, className, children }) {\n wrapperClassName = `dib bg-white ba b--black ${wrapperClassName ?? ''}`.trim()\n className = `dib relative w-100 pv1 ph3 chicagoflf f3 white bg-black ${\n className ?? ''\n }`.trim()\n return (\n
\n
\n Step {children}\n
\n
\n )\n}\n","import { useCallback } from 'react'\nimport fs from 'fs'\nimport countly from '../lib/countly.js'\nimport Hero from '../components/hero.js'\nimport HashLink from '../components/hashlink.js'\nimport Step from '../components/step.js'\nimport Box from '../components/box.js'\nimport Link from 'next/link'\nimport { FAQ } from './faq'\n\nexport async function getStaticProps() {\n const logos = fs.readdirSync('public/images/marketplace-logos')\n // make opensea be the first logo\n logos.sort((a, b) =>\n a.includes('opensea') ? -1 : b.includes('opensea') ? 1 : 0\n )\n\n return {\n props: {\n needsUser: true,\n logos,\n description: 'NFT.Storage homepage',\n },\n }\n}\n\n/**\n * Logo Component\n * @param {Object} props\n * @param {string} props.src\n */\nconst Logo = ({ src }) => (\n \n)\n\n/**\n * Logos Component\n * @param {Object} props\n * @param {string[]} props.logos\n *\n */\nconst Logos = ({ logos }) => {\n return (\n
\n

Trusted by

\n
\n {logos.map((logo) => (\n \n ))}\n
\n

and 10,000+ other users!

\n
\n )\n}\n\n/**\n * Home Component\n * @param {Object} props\n * @param {string[]} props.logos\n *\n */\nexport default function Home({ logos }) {\n return (\n <>\n \n
\n \n \n \n
\n
\n

\n FAQ\n

\n \n

\n More FAQs{' '}\n \n here\n \n

\n
\n
\n
\n \n )\n}\n\nfunction About() {\n const storeText = (\n <>\n

\n Store\n

\n

\n Just upload your data and you'll receive an IPFS hash of the content\n (a "CID," or content address) that you can use to make an IPFS\n URL (ipfs://<cid>). Use this IPFS URL in your NFT\n data to refer to off-chain data (e.g., the metadata\n field in your NFT, the image field in your metadata) as a pointer to the\n content.\n

\n

\n Filecoin provides long-term storage for the data ensuring that even if\n NFT.Storage is attacked or taken down the NFT data persists! And\n NFT.Storage will continue to decentralize itself out of the picture\n moving forward (e.g., making perpetual storage completely smart\n contract-based utilizing future tools like the{' '}\n \n Filecoin Virtual Machine\n \n ).\n

\n

\n Have additional preferences on where to store your data? Pin your data\n to any storage solution running a{' '}\n \n pinning service\n \n .\n

\n \n )\n const retrieveText = (\n <>\n

\n Retrieve\n

\n

\n NFT data stored by NFT.Storage can be accessed from the\n decentralized IPFS network from any peer that has the content.\n CIDs reference immutable content so you can be sure the\n content you access is the content referenced in the NFT.\n

\n

\n The data can be fetched directly in the browser using{' '}\n \n Brave\n \n , or via a{' '}\n \n public IPFS gateway\n \n , or by using{' '}\n \n IPFS Desktop\n {' '}\n or the{' '}\n \n IPFS command line\n \n .\n

\n

\n If fetching content using a public IPFS gateway (e.g., directly using an\n HTTP URL or via Brave), note that the availability and speed of\n retrieving the content depends on the gateway. In cases where the\n gateway is unable to retrieve a given CID (e.g., returns a 429 error),\n you can try a different gateway or running and using your own IPFS node\n instead.\n

\n \n )\n return (\n
\n
\n
\n

\n About\n

\n
\n
\n

\n NFT.Storage is a long-term storage service\n designed for off-chain NFT data (like metadata,\n images, and other assets) for up to 31GiB in size. Data is{' '}\n \n content addressed\n {' '}\n using IPFS, meaning the URL pointing to a piece of data\n (“ipfs://…”) is completely unique to that data. IPFS URLs can be\n used in NFTs and metadata to ensure the NFT forever actually\n refers to the intended data (eliminating things like rug pulls).\n

\n
\n
\n

\n NFT.Storage stores many copies of uploaded data on the public\n IPFS network in two primary ways: in dedicated IPFS servers\n managed by NFT.Storage, and decentralized on{' '}\n \n Filecoin\n \n . Since IPFS is a standard used by many different storage\n services, it's easy to redundantly store data uploaded to\n NFT.Storage on any other IPFS-compatible storage solution from{' '}\n \n pinning services\n \n , to your{' '}\n \n local IPFS node\n \n , to other decentralized networks like Arweave or Storj.\n

\n
\n
\n
\n
\n
\n {storeText}\n
\n \n
\n
\n
\n {retrieveText}\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
{storeText}
\n
\n \n
{retrieveText}
\n
\n
\n
\n \n
\n )\n}\n\nfunction GettingStarted() {\n const onClickHandler = useCallback(event => {\n countly.trackCustomLinkClick(\n countly.events.CTA_LINK_CLICK,\n event.currentTarget,\n {\n ui: countly.ui.HOME_GET_STARTED,\n }\n )\n }, [])\n\n const jsEx = `import { NFTStorage, File } from 'nft.storage'\nimport { pack } from 'ipfs-car/pack';\n\nconst apiKey = 'YOUR_API_KEY'\nconst client = new NFTStorage({ token: apiKey })\n\nconst metadata = await client.store({\n name: 'Pinpie',\n description: 'Pin is not delicious beef!',\n image: new File([/* data */], 'pinpie.jpg', { type: 'image/jpg' })\n})\nconsole.log(metadata.url)\n// ipfs://bafyreib4pff766vhpbxbhjbqqnsh5emeznvujayjj4z2iu533cprgbz23m/metadata.json`\n\n const curlEx = `curl -X POST --data-binary @art.jpg -H 'Authorization: Bearer YOUR_API_KEY' https://api.nft.storage/upload`\n\n const uploadResp = `{\n \"ok\": true,\n \"value\": { \"cid\": \"bafy...\" }\n}`\n\n return (\n
\n
\n

\n Getting started\n

\n
    \n
  1. \n 1\n

    \n \n \n Register an NFT.Storage account\n \n {' '}\n so that you can create API access keys.\n

    \n \n
  2. \n
  3. \n 2\n

    \n \n \n Create an API access key\n \n {' '}\n and note it down.\n

    \n \n
  4. \n
  5. \n 3\n

    \n Choose a method to get your NFT data stored:\n

    \n
  6. \n
\n \n \n

\n JS Client Library\n

\n

\n Install the{' '}\n \n JS library\n \n :\n

\n
\n              npm install nft.storage\n            
\n

Use the client in Node.js or the browser:

\n
\n              {jsEx}\n            
\n

\n View the{' '}\n \n full library reference docs\n \n .\n

\n

\n For additional example code, check out our{' '}\n \n GitHub repo\n {' '}\n and{' '}\n \n NFT School.\n \n

\n \n \n

\n Raw HTTP Request\n

\n

\n Configure your HTTP client and set the{' '}\n \n Authorization\n {' '}\n header:\n

\n
\n              "Authorization": "Bearer YOUR_API_KEY"\n            
\n

\n Submit a HTTP{' '}\n \n POST\n {' '}\n request to{' '}\n api.nft.storage/upload{' '}\n passing the file data in the request body. e.g.\n

\n
\n              {curlEx}\n            
\n

\n Successful requests will receive a HTTP{' '}\n \n 200\n {' '}\n status and{' '}\n \n application/json\n {' '}\n response like:\n

\n
\n              {uploadResp}\n            
\n

\n Check the{' '}\n \n API Docs\n {' '}\n for information on uploading multiple files and the other\n available endpoints.\n

\n

\n For additional example code, check out our{' '}\n \n GitHub repo\n \n .\n

\n \n {/* \n

\n \n Configure as a Remote Pinning Service\n \n

\n

\n You can use nft.storage as a{' '}\n \n remote pinning service\n {' '}\n in IPFS.\n

\n
\n              ipfs pin remote service add nft-storage https://api.nft.storage\n              YOUR_API_KEY\n            
\n

\n Use the{' '}\n \n --help\n {' '}\n option for information on other remote pinning service commands:\n

\n
\n              ipfs pin remote --help\n            
\n */}\n
\n \n
\n )\n}\n"],"names":["window","__NEXT_P","push","Box","bgColor","borderColor","wrapperClassName","className","children","div","clsx","style","top","right","HashLink","id","a","href","span","left","color","code","faqContent","longTermVision","p","target","rel","br","dataStorageLength","Link","nftSizeRestrictions","strong","nftBestPractices","whoHasAccess","dataDeletion","httpGatewayError","howIsNftStorageFree","filesLimit","unexpectedToken","importStatementOutsideModule","InlineCode","nodeSupport","httpUrls","webpack4","hashify","title","substring","length","toLowerCase","replace","faqs","question","content","error","TOC","h2","map","faq","index","FAQ","limit","items","slice","main","h1","crossStyle","backgroundImage","backgroundRepeat","backgroundPosition","backgroundSize","Hero","GreenBox","height","img","width","maxWidth","src","alt","hgroup","Button","tracking","ui","countly","action","greenBoxStyle","paddingTop","paddingBottom","paddingRight","paddingLeft","Step","trim","Logo","Logos","logos","logo","key","Home","About","GettingStarted","article","h3","storeText","retrieveText","em","srcSet","onClickHandler","useCallback","event","currentTarget","ol","li","onClick","pre"],"sourceRoot":""}