@abtnode/blocklet-services 1.7.3 → 1.7.4

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.
Files changed (36) hide show
  1. package/api/routes/blocklet.js +20 -17
  2. package/build/asset-manifest.json +28 -28
  3. package/build/index.html +1 -1
  4. package/build/{precache-manifest.fc03dfbbf370fcf983cbef3f121b7584.js → precache-manifest.9f9427ccab255103ceb10ccbfc7ac714.js} +26 -26
  5. package/build/service-worker.js +1 -1
  6. package/build/static/js/{0.b6b3b23c.chunk.js → 0.d2d5c244.chunk.js} +3 -3
  7. package/build/static/js/{0.b6b3b23c.chunk.js.LICENSE.txt → 0.d2d5c244.chunk.js.LICENSE.txt} +0 -0
  8. package/build/static/js/{0.b6b3b23c.chunk.js.map → 0.d2d5c244.chunk.js.map} +1 -1
  9. package/build/static/js/{1.0e83f63d.chunk.js → 1.00c92298.chunk.js} +2 -2
  10. package/build/static/js/{1.0e83f63d.chunk.js.map → 1.00c92298.chunk.js.map} +1 -1
  11. package/build/static/js/{10.4199ec3c.chunk.js → 10.62cc57a6.chunk.js} +2 -2
  12. package/build/static/js/{10.4199ec3c.chunk.js.map → 10.62cc57a6.chunk.js.map} +1 -1
  13. package/build/static/js/{4.0046a465.chunk.js → 4.5e59809a.chunk.js} +3 -3
  14. package/build/static/js/{4.0046a465.chunk.js.LICENSE.txt → 4.5e59809a.chunk.js.LICENSE.txt} +0 -0
  15. package/build/static/js/4.5e59809a.chunk.js.map +1 -0
  16. package/build/static/js/{5.4304d38f.chunk.js → 5.62dc4195.chunk.js} +2 -2
  17. package/build/static/js/{5.4304d38f.chunk.js.map → 5.62dc4195.chunk.js.map} +1 -1
  18. package/build/static/js/{6.08043dea.chunk.js → 6.81a6ce50.chunk.js} +2 -2
  19. package/build/static/js/{6.08043dea.chunk.js.map → 6.81a6ce50.chunk.js.map} +1 -1
  20. package/build/static/js/7.4df853f5.chunk.js +2 -0
  21. package/build/static/js/7.4df853f5.chunk.js.map +1 -0
  22. package/build/static/js/{8.49993466.chunk.js → 8.7b48d5db.chunk.js} +2 -2
  23. package/build/static/js/{8.49993466.chunk.js.map → 8.7b48d5db.chunk.js.map} +1 -1
  24. package/build/static/js/{9.69df4f05.chunk.js → 9.d137a88d.chunk.js} +2 -2
  25. package/build/static/js/{9.69df4f05.chunk.js.map → 9.d137a88d.chunk.js.map} +1 -1
  26. package/build/static/js/main.1f6ed0c6.chunk.js +2 -0
  27. package/build/static/js/main.1f6ed0c6.chunk.js.map +1 -0
  28. package/build/static/js/runtime-main.74a01699.js +2 -0
  29. package/build/static/js/{runtime-main.aa0aaf4a.js.map → runtime-main.74a01699.js.map} +1 -1
  30. package/package.json +14 -14
  31. package/build/static/js/4.0046a465.chunk.js.map +0 -1
  32. package/build/static/js/7.165c3091.chunk.js +0 -2
  33. package/build/static/js/7.165c3091.chunk.js.map +0 -1
  34. package/build/static/js/main.af31d0af.chunk.js +0 -2
  35. package/build/static/js/main.af31d0af.chunk.js.map +0 -1
  36. package/build/static/js/runtime-main.aa0aaf4a.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/@material-ui/icons/PlayArrow.js","pages/start.js","../../../node_modules/@material-ui/core/esm/Typography/index.js","../../../blocklet/meta/lib/util.js","../../../blocklet/meta/lib/constants.js","../../ux/lib/layout/addon.js"],"names":["_interopRequireDefault","require","_interopRequireWildcard","Object","defineProperty","exports","value","default","React","_default","createElement","d","AppIcon","appInfo","rest","useState","error","setError","size","useMediaQuery","theme","breakpoints","down","did","publisher","src","icon","alt","title","width","height","onError","Start","t","useLocaleContext","blocklet","setBlocklet","loading","setLoading","starting","setStarting","visitBlocklet","redirect","URL","window","location","href","searchParams","get","decodeURIComponent","useEffect","timer","checkStatus","api","then","data","status","clearInterval","catch","err","Toast","message","setInterval","WELLKNOWN_SERVICE_PATH_PREFIX","getDisplayName","appDid","Root","className","SessionContext","StyledPaper","elevation","AppInfo","name","mt","style","minWidth","disabled","variant","color","onClick","post","styled","div","props","Paper","palette","primary","main","common","white","grey","NODE_SERVICES","BlockletGroup","fromBlockletStatus","fromBlockletSource","BLOCKLET_INTERFACE_TYPE_WEB","forEachBlocklet","cb","parallel","sync","children","child","Promise","resolve","reject","tasks","push","all","forEachBlockletSync","findWebInterface","meta","interfaces","Array","isArray","find","x","type","findServiceFromMeta","ServiceName","names","AUTH","AUTH_SERVICE","webInterface","services","includes","module","isFreeBlocklet","payment","price","map","every","isComponentBlocklet","isDeletableBlocklet","config","environments","key","getRequiredMissingConfigs","missingConfigs","configs","forEach","item","required","description","some","y","wipeSensitiveData","secure","configObj","environmentObj","hasRunnableComponent","has","group","gateway","displayName","onlyUseMeta","target","e","fixBlockletStatus","source","undefined","isInvitedUserOnlyInMeta","service","invitedUserOnly","fromEntry","entries","v","match","Number","toEntry","keys","BlockletStatus","freeze","added","downloading","downloaded","installing","installed","running","stopping","stopped","upgrading","restarting","corrupted","waiting","toBlockletStatus","BlockletSource","registry","local","upload","url","custom","toBlockletSource","static","dapp","starter","BlockletEvents","downloadFailed","installFailed","upgraded","downgraded","deployed","updated","statusChange","removed","started","startFailed","reloaded","purchaseChange","BLOCKLET_INTERFACE_TYPES","BLOCKLET_UI_INTERFACES","BLOCKLET_STANDARD_INTERFACES","BLOCKLET_INTERFACE_PROTOCOLS","BLOCKLET_GROUPS","BLOCKLET_PLATFORMS","BLOCKLET_ARCHITECTURES","BLOCKLET_MODES","PRODUCTION","DEVELOPMENT","BLOCKLET_FACTORY_SHARES","developer","store","BLOCKLET_INTERFACE_PUBLIC","BLOCKLET_INTERFACE_WELLKNOWN","BLOCKLET_INTERFACE_TYPE_SERVICE","BLOCKLET_INTERFACE_TYPE_WELLKNOWN","BLOCKLET_INTERFACE_PROTOCOL_HTTP","BLOCKLET_INTERFACE_PROTOCOL_TCP","BLOCKLET_INTERFACE_PROTOCOL_UDP","BLOCKLET_DYNAMIC_PATH_PREFIX","BLOCKLET_DEFAULT_PORT_NAME","BLOCKLET_DEFAULT_PATH_REWRITE","BLOCKLET_RELEASE_FOLDER","BLOCKLET_RELEASE_FILE","BLOCKLET_BUNDLE_FOLDER","BLOCKLET_BUNDLE_FILE","BLOCKLET_ENTRY_FILE","BLOCKLET_META_FILE","BLOCKLET_META_FILE_ALT","BLOCKLET_META_FILE_OLD","BLOCKLET_DEFAULT_VERSION","BLOCKLET_LATEST_SPEC_VERSION","BLOCKLET_LATEST_REQUIREMENT_SERVER","BLOCKLET_LATEST_REQUIREMENT_ABTNODE","BLOCKLET_CONFIGURABLE_KEY","BLOCKLET_CLUSTER_SIZE","BLOCKLET_APP_NAME","BLOCKLET_APP_DESCRIPTION","BLOCKLET_APP_SK","BLOCKLET_APP_URL","BLOCKLET_PASSPORT_COLOR","BLOCKLET_WALLET_TYPE","BLOCKLET_DELETABLE","HeaderAddon","_react","obj","nodeInterop","__esModule","cache","_getRequireWildcardCache","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","prototype","hasOwnProperty","call","desc","set","_styledComponents","_propTypes","_IconButton","_HelpOutline","_reactRouterDom","_SessionManager","_selector","_context","_utils","WeakMap","cacheBabelInterop","cacheNodeInterop","_ref","webWalletUrl","extraItems","session","useContext","locale","LocaleContext","useLocation","walletUrl","getWebWalletUrl","docPaths","Div","showText","pathName","pathname","path","indexOf","open","concat","fontSize","showRole","propTypes","object","isRequired","string","array","defaultProps","withConfig","componentId"],"mappings":"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","file":"static/js/9.69df4f05.chunk.js","sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 5v14l11-7z\"\n}), 'PlayArrow');\n\nexports.default = _default;","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport Box from '@material-ui/core/Box';\nimport PlayArrowIcon from '@material-ui/icons/PlayArrow';\nimport Paper from '@material-ui/core/Paper';\n\nimport Button from '@arcblock/ux/lib/Button';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Toast from '@abtnode/ux/lib/toast';\nimport DidAvatar from '@arcblock/did-connect/lib/Avatar';\nimport DidAddress from '@arcblock/did-connect/lib/Address';\nimport Img from '@arcblock/ux/lib/Img';\nimport Center from '@arcblock/ux/lib/Center';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nimport { getDisplayName } from '@blocklet/meta/lib/util';\nimport { WELLKNOWN_SERVICE_PATH_PREFIX } from '@abtnode/constant';\nimport HeaderAddon from '@abtnode/ux/lib/layout/addon';\n\nimport api from '../libs/api';\nimport { SessionContext } from '../contexts/session';\n\nconst AppIcon = ({ appInfo, ...rest }) => {\n const [error, setError] = React.useState(false);\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down('sm'));\n const size = isMobile ? 32 : 48;\n\n if (error) {\n return <DidAvatar did={appInfo.publisher} size={size} />;\n }\n return (\n <Img src={appInfo.icon} alt={appInfo.title} width={size} height={size} {...rest} onError={() => setError(true)} />\n );\n};\n\nAppIcon.propTypes = {\n appInfo: PropTypes.object.isRequired,\n};\n\nexport default function Start() {\n const { t } = useLocaleContext();\n const [blocklet, setBlocklet] = useState(null);\n const [loading, setLoading] = useState(false);\n const [starting, setStarting] = useState(false);\n\n const visitBlocklet = () => {\n const url = new URL(window.location.href);\n const redirect = url.searchParams.get('redirect') || '/';\n window.location = decodeURIComponent(redirect);\n };\n\n useEffect(() => {\n let timer = null;\n\n const checkStatus = () => {\n api\n .get('/blocklet/detail')\n .then(({ data }) => {\n if (data.status === 'running') {\n visitBlocklet();\n return;\n }\n\n if (data.status !== 'starting') {\n setStarting(false);\n setBlocklet(data);\n clearInterval(timer);\n }\n })\n .catch((err) => {\n setLoading(false);\n Toast.error(err.message);\n });\n };\n\n setLoading(true);\n api\n .get('/blocklet/detail')\n .then(({ data }) => {\n setLoading(false);\n if (data.status === 'running') {\n visitBlocklet();\n return;\n }\n\n setBlocklet(data);\n\n if (data.status === 'starting') {\n setStarting(true);\n timer = setInterval(checkStatus, 3000);\n }\n })\n .catch((err) => {\n setLoading(false);\n Toast.error(err.message);\n });\n }, []);\n\n const startBlocklet = () => {\n setLoading(true);\n setStarting(true);\n api\n .post('/blocklet/start')\n .then(() => {\n visitBlocklet();\n })\n .catch((err) => {\n Toast.error(err.message);\n setLoading(false);\n setStarting(false);\n });\n };\n\n if (!blocklet) {\n return (\n <Center>\n <Spinner />\n </Center>\n );\n }\n\n const appInfo = {\n icon: `${WELLKNOWN_SERVICE_PATH_PREFIX}/blocklet/logo`,\n title: getDisplayName(blocklet),\n publisher: blocklet.appDid,\n };\n\n return (\n <Root>\n <header className=\"root-header\">\n <div className=\"right\">\n <HeaderAddon SessionContext={SessionContext} />\n </div>\n </header>\n\n <StyledPaper elevation={0}>\n <AppInfo>\n <AppIcon appInfo={appInfo} />\n <div className=\"app-info_content\">\n <Box className=\"app-info_name\">{appInfo.title}</Box>\n <DidAddress size={14} className=\"app-info_did\">\n {appInfo.publisher}\n </DidAddress>\n </div>\n </AppInfo>\n\n <Box className=\"title-box\">\n <Box className=\"icon\">\n <PlayArrowIcon />\n </Box>\n <Box className=\"title\">{t('blocklet.startApplication')}</Box>\n </Box>\n <Box className=\"sub-title\">{t('blocklet.startDescription', { name: getDisplayName(blocklet) })}</Box>\n\n <Box mt={8}>\n <Button\n style={{ minWidth: 200 }}\n disabled={loading || starting}\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n loading={starting}\n onClick={() => startBlocklet()}>\n {starting ? t('blocklet.starting') : t('blocklet.start')}\n </Button>\n </Box>\n </StyledPaper>\n </Root>\n );\n}\n\nconst Root = styled.div`\n width: 100vw;\n height: 100vh;\n background: #e7ebea;\n display: flex;\n justify-content: center;\n align-items: center;\n\n .root-header {\n position: fixed;\n z-index: 200;\n top: 0;\n left: 50%;\n display: flex;\n width: 50%;\n height: 56px;\n align-items: center;\n justify-content: flex-end;\n padding: 24px;\n\n ${(props) => props.theme.breakpoints.down('sm')} {\n padding: 14px 16px;\n }\n\n .right {\n display: flex;\n align-items: center;\n ${(props) => props.theme.breakpoints.down('sm')} {\n button,\n a {\n padding-left: 8px;\n padding-right: 8px;\n }\n }\n }\n }\n`;\n\nconst StyledPaper = styled(Paper)`\n width: 80vw;\n max-width: 1245px;\n height: 80vh;\n box-sizing: border-box;\n padding: 32px;\n &.MuiPaper-rounded {\n border-radius: 8px;\n }\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n\n ${(props) => props.theme.breakpoints.down('sm')} {\n width: 100vw;\n height: 100vh;\n left: 0;\n top: 0;\n padding: 32px 0;\n }\n\n .MuiIconButton-root {\n svg {\n fill: #888;\n }\n &.Mui-disabled {\n opacity: 0.4;\n }\n }\n\n .title-box {\n display: flex;\n align-items: center;\n ${(props) => props.theme.breakpoints.down('sm')} {\n margin-top: 60px;\n }\n }\n\n .icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: ${(props) => props.theme.palette.primary.main};\n color: ${(props) => props.theme.palette.common.white};\n }\n\n .title {\n margin-left: 12px;\n color: ${(props) => props.theme.palette.primary.main};\n font-size: 24px;\n font-weight: bolder;\n }\n\n .sub-title {\n margin-top: 24px;\n color: ${(props) => props.theme.palette.grey[700]};\n font-size: 16px;\n }\n`;\n\nconst AppInfo = styled.div`\n display: flex;\n align-items: center;\n position: absolute;\n left: 24px;\n right: 24px;\n top: 24px;\n font-size: 16px;\n font-weight: 500;\n color: #222;\n\n /* 禁止 app icon shrink */\n > *:first-child {\n flex: 0 0 auto;\n }\n\n .app-info_content {\n padding-left: 16px;\n overflow: hidden;\n }\n\n .app-info_name {\n max-width: 100%;\n padding-right: 32px;\n line-height: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: bold;\n }\n\n .app-info_did {\n transform: translate(0, 2px);\n }\n\n .app-info_did .did-address__text {\n color: #666;\n font-size: 14px;\n }\n\n ${(props) => props.theme.breakpoints.down('sm')} {\n top: 12px;\n .app-info_did {\n transform: translate(0, 0);\n }\n .app-info_did .did-address__text {\n font-size: 12px;\n }\n }\n`;\n","export { default } from './Typography';","/* eslint-disable no-await-in-loop */\nconst get = require('lodash/get');\n\nconst { NODE_SERVICES } = require('@abtnode/constant');\n\nconst { BlockletGroup, fromBlockletStatus, fromBlockletSource, BLOCKLET_INTERFACE_TYPE_WEB } = require('./constants');\n\nconst forEachBlocklet = (blocklet, cb, { parallel = false, sync } = {}) => {\n // sync\n if (sync) {\n cb(blocklet);\n if (blocklet.children) {\n for (const child of blocklet.children) {\n cb(child);\n }\n }\n return null;\n }\n\n // serial\n if (!parallel) {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n try {\n await cb(blocklet);\n if (blocklet.children) {\n for (const child of blocklet.children) {\n await cb(child);\n }\n }\n\n resolve(null);\n } catch (err) {\n reject(err);\n }\n });\n }\n\n // parallel\n const tasks = [];\n tasks.push(cb(blocklet));\n if (blocklet.children) {\n for (const child of blocklet.children) {\n tasks.push(cb(child));\n }\n }\n return Promise.all(tasks);\n};\n\nconst forEachBlockletSync = (blocklet, cb) => forEachBlocklet(blocklet, cb, { sync: true });\n\nconst getRequiredMissingConfigs = (blocklet) => {\n const missingConfigs = [];\n const configs = blocklet.configs || [];\n configs.forEach((item) => {\n if (item.required && !item.value) {\n missingConfigs.push({ did: blocklet.meta.did, key: item.key, description: item.description });\n }\n });\n\n // eslint-disable-next-line no-restricted-syntax\n for (const child of blocklet.children || []) {\n const childConfigs = child.configs || [];\n // configProp does not exist in root blocklet config\n // or value of configProp in root blocklet config is empty.\n childConfigs.forEach((x) => {\n if (x.required && !x.value && !configs.some((y) => y.key === x.key && y.value)) {\n missingConfigs.push({ did: child.meta.did, key: x.key, description: x.description });\n }\n });\n }\n\n return missingConfigs;\n};\n\nconst isFreeBlocklet = (meta) => {\n if (!meta.payment) {\n return true;\n }\n\n const priceList = (meta.payment.price || []).map((x) => x.value || 0);\n return priceList.every((x) => x === 0);\n};\n\nconst isComponentBlocklet = (meta) => {\n return get(meta, 'capabilities.component') !== false;\n};\n\nconst wipeSensitiveData = (blocklet) => {\n if (!blocklet) {\n return blocklet;\n }\n\n forEachBlocklet(\n blocklet,\n (d) => {\n (d.configs || []).forEach((x) => {\n if (x.secure) {\n x.value = x.value ? '__encrypted__' : '';\n }\n });\n (d.environments || []).forEach((x) => {\n if (['BLOCKLET_APP_SK'].includes(x.key)) {\n x.value = '__encrypted__';\n }\n });\n\n delete blocklet.configObj;\n delete blocklet.environmentObj;\n },\n { sync: true }\n );\n\n return blocklet;\n};\n\nconst isDeletableBlocklet = (blocklet) => {\n if (!blocklet) {\n return false;\n }\n\n const config = blocklet.environments.find((x) => x.key === 'BLOCKLET_DELETABLE');\n if (!config) {\n return true;\n }\n\n return config.value === 'yes';\n};\n\nconst hasRunnableComponent = (blocklet) => {\n let has = false;\n forEachBlockletSync(blocklet, (x) => {\n if (x.meta.group !== BlockletGroup.gateway) {\n has = true;\n }\n });\n\n return has;\n};\n\n/**\n * 获取 blocklet 的 name\n * @param {Object} blocklet 应用数据\n * @param {Boolean} onlyUseMeta 优先使用应用元数据的name\n * @returns blocklet display name\n */\nconst getDisplayName = (blocklet, onlyUseMeta = false) => {\n const { meta } = blocklet;\n let displayName;\n\n if (!onlyUseMeta && blocklet.environments) {\n const target = blocklet.environments.find((e) => e.key === 'BLOCKLET_APP_NAME');\n if (target && target.value) {\n displayName = target.value;\n }\n }\n return displayName || meta.title || meta.name;\n};\n\nconst fixBlockletStatus = (blocklet) => {\n if (!blocklet) {\n return;\n }\n\n blocklet.status = fromBlockletStatus(blocklet.status);\n blocklet.source = fromBlockletSource(blocklet.source);\n (blocklet.children || []).forEach((child) => {\n child.status = fromBlockletStatus(child.status);\n if (child.source !== undefined) {\n child.source = fromBlockletSource(child.source);\n }\n });\n};\n\nconst findWebInterface = (blocklet) => {\n if (!blocklet) {\n return null;\n }\n\n const meta = blocklet.meta || blocklet || {};\n const { interfaces = [] } = meta;\n\n if (!Array.isArray(interfaces)) {\n return null;\n }\n\n return interfaces.find((x) => x.type === BLOCKLET_INTERFACE_TYPE_WEB);\n};\n\nconst findServiceFromMeta = (meta, ServiceName) => {\n const names = [ServiceName];\n\n // backward compatible\n if (ServiceName === NODE_SERVICES.AUTH) {\n names.push(NODE_SERVICES.AUTH_SERVICE);\n }\n\n const webInterface = findWebInterface(meta);\n\n if (!webInterface) {\n return null;\n }\n\n return (webInterface.services || []).find((x) => names.includes(x.name));\n};\n\nconst isInvitedUserOnlyInMeta = (blocklet) => {\n if (!blocklet) {\n return false;\n }\n\n const service = findServiceFromMeta(blocklet.meta, NODE_SERVICES.AUTH);\n return service && service.config && ['yes', 'not-first'].includes(service.config.invitedUserOnly);\n};\n\nmodule.exports = {\n isFreeBlocklet,\n isComponentBlocklet,\n forEachBlockletSync,\n isDeletableBlocklet,\n forEachBlocklet,\n getRequiredMissingConfigs,\n wipeSensitiveData,\n hasRunnableComponent,\n getDisplayName,\n fixBlockletStatus,\n findWebInterface,\n findServiceFromMeta,\n isInvitedUserOnlyInMeta,\n};\n","const fromEntry = (entries) => (v) => {\n const match = Object.entries(entries).find((x) => x[1] === Number(v));\n return match ? match[0] : 'unknown';\n};\n\nconst toEntry = (entries) => (v) => Object.keys(entries).find((x) => entries[x] === Number(v));\n\n// Blocklet Status\n\nconst BlockletStatus = Object.freeze({\n added: 0,\n downloading: 1,\n downloaded: 2, // Deprecated\n installing: 3,\n installed: 4,\n starting: 5,\n running: 6,\n stopping: 7,\n stopped: 8,\n error: 9,\n upgrading: 10,\n restarting: 11, // Deprecated\n corrupted: 12,\n waiting: 13,\n});\n\nconst fromBlockletStatus = fromEntry(BlockletStatus);\nconst toBlockletStatus = toEntry(BlockletStatus);\n\n// Blocklet Source\n\nconst BlockletSource = Object.freeze({\n // Installed from Blocklet Store\n registry: 0,\n\n // Installed from local development source folder\n local: 1,\n\n // Installed from uploading bundle directly\n upload: 2,\n\n // Installed from a url (similar to Blocklet Store)\n url: 3,\n\n // Installed by custom creation\n custom: 4,\n});\n\nconst fromBlockletSource = fromEntry(BlockletSource);\nconst toBlockletSource = toEntry(BlockletSource);\n\n// Blocklet Group(Type)\n\nconst BlockletGroup = Object.freeze({\n // Only static website\n // The website is served by by Blocklet Server at runtime\n static: 'static',\n\n // The runtime instance is provided by its own backend server\n dapp: 'dapp',\n\n starter: false, // deprecated\n\n // This type is used to combine other component blocklets\n // No instance will be spawned at runtime\n gateway: 'gateway',\n});\n\nconst BLOCKLET_GROUPS = ['dapp', 'static', 'gateway'];\n\n// Blocklet Events\n\nconst BlockletEvents = Object.freeze({\n added: 'blocklet.added',\n downloadFailed: 'blocklet.downloadFailed',\n installed: 'blocklet.installed',\n installFailed: 'blocklet.installFailed',\n upgraded: 'blocklet.upgraded',\n downgraded: 'blocklet.downgraded',\n deployed: 'blocklet.deployed',\n updated: 'blocklet.updated',\n statusChange: 'blocklet.statusChange',\n removed: 'blocklet.removed',\n started: 'blocklet.started',\n startFailed: 'blocklet.startFailed',\n stopped: 'blocklet.stopped',\n reloaded: 'blocklet.reloaded', // Deprecated\n purchaseChange: 'blocklet.purchaseChange',\n});\n\n// Blocklet Interface\n\nconst BLOCKLET_INTERFACE_TYPE_WEB = 'web';\nconst BLOCKLET_INTERFACE_TYPE_SERVICE = 'service';\n\n// Wellknown interface declares an sub-interface under web interface\n// The path of the wellknown interface must starts with /.well-known, e.g. /.well-known/acme-challenge)\n// The wellknown interface can be mounted to every endpoint of the abtnode and all blocklets on the abtnode\nconst BLOCKLET_INTERFACE_TYPE_WELLKNOWN = 'wellknown';\nconst BLOCKLET_INTERFACE_TYPES = [\n BLOCKLET_INTERFACE_TYPE_WEB,\n BLOCKLET_INTERFACE_TYPE_SERVICE,\n BLOCKLET_INTERFACE_TYPE_WELLKNOWN,\n];\n\nconst BLOCKLET_INTERFACE_PUBLIC = 'publicUrl';\nconst BLOCKLET_INTERFACE_WELLKNOWN = 'wellknownUrl'; // Deprecated\nconst BLOCKLET_UI_INTERFACES = [BLOCKLET_INTERFACE_PUBLIC];\nconst BLOCKLET_STANDARD_INTERFACES = [BLOCKLET_INTERFACE_PUBLIC, BLOCKLET_INTERFACE_WELLKNOWN];\n\nconst BLOCKLET_INTERFACE_PROTOCOL_HTTP = 'http';\nconst BLOCKLET_INTERFACE_PROTOCOL_TCP = 'tcp';\nconst BLOCKLET_INTERFACE_PROTOCOL_UDP = 'udp';\nconst BLOCKLET_INTERFACE_PROTOCOLS = [\n BLOCKLET_INTERFACE_PROTOCOL_TCP,\n BLOCKLET_INTERFACE_PROTOCOL_UDP,\n BLOCKLET_INTERFACE_PROTOCOL_HTTP,\n];\n\nmodule.exports = Object.freeze({\n BlockletStatus,\n fromBlockletStatus,\n toBlockletStatus,\n\n BlockletSource,\n fromBlockletSource,\n toBlockletSource,\n\n BlockletGroup,\n BLOCKLET_GROUPS,\n\n BlockletEvents,\n\n BLOCKLET_PLATFORMS: ['aix', 'darwin', 'freebsd', 'linux', 'openbsd', 'sunos', 'win32'],\n BLOCKLET_ARCHITECTURES: ['arm', 'arm64', 'ia32', 'mips', 'mipsel', 'ppc', 'ppc64', 's390', 's390x', 'x32', 'x64'],\n\n BLOCKLET_MODES: Object.freeze({\n PRODUCTION: 'production',\n DEVELOPMENT: 'development',\n }),\n\n BLOCKLET_FACTORY_SHARES: { developer: 0.7, store: 0.3 },\n\n // interface\n BLOCKLET_INTERFACE_PUBLIC,\n BLOCKLET_INTERFACE_WELLKNOWN, // Deprecated\n BLOCKLET_UI_INTERFACES,\n BLOCKLET_STANDARD_INTERFACES,\n\n BLOCKLET_INTERFACE_TYPE_WEB,\n BLOCKLET_INTERFACE_TYPE_SERVICE,\n BLOCKLET_INTERFACE_TYPE_WELLKNOWN,\n BLOCKLET_INTERFACE_TYPES,\n\n BLOCKLET_INTERFACE_PROTOCOL_HTTP,\n BLOCKLET_INTERFACE_PROTOCOL_TCP,\n BLOCKLET_INTERFACE_PROTOCOL_UDP,\n BLOCKLET_INTERFACE_PROTOCOLS,\n\n BLOCKLET_DYNAMIC_PATH_PREFIX: '*',\n BLOCKLET_DEFAULT_PORT_NAME: 'BLOCKLET_PORT',\n BLOCKLET_DEFAULT_PATH_REWRITE: '/',\n\n // bundle\n BLOCKLET_RELEASE_FOLDER: '.blocklet/release',\n BLOCKLET_RELEASE_FILE: 'blocklet.json',\n BLOCKLET_BUNDLE_FOLDER: '.blocklet/bundle',\n BLOCKLET_BUNDLE_FILE: 'blocklet.zip',\n BLOCKLET_ENTRY_FILE: 'blocklet.js',\n BLOCKLET_META_FILE: 'blocklet.yml',\n BLOCKLET_META_FILE_ALT: 'blocklet.yaml',\n BLOCKLET_META_FILE_OLD: 'blocklet.json',\n\n BLOCKLET_DEFAULT_VERSION: '1.0.0',\n\n BLOCKLET_LATEST_SPEC_VERSION: '1.2.4',\n BLOCKLET_LATEST_REQUIREMENT_SERVER: '>=1.6.2',\n BLOCKLET_LATEST_REQUIREMENT_ABTNODE: '>=1.5.15', // Deprecated\n\n BLOCKLET_CONFIGURABLE_KEY: {\n BLOCKLET_CLUSTER_SIZE: 'BLOCKLET_CLUSTER_SIZE',\n BLOCKLET_APP_NAME: 'BLOCKLET_APP_NAME',\n BLOCKLET_APP_DESCRIPTION: 'BLOCKLET_APP_DESCRIPTION',\n BLOCKLET_APP_SK: 'BLOCKLET_APP_SK',\n BLOCKLET_APP_URL: 'BLOCKLET_APP_URL',\n BLOCKLET_PASSPORT_COLOR: 'BLOCKLET_PASSPORT_COLOR',\n BLOCKLET_WALLET_TYPE: 'BLOCKLET_WALLET_TYPE',\n BLOCKLET_DELETABLE: 'BLOCKLET_DELETABLE',\n },\n});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = HeaderAddon;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _styledComponents = _interopRequireDefault(require(\"styled-components\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _IconButton = _interopRequireDefault(require(\"@material-ui/core/IconButton\"));\n\nvar _HelpOutline = _interopRequireDefault(require(\"@material-ui/icons/HelpOutline\"));\n\nvar _reactRouterDom = require(\"react-router-dom\");\n\nvar _SessionManager = _interopRequireDefault(require(\"@arcblock/did-connect/lib/SessionManager\"));\n\nvar _selector = _interopRequireDefault(require(\"@arcblock/ux/lib/Locale/selector\"));\n\nvar _context = require(\"@arcblock/ux/lib/Locale/context\");\n\nvar _utils = require(\"@arcblock/did-connect/lib/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n/* eslint-disable react/jsx-one-expression-per-line */\nfunction HeaderAddon(_ref) {\n let {\n SessionContext,\n webWalletUrl,\n extraItems\n } = _ref;\n const {\n session\n } = (0, _react.useContext)(SessionContext);\n const {\n locale\n } = (0, _react.useContext)(_context.LocaleContext);\n const location = (0, _reactRouterDom.useLocation)();\n const walletUrl = webWalletUrl || (0, _utils.getWebWalletUrl)();\n const docPaths = {\n '/dashboard': '/introduction/abtnode-overview',\n '/store': '/marketplace',\n '/blocklets': '/blocklet',\n '/router/rules': '/router',\n '/router/engine': '/router',\n '/settings/basic': '/misc',\n '/settings/team': '/misc/member-management',\n '/console': '/misc/graphql-console'\n };\n\n const onHelpClick = () => {\n const pathName = location.pathname;\n let path = '';\n\n if (pathName.indexOf('/blocklets') > -1) {\n path = docPaths['/blocklets'];\n } else if (pathName.indexOf('/store') > -1) {\n path = docPaths['/store'];\n } else if (docPaths[pathName]) {\n path = docPaths[pathName];\n }\n\n const w = window.open('about:blank');\n w.location.href = \"https://docs.arcblock.io/abtnode/\".concat(locale).concat(path);\n };\n\n return /*#__PURE__*/_react.default.createElement(Div, null, extraItems.map(x => x), /*#__PURE__*/_react.default.createElement(_selector.default, {\n \"data-cy\": \"locale-addon\",\n size: 23,\n showText: false,\n className: \"locale-addon\"\n }), /*#__PURE__*/_react.default.createElement(_IconButton.default, {\n onClick: onHelpClick\n }, /*#__PURE__*/_react.default.createElement(_HelpOutline.default, {\n style: {\n fontSize: 28\n }\n })), /*#__PURE__*/_react.default.createElement(_SessionManager.default, {\n session: session,\n webWalletUrl: walletUrl,\n size: 24,\n showRole: true\n }));\n}\n\nHeaderAddon.propTypes = {\n SessionContext: _propTypes.default.object.isRequired,\n webWalletUrl: _propTypes.default.string,\n extraItems: _propTypes.default.array\n};\nHeaderAddon.defaultProps = {\n webWalletUrl: '',\n extraItems: []\n};\n\nconst Div = _styledComponents.default.div.withConfig({\n displayName: \"addon__Div\",\n componentId: \"sc-5tyqcw-0\"\n})([\"display:flex;justify-content:center;align-items:center;.user-addon{.user-avatar{width:28px;border-radius:14px;height:auto;}}\", \"{button,a{padding-left:8px;padding-right:8px;}}\"], props => props.theme.breakpoints.down('sm'));"],"sourceRoot":""}
1
+ {"version":3,"sources":["../../../node_modules/@material-ui/icons/PlayArrow.js","pages/start.js","../../../node_modules/@material-ui/core/esm/Typography/index.js","../../../blocklet/meta/lib/util.js","../../../blocklet/meta/lib/constants.js","../../ux/lib/layout/addon.js"],"names":["_interopRequireDefault","require","_interopRequireWildcard","Object","defineProperty","exports","value","default","React","_default","createElement","d","AppIcon","appInfo","rest","useState","error","setError","size","useMediaQuery","theme","breakpoints","down","did","publisher","src","icon","alt","title","width","height","onError","Start","t","useLocaleContext","blocklet","setBlocklet","loading","setLoading","starting","setStarting","visitBlocklet","redirect","URL","window","location","href","searchParams","get","decodeURIComponent","useEffect","timer","checkStatus","api","then","data","status","clearInterval","catch","err","Toast","message","setInterval","WELLKNOWN_SERVICE_PATH_PREFIX","getDisplayName","appDid","Root","className","SessionContext","StyledPaper","elevation","AppInfo","name","mt","style","minWidth","disabled","variant","color","onClick","post","styled","div","props","Paper","palette","primary","main","common","white","grey","NODE_SERVICES","BlockletGroup","fromBlockletStatus","fromBlockletSource","BLOCKLET_INTERFACE_TYPE_WEB","forEachBlocklet","cb","parallel","sync","children","child","Promise","resolve","reject","tasks","push","all","forEachBlockletSync","findWebInterface","meta","interfaces","Array","isArray","find","x","type","findServiceFromMeta","ServiceName","names","AUTH","AUTH_SERVICE","webInterface","services","includes","module","isFreeBlocklet","payment","price","map","every","isComponentBlocklet","isDeletableBlocklet","config","environments","key","getRequiredMissingConfigs","missingConfigs","configs","forEach","item","required","description","some","y","wipeSensitiveData","secure","configObj","environmentObj","hasRunnableComponent","has","group","gateway","displayName","onlyUseMeta","target","e","fixBlockletStatus","source","undefined","isInvitedUserOnlyInMeta","service","invitedUserOnly","fromEntry","entries","v","match","Number","toEntry","keys","BlockletStatus","freeze","added","downloading","downloaded","installing","installed","running","stopping","stopped","upgrading","restarting","corrupted","waiting","toBlockletStatus","BlockletSource","registry","local","upload","url","custom","toBlockletSource","static","dapp","starter","BlockletEvents","downloadFailed","installFailed","upgraded","downgraded","deployed","updated","statusChange","removed","started","startFailed","reloaded","purchaseChange","BLOCKLET_INTERFACE_TYPES","BLOCKLET_UI_INTERFACES","BLOCKLET_STANDARD_INTERFACES","BLOCKLET_INTERFACE_PROTOCOLS","BLOCKLET_GROUPS","BLOCKLET_PLATFORMS","BLOCKLET_ARCHITECTURES","BLOCKLET_MODES","PRODUCTION","DEVELOPMENT","BLOCKLET_FACTORY_SHARES","developer","store","BLOCKLET_INTERFACE_PUBLIC","BLOCKLET_INTERFACE_WELLKNOWN","BLOCKLET_INTERFACE_TYPE_SERVICE","BLOCKLET_INTERFACE_TYPE_WELLKNOWN","BLOCKLET_INTERFACE_PROTOCOL_HTTP","BLOCKLET_INTERFACE_PROTOCOL_TCP","BLOCKLET_INTERFACE_PROTOCOL_UDP","BLOCKLET_DYNAMIC_PATH_PREFIX","BLOCKLET_DEFAULT_PORT_NAME","BLOCKLET_DEFAULT_PATH_REWRITE","BLOCKLET_RELEASE_FOLDER","BLOCKLET_RELEASE_FILE","BLOCKLET_BUNDLE_FOLDER","BLOCKLET_BUNDLE_FILE","BLOCKLET_ENTRY_FILE","BLOCKLET_META_FILE","BLOCKLET_META_FILE_ALT","BLOCKLET_META_FILE_OLD","BLOCKLET_DEFAULT_VERSION","BLOCKLET_LATEST_SPEC_VERSION","BLOCKLET_LATEST_REQUIREMENT_SERVER","BLOCKLET_LATEST_REQUIREMENT_ABTNODE","BLOCKLET_CONFIGURABLE_KEY","BLOCKLET_CLUSTER_SIZE","BLOCKLET_APP_NAME","BLOCKLET_APP_DESCRIPTION","BLOCKLET_APP_SK","BLOCKLET_APP_URL","BLOCKLET_PASSPORT_COLOR","BLOCKLET_WALLET_TYPE","BLOCKLET_DELETABLE","HeaderAddon","_react","obj","nodeInterop","__esModule","cache","_getRequireWildcardCache","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","prototype","hasOwnProperty","call","desc","set","_styledComponents","_propTypes","_IconButton","_HelpOutline","_reactRouterDom","_SessionManager","_selector","_context","_utils","WeakMap","cacheBabelInterop","cacheNodeInterop","_ref","webWalletUrl","extraItems","session","useContext","locale","LocaleContext","useLocation","walletUrl","getWebWalletUrl","docPaths","Div","showText","pathName","pathname","path","indexOf","open","concat","fontSize","showRole","propTypes","object","isRequired","string","array","defaultProps","withConfig","componentId"],"mappings":"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","file":"static/js/9.d137a88d.chunk.js","sourcesContent":["\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 5v14l11-7z\"\n}), 'PlayArrow');\n\nexports.default = _default;","/* eslint-disable react/jsx-one-expression-per-line */\nimport React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport Box from '@material-ui/core/Box';\nimport PlayArrowIcon from '@material-ui/icons/PlayArrow';\nimport Paper from '@material-ui/core/Paper';\n\nimport Button from '@arcblock/ux/lib/Button';\nimport { useLocaleContext } from '@arcblock/ux/lib/Locale/context';\nimport Toast from '@abtnode/ux/lib/toast';\nimport DidAvatar from '@arcblock/did-connect/lib/Avatar';\nimport DidAddress from '@arcblock/did-connect/lib/Address';\nimport Img from '@arcblock/ux/lib/Img';\nimport Center from '@arcblock/ux/lib/Center';\nimport Spinner from '@arcblock/ux/lib/Spinner';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\n\nimport { getDisplayName } from '@blocklet/meta/lib/util';\nimport { WELLKNOWN_SERVICE_PATH_PREFIX } from '@abtnode/constant';\nimport HeaderAddon from '@abtnode/ux/lib/layout/addon';\n\nimport api from '../libs/api';\nimport { SessionContext } from '../contexts/session';\n\nconst AppIcon = ({ appInfo, ...rest }) => {\n const [error, setError] = React.useState(false);\n const isMobile = useMediaQuery((theme) => theme.breakpoints.down('sm'));\n const size = isMobile ? 32 : 48;\n\n if (error) {\n return <DidAvatar did={appInfo.publisher} size={size} />;\n }\n return (\n <Img src={appInfo.icon} alt={appInfo.title} width={size} height={size} {...rest} onError={() => setError(true)} />\n );\n};\n\nAppIcon.propTypes = {\n appInfo: PropTypes.object.isRequired,\n};\n\nexport default function Start() {\n const { t } = useLocaleContext();\n const [blocklet, setBlocklet] = useState(null);\n const [loading, setLoading] = useState(false);\n const [starting, setStarting] = useState(false);\n\n const visitBlocklet = () => {\n const url = new URL(window.location.href);\n const redirect = url.searchParams.get('redirect') || '/';\n window.location = decodeURIComponent(redirect);\n };\n\n useEffect(() => {\n let timer = null;\n\n const checkStatus = () => {\n api\n .get('/blocklet/detail')\n .then(({ data }) => {\n if (data.status === 'running') {\n visitBlocklet();\n return;\n }\n\n if (data.status !== 'starting') {\n setStarting(false);\n setBlocklet(data);\n clearInterval(timer);\n }\n })\n .catch((err) => {\n setLoading(false);\n Toast.error(err.message);\n });\n };\n\n setLoading(true);\n api\n .get('/blocklet/detail')\n .then(({ data }) => {\n setLoading(false);\n if (data.status === 'running') {\n visitBlocklet();\n return;\n }\n\n setBlocklet(data);\n\n if (data.status === 'starting') {\n setStarting(true);\n timer = setInterval(checkStatus, 3000);\n }\n })\n .catch((err) => {\n setLoading(false);\n Toast.error(err.message);\n });\n }, []);\n\n const startBlocklet = () => {\n setLoading(true);\n setStarting(true);\n api\n .post('/blocklet/start')\n .then(() => {\n visitBlocklet();\n })\n .catch((err) => {\n Toast.error(err.message);\n setLoading(false);\n setStarting(false);\n });\n };\n\n if (!blocklet) {\n return (\n <Center>\n <Spinner />\n </Center>\n );\n }\n\n const appInfo = {\n icon: `${WELLKNOWN_SERVICE_PATH_PREFIX}/blocklet/logo`,\n title: getDisplayName(blocklet),\n publisher: blocklet.appDid,\n };\n\n return (\n <Root>\n <header className=\"root-header\">\n <div className=\"right\">\n <HeaderAddon SessionContext={SessionContext} />\n </div>\n </header>\n\n <StyledPaper elevation={0}>\n <AppInfo>\n <AppIcon appInfo={appInfo} />\n <div className=\"app-info_content\">\n <Box className=\"app-info_name\">{appInfo.title}</Box>\n <DidAddress size={14} className=\"app-info_did\">\n {appInfo.publisher}\n </DidAddress>\n </div>\n </AppInfo>\n\n <Box className=\"title-box\">\n <Box className=\"icon\">\n <PlayArrowIcon />\n </Box>\n <Box className=\"title\">{t('blocklet.startApplication')}</Box>\n </Box>\n <Box className=\"sub-title\">{t('blocklet.startDescription', { name: getDisplayName(blocklet) })}</Box>\n\n <Box mt={8}>\n <Button\n style={{ minWidth: 200 }}\n disabled={loading || starting}\n variant=\"contained\"\n color=\"primary\"\n size=\"large\"\n loading={starting}\n onClick={() => startBlocklet()}>\n {starting ? t('blocklet.starting') : t('blocklet.start')}\n </Button>\n </Box>\n </StyledPaper>\n </Root>\n );\n}\n\nconst Root = styled.div`\n width: 100vw;\n height: 100vh;\n background: #e7ebea;\n display: flex;\n justify-content: center;\n align-items: center;\n\n .root-header {\n position: fixed;\n z-index: 200;\n top: 0;\n left: 50%;\n display: flex;\n width: 50%;\n height: 56px;\n align-items: center;\n justify-content: flex-end;\n padding: 24px;\n\n ${(props) => props.theme.breakpoints.down('sm')} {\n padding: 14px 16px;\n }\n\n .right {\n display: flex;\n align-items: center;\n ${(props) => props.theme.breakpoints.down('sm')} {\n button,\n a {\n padding-left: 8px;\n padding-right: 8px;\n }\n }\n }\n }\n`;\n\nconst StyledPaper = styled(Paper)`\n width: 80vw;\n max-width: 1245px;\n height: 80vh;\n box-sizing: border-box;\n padding: 32px;\n &.MuiPaper-rounded {\n border-radius: 8px;\n }\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n\n ${(props) => props.theme.breakpoints.down('sm')} {\n width: 100vw;\n height: 100vh;\n left: 0;\n top: 0;\n padding: 32px 0;\n }\n\n .MuiIconButton-root {\n svg {\n fill: #888;\n }\n &.Mui-disabled {\n opacity: 0.4;\n }\n }\n\n .title-box {\n display: flex;\n align-items: center;\n ${(props) => props.theme.breakpoints.down('sm')} {\n margin-top: 60px;\n }\n }\n\n .icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n border-radius: 100%;\n background-color: ${(props) => props.theme.palette.primary.main};\n color: ${(props) => props.theme.palette.common.white};\n }\n\n .title {\n margin-left: 12px;\n color: ${(props) => props.theme.palette.primary.main};\n font-size: 24px;\n font-weight: bolder;\n }\n\n .sub-title {\n margin-top: 24px;\n color: ${(props) => props.theme.palette.grey[700]};\n font-size: 16px;\n }\n`;\n\nconst AppInfo = styled.div`\n display: flex;\n align-items: center;\n position: absolute;\n left: 24px;\n right: 24px;\n top: 24px;\n font-size: 16px;\n font-weight: 500;\n color: #222;\n\n /* 禁止 app icon shrink */\n > *:first-child {\n flex: 0 0 auto;\n }\n\n .app-info_content {\n padding-left: 16px;\n overflow: hidden;\n }\n\n .app-info_name {\n max-width: 100%;\n padding-right: 32px;\n line-height: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: bold;\n }\n\n .app-info_did {\n transform: translate(0, 2px);\n }\n\n .app-info_did .did-address__text {\n color: #666;\n font-size: 14px;\n }\n\n ${(props) => props.theme.breakpoints.down('sm')} {\n top: 12px;\n .app-info_did {\n transform: translate(0, 0);\n }\n .app-info_did .did-address__text {\n font-size: 12px;\n }\n }\n`;\n","export { default } from './Typography';","/* eslint-disable no-await-in-loop */\nconst get = require('lodash/get');\n\nconst { NODE_SERVICES } = require('@abtnode/constant');\n\nconst { BlockletGroup, fromBlockletStatus, fromBlockletSource, BLOCKLET_INTERFACE_TYPE_WEB } = require('./constants');\n\nconst forEachBlocklet = (blocklet, cb, { parallel = false, sync } = {}) => {\n // sync\n if (sync) {\n cb(blocklet);\n if (blocklet.children) {\n for (const child of blocklet.children) {\n cb(child);\n }\n }\n return null;\n }\n\n // serial\n if (!parallel) {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n try {\n await cb(blocklet);\n if (blocklet.children) {\n for (const child of blocklet.children) {\n await cb(child);\n }\n }\n\n resolve(null);\n } catch (err) {\n reject(err);\n }\n });\n }\n\n // parallel\n const tasks = [];\n tasks.push(cb(blocklet));\n if (blocklet.children) {\n for (const child of blocklet.children) {\n tasks.push(cb(child));\n }\n }\n return Promise.all(tasks);\n};\n\nconst forEachBlockletSync = (blocklet, cb) => forEachBlocklet(blocklet, cb, { sync: true });\n\nconst getRequiredMissingConfigs = (blocklet) => {\n const missingConfigs = [];\n const configs = blocklet.configs || [];\n configs.forEach((item) => {\n if (item.required && !item.value) {\n missingConfigs.push({ did: blocklet.meta.did, key: item.key, description: item.description });\n }\n });\n\n // eslint-disable-next-line no-restricted-syntax\n for (const child of blocklet.children || []) {\n const childConfigs = child.configs || [];\n // configProp does not exist in root blocklet config\n // or value of configProp in root blocklet config is empty.\n childConfigs.forEach((x) => {\n if (x.required && !x.value && !configs.some((y) => y.key === x.key && y.value)) {\n missingConfigs.push({ did: child.meta.did, key: x.key, description: x.description });\n }\n });\n }\n\n return missingConfigs;\n};\n\nconst isFreeBlocklet = (meta) => {\n if (!meta.payment) {\n return true;\n }\n\n const priceList = (meta.payment.price || []).map((x) => x.value || 0);\n return priceList.every((x) => x === 0);\n};\n\nconst isComponentBlocklet = (meta) => {\n return get(meta, 'capabilities.component') !== false;\n};\n\nconst wipeSensitiveData = (blocklet) => {\n if (!blocklet) {\n return blocklet;\n }\n\n forEachBlocklet(\n blocklet,\n (d) => {\n (d.configs || []).forEach((x) => {\n if (x.secure) {\n x.value = x.value ? '__encrypted__' : '';\n }\n });\n (d.environments || []).forEach((x) => {\n if (['BLOCKLET_APP_SK'].includes(x.key)) {\n x.value = '__encrypted__';\n }\n });\n\n delete blocklet.configObj;\n delete blocklet.environmentObj;\n },\n { sync: true }\n );\n\n return blocklet;\n};\n\nconst isDeletableBlocklet = (blocklet) => {\n if (!blocklet) {\n return false;\n }\n\n const config = blocklet.environments.find((x) => x.key === 'BLOCKLET_DELETABLE');\n if (!config) {\n return true;\n }\n\n return config.value === 'yes';\n};\n\nconst hasRunnableComponent = (blocklet) => {\n let has = false;\n forEachBlockletSync(blocklet, (x) => {\n if (x.meta.group !== BlockletGroup.gateway) {\n has = true;\n }\n });\n\n return has;\n};\n\n/**\n * 获取 blocklet 的 name\n * @param {Object} blocklet 应用数据\n * @param {Boolean} onlyUseMeta 优先使用应用元数据的name\n * @returns blocklet display name\n */\nconst getDisplayName = (blocklet, onlyUseMeta = false) => {\n const { meta } = blocklet;\n let displayName;\n\n if (!onlyUseMeta && blocklet.environments) {\n const target = blocklet.environments.find((e) => e.key === 'BLOCKLET_APP_NAME');\n if (target && target.value) {\n displayName = target.value;\n }\n }\n return displayName || meta.title || meta.name;\n};\n\nconst fixBlockletStatus = (blocklet) => {\n if (!blocklet) {\n return;\n }\n\n blocklet.status = fromBlockletStatus(blocklet.status);\n blocklet.source = fromBlockletSource(blocklet.source);\n (blocklet.children || []).forEach((child) => {\n child.status = fromBlockletStatus(child.status);\n if (child.source !== undefined) {\n child.source = fromBlockletSource(child.source);\n }\n });\n};\n\nconst findWebInterface = (blocklet) => {\n if (!blocklet) {\n return null;\n }\n\n const meta = blocklet.meta || blocklet || {};\n const { interfaces = [] } = meta;\n\n if (!Array.isArray(interfaces)) {\n return null;\n }\n\n return interfaces.find((x) => x.type === BLOCKLET_INTERFACE_TYPE_WEB);\n};\n\nconst findServiceFromMeta = (meta, ServiceName) => {\n const names = [ServiceName];\n\n // backward compatible\n if (ServiceName === NODE_SERVICES.AUTH) {\n names.push(NODE_SERVICES.AUTH_SERVICE);\n }\n\n const webInterface = findWebInterface(meta);\n\n if (!webInterface) {\n return null;\n }\n\n return (webInterface.services || []).find((x) => names.includes(x.name));\n};\n\nconst isInvitedUserOnlyInMeta = (blocklet) => {\n if (!blocklet) {\n return false;\n }\n\n const service = findServiceFromMeta(blocklet.meta, NODE_SERVICES.AUTH);\n return service && service.config && ['yes', 'not-first'].includes(service.config.invitedUserOnly);\n};\n\nmodule.exports = {\n isFreeBlocklet,\n isComponentBlocklet,\n forEachBlockletSync,\n isDeletableBlocklet,\n forEachBlocklet,\n getRequiredMissingConfigs,\n wipeSensitiveData,\n hasRunnableComponent,\n getDisplayName,\n fixBlockletStatus,\n findWebInterface,\n findServiceFromMeta,\n isInvitedUserOnlyInMeta,\n};\n","const fromEntry = (entries) => (v) => {\n const match = Object.entries(entries).find((x) => x[1] === Number(v));\n return match ? match[0] : 'unknown';\n};\n\nconst toEntry = (entries) => (v) => Object.keys(entries).find((x) => entries[x] === Number(v));\n\n// Blocklet Status\n\nconst BlockletStatus = Object.freeze({\n added: 0,\n downloading: 1,\n downloaded: 2, // Deprecated\n installing: 3,\n installed: 4,\n starting: 5,\n running: 6,\n stopping: 7,\n stopped: 8,\n error: 9,\n upgrading: 10,\n restarting: 11, // Deprecated\n corrupted: 12,\n waiting: 13,\n});\n\nconst fromBlockletStatus = fromEntry(BlockletStatus);\nconst toBlockletStatus = toEntry(BlockletStatus);\n\n// Blocklet Source\n\nconst BlockletSource = Object.freeze({\n // Installed from Blocklet Store\n registry: 0,\n\n // Installed from local development source folder\n local: 1,\n\n // Installed from uploading bundle directly\n upload: 2,\n\n // Installed from a url (similar to Blocklet Store)\n url: 3,\n\n // Installed by custom creation\n custom: 4,\n});\n\nconst fromBlockletSource = fromEntry(BlockletSource);\nconst toBlockletSource = toEntry(BlockletSource);\n\n// Blocklet Group(Type)\n\nconst BlockletGroup = Object.freeze({\n // Only static website\n // The website is served by by Blocklet Server at runtime\n static: 'static',\n\n // The runtime instance is provided by its own backend server\n dapp: 'dapp',\n\n starter: false, // deprecated\n\n // This type is used to combine other component blocklets\n // No instance will be spawned at runtime\n gateway: 'gateway',\n});\n\nconst BLOCKLET_GROUPS = ['dapp', 'static', 'gateway'];\n\n// Blocklet Events\n\nconst BlockletEvents = Object.freeze({\n added: 'blocklet.added',\n downloadFailed: 'blocklet.downloadFailed',\n installed: 'blocklet.installed',\n installFailed: 'blocklet.installFailed',\n upgraded: 'blocklet.upgraded',\n downgraded: 'blocklet.downgraded',\n deployed: 'blocklet.deployed',\n updated: 'blocklet.updated',\n statusChange: 'blocklet.statusChange',\n removed: 'blocklet.removed',\n started: 'blocklet.started',\n startFailed: 'blocklet.startFailed',\n stopped: 'blocklet.stopped',\n reloaded: 'blocklet.reloaded', // Deprecated\n purchaseChange: 'blocklet.purchaseChange',\n});\n\n// Blocklet Interface\n\nconst BLOCKLET_INTERFACE_TYPE_WEB = 'web';\nconst BLOCKLET_INTERFACE_TYPE_SERVICE = 'service';\n\n// Wellknown interface declares an sub-interface under web interface\n// The path of the wellknown interface must starts with /.well-known, e.g. /.well-known/acme-challenge)\n// The wellknown interface can be mounted to every endpoint of the abtnode and all blocklets on the abtnode\nconst BLOCKLET_INTERFACE_TYPE_WELLKNOWN = 'wellknown';\nconst BLOCKLET_INTERFACE_TYPES = [\n BLOCKLET_INTERFACE_TYPE_WEB,\n BLOCKLET_INTERFACE_TYPE_SERVICE,\n BLOCKLET_INTERFACE_TYPE_WELLKNOWN,\n];\n\nconst BLOCKLET_INTERFACE_PUBLIC = 'publicUrl';\nconst BLOCKLET_INTERFACE_WELLKNOWN = 'wellknownUrl'; // Deprecated\nconst BLOCKLET_UI_INTERFACES = [BLOCKLET_INTERFACE_PUBLIC];\nconst BLOCKLET_STANDARD_INTERFACES = [BLOCKLET_INTERFACE_PUBLIC, BLOCKLET_INTERFACE_WELLKNOWN];\n\nconst BLOCKLET_INTERFACE_PROTOCOL_HTTP = 'http';\nconst BLOCKLET_INTERFACE_PROTOCOL_TCP = 'tcp';\nconst BLOCKLET_INTERFACE_PROTOCOL_UDP = 'udp';\nconst BLOCKLET_INTERFACE_PROTOCOLS = [\n BLOCKLET_INTERFACE_PROTOCOL_TCP,\n BLOCKLET_INTERFACE_PROTOCOL_UDP,\n BLOCKLET_INTERFACE_PROTOCOL_HTTP,\n];\n\nmodule.exports = Object.freeze({\n BlockletStatus,\n fromBlockletStatus,\n toBlockletStatus,\n\n BlockletSource,\n fromBlockletSource,\n toBlockletSource,\n\n BlockletGroup,\n BLOCKLET_GROUPS,\n\n BlockletEvents,\n\n BLOCKLET_PLATFORMS: ['aix', 'darwin', 'freebsd', 'linux', 'openbsd', 'sunos', 'win32'],\n BLOCKLET_ARCHITECTURES: ['arm', 'arm64', 'ia32', 'mips', 'mipsel', 'ppc', 'ppc64', 's390', 's390x', 'x32', 'x64'],\n\n BLOCKLET_MODES: Object.freeze({\n PRODUCTION: 'production',\n DEVELOPMENT: 'development',\n }),\n\n BLOCKLET_FACTORY_SHARES: { developer: 0.7, store: 0.3 },\n\n // interface\n BLOCKLET_INTERFACE_PUBLIC,\n BLOCKLET_INTERFACE_WELLKNOWN, // Deprecated\n BLOCKLET_UI_INTERFACES,\n BLOCKLET_STANDARD_INTERFACES,\n\n BLOCKLET_INTERFACE_TYPE_WEB,\n BLOCKLET_INTERFACE_TYPE_SERVICE,\n BLOCKLET_INTERFACE_TYPE_WELLKNOWN,\n BLOCKLET_INTERFACE_TYPES,\n\n BLOCKLET_INTERFACE_PROTOCOL_HTTP,\n BLOCKLET_INTERFACE_PROTOCOL_TCP,\n BLOCKLET_INTERFACE_PROTOCOL_UDP,\n BLOCKLET_INTERFACE_PROTOCOLS,\n\n BLOCKLET_DYNAMIC_PATH_PREFIX: '*',\n BLOCKLET_DEFAULT_PORT_NAME: 'BLOCKLET_PORT',\n BLOCKLET_DEFAULT_PATH_REWRITE: '/',\n\n // bundle\n BLOCKLET_RELEASE_FOLDER: '.blocklet/release',\n BLOCKLET_RELEASE_FILE: 'blocklet.json',\n BLOCKLET_BUNDLE_FOLDER: '.blocklet/bundle',\n BLOCKLET_BUNDLE_FILE: 'blocklet.zip',\n BLOCKLET_ENTRY_FILE: 'blocklet.js',\n BLOCKLET_META_FILE: 'blocklet.yml',\n BLOCKLET_META_FILE_ALT: 'blocklet.yaml',\n BLOCKLET_META_FILE_OLD: 'blocklet.json',\n\n BLOCKLET_DEFAULT_VERSION: '1.0.0',\n\n BLOCKLET_LATEST_SPEC_VERSION: '1.2.4',\n BLOCKLET_LATEST_REQUIREMENT_SERVER: '>=1.6.2',\n BLOCKLET_LATEST_REQUIREMENT_ABTNODE: '>=1.5.15', // Deprecated\n\n BLOCKLET_CONFIGURABLE_KEY: {\n BLOCKLET_CLUSTER_SIZE: 'BLOCKLET_CLUSTER_SIZE',\n BLOCKLET_APP_NAME: 'BLOCKLET_APP_NAME',\n BLOCKLET_APP_DESCRIPTION: 'BLOCKLET_APP_DESCRIPTION',\n BLOCKLET_APP_SK: 'BLOCKLET_APP_SK',\n BLOCKLET_APP_URL: 'BLOCKLET_APP_URL',\n BLOCKLET_PASSPORT_COLOR: 'BLOCKLET_PASSPORT_COLOR',\n BLOCKLET_WALLET_TYPE: 'BLOCKLET_WALLET_TYPE',\n BLOCKLET_DELETABLE: 'BLOCKLET_DELETABLE',\n },\n});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = HeaderAddon;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _styledComponents = _interopRequireDefault(require(\"styled-components\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _IconButton = _interopRequireDefault(require(\"@material-ui/core/IconButton\"));\n\nvar _HelpOutline = _interopRequireDefault(require(\"@material-ui/icons/HelpOutline\"));\n\nvar _reactRouterDom = require(\"react-router-dom\");\n\nvar _SessionManager = _interopRequireDefault(require(\"@arcblock/did-connect/lib/SessionManager\"));\n\nvar _selector = _interopRequireDefault(require(\"@arcblock/ux/lib/Locale/selector\"));\n\nvar _context = require(\"@arcblock/ux/lib/Locale/context\");\n\nvar _utils = require(\"@arcblock/did-connect/lib/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\n/* eslint-disable react/jsx-one-expression-per-line */\nfunction HeaderAddon(_ref) {\n let {\n SessionContext,\n webWalletUrl,\n extraItems\n } = _ref;\n const {\n session\n } = (0, _react.useContext)(SessionContext);\n const {\n locale\n } = (0, _react.useContext)(_context.LocaleContext);\n const location = (0, _reactRouterDom.useLocation)();\n const walletUrl = webWalletUrl || (0, _utils.getWebWalletUrl)();\n const docPaths = {\n '/dashboard': '/introduction/abtnode-overview',\n '/store': '/marketplace',\n '/blocklets': '/blocklet',\n '/router/rules': '/router',\n '/router/engine': '/router',\n '/settings/basic': '/misc',\n '/settings/team': '/misc/member-management',\n '/console': '/misc/graphql-console'\n };\n\n const onHelpClick = () => {\n const pathName = location.pathname;\n let path = '';\n\n if (pathName.indexOf('/blocklets') > -1) {\n path = docPaths['/blocklets'];\n } else if (pathName.indexOf('/store') > -1) {\n path = docPaths['/store'];\n } else if (docPaths[pathName]) {\n path = docPaths[pathName];\n }\n\n const w = window.open('about:blank');\n w.location.href = \"https://docs.arcblock.io/abtnode/\".concat(locale).concat(path);\n };\n\n return /*#__PURE__*/_react.default.createElement(Div, null, extraItems.map(x => x), /*#__PURE__*/_react.default.createElement(_selector.default, {\n \"data-cy\": \"locale-addon\",\n size: 23,\n showText: false,\n className: \"locale-addon\"\n }), /*#__PURE__*/_react.default.createElement(_IconButton.default, {\n onClick: onHelpClick\n }, /*#__PURE__*/_react.default.createElement(_HelpOutline.default, {\n style: {\n fontSize: 28\n }\n })), /*#__PURE__*/_react.default.createElement(_SessionManager.default, {\n session: session,\n webWalletUrl: walletUrl,\n size: 24,\n showRole: true\n }));\n}\n\nHeaderAddon.propTypes = {\n SessionContext: _propTypes.default.object.isRequired,\n webWalletUrl: _propTypes.default.string,\n extraItems: _propTypes.default.array\n};\nHeaderAddon.defaultProps = {\n webWalletUrl: '',\n extraItems: []\n};\n\nconst Div = _styledComponents.default.div.withConfig({\n displayName: \"addon__Div\",\n componentId: \"sc-5tyqcw-0\"\n})([\"display:flex;justify-content:center;align-items:center;.user-addon{.user-avatar{width:28px;border-radius:14px;height:auto;}}\", \"{button,a{padding-left:8px;padding-right:8px;}}\"], props => props.theme.breakpoints.down('sm'));"],"sourceRoot":""}