@teambit/bit 1.8.82 → 1.8.84
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/artifacts/__bit_junit.xml +1 -1
- package/artifacts/preview/teambit_harmony_bit-preview.js +1 -1
- package/artifacts/schema.json +1 -1
- package/dist/app.js +10 -1
- package/dist/app.js.map +1 -1
- package/dist/{preview-1728962506318.js → preview-1729048998230.js} +2 -2
- package/dist/server-commander.d.ts +45 -0
- package/dist/server-commander.js +128 -3
- package/dist/server-commander.js.map +1 -1
- package/dist/server-forever.d.ts +12 -0
- package/dist/server-forever.js +141 -0
- package/dist/server-forever.js.map +1 -0
- package/package.json +114 -113
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<testsuites tests="0" failures="0" errors="0" skipped="0">
|
|
3
|
-
<testsuite name="teambit.harmony/bit@1.8.
|
|
3
|
+
<testsuite name="teambit.harmony/bit@1.8.84" tests="0" failures="0" errors="0" skipped="0"/>
|
|
4
4
|
</testsuites>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see teambit_harmony_bit-preview.js.LICENSE.txt */
|
|
2
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["teambit.harmony/bit-preview"]=t():e["teambit.harmony/bit-preview"]=t()}(self,(()=>(()=>{var e={88443:(e,t)=>{var n;!function(){"use strict";var o={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var i=typeof n;if("string"===i||"number"===i)e.push(n);else if(Array.isArray(n)&&n.length){var a=r.apply(null,n);a&&e.push(a)}else if("object"===i)for(var s in n)o.call(n,s)&&n[s]&&e.push(s)}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(n=function(){return r}.apply(t,[]))||(e.exports=n)}()},69685:(e,t)=>{var n;!function(){"use strict";var o={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var i=typeof n;if("string"===i||"number"===i)e.push(n);else if(Array.isArray(n)){if(n.length){var a=r.apply(null,n);a&&e.push(a)}}else if("object"===i)if(n.toString===Object.prototype.toString)for(var s in n)o.call(n,s)&&n[s]&&e.push(s);else e.push(n.toString())}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(n=function(){return r}.apply(t,[]))||(e.exports=n)}()},84949:(e,t)=>{"use strict";var n=Object.prototype.hasOwnProperty;function o(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function r(e){try{return encodeURIComponent(e)}catch(e){return null}}t.stringify=function(e,t){t=t||"";var o,i,a=[];for(i in"string"!=typeof t&&(t="?"),e)if(n.call(e,i)){if((o=e[i])||null!=o&&!isNaN(o)||(o=""),i=r(i),o=r(o),null===i||null===o)continue;a.push(i+"="+o)}return a.length?t+a.join("&"):""},t.parse=function(e){for(var t,n=/([^=?#&]+)=?([^&]*)/g,r={};t=n.exec(e);){var i=o(t[1]),a=o(t[2]);null===i||null===a||i in r||(r[i]=a)}return r}},91788:e=>{"use strict";e.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},67114:(e,t,n)=>{"use strict";var o=n(91788),r=n(84949),i=/^[A-Za-z][A-Za-z0-9+-.]*:[\\/]+/,a=/^([a-z][a-z0-9.+-]*:)?([\\/]{1,})?([\S\s]*)/i,s=new RegExp("^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+");function u(e){return(e||"").toString().replace(s,"")}var c=[["#","hash"],["?","query"],function(e){return e.replace("\\","/")},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d+)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],l={hash:1,query:1};function d(e){var t,o=("undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{}).location||{},r={},a=typeof(e=e||o);if("blob:"===e.protocol)r=new f(unescape(e.pathname),{});else if("string"===a)for(t in r=new f(e,{}),l)delete r[t];else if("object"===a){for(t in e)t in l||(r[t]=e[t]);void 0===r.slashes&&(r.slashes=i.test(e.href))}return r}function p(e){e=u(e);var t=a.exec(e);return{protocol:t[1]?t[1].toLowerCase():"",slashes:!!(t[2]&&t[2].length>=2),rest:t[2]&&1===t[2].length?"/"+t[3]:t[3]}}function f(e,t,n){if(e=u(e),!(this instanceof f))return new f(e,t,n);var i,a,s,l,m,b,_=c.slice(),h=typeof t,y=this,v=0;for("object"!==h&&"string"!==h&&(n=t,t=null),n&&"function"!=typeof n&&(n=r.parse),t=d(t),i=!(a=p(e||"")).protocol&&!a.slashes,y.slashes=a.slashes||i&&t.slashes,y.protocol=a.protocol||t.protocol||"",e=a.rest,a.slashes||(_[3]=[/(.*)/,"pathname"]);v<_.length;v++)"function"!=typeof(l=_[v])?(s=l[0],b=l[1],s!=s?y[b]=e:"string"==typeof s?~(m=e.indexOf(s))&&("number"==typeof l[2]?(y[b]=e.slice(0,m),e=e.slice(m+l[2])):(y[b]=e.slice(m),e=e.slice(0,m))):(m=s.exec(e))&&(y[b]=m[1],e=e.slice(0,m.index)),y[b]=y[b]||i&&l[3]&&t[b]||"",l[4]&&(y[b]=y[b].toLowerCase())):e=l(e);n&&(y.query=n(y.query)),i&&t.slashes&&"/"!==y.pathname.charAt(0)&&(""!==y.pathname||""!==t.pathname)&&(y.pathname=function(e,t){if(""===e)return t;for(var n=(t||"/").split("/").slice(0,-1).concat(e.split("/")),o=n.length,r=n[o-1],i=!1,a=0;o--;)"."===n[o]?n.splice(o,1):".."===n[o]?(n.splice(o,1),a++):a&&(0===o&&(i=!0),n.splice(o,1),a--);return i&&n.unshift(""),"."!==r&&".."!==r||n.push(""),n.join("/")}(y.pathname,t.pathname)),"/"!==y.pathname.charAt(0)&&y.hostname&&(y.pathname="/"+y.pathname),o(y.port,y.protocol)||(y.host=y.hostname,y.port=""),y.username=y.password="",y.auth&&(l=y.auth.split(":"),y.username=l[0]||"",y.password=l[1]||""),y.origin=y.protocol&&y.host&&"file:"!==y.protocol?y.protocol+"//"+y.host:"null",y.href=y.toString()}f.prototype={set:function(e,t,n){var i=this;switch(e){case"query":"string"==typeof t&&t.length&&(t=(n||r.parse)(t)),i[e]=t;break;case"port":i[e]=t,o(t,i.protocol)?t&&(i.host=i.hostname+":"+t):(i.host=i.hostname,i[e]="");break;case"hostname":i[e]=t,i.port&&(t+=":"+i.port),i.host=t;break;case"host":i[e]=t,/:\d+$/.test(t)?(t=t.split(":"),i.port=t.pop(),i.hostname=t.join(":")):(i.hostname=t,i.port="");break;case"protocol":i.protocol=t.toLowerCase(),i.slashes=!n;break;case"pathname":case"hash":if(t){var a="pathname"===e?"/":"#";i[e]=t.charAt(0)!==a?a+t:t}else i[e]=t;break;default:i[e]=t}for(var s=0;s<c.length;s++){var u=c[s];u[4]&&(i[u[1]]=i[u[1]].toLowerCase())}return i.origin=i.protocol&&i.host&&"file:"!==i.protocol?i.protocol+"//"+i.host:"null",i.href=i.toString(),i},toString:function(e){e&&"function"==typeof e||(e=r.stringify);var t,n=this,o=n.protocol;o&&":"!==o.charAt(o.length-1)&&(o+=":");var i=o+(n.slashes?"//":"");return n.username&&(i+=n.username,n.password&&(i+=":"+n.password),i+="@"),i+=n.host+n.pathname,(t="object"==typeof n.query?e(n.query):n.query)&&(i+="?"!==t.charAt(0)?"?"+t:t),n.hash&&(i+=n.hash),i}},f.extractProtocol=p,f.location=d,f.trimLeft=u,f.qs=r,e.exports=f},64510:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseImage=void 0;const i=r(n(41594)),a=r(n(88443)),s=r(n(66323));function u(e){var{alt:t,className:n,fullWidth:r}=e,u=o(e,["alt","className","fullWidth"]);return i.default.createElement("img",Object.assign({"data-bit-id":"teambit.base-ui/elements/image",alt:t},u,{className:a.default(s.default.image,r&&s.default.fullWidth,n)}))}u.__bit_component={id:"teambit.base-ui/elements/image@1.0.0",homepage:"https://bit.dev/teambit/base-ui/elements/image",exported:!0},t.BaseImage=u},74643:function(e,t,n){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||o(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(64510),t)},23683:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.CenterColumn=void 0;const i=r(n(41594)),a=r(n(88443)),s=r(n(55255));function u(e){var{children:t,className:n}=e,r=o(e,["children","className"]);return i.default.createElement("div",Object.assign({className:(0,a.default)(s.default.centerColumn,n)},r),t)}u.__bit_component={id:"teambit.base-ui/layout/page-frame@1.0.2",homepage:"https://bit.dev/teambit/base-ui/layout/page-frame",exported:!0},t.CenterColumn=u},66609:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.CenterColumn=t.WideColumn=t.textColumn=t.wideColumn=t.centerColumn=void 0;const r=o(n(55255));t.centerColumn=r.default.centerColumn,t.wideColumn=r.default.wideColumn,t.textColumn=r.default.textColumn;var i=n(62565);Object.defineProperty(t,"WideColumn",{enumerable:!0,get:function(){return i.WideColumn}});var a=n(23683);Object.defineProperty(t,"CenterColumn",{enumerable:!0,get:function(){return a.CenterColumn}})},62565:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WideColumn=void 0;const i=r(n(41594)),a=r(n(88443)),s=r(n(55255));function u(e){var{children:t,className:n}=e,r=o(e,["children","className"]);return i.default.createElement("div",Object.assign({className:(0,a.default)(s.default.wideColumn,n)},r),t)}u.__bit_component={id:"teambit.base-ui/layout/page-frame@1.0.2",homepage:"https://bit.dev/teambit/base-ui/layout/page-frame",exported:!0},t.WideColumn=u},604:function(e,t,n){"use strict";var o={id:"teambit.base-ui/routing/compare-url@1.0.0",homepage:"https://bit.dev/teambit/base-ui/routing/compare-url",exported:!0},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.compareUrl=void 0;const i=r(n(67114));function a(e,t,{exact:n,strict:o}={}){if(e===t)return!0;o||(e=e.replace(/\/(?=[?#]|$)/,""),t=t.replace(/\/(?=[?#]|$)/,""));const r=i.default(e),a=i.default(t),l=s(r,a),d=!n||u(r,a),p=!o||c(r,a);return l&&d&&p}function s(e,t){return(!t.protocol||t.protocol===e.protocol)&&(!t.hostname||t.hostname===e.hostname)&&(!t.port||t.port===e.port)&&(!t.pathname||e.pathname.startsWith(t.pathname))&&(!t.query||l(t.query,e.query))&&(!t.hash||t.hash===e.hash)&&(!t.password||t.password===e.password)&&(!t.username||t.username===e.username)}function u(e,t){return(!t.pathname||e.pathname===t.pathname)&&(!t.query||l(e.query,t.query))}function c(e,t){return!t.pathname||e.pathname.endsWith("/")===t.pathname.endsWith("/")}function l(e,t){return Object.keys(e).every((n=>e[n]===t[n]))}a.__bit_component=o,t.compareUrl=a,s.__bit_component=o,u.__bit_component=o,c.__bit_component=o,l.__bit_component=o},66259:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.compareUrl=void 0;var o=n(604);Object.defineProperty(t,"compareUrl",{enumerable:!0,get:function(){return o.compareUrl}})},65103:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Link=void 0;var o=n(41355);Object.defineProperty(t,"Link",{enumerable:!0,get:function(){return o.Link}})},41355:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Link=void 0;const r=o(n(41594)),i=n(23823);function a(e){const t=i.useRouting().Link;return r.default.createElement(t,Object.assign({},e))}a.__bit_component={id:"teambit.base-ui/routing/link@1.0.0",homepage:"https://bit.dev/teambit/base-ui/routing/link",exported:!0},t.Link=a},8363:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NativeLink=void 0;var o=n(19637);Object.defineProperty(t,"NativeLink",{enumerable:!0,get:function(){return o.NativeLink}})},19637:function(e,t,n){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&o(t,e,n);return r(t,e),t},a=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n};Object.defineProperty(t,"__esModule",{value:!0}),t.NativeLink=void 0;const s=i(n(41594)),u={rel:"noopener",target:"_blank"};function c(e){var{href:t="",external:n,replace:o,onClick:r}=e,i=a(e,["href","external","replace","onClick"]);const c=n?u:{},l=s.useCallback((e=>{const i=null==r?void 0:r(e);return e.defaultPrevented||!o||n||(e.preventDefault(),window.location.replace(t)),i}),[t,o,r]);return s.default.createElement("a",Object.assign({},i,c,{onClick:l,href:t}))}c.__bit_component={id:"teambit.base-ui/routing/native-link@1.0.0",homepage:"https://bit.dev/teambit/base-ui/routing/native-link",exported:!0},t.NativeLink=c},13579:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NativeNavLink=void 0;var o=n(27037);Object.defineProperty(t,"NativeNavLink",{enumerable:!0,get:function(){return o.NativeNavLink}})},27037:function(e,t,n){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&o(t,e,n);return r(t,e),t},a=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.NativeNavLink=void 0;const u=i(n(41594)),c=s(n(88443)),l=n(8363),d=n(66259),p=n(22311);function f(e){var{activeClassName:t,activeStyle:n,isActive:o,exact:r,strict:i,style:s,className:f}=e,m=a(e,["activeClassName","activeStyle","isActive","exact","strict","style","className"]);const b=p.isBrowser?window.location.href:"/",_=u.useMemo((()=>m.href&&d.compareUrl(b,m.href)),[r,i,b,m.href]),h=(null==o?void 0:o())||_,y=u.useMemo((()=>h&&n?Object.assign(Object.assign({},s),n):s),[h,s]);return u.default.createElement(l.NativeLink,Object.assign({},m,{style:y,className:c.default(f,h&&t)}))}f.__bit_component={id:"teambit.base-ui/routing/native-nav-link@1.0.0",homepage:"https://bit.dev/teambit/base-ui/routing/native-nav-link",exported:!0},t.NativeNavLink=f},23823:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useLocation=t.useRouting=t.RoutingProvider=void 0;var o=n(34515);Object.defineProperty(t,"RoutingProvider",{enumerable:!0,get:function(){return o.RoutingProvider}}),Object.defineProperty(t,"useRouting",{enumerable:!0,get:function(){return o.useRouting}}),Object.defineProperty(t,"useLocation",{enumerable:!0,get:function(){return o.useLocation}})},34515:function(e,t,n){"use strict";var o={id:"teambit.base-ui/routing/routing-provider@1.0.0",homepage:"https://bit.dev/teambit/base-ui/routing/routing-provider",exported:!0},r=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.useLocation=t.useRouting=t.RoutingProvider=void 0;const s=a(n(41594)),u=n(8363),c=n(13579),l=n(22311),d={pathname:"/",search:"",hash:""},p={Link:u.NativeLink,NavLink:c.NativeNavLink,useLocation:()=>l.isBrowser?window.location:d},f=s.createContext(p);function m({value:e,children:t}){return s.default.createElement(f.Provider,{value:e},t)}function b(){return s.useContext(f)}function _(){return b().useLocation()}m.__bit_component=o,t.RoutingProvider=m,b.__bit_component=o,t.useRouting=b,_.__bit_component=o,t.useLocation=_},56395:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Heading=void 0;const i=r(n(41594));function a(e){var{element:t="h1"}=e,n=o(e,["element"]);const r=t;return i.default.createElement(r,Object.assign({"data-bit-id":"teambit.base-ui/text/heading"},n))}a.__bit_component={id:"teambit.base-ui/text/heading@1.0.4",homepage:"https://bit.dev/teambit/base-ui/text/heading",exported:!0},t.Heading=a},34801:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Heading=void 0;var o=n(56395);Object.defineProperty(t,"Heading",{enumerable:!0,get:function(){return o.Heading}})},22311:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isBrowser=void 0;var o=n(40858);Object.defineProperty(t,"isBrowser",{enumerable:!0,get:function(){return o.isBrowser}})},40858:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isBrowser=void 0,t.isBrowser="undefined"!=typeof window},62845:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.bitComponent=void 0;const r=o(n(41594)),i=n(8896),a=o(n(84100));t.bitComponent=[{id:"teambit.bit/bit",href:"https://bit.cloud/teambit/harmony/bit",description:"Bit is an open-source component for composing component driven software",envIcon:"https://static.bit.dev/extensions-icons/default.svg",preview:r.default.createElement("div",{className:a.default.logo},r.default.createElement(i.Logo,{customSize:64}))}]},96088:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WhatIsBitQuickStart=t.Size=t.WhatIsBit=t.default=t.WhatIsBitLong=void 0;var r=n(63066);Object.defineProperty(t,"WhatIsBitLong",{enumerable:!0,get:function(){return o(r).default}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o(r).default}});var i=n(29863);Object.defineProperty(t,"WhatIsBit",{enumerable:!0,get:function(){return i.WhatIsBit}}),Object.defineProperty(t,"Size",{enumerable:!0,get:function(){return i.Size}});var a=n(30972);Object.defineProperty(t,"WhatIsBitQuickStart",{enumerable:!0,get:function(){return a.WhatIsBitQuickStart}})},41219:(e,t,n)=>{"use strict";var o={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=p,a(n(41594));var r=n(5016),i=["components"];function a(e){return e&&e.__esModule?e:{default:e}}function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},s.apply(this,arguments)}function u(e,t){if(null==e)return{};var n,o,r=c(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function c(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}a.__bit_component=o,s.__bit_component=o,u.__bit_component=o,c.__bit_component=o;var l={},d="wrapper";function p(e){var t=e.components,n=u(e,i);return(0,r.mdx)(d,s({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("p",null,"Bit does not prescribe how to build your entire application. It helps you define and compose components and allows for every component to adopt the dev tools that best fit its nature.\nA React component is likely to be compiled, tested and perhaps even deployed using a composition of tools different than the one a backend-service component, or a generic function, may use.\nBit comes with native support in various dev tools like TypeScript, Babel, Jest, Webpack, ESLint, and ready made development environments for React, NodeJS, Angular and more. New tools can be easily integrated by adding one more component into Bit!"))}p.__bit_component=o,p.isMDXComponent=!0},40937:(e,t,n)=>{"use strict";var o={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=p,a(n(41594));var r=n(5016),i=["components"];function a(e){return e&&e.__esModule?e:{default:e}}function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},s.apply(this,arguments)}function u(e,t){if(null==e)return{};var n,o,r=c(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function c(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}a.__bit_component=o,s.__bit_component=o,u.__bit_component=o,c.__bit_component=o;var l={},d="wrapper";function p(e){var t=e.components,n=u(e,i);return(0,r.mdx)(d,s({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("p",null,"Bit does not prescribe how to build your entire application. It helps you define and compose components and allows for every component to adopt the dev tools that best fit its nature.\nA React component is likely to be compiled, tested and perhaps even deployed using a composition of tools different than the one a backend-service component, or a generic function, may use.\nBit comes with native support in various dev tools like TypeScript, Babel, Jest, Webpack, ESLint, and ready made development environments for React, NodeJS, Angular and more. New tools can be easily integrated by adding one more component into Bit!"))}p.__bit_component=o,p.isMDXComponent=!0},743:(e,t,n)=>{"use strict";var o={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=p,a(n(41594));var r=n(5016),i=["components"];function a(e){return e&&e.__esModule?e:{default:e}}function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},s.apply(this,arguments)}function u(e,t){if(null==e)return{};var n,o,r=c(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function c(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}a.__bit_component=o,s.__bit_component=o,u.__bit_component=o,c.__bit_component=o;var l={},d="wrapper";function p(e){var t=e.components,n=u(e,i);return(0,r.mdx)(d,s({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("h3",null,"What is Bit?"),(0,r.mdx)("p",null,"Bit is an open-source tool for composing component-driven software."))}p.__bit_component=o,p.isMDXComponent=!0},30972:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WhatIsBitQuickStart=void 0;const r=o(n(41594)),i=n(5540),a=n(66609),s=n(15447),u=o(n(40937)),c=o(n(41219)),l=o(n(743)),d=n(62845),p=o(n(61513)),f=()=>r.default.createElement(a.WideColumn,null,r.default.createElement(l.default,null),r.default.createElement(i.LeftRight,{className:p.default.leftRight,left:r.default.createElement(u.default,null),right:r.default.createElement(s.ComponentCardGroup,{components:d.bitComponent})}),r.default.createElement(c.default,null));f.__bit_component={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0},t.WhatIsBitQuickStart=f},20150:(e,t,n)=>{"use strict";var o={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=_,l(n(41594));var r=n(5016),i=n(15447),a=l(n(70896)),s=n(62845),u=l(n(84100)),c=["components"];function l(e){return e&&e.__esModule?e:{default:e}}function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},d.apply(this,arguments)}function p(e,t){if(null==e)return{};var n,o,r=f(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function f(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}l.__bit_component=o,d.__bit_component=o,p.__bit_component=o,f.__bit_component=o;var m={},b="wrapper";function _(e){var t=e.components,n=p(e,c);return(0,r.mdx)(b,d({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("p",null,"Bit is an open-source tool for composing component-driven software."),(0,r.mdx)(i.ComponentCardGroup,{components:s.bitComponent,className:u.default.bitCard,mdxType:"ComponentCardGroup"}),(0,r.mdx)("br",null),(0,r.mdx)(a.default,{components:s.bitComponent,mdxType:"WhatIsBitSmall"}),(0,r.mdx)("p",null,"Bit does not prescribe how to build your entire application. It helps you define and compose components and allows for every component to adopt the dev tools that best fit its nature.\nA React component is likely to be compiled, tested and perhaps even deployed using a composition of tools different than the one a backend-service component, or a generic function, may use.\nBit offers native support for various dev tools like ",(0,r.mdx)("a",{parentName:"p",href:"/tools/typescript"},"TypeScript"),", ",(0,r.mdx)("a",{parentName:"p",href:"/tools/babel"},"Babel"),", ",(0,r.mdx)("a",{parentName:"p",href:"/tools/jest"},"Jest"),", ",(0,r.mdx)("a",{parentName:"p",href:"/tools/webpack"},"Webpack"),", ",(0,r.mdx)("a",{parentName:"p",href:"/tools/eslint"},"ESLint")," and\nready made development environments for ",(0,r.mdx)("a",{parentName:"p",href:"/frameworks/react"},"React"),", ",(0,r.mdx)("a",{parentName:"p",href:"/frameworks/node"},"NodeJS"),", ",(0,r.mdx)("a",{parentName:"p",href:"/envs/angular"},"Angular")," and more. New tools can be easily integrated by\nextending Bit with one more component."))}_.__bit_component=o,_.isMDXComponent=!0},70896:(e,t,n)=>{"use strict";var o={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=p,a(n(41594));var r=n(5016),i=["components"];function a(e){return e&&e.__esModule?e:{default:e}}function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},s.apply(this,arguments)}function u(e,t){if(null==e)return{};var n,o,r=c(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function c(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}a.__bit_component=o,s.__bit_component=o,u.__bit_component=o,c.__bit_component=o;var l={},d="wrapper";function p(e){var t=e.components,n=u(e,i);return(0,r.mdx)(d,s({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("p",null,"Bit stands at the intersection between product and engineering. ",(0,r.mdx)("strong",{parentName:"p"},"It helps you take complex product requirements, and break them down into independent,\nand reusable pieces called")," ",(0,r.mdx)("strong",{parentName:"p"},(0,r.mdx)("em",{parentName:"strong"},'"components"')),". It allows you to create components and compose them with each other. Components are described by names and APIs, and contain source code implementation.\nThey can be of different kinds like apps, pages, UI components, backend services and even content. You can ",(0,r.mdx)("a",{parentName:"p",href:"/thinking-in-components"},"think of almost anything in components"),"."),(0,r.mdx)("p",null,'It is common to think of components that function as full applications, as "large", whereas components that function as simple elements, like a \'button\', as "small".\nFor us, both types of components are "the same size", but each has a different responsibility. An app is a very concrete component. It has many dependencies and just a few (if any) dependents.\nA button, on the other hand, is very abstract. It has just a few dependencies and many dependents. Having this sort of dependents-to-dependencies ratio indicates that a component is highly-reusable.'))}p.__bit_component=o,p.isMDXComponent=!0},29863:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WhatIsBit=t.Size=void 0;const r=o(n(41594)),i=o(n(63066)),a=o(n(20150)),s=o(n(70896));var u;function c({size:e}){return e===u.SMALL?r.default.createElement(s.default,null):e===u.MEDIUM?r.default.createElement(a.default,null):r.default.createElement(i.default,null)}!function(e){e[e.SMALL=0]="SMALL",e[e.MEDIUM=1]="MEDIUM",e[e.LARGE=2]="LARGE"}(u=t.Size||(t.Size={})),c.__bit_component={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0},t.WhatIsBit=c},63066:(e,t,n)=>{"use strict";var o={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=f,s(n(41594));var r=n(5016),i=s(n(20150)),a=["components"];function s(e){return e&&e.__esModule?e:{default:e}}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},u.apply(this,arguments)}function c(e,t){if(null==e)return{};var n,o,r=l(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function l(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}s.__bit_component=o,u.__bit_component=o,c.__bit_component=o,l.__bit_component=o;var d={},p="wrapper";function f(e){var t=e.components,n=c(e,a);return(0,r.mdx)(p,u({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("h3",null,"What is Bit?"),(0,r.mdx)(i.default,{mdxType:"WhatIsBitShort"}),(0,r.mdx)("h3",null,"What can you do with Bit?"),(0,r.mdx)("p",null,"Anything is possible with Bit! We built ",(0,r.mdx)("a",{parentName:"p",href:"https://bit.dev"},"Bit")," and ",(0,r.mdx)("a",{parentName:"p",href:"https://bit.cloud"},"bit.cloud")," entirely using Bit. These are complex systems which includes infrastructure\ntools, cloud products and multiple user interfaces."),(0,r.mdx)("p",null,"People use Bit to create all kind of applications, from user interfaces with component-driven frameworks like React, Vue and Angular, to complex\nmicro-service architectures, serverless functions, CLI utilities, desktop applications, native mobile applications and even IoT. You can do with Bit about anything you can do with JS\nand even beyond."),(0,r.mdx)("h3",null,"What Bit supports?"),(0,r.mdx)("p",null,"Bit was built with TypeScript and supports it natively. It was designed to be language-agnostic, and will support other software languages in the future! For now, our development environments use TypeScript as the default compiler for JS and TS components. You can easily switch to Babel or any other compiler. Bit is completely agnostic to your tech stack."))}f.__bit_component=o,f.isMDXComponent=!0},8896:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Logo:()=>c,RecommendedSizes:()=>o});var o,r=n(41594),i=n.n(r),a=n(74643);!function(e){e[e.small=16]="small",e[e.medium=24]="medium",e[e.large=32]="large",e[e.xl=40]="xl"}(o||(o={}));const s=new URL(n(59132),n.b).toString();var u=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n};function c(e){var{size:t,customSize:n,alt:o}=e,r=u(e,["size","customSize","alt"]);const c=n||t;return i().createElement(a.BaseImage,Object.assign({},r,{src:s,alt:o||"",height:c,width:c}))}c.__bit_component={id:"teambit.design/ui/brand/logo@1.96.2",homepage:"https://bit.dev/teambit/design/ui/brand/logo",exported:!0},c.defaultProps={size:o.medium,alt:"Bit"}},5754:function(e,t,n){"use strict";var o={id:"teambit.design/ui/heading@1.0.16",homepage:"https://bit.dev/teambit/design/ui/heading",exported:!0},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.H6=t.H5=t.H4=t.H3=t.H2=t.H1=void 0;const i=r(n(41594)),a=r(n(88443)),s=n(34801),u=r(n(81606)),c=r(n(43271)),l=r(n(11e3));function d(e){return i.default.createElement(s.Heading,Object.assign({element:"h1"},e,{className:(0,a.default)(c.default.h1,l.default.h1,u.default[e.size||"lg"],e.className)}))}function p(e){return i.default.createElement(s.Heading,Object.assign({element:"h2"},e,{className:(0,a.default)(c.default.h2,u.default[e.size||"lg"],e.className)}))}function f(e){return i.default.createElement(s.Heading,Object.assign({element:"h3"},e,{className:(0,a.default)(c.default.h3,u.default[e.size||"md"],e.className)}))}function m(e){return i.default.createElement(s.Heading,Object.assign({element:"h4"},e,{className:(0,a.default)(c.default.h4,u.default[e.size||"sm"],e.className)}))}function b(e){return i.default.createElement(s.Heading,Object.assign({element:"h5"},e,{className:(0,a.default)(c.default.h5,u.default[e.size||"xs"],e.className)}))}function _(e){return i.default.createElement(s.Heading,Object.assign({element:"h6"},e,{className:(0,a.default)(c.default.h6,u.default[e.size||"xxs"],e.className)}))}d.__bit_component=o,t.H1=d,p.__bit_component=o,t.H2=p,f.__bit_component=o,t.H3=f,m.__bit_component=o,t.H4=m,b.__bit_component=o,t.H5=b,_.__bit_component=o,t.H6=_},20900:function(e,t,n){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||o(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(5754),t)},5540:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LeftRight:()=>c});var o=n(41594),r=n.n(o),i=n(69685),a=n.n(i);const s={leftRight:"left-right_leftRight__JE-Eu"};var u=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n};function c(e){var{left:t,right:n}=e,o=u(e,["left","right"]);return r().createElement("section",Object.assign({},o,{className:a()(s.leftRight,o.className)}),r().createElement("div",null,t),r().createElement("div",null,n))}c.__bit_component={id:"teambit.design/ui/layouts/sections/left-right@1.96.2",homepage:"https://bit.dev/teambit/design/ui/layouts/sections/left-right",exported:!0}},6447:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Ellipsis=void 0;const r=o(n(41594)),i=o(n(88443)),a=o(n(15140));function s(e){return r.default.createElement("div",Object.assign({},e,{className:(0,i.default)(e.className,a.default.ellipsisDiv)}))}s.__bit_component={id:"teambit.design/ui/styles/ellipsis@0.0.347",homepage:"https://bit.dev/teambit/design/ui/styles/ellipsis",exported:!0},t.Ellipsis=s},86882:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Ellipsis=t.ellipsis=void 0;const r=o(n(15140));t.ellipsis=r.default.ellipsis;var i=n(6447);Object.defineProperty(t,"Ellipsis",{enumerable:!0,get:function(){return i.Ellipsis}})},20395:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseComponentCard=void 0;const r=o(n(41594)),i=n(16266),a=n(84312),s=n(2906),u=n(36706);function c({id:e="",className:t,preview:n,version:o,description:c,isDeprecated:l,isVerified:d,children:p,contentClass:f}){return r.default.createElement(u.Card,{className:t},r.default.createElement(a.DeprecationSticker,{isDeprecated:l}),r.default.createElement(i.PreviewContainer,{preview:n}),r.default.createElement(s.ComponentDetails,{id:e,version:o,description:c,isVerified:d,className:f}),p)}c.__bit_component={id:"teambit.explorer/ui/gallery/base-component-card@0.0.492",homepage:"https://bit.dev/teambit/explorer/ui/gallery/base-component-card",exported:!0},t.BaseComponentCard=c},59086:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Card=void 0;const r=o(n(41594)),i=o(n(88443)),a=o(n(99035));function s({children:e,className:t}){return r.default.createElement("div",{className:(0,i.default)(a.default.componentCard,t)},e)}s.__bit_component={id:"teambit.explorer/ui/gallery/base-component-card@0.0.492",homepage:"https://bit.dev/teambit/explorer/ui/gallery/base-component-card",exported:!0},t.Card=s},36706:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Card=void 0;var o=n(59086);Object.defineProperty(t,"Card",{enumerable:!0,get:function(){return o.Card}})},71284:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.DeprecationSticker=void 0;const r=o(n(41594)),i=o(n(88443)),a=o(n(68533));function s({isDeprecated:e}){return r.default.createElement("div",{className:(0,i.default)(a.default.deprecated,{[a.default.show]:e})},"deprecated")}s.__bit_component={id:"teambit.explorer/ui/gallery/base-component-card@0.0.492",homepage:"https://bit.dev/teambit/explorer/ui/gallery/base-component-card",exported:!0},t.DeprecationSticker=s},84312:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeprecationSticker=void 0;var o=n(71284);Object.defineProperty(t,"DeprecationSticker",{enumerable:!0,get:function(){return o.DeprecationSticker}})},94776:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ComponentDetails=void 0;const i=r(n(41594)),a=r(n(88443)),s=n(54357),u=n(86882),c=r(n(95817));function l(e){var{id:t,version:n,description:r,isVerified:l,className:d}=e,p=o(e,["id","version","description","isVerified","className"]);const f=t.split("/"),m=f.length>1&&f.slice(0,-1).join(" / "),b=f.slice(-1);return i.default.createElement("div",Object.assign({},p,{className:(0,a.default)(c.default.content,d)}),i.default.createElement("div",null,i.default.createElement("div",{className:c.default.nameSpace},m),i.default.createElement("div",{className:c.default.name},i.default.createElement("span",null,b),i.default.createElement("div",{className:c.default.versionHolder},n&&i.default.createElement(u.Ellipsis,null,"v",n),l&&i.default.createElement("img",{src:"https://static.bit.dev/extensions-icons/verified-field-badge.svg",className:c.default.img}))),i.default.createElement("div",{className:c.default.description},(0,s.ellipsis)(r||"",50))))}l.__bit_component={id:"teambit.explorer/ui/gallery/base-component-card@0.0.492",homepage:"https://bit.dev/teambit/explorer/ui/gallery/base-component-card",exported:!0},t.ComponentDetails=l},2906:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ComponentDetails=void 0;var o=n(94776);Object.defineProperty(t,"ComponentDetails",{enumerable:!0,get:function(){return o.ComponentDetails}})},55163:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PreviewContainer=t.ComponentDetails=t.DeprecationSticker=t.Card=t.BaseComponentCard=void 0;var o=n(20395);Object.defineProperty(t,"BaseComponentCard",{enumerable:!0,get:function(){return o.BaseComponentCard}});var r=n(36706);Object.defineProperty(t,"Card",{enumerable:!0,get:function(){return r.Card}});var i=n(84312);Object.defineProperty(t,"DeprecationSticker",{enumerable:!0,get:function(){return i.DeprecationSticker}});var a=n(2906);Object.defineProperty(t,"ComponentDetails",{enumerable:!0,get:function(){return a.ComponentDetails}});var s=n(16266);Object.defineProperty(t,"PreviewContainer",{enumerable:!0,get:function(){return s.PreviewContainer}})},16266:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PreviewContainer=void 0;var o=n(84396);Object.defineProperty(t,"PreviewContainer",{enumerable:!0,get:function(){return o.PreviewContainer}})},84396:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.PreviewContainer=void 0;const i=r(n(41594)),a=r(n(88443)),s=r(n(27917));function u(e){var{preview:t,className:n}=e,r=o(e,["preview","className"]);return i.default.createElement("div",Object.assign({},r,{className:(0,a.default)(s.default.previewContainer,n)}),i.default.createElement("div",{className:(0,a.default)(s.default.preview,{[s.default.emptyPreview]:!t})},t))}u.__bit_component={id:"teambit.explorer/ui/gallery/base-component-card@0.0.492",homepage:"https://bit.dev/teambit/explorer/ui/gallery/base-component-card",exported:!0},t.PreviewContainer=u},37833:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ComponentCardGroup=void 0;const i=r(n(41594)),a=n(20900),s=n(67164),u=n(71312);function c(e){var{title:t,components:n}=e,r=o(e,["title","components"]);return i.default.createElement("div",Object.assign({},r),t&&i.default.createElement(a.H2,null,t),i.default.createElement(s.ComponentGrid,null,n.map((e=>i.default.createElement(u.ComponentCard,Object.assign({key:e.id},e))))))}c.__bit_component={id:"teambit.explorer/ui/gallery/component-card-group@1.96.1",homepage:"https://bit.dev/teambit/explorer/ui/gallery/component-card-group",exported:!0},t.ComponentCardGroup=c},15447:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ComponentCardGroup=void 0;var o=n(37833);Object.defineProperty(t,"ComponentCardGroup",{enumerable:!0,get:function(){return o.ComponentCardGroup}})},67922:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ComponentCard=void 0;const r=o(n(41594)),i=n(65103),a=n(55163),s=o(n(50111));function u({id:e="",className:t,preview:n,version:o,description:u,envIcon:c,isDeprecated:l=!1,href:d,external:p}){return r.default.createElement(a.Card,{className:t},r.default.createElement(i.Link,{className:s.default.componentCardLink,href:d||e,external:p},r.default.createElement(a.DeprecationSticker,{isDeprecated:l}),r.default.createElement(a.PreviewContainer,{preview:n}),r.default.createElement(a.ComponentDetails,{id:e,version:o,description:u,className:s.default.content}),r.default.createElement("div",{className:s.default.bottom},r.default.createElement("div",{className:s.default.left}),r.default.createElement("img",{src:c,className:s.default.img}))))}u.__bit_component={id:"teambit.explorer/ui/gallery/component-card@0.0.495",homepage:"https://bit.dev/teambit/explorer/ui/gallery/component-card",exported:!0},t.ComponentCard=u},71312:function(e,t,n){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||o(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(67922),t)},44364:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ComponentGrid=void 0;const i=r(n(41594)),a=r(n(88443)),s=r(n(18389));function u(e){var{children:t,className:n}=e,r=o(e,["children","className"]);return i.default.createElement("div",Object.assign({className:(0,a.default)(s.default.componentGrid,n)},r),t)}u.__bit_component={id:"teambit.explorer/ui/gallery/component-grid@0.0.486",homepage:"https://bit.dev/teambit/explorer/ui/gallery/component-grid",exported:!0},t.ComponentGrid=u},67164:function(e,t,n){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||o(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(44364),t)},26898:(e,t)=>{"use strict";function n(e,t){return e.length>t?`${e.substring(0,t)}...`:e}Object.defineProperty(t,"__esModule",{value:!0}),t.ellipsis=void 0,n.__bit_component={id:"teambit.toolbox/string/ellipsis@0.0.173",homepage:"https://bit.dev/teambit/toolbox/string/ellipsis",exported:!0},t.ellipsis=n},54357:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ellipsis=void 0;var o=n(26898);Object.defineProperty(t,"ellipsis",{enumerable:!0,get:function(){return o.ellipsis}})},55224:(e,t,n)=>{"use strict";var o={id:"teambit.harmony/bit@1.8.82",homepage:"https://bit.cloud/teambit/harmony/bit",exported:!0};function r(){const e=a(n(41594));return r=function(){return e},e}function i(){const e=n(8896);return i=function(){return e},e}function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.BitLogo=void 0,r.__bit_component=o,i.__bit_component=o,a.__bit_component=o;const s=()=>r().default.createElement("div",{style:{width:"50%",margin:"auto"}},r().default.createElement(i().Logo,{customSize:64}));s.__bit_component=o,t.BitLogo=s},20644:(e,t,n)=>{"use strict";var o={id:"teambit.harmony/bit@1.8.82",homepage:"https://bit.cloud/teambit/harmony/bit",exported:!0};function r(){const e=a(n(41594));return r=function(){return e},e}function i(){const e=n(96088);return i=function(){return e},e}function a(e){return e&&e.__esModule?e:{default:e}}function s(){return r().default.createElement(i().WhatIsBit,null)}Object.defineProperty(t,"__esModule",{value:!0}),t.abstract=void 0,t.default=s,t.tags=void 0,r.__bit_component=o,i.__bit_component=o,a.__bit_component=o,t.tags=["components","software","composable","component-driven","collaboration","development","design","product","architecture","compounding"],t.abstract="Bit is an open source toolchain for component-driven software",s.__bit_component=o},66323:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={fullWidth:"image_fullWidth__sELLz"}},55255:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={centerColumn:"page-frame_centerColumn__XBa-t",wideColumn:"page-frame_wideColumn__NAkt5",textColumn:"page-frame_textColumn__UPfoU"}},61513:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={}},84100:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={bitCard:"what-is-bit_bitCard__6HJgs",logo:"what-is-bit_logo__xM-ZV"}},81606:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={xxs:"heading-sizes_xxs__SWEOY",xs:"heading-sizes_xs__Hy8ol",sm:"heading-sizes_sm__tI7SK",md:"heading-sizes_md__joonV",lg:"heading-sizes_lg__Ltd1S",xl:"heading-sizes_xl__HDfIw",xxl:"heading-sizes_xxl__cFNob"}},43271:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={h1:"heading_h1__nOnz4",h2:"heading_h2__uEyK2",h3:"heading_h3__HdM7Z",h4:"heading_h4__v8USx",h5:"heading_h5__6jcVl",h6:"heading_h6__k7dDb"}},11e3:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={h1:"margins_h1__e8-sd"}},15140:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={ellipsis:"ellipsis_ellipsis__C8hJ8",ellipsisDiv:"ellipsis_ellipsisDiv__9Db5W"}},99035:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={componentCard:"card_componentCard__Ak9CZ"}},68533:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={deprecated:"deprecation-sticker_deprecated__mKzkW",show:"deprecation-sticker_show__3kEmz"}},95817:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={content:"details_content__ifC+P",nameSpace:"details_nameSpace__5bRzq",name:"details_name__znUu1",versionHolder:"details_versionHolder__9dygA",img:"details_img__MjuDx",description:"details_description__PPRv6"}},27917:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={previewContainer:"preview-container_previewContainer__hrQXX",preview:"preview-container_preview__zRjHm",emptyPreview:"preview-container_emptyPreview__YnS1o"}},50111:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={componentCardLink:"component-card_componentCardLink__Q4l2Z",bottom:"component-card_bottom__kipWC",size:"component-card_size__zZUte",dot:"component-card_dot__FksAd",img:"component-card_img__l5R9+"}},18389:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={componentGrid:"component-grid_componentGrid__pGx6B"}},59132:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzU0IiBoZWlnaHQ9IjM1NCIgdmlld0JveD0iMCAwIDM1NCAzNTQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xNzcgMzQ4QzI3MS40NDEgMzQ4IDM0OCAyNzEuNDQxIDM0OCAxNzdDMzQ4IDgyLjU1OTMgMjcxLjQ0MSA2IDE3NyA2QzgyLjU1OTMgNiA2IDgyLjU1OTMgNiAxNzdDNiAyNzEuNDQxIDgyLjU1OTMgMzQ4IDE3NyAzNDhaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXIpIiBzdHJva2U9IiM3QjcwQjYiIHN0cm9rZS13aWR0aD0iMTIiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNjEuMjY1IDE5MS43MDlDMTYxLjI2NSAyMDkuNzI3IDE1MC41MjggMjIxLjMyOCAxMzEuMjc1IDIyMS4zMjhDMTI0LjM2NCAyMjEuMzI4IDExNy45NDcgMjE5Ljk3MSAxMTMuMDEgMjE3LjEzMkMxMDcuMzMzIDIxMy45MjMgMTA3LjMzMyAyMDkuODUxIDEwNy4zMzMgMjA1LjY1NVYxNDMuMzMxQzEwNy4zMzMgMTM4Ljg4OCAxMTAuMDQ4IDEzNi42NjcgMTE1LjYwMiAxMzYuNjY3QzEyMS4xNTUgMTM2LjY2NyAxMjMuODcgMTM4Ljg4OCAxMjMuODcgMTQzLjMzMVYxNjcuMDI2QzEyNi45NTYgMTY0LjkyOCAxMzEuMDI4IDE2My45NDEgMTM1LjcxOCAxNjMuOTQxQzE1MC43NzQgMTYzLjk0MSAxNjEuMjY1IDE3My45MzggMTYxLjI2NSAxOTEuNzA5Wk0xMjMuODcgMjA2LjE0OEMxMjUuOTY4IDIwNy4zODIgMTI4LjU2IDIwOCAxMzEuMzk5IDIwOEMxMzkuNDIgMjA4IDE0NC4zNTcgMjAyLjU2OSAxNDQuMzU3IDE5Mi44MkMxNDQuMzU3IDE4Mi45NDcgMTM5LjI5NyAxNzcuMjcgMTMxLjY0NSAxNzcuMjdDMTI4LjY4NCAxNzcuMjcgMTI1Ljk2OCAxNzguMTM0IDEyMy44NyAxNzkuNzM4VjIwNi4xNDhaTTE5Mi4xOCAxNDcuNjUxQzE5Mi4xOCAxNTMuMzI4IDE4OC4xMDcgMTU3LjI3NyAxODIuNDMgMTU3LjI3N0MxNzYuNzUzIDE1Ny4yNzcgMTcyLjY4IDE1My4zMjggMTcyLjY4IDE0Ny42NTFDMTcyLjY4IDE0MS45NzQgMTc2Ljc1MyAxMzguMTQ4IDE4Mi40MyAxMzguMTQ4QzE4OC4xMDcgMTM4LjE0OCAxOTIuMTggMTQxLjk3NCAxOTIuMTggMTQ3LjY1MVpNMTkwLjY5OSAxNzAuNjA1VjIxNC40MTdDMTkwLjY5OSAyMTguODYgMTg3Ljk4MyAyMjEuMDgxIDE4Mi40MyAyMjEuMDgxQzE3Ni44NzYgMjIxLjA4MSAxNzQuMTYxIDIxOC44NiAxNzQuMTYxIDIxNC40MTdWMTcwLjYwNUMxNzQuMTYxIDE2Ni4xNjMgMTc2Ljg3NiAxNjMuOTQxIDE4Mi40MyAxNjMuOTQxQzE4Ny45ODMgMTYzLjk0MSAxOTAuNjk5IDE2Ni4xNjMgMTkwLjY5OSAxNzAuNjA1Wk0yNDAuNzQzIDIwNi4yNzJDMjQ1LjMwOSAyMDYuMjcyIDI0Ni42NjYgMjExLjA4NSAyNDYuNjY2IDIxMy44QzI0Ni42NjYgMjE1LjUyOCAyNDYuMDQ5IDIxNy4yNTYgMjQzLjcwNCAyMTguNjEzQzI0MC45ODkgMjIwLjIxNyAyMzYuMyAyMjEuMzI4IDIzMS40ODcgMjIxLjMyOEMyMjIuNjAxIDIyMS4zMjggMjE3LjI5NCAyMTcuNzQ5IDIxNC41NzkgMjEyLjgxM0MyMTIuMTExIDIwOC4zNyAyMTEuODY0IDIwMy4wNjMgMjExLjg2NCAxOTcuMzg2VjE3OC44NzRIMjA3LjU0NEMyMDMuMTAyIDE3OC44NzQgMjAwLjg4IDE3Ni42NTMgMjAwLjg4IDE3MS45NjNDMjAwLjg4IDE2Ny4yNzMgMjAzLjEwMiAxNjUuMDUyIDIwNy41NDQgMTY1LjA1MkgyMTEuODY0VjE1NC4xOTFDMjExLjg2NCAxNDkuNzQ5IDIxNC41NzkgMTQ3LjUyNyAyMjAuMTMzIDE0Ny41MjdDMjI1LjY4NiAxNDcuNTI3IDIyOC40MDEgMTQ5Ljc0OSAyMjguNDAxIDE1NC4xOTFWMTY1LjA1MkgyMzguNzY4QzI0My4yMTEgMTY1LjA1MiAyNDUuNDMyIDE2Ny4yNzMgMjQ1LjQzMiAxNzEuOTYzQzI0NS40MzIgMTc2LjY1MyAyNDMuMjExIDE3OC44NzQgMjM4Ljc2OCAxNzguODc0SDIyOC40MDFWMTk3LjM4NkMyMjguNDAxIDE5OS42MDcgMjI4LjQwMSAyMDIuODE2IDIyOS41MTIgMjA0LjkxNEMyMzAuMzc2IDIwNi42NDIgMjMxLjk4IDIwNy4zODMgMjM0LjA3OCAyMDcuMzgzQzIzNS40MzYgMjA3LjM4MyAyMzYuNzkzIDIwNy4wMTIgMjM3LjkwNCAyMDYuNzY1QzIzOC44OTEgMjA2LjUxOSAyMzkuNzU1IDIwNi4yNzIgMjQwLjc0MyAyMDYuMjcyWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTExOCA1MkM4OC45MTI5IDY0LjY1ODEgNjUuNTgyNCA4Ny45ODA1IDUzIDExNyIgc3Ryb2tlPSIjN0I3MEI2IiBzdHJva2Utd2lkdGg9IjEyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhciIgeDE9IjE3NyIgeTE9IjEyIiB4Mj0iMTc3IiB5Mj0iMzM4Ljc5NiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjNzMzOThEIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzU5NEE5NSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo="},5016:e=>{"use strict";e.exports=MdxJsReact},41594:e=>{"use strict";e.exports=React}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o].call(i.exports,i,i.exports,n),i.exports}n.m=e,n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.b=document.baseURI||self.location.href;var o={};return(()=>{"use strict";n.r(o),n.d(o,{compositions:()=>r,compositions_metadata:()=>a,overview:()=>i});var e=n(55224),t=n(20644);const r=[e],i=[t],a={compositions:[{displayName:"Bit logo",identifier:"BitLogo"}]}})(),o})()));
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["teambit.harmony/bit-preview"]=t():e["teambit.harmony/bit-preview"]=t()}(self,(()=>(()=>{var e={88443:(e,t)=>{var n;!function(){"use strict";var o={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var i=typeof n;if("string"===i||"number"===i)e.push(n);else if(Array.isArray(n)&&n.length){var a=r.apply(null,n);a&&e.push(a)}else if("object"===i)for(var s in n)o.call(n,s)&&n[s]&&e.push(s)}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(n=function(){return r}.apply(t,[]))||(e.exports=n)}()},69685:(e,t)=>{var n;!function(){"use strict";var o={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var i=typeof n;if("string"===i||"number"===i)e.push(n);else if(Array.isArray(n)){if(n.length){var a=r.apply(null,n);a&&e.push(a)}}else if("object"===i)if(n.toString===Object.prototype.toString)for(var s in n)o.call(n,s)&&n[s]&&e.push(s);else e.push(n.toString())}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(n=function(){return r}.apply(t,[]))||(e.exports=n)}()},84949:(e,t)=>{"use strict";var n=Object.prototype.hasOwnProperty;function o(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function r(e){try{return encodeURIComponent(e)}catch(e){return null}}t.stringify=function(e,t){t=t||"";var o,i,a=[];for(i in"string"!=typeof t&&(t="?"),e)if(n.call(e,i)){if((o=e[i])||null!=o&&!isNaN(o)||(o=""),i=r(i),o=r(o),null===i||null===o)continue;a.push(i+"="+o)}return a.length?t+a.join("&"):""},t.parse=function(e){for(var t,n=/([^=?#&]+)=?([^&]*)/g,r={};t=n.exec(e);){var i=o(t[1]),a=o(t[2]);null===i||null===a||i in r||(r[i]=a)}return r}},91788:e=>{"use strict";e.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},67114:(e,t,n)=>{"use strict";var o=n(91788),r=n(84949),i=/^[A-Za-z][A-Za-z0-9+-.]*:[\\/]+/,a=/^([a-z][a-z0-9.+-]*:)?([\\/]{1,})?([\S\s]*)/i,s=new RegExp("^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+");function u(e){return(e||"").toString().replace(s,"")}var c=[["#","hash"],["?","query"],function(e){return e.replace("\\","/")},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d+)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],l={hash:1,query:1};function d(e){var t,o=("undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{}).location||{},r={},a=typeof(e=e||o);if("blob:"===e.protocol)r=new f(unescape(e.pathname),{});else if("string"===a)for(t in r=new f(e,{}),l)delete r[t];else if("object"===a){for(t in e)t in l||(r[t]=e[t]);void 0===r.slashes&&(r.slashes=i.test(e.href))}return r}function p(e){e=u(e);var t=a.exec(e);return{protocol:t[1]?t[1].toLowerCase():"",slashes:!!(t[2]&&t[2].length>=2),rest:t[2]&&1===t[2].length?"/"+t[3]:t[3]}}function f(e,t,n){if(e=u(e),!(this instanceof f))return new f(e,t,n);var i,a,s,l,m,b,_=c.slice(),h=typeof t,y=this,v=0;for("object"!==h&&"string"!==h&&(n=t,t=null),n&&"function"!=typeof n&&(n=r.parse),t=d(t),i=!(a=p(e||"")).protocol&&!a.slashes,y.slashes=a.slashes||i&&t.slashes,y.protocol=a.protocol||t.protocol||"",e=a.rest,a.slashes||(_[3]=[/(.*)/,"pathname"]);v<_.length;v++)"function"!=typeof(l=_[v])?(s=l[0],b=l[1],s!=s?y[b]=e:"string"==typeof s?~(m=e.indexOf(s))&&("number"==typeof l[2]?(y[b]=e.slice(0,m),e=e.slice(m+l[2])):(y[b]=e.slice(m),e=e.slice(0,m))):(m=s.exec(e))&&(y[b]=m[1],e=e.slice(0,m.index)),y[b]=y[b]||i&&l[3]&&t[b]||"",l[4]&&(y[b]=y[b].toLowerCase())):e=l(e);n&&(y.query=n(y.query)),i&&t.slashes&&"/"!==y.pathname.charAt(0)&&(""!==y.pathname||""!==t.pathname)&&(y.pathname=function(e,t){if(""===e)return t;for(var n=(t||"/").split("/").slice(0,-1).concat(e.split("/")),o=n.length,r=n[o-1],i=!1,a=0;o--;)"."===n[o]?n.splice(o,1):".."===n[o]?(n.splice(o,1),a++):a&&(0===o&&(i=!0),n.splice(o,1),a--);return i&&n.unshift(""),"."!==r&&".."!==r||n.push(""),n.join("/")}(y.pathname,t.pathname)),"/"!==y.pathname.charAt(0)&&y.hostname&&(y.pathname="/"+y.pathname),o(y.port,y.protocol)||(y.host=y.hostname,y.port=""),y.username=y.password="",y.auth&&(l=y.auth.split(":"),y.username=l[0]||"",y.password=l[1]||""),y.origin=y.protocol&&y.host&&"file:"!==y.protocol?y.protocol+"//"+y.host:"null",y.href=y.toString()}f.prototype={set:function(e,t,n){var i=this;switch(e){case"query":"string"==typeof t&&t.length&&(t=(n||r.parse)(t)),i[e]=t;break;case"port":i[e]=t,o(t,i.protocol)?t&&(i.host=i.hostname+":"+t):(i.host=i.hostname,i[e]="");break;case"hostname":i[e]=t,i.port&&(t+=":"+i.port),i.host=t;break;case"host":i[e]=t,/:\d+$/.test(t)?(t=t.split(":"),i.port=t.pop(),i.hostname=t.join(":")):(i.hostname=t,i.port="");break;case"protocol":i.protocol=t.toLowerCase(),i.slashes=!n;break;case"pathname":case"hash":if(t){var a="pathname"===e?"/":"#";i[e]=t.charAt(0)!==a?a+t:t}else i[e]=t;break;default:i[e]=t}for(var s=0;s<c.length;s++){var u=c[s];u[4]&&(i[u[1]]=i[u[1]].toLowerCase())}return i.origin=i.protocol&&i.host&&"file:"!==i.protocol?i.protocol+"//"+i.host:"null",i.href=i.toString(),i},toString:function(e){e&&"function"==typeof e||(e=r.stringify);var t,n=this,o=n.protocol;o&&":"!==o.charAt(o.length-1)&&(o+=":");var i=o+(n.slashes?"//":"");return n.username&&(i+=n.username,n.password&&(i+=":"+n.password),i+="@"),i+=n.host+n.pathname,(t="object"==typeof n.query?e(n.query):n.query)&&(i+="?"!==t.charAt(0)?"?"+t:t),n.hash&&(i+=n.hash),i}},f.extractProtocol=p,f.location=d,f.trimLeft=u,f.qs=r,e.exports=f},64510:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseImage=void 0;const i=r(n(41594)),a=r(n(88443)),s=r(n(66323));function u(e){var{alt:t,className:n,fullWidth:r}=e,u=o(e,["alt","className","fullWidth"]);return i.default.createElement("img",Object.assign({"data-bit-id":"teambit.base-ui/elements/image",alt:t},u,{className:a.default(s.default.image,r&&s.default.fullWidth,n)}))}u.__bit_component={id:"teambit.base-ui/elements/image@1.0.0",homepage:"https://bit.dev/teambit/base-ui/elements/image",exported:!0},t.BaseImage=u},74643:function(e,t,n){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||o(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(64510),t)},23683:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.CenterColumn=void 0;const i=r(n(41594)),a=r(n(88443)),s=r(n(55255));function u(e){var{children:t,className:n}=e,r=o(e,["children","className"]);return i.default.createElement("div",Object.assign({className:(0,a.default)(s.default.centerColumn,n)},r),t)}u.__bit_component={id:"teambit.base-ui/layout/page-frame@1.0.2",homepage:"https://bit.dev/teambit/base-ui/layout/page-frame",exported:!0},t.CenterColumn=u},66609:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.CenterColumn=t.WideColumn=t.textColumn=t.wideColumn=t.centerColumn=void 0;const r=o(n(55255));t.centerColumn=r.default.centerColumn,t.wideColumn=r.default.wideColumn,t.textColumn=r.default.textColumn;var i=n(62565);Object.defineProperty(t,"WideColumn",{enumerable:!0,get:function(){return i.WideColumn}});var a=n(23683);Object.defineProperty(t,"CenterColumn",{enumerable:!0,get:function(){return a.CenterColumn}})},62565:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WideColumn=void 0;const i=r(n(41594)),a=r(n(88443)),s=r(n(55255));function u(e){var{children:t,className:n}=e,r=o(e,["children","className"]);return i.default.createElement("div",Object.assign({className:(0,a.default)(s.default.wideColumn,n)},r),t)}u.__bit_component={id:"teambit.base-ui/layout/page-frame@1.0.2",homepage:"https://bit.dev/teambit/base-ui/layout/page-frame",exported:!0},t.WideColumn=u},604:function(e,t,n){"use strict";var o={id:"teambit.base-ui/routing/compare-url@1.0.0",homepage:"https://bit.dev/teambit/base-ui/routing/compare-url",exported:!0},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.compareUrl=void 0;const i=r(n(67114));function a(e,t,{exact:n,strict:o}={}){if(e===t)return!0;o||(e=e.replace(/\/(?=[?#]|$)/,""),t=t.replace(/\/(?=[?#]|$)/,""));const r=i.default(e),a=i.default(t),l=s(r,a),d=!n||u(r,a),p=!o||c(r,a);return l&&d&&p}function s(e,t){return(!t.protocol||t.protocol===e.protocol)&&(!t.hostname||t.hostname===e.hostname)&&(!t.port||t.port===e.port)&&(!t.pathname||e.pathname.startsWith(t.pathname))&&(!t.query||l(t.query,e.query))&&(!t.hash||t.hash===e.hash)&&(!t.password||t.password===e.password)&&(!t.username||t.username===e.username)}function u(e,t){return(!t.pathname||e.pathname===t.pathname)&&(!t.query||l(e.query,t.query))}function c(e,t){return!t.pathname||e.pathname.endsWith("/")===t.pathname.endsWith("/")}function l(e,t){return Object.keys(e).every((n=>e[n]===t[n]))}a.__bit_component=o,t.compareUrl=a,s.__bit_component=o,u.__bit_component=o,c.__bit_component=o,l.__bit_component=o},66259:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.compareUrl=void 0;var o=n(604);Object.defineProperty(t,"compareUrl",{enumerable:!0,get:function(){return o.compareUrl}})},65103:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Link=void 0;var o=n(41355);Object.defineProperty(t,"Link",{enumerable:!0,get:function(){return o.Link}})},41355:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Link=void 0;const r=o(n(41594)),i=n(23823);function a(e){const t=i.useRouting().Link;return r.default.createElement(t,Object.assign({},e))}a.__bit_component={id:"teambit.base-ui/routing/link@1.0.0",homepage:"https://bit.dev/teambit/base-ui/routing/link",exported:!0},t.Link=a},8363:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NativeLink=void 0;var o=n(19637);Object.defineProperty(t,"NativeLink",{enumerable:!0,get:function(){return o.NativeLink}})},19637:function(e,t,n){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&o(t,e,n);return r(t,e),t},a=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n};Object.defineProperty(t,"__esModule",{value:!0}),t.NativeLink=void 0;const s=i(n(41594)),u={rel:"noopener",target:"_blank"};function c(e){var{href:t="",external:n,replace:o,onClick:r}=e,i=a(e,["href","external","replace","onClick"]);const c=n?u:{},l=s.useCallback((e=>{const i=null==r?void 0:r(e);return e.defaultPrevented||!o||n||(e.preventDefault(),window.location.replace(t)),i}),[t,o,r]);return s.default.createElement("a",Object.assign({},i,c,{onClick:l,href:t}))}c.__bit_component={id:"teambit.base-ui/routing/native-link@1.0.0",homepage:"https://bit.dev/teambit/base-ui/routing/native-link",exported:!0},t.NativeLink=c},13579:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NativeNavLink=void 0;var o=n(27037);Object.defineProperty(t,"NativeNavLink",{enumerable:!0,get:function(){return o.NativeNavLink}})},27037:function(e,t,n){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&o(t,e,n);return r(t,e),t},a=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.NativeNavLink=void 0;const u=i(n(41594)),c=s(n(88443)),l=n(8363),d=n(66259),p=n(22311);function f(e){var{activeClassName:t,activeStyle:n,isActive:o,exact:r,strict:i,style:s,className:f}=e,m=a(e,["activeClassName","activeStyle","isActive","exact","strict","style","className"]);const b=p.isBrowser?window.location.href:"/",_=u.useMemo((()=>m.href&&d.compareUrl(b,m.href)),[r,i,b,m.href]),h=(null==o?void 0:o())||_,y=u.useMemo((()=>h&&n?Object.assign(Object.assign({},s),n):s),[h,s]);return u.default.createElement(l.NativeLink,Object.assign({},m,{style:y,className:c.default(f,h&&t)}))}f.__bit_component={id:"teambit.base-ui/routing/native-nav-link@1.0.0",homepage:"https://bit.dev/teambit/base-ui/routing/native-nav-link",exported:!0},t.NativeNavLink=f},23823:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useLocation=t.useRouting=t.RoutingProvider=void 0;var o=n(34515);Object.defineProperty(t,"RoutingProvider",{enumerable:!0,get:function(){return o.RoutingProvider}}),Object.defineProperty(t,"useRouting",{enumerable:!0,get:function(){return o.useRouting}}),Object.defineProperty(t,"useLocation",{enumerable:!0,get:function(){return o.useLocation}})},34515:function(e,t,n){"use strict";var o={id:"teambit.base-ui/routing/routing-provider@1.0.0",homepage:"https://bit.dev/teambit/base-ui/routing/routing-provider",exported:!0},r=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.useLocation=t.useRouting=t.RoutingProvider=void 0;const s=a(n(41594)),u=n(8363),c=n(13579),l=n(22311),d={pathname:"/",search:"",hash:""},p={Link:u.NativeLink,NavLink:c.NativeNavLink,useLocation:()=>l.isBrowser?window.location:d},f=s.createContext(p);function m({value:e,children:t}){return s.default.createElement(f.Provider,{value:e},t)}function b(){return s.useContext(f)}function _(){return b().useLocation()}m.__bit_component=o,t.RoutingProvider=m,b.__bit_component=o,t.useRouting=b,_.__bit_component=o,t.useLocation=_},56395:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Heading=void 0;const i=r(n(41594));function a(e){var{element:t="h1"}=e,n=o(e,["element"]);const r=t;return i.default.createElement(r,Object.assign({"data-bit-id":"teambit.base-ui/text/heading"},n))}a.__bit_component={id:"teambit.base-ui/text/heading@1.0.4",homepage:"https://bit.dev/teambit/base-ui/text/heading",exported:!0},t.Heading=a},34801:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Heading=void 0;var o=n(56395);Object.defineProperty(t,"Heading",{enumerable:!0,get:function(){return o.Heading}})},22311:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isBrowser=void 0;var o=n(40858);Object.defineProperty(t,"isBrowser",{enumerable:!0,get:function(){return o.isBrowser}})},40858:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isBrowser=void 0,t.isBrowser="undefined"!=typeof window},62845:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.bitComponent=void 0;const r=o(n(41594)),i=n(8896),a=o(n(84100));t.bitComponent=[{id:"teambit.bit/bit",href:"https://bit.cloud/teambit/harmony/bit",description:"Bit is an open-source component for composing component driven software",envIcon:"https://static.bit.dev/extensions-icons/default.svg",preview:r.default.createElement("div",{className:a.default.logo},r.default.createElement(i.Logo,{customSize:64}))}]},96088:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WhatIsBitQuickStart=t.Size=t.WhatIsBit=t.default=t.WhatIsBitLong=void 0;var r=n(63066);Object.defineProperty(t,"WhatIsBitLong",{enumerable:!0,get:function(){return o(r).default}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o(r).default}});var i=n(29863);Object.defineProperty(t,"WhatIsBit",{enumerable:!0,get:function(){return i.WhatIsBit}}),Object.defineProperty(t,"Size",{enumerable:!0,get:function(){return i.Size}});var a=n(30972);Object.defineProperty(t,"WhatIsBitQuickStart",{enumerable:!0,get:function(){return a.WhatIsBitQuickStart}})},41219:(e,t,n)=>{"use strict";var o={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=p,a(n(41594));var r=n(5016),i=["components"];function a(e){return e&&e.__esModule?e:{default:e}}function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},s.apply(this,arguments)}function u(e,t){if(null==e)return{};var n,o,r=c(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function c(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}a.__bit_component=o,s.__bit_component=o,u.__bit_component=o,c.__bit_component=o;var l={},d="wrapper";function p(e){var t=e.components,n=u(e,i);return(0,r.mdx)(d,s({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("p",null,"Bit does not prescribe how to build your entire application. It helps you define and compose components and allows for every component to adopt the dev tools that best fit its nature.\nA React component is likely to be compiled, tested and perhaps even deployed using a composition of tools different than the one a backend-service component, or a generic function, may use.\nBit comes with native support in various dev tools like TypeScript, Babel, Jest, Webpack, ESLint, and ready made development environments for React, NodeJS, Angular and more. New tools can be easily integrated by adding one more component into Bit!"))}p.__bit_component=o,p.isMDXComponent=!0},40937:(e,t,n)=>{"use strict";var o={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=p,a(n(41594));var r=n(5016),i=["components"];function a(e){return e&&e.__esModule?e:{default:e}}function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},s.apply(this,arguments)}function u(e,t){if(null==e)return{};var n,o,r=c(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function c(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}a.__bit_component=o,s.__bit_component=o,u.__bit_component=o,c.__bit_component=o;var l={},d="wrapper";function p(e){var t=e.components,n=u(e,i);return(0,r.mdx)(d,s({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("p",null,"Bit does not prescribe how to build your entire application. It helps you define and compose components and allows for every component to adopt the dev tools that best fit its nature.\nA React component is likely to be compiled, tested and perhaps even deployed using a composition of tools different than the one a backend-service component, or a generic function, may use.\nBit comes with native support in various dev tools like TypeScript, Babel, Jest, Webpack, ESLint, and ready made development environments for React, NodeJS, Angular and more. New tools can be easily integrated by adding one more component into Bit!"))}p.__bit_component=o,p.isMDXComponent=!0},743:(e,t,n)=>{"use strict";var o={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=p,a(n(41594));var r=n(5016),i=["components"];function a(e){return e&&e.__esModule?e:{default:e}}function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},s.apply(this,arguments)}function u(e,t){if(null==e)return{};var n,o,r=c(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function c(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}a.__bit_component=o,s.__bit_component=o,u.__bit_component=o,c.__bit_component=o;var l={},d="wrapper";function p(e){var t=e.components,n=u(e,i);return(0,r.mdx)(d,s({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("h3",null,"What is Bit?"),(0,r.mdx)("p",null,"Bit is an open-source tool for composing component-driven software."))}p.__bit_component=o,p.isMDXComponent=!0},30972:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WhatIsBitQuickStart=void 0;const r=o(n(41594)),i=n(5540),a=n(66609),s=n(15447),u=o(n(40937)),c=o(n(41219)),l=o(n(743)),d=n(62845),p=o(n(61513)),f=()=>r.default.createElement(a.WideColumn,null,r.default.createElement(l.default,null),r.default.createElement(i.LeftRight,{className:p.default.leftRight,left:r.default.createElement(u.default,null),right:r.default.createElement(s.ComponentCardGroup,{components:d.bitComponent})}),r.default.createElement(c.default,null));f.__bit_component={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0},t.WhatIsBitQuickStart=f},20150:(e,t,n)=>{"use strict";var o={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=_,l(n(41594));var r=n(5016),i=n(15447),a=l(n(70896)),s=n(62845),u=l(n(84100)),c=["components"];function l(e){return e&&e.__esModule?e:{default:e}}function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},d.apply(this,arguments)}function p(e,t){if(null==e)return{};var n,o,r=f(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function f(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}l.__bit_component=o,d.__bit_component=o,p.__bit_component=o,f.__bit_component=o;var m={},b="wrapper";function _(e){var t=e.components,n=p(e,c);return(0,r.mdx)(b,d({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("p",null,"Bit is an open-source tool for composing component-driven software."),(0,r.mdx)(i.ComponentCardGroup,{components:s.bitComponent,className:u.default.bitCard,mdxType:"ComponentCardGroup"}),(0,r.mdx)("br",null),(0,r.mdx)(a.default,{components:s.bitComponent,mdxType:"WhatIsBitSmall"}),(0,r.mdx)("p",null,"Bit does not prescribe how to build your entire application. It helps you define and compose components and allows for every component to adopt the dev tools that best fit its nature.\nA React component is likely to be compiled, tested and perhaps even deployed using a composition of tools different than the one a backend-service component, or a generic function, may use.\nBit offers native support for various dev tools like ",(0,r.mdx)("a",{parentName:"p",href:"/tools/typescript"},"TypeScript"),", ",(0,r.mdx)("a",{parentName:"p",href:"/tools/babel"},"Babel"),", ",(0,r.mdx)("a",{parentName:"p",href:"/tools/jest"},"Jest"),", ",(0,r.mdx)("a",{parentName:"p",href:"/tools/webpack"},"Webpack"),", ",(0,r.mdx)("a",{parentName:"p",href:"/tools/eslint"},"ESLint")," and\nready made development environments for ",(0,r.mdx)("a",{parentName:"p",href:"/frameworks/react"},"React"),", ",(0,r.mdx)("a",{parentName:"p",href:"/frameworks/node"},"NodeJS"),", ",(0,r.mdx)("a",{parentName:"p",href:"/envs/angular"},"Angular")," and more. New tools can be easily integrated by\nextending Bit with one more component."))}_.__bit_component=o,_.isMDXComponent=!0},70896:(e,t,n)=>{"use strict";var o={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=p,a(n(41594));var r=n(5016),i=["components"];function a(e){return e&&e.__esModule?e:{default:e}}function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},s.apply(this,arguments)}function u(e,t){if(null==e)return{};var n,o,r=c(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function c(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}a.__bit_component=o,s.__bit_component=o,u.__bit_component=o,c.__bit_component=o;var l={},d="wrapper";function p(e){var t=e.components,n=u(e,i);return(0,r.mdx)(d,s({},l,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("p",null,"Bit stands at the intersection between product and engineering. ",(0,r.mdx)("strong",{parentName:"p"},"It helps you take complex product requirements, and break them down into independent,\nand reusable pieces called")," ",(0,r.mdx)("strong",{parentName:"p"},(0,r.mdx)("em",{parentName:"strong"},'"components"')),". It allows you to create components and compose them with each other. Components are described by names and APIs, and contain source code implementation.\nThey can be of different kinds like apps, pages, UI components, backend services and even content. You can ",(0,r.mdx)("a",{parentName:"p",href:"/thinking-in-components"},"think of almost anything in components"),"."),(0,r.mdx)("p",null,'It is common to think of components that function as full applications, as "large", whereas components that function as simple elements, like a \'button\', as "small".\nFor us, both types of components are "the same size", but each has a different responsibility. An app is a very concrete component. It has many dependencies and just a few (if any) dependents.\nA button, on the other hand, is very abstract. It has just a few dependencies and many dependents. Having this sort of dependents-to-dependencies ratio indicates that a component is highly-reusable.'))}p.__bit_component=o,p.isMDXComponent=!0},29863:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WhatIsBit=t.Size=void 0;const r=o(n(41594)),i=o(n(63066)),a=o(n(20150)),s=o(n(70896));var u;function c({size:e}){return e===u.SMALL?r.default.createElement(s.default,null):e===u.MEDIUM?r.default.createElement(a.default,null):r.default.createElement(i.default,null)}!function(e){e[e.SMALL=0]="SMALL",e[e.MEDIUM=1]="MEDIUM",e[e.LARGE=2]="LARGE"}(u=t.Size||(t.Size={})),c.__bit_component={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0},t.WhatIsBit=c},63066:(e,t,n)=>{"use strict";var o={id:"teambit.bit/content/what-is-bit@1.96.2",homepage:"https://bit.dev/teambit/bit/content/what-is-bit",exported:!0};Object.defineProperty(t,"__esModule",{value:!0}),t.default=f,s(n(41594));var r=n(5016),i=s(n(20150)),a=["components"];function s(e){return e&&e.__esModule?e:{default:e}}function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},u.apply(this,arguments)}function c(e,t){if(null==e)return{};var n,o,r=l(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function l(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}s.__bit_component=o,u.__bit_component=o,c.__bit_component=o,l.__bit_component=o;var d={},p="wrapper";function f(e){var t=e.components,n=c(e,a);return(0,r.mdx)(p,u({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.mdx)("h3",null,"What is Bit?"),(0,r.mdx)(i.default,{mdxType:"WhatIsBitShort"}),(0,r.mdx)("h3",null,"What can you do with Bit?"),(0,r.mdx)("p",null,"Anything is possible with Bit! We built ",(0,r.mdx)("a",{parentName:"p",href:"https://bit.dev"},"Bit")," and ",(0,r.mdx)("a",{parentName:"p",href:"https://bit.cloud"},"bit.cloud")," entirely using Bit. These are complex systems which includes infrastructure\ntools, cloud products and multiple user interfaces."),(0,r.mdx)("p",null,"People use Bit to create all kind of applications, from user interfaces with component-driven frameworks like React, Vue and Angular, to complex\nmicro-service architectures, serverless functions, CLI utilities, desktop applications, native mobile applications and even IoT. You can do with Bit about anything you can do with JS\nand even beyond."),(0,r.mdx)("h3",null,"What Bit supports?"),(0,r.mdx)("p",null,"Bit was built with TypeScript and supports it natively. It was designed to be language-agnostic, and will support other software languages in the future! For now, our development environments use TypeScript as the default compiler for JS and TS components. You can easily switch to Babel or any other compiler. Bit is completely agnostic to your tech stack."))}f.__bit_component=o,f.isMDXComponent=!0},8896:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Logo:()=>c,RecommendedSizes:()=>o});var o,r=n(41594),i=n.n(r),a=n(74643);!function(e){e[e.small=16]="small",e[e.medium=24]="medium",e[e.large=32]="large",e[e.xl=40]="xl"}(o||(o={}));const s=new URL(n(59132),n.b).toString();var u=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n};function c(e){var{size:t,customSize:n,alt:o}=e,r=u(e,["size","customSize","alt"]);const c=n||t;return i().createElement(a.BaseImage,Object.assign({},r,{src:s,alt:o||"",height:c,width:c}))}c.__bit_component={id:"teambit.design/ui/brand/logo@1.96.2",homepage:"https://bit.dev/teambit/design/ui/brand/logo",exported:!0},c.defaultProps={size:o.medium,alt:"Bit"}},5754:function(e,t,n){"use strict";var o={id:"teambit.design/ui/heading@1.0.16",homepage:"https://bit.dev/teambit/design/ui/heading",exported:!0},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.H6=t.H5=t.H4=t.H3=t.H2=t.H1=void 0;const i=r(n(41594)),a=r(n(88443)),s=n(34801),u=r(n(81606)),c=r(n(43271)),l=r(n(11e3));function d(e){return i.default.createElement(s.Heading,Object.assign({element:"h1"},e,{className:(0,a.default)(c.default.h1,l.default.h1,u.default[e.size||"lg"],e.className)}))}function p(e){return i.default.createElement(s.Heading,Object.assign({element:"h2"},e,{className:(0,a.default)(c.default.h2,u.default[e.size||"lg"],e.className)}))}function f(e){return i.default.createElement(s.Heading,Object.assign({element:"h3"},e,{className:(0,a.default)(c.default.h3,u.default[e.size||"md"],e.className)}))}function m(e){return i.default.createElement(s.Heading,Object.assign({element:"h4"},e,{className:(0,a.default)(c.default.h4,u.default[e.size||"sm"],e.className)}))}function b(e){return i.default.createElement(s.Heading,Object.assign({element:"h5"},e,{className:(0,a.default)(c.default.h5,u.default[e.size||"xs"],e.className)}))}function _(e){return i.default.createElement(s.Heading,Object.assign({element:"h6"},e,{className:(0,a.default)(c.default.h6,u.default[e.size||"xxs"],e.className)}))}d.__bit_component=o,t.H1=d,p.__bit_component=o,t.H2=p,f.__bit_component=o,t.H3=f,m.__bit_component=o,t.H4=m,b.__bit_component=o,t.H5=b,_.__bit_component=o,t.H6=_},20900:function(e,t,n){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||o(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(5754),t)},5540:(e,t,n)=>{"use strict";n.r(t),n.d(t,{LeftRight:()=>c});var o=n(41594),r=n.n(o),i=n(69685),a=n.n(i);const s={leftRight:"left-right_leftRight__JE-Eu"};var u=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n};function c(e){var{left:t,right:n}=e,o=u(e,["left","right"]);return r().createElement("section",Object.assign({},o,{className:a()(s.leftRight,o.className)}),r().createElement("div",null,t),r().createElement("div",null,n))}c.__bit_component={id:"teambit.design/ui/layouts/sections/left-right@1.96.2",homepage:"https://bit.dev/teambit/design/ui/layouts/sections/left-right",exported:!0}},6447:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Ellipsis=void 0;const r=o(n(41594)),i=o(n(88443)),a=o(n(15140));function s(e){return r.default.createElement("div",Object.assign({},e,{className:(0,i.default)(e.className,a.default.ellipsisDiv)}))}s.__bit_component={id:"teambit.design/ui/styles/ellipsis@0.0.347",homepage:"https://bit.dev/teambit/design/ui/styles/ellipsis",exported:!0},t.Ellipsis=s},86882:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Ellipsis=t.ellipsis=void 0;const r=o(n(15140));t.ellipsis=r.default.ellipsis;var i=n(6447);Object.defineProperty(t,"Ellipsis",{enumerable:!0,get:function(){return i.Ellipsis}})},20395:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseComponentCard=void 0;const r=o(n(41594)),i=n(16266),a=n(84312),s=n(2906),u=n(36706);function c({id:e="",className:t,preview:n,version:o,description:c,isDeprecated:l,isVerified:d,children:p,contentClass:f}){return r.default.createElement(u.Card,{className:t},r.default.createElement(a.DeprecationSticker,{isDeprecated:l}),r.default.createElement(i.PreviewContainer,{preview:n}),r.default.createElement(s.ComponentDetails,{id:e,version:o,description:c,isVerified:d,className:f}),p)}c.__bit_component={id:"teambit.explorer/ui/gallery/base-component-card@0.0.492",homepage:"https://bit.dev/teambit/explorer/ui/gallery/base-component-card",exported:!0},t.BaseComponentCard=c},59086:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Card=void 0;const r=o(n(41594)),i=o(n(88443)),a=o(n(99035));function s({children:e,className:t}){return r.default.createElement("div",{className:(0,i.default)(a.default.componentCard,t)},e)}s.__bit_component={id:"teambit.explorer/ui/gallery/base-component-card@0.0.492",homepage:"https://bit.dev/teambit/explorer/ui/gallery/base-component-card",exported:!0},t.Card=s},36706:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Card=void 0;var o=n(59086);Object.defineProperty(t,"Card",{enumerable:!0,get:function(){return o.Card}})},71284:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.DeprecationSticker=void 0;const r=o(n(41594)),i=o(n(88443)),a=o(n(68533));function s({isDeprecated:e}){return r.default.createElement("div",{className:(0,i.default)(a.default.deprecated,{[a.default.show]:e})},"deprecated")}s.__bit_component={id:"teambit.explorer/ui/gallery/base-component-card@0.0.492",homepage:"https://bit.dev/teambit/explorer/ui/gallery/base-component-card",exported:!0},t.DeprecationSticker=s},84312:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DeprecationSticker=void 0;var o=n(71284);Object.defineProperty(t,"DeprecationSticker",{enumerable:!0,get:function(){return o.DeprecationSticker}})},94776:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ComponentDetails=void 0;const i=r(n(41594)),a=r(n(88443)),s=n(54357),u=n(86882),c=r(n(95817));function l(e){var{id:t,version:n,description:r,isVerified:l,className:d}=e,p=o(e,["id","version","description","isVerified","className"]);const f=t.split("/"),m=f.length>1&&f.slice(0,-1).join(" / "),b=f.slice(-1);return i.default.createElement("div",Object.assign({},p,{className:(0,a.default)(c.default.content,d)}),i.default.createElement("div",null,i.default.createElement("div",{className:c.default.nameSpace},m),i.default.createElement("div",{className:c.default.name},i.default.createElement("span",null,b),i.default.createElement("div",{className:c.default.versionHolder},n&&i.default.createElement(u.Ellipsis,null,"v",n),l&&i.default.createElement("img",{src:"https://static.bit.dev/extensions-icons/verified-field-badge.svg",className:c.default.img}))),i.default.createElement("div",{className:c.default.description},(0,s.ellipsis)(r||"",50))))}l.__bit_component={id:"teambit.explorer/ui/gallery/base-component-card@0.0.492",homepage:"https://bit.dev/teambit/explorer/ui/gallery/base-component-card",exported:!0},t.ComponentDetails=l},2906:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ComponentDetails=void 0;var o=n(94776);Object.defineProperty(t,"ComponentDetails",{enumerable:!0,get:function(){return o.ComponentDetails}})},55163:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PreviewContainer=t.ComponentDetails=t.DeprecationSticker=t.Card=t.BaseComponentCard=void 0;var o=n(20395);Object.defineProperty(t,"BaseComponentCard",{enumerable:!0,get:function(){return o.BaseComponentCard}});var r=n(36706);Object.defineProperty(t,"Card",{enumerable:!0,get:function(){return r.Card}});var i=n(84312);Object.defineProperty(t,"DeprecationSticker",{enumerable:!0,get:function(){return i.DeprecationSticker}});var a=n(2906);Object.defineProperty(t,"ComponentDetails",{enumerable:!0,get:function(){return a.ComponentDetails}});var s=n(16266);Object.defineProperty(t,"PreviewContainer",{enumerable:!0,get:function(){return s.PreviewContainer}})},16266:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PreviewContainer=void 0;var o=n(84396);Object.defineProperty(t,"PreviewContainer",{enumerable:!0,get:function(){return o.PreviewContainer}})},84396:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.PreviewContainer=void 0;const i=r(n(41594)),a=r(n(88443)),s=r(n(27917));function u(e){var{preview:t,className:n}=e,r=o(e,["preview","className"]);return i.default.createElement("div",Object.assign({},r,{className:(0,a.default)(s.default.previewContainer,n)}),i.default.createElement("div",{className:(0,a.default)(s.default.preview,{[s.default.emptyPreview]:!t})},t))}u.__bit_component={id:"teambit.explorer/ui/gallery/base-component-card@0.0.492",homepage:"https://bit.dev/teambit/explorer/ui/gallery/base-component-card",exported:!0},t.PreviewContainer=u},37833:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ComponentCardGroup=void 0;const i=r(n(41594)),a=n(20900),s=n(67164),u=n(71312);function c(e){var{title:t,components:n}=e,r=o(e,["title","components"]);return i.default.createElement("div",Object.assign({},r),t&&i.default.createElement(a.H2,null,t),i.default.createElement(s.ComponentGrid,null,n.map((e=>i.default.createElement(u.ComponentCard,Object.assign({key:e.id},e))))))}c.__bit_component={id:"teambit.explorer/ui/gallery/component-card-group@1.96.1",homepage:"https://bit.dev/teambit/explorer/ui/gallery/component-card-group",exported:!0},t.ComponentCardGroup=c},15447:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ComponentCardGroup=void 0;var o=n(37833);Object.defineProperty(t,"ComponentCardGroup",{enumerable:!0,get:function(){return o.ComponentCardGroup}})},67922:function(e,t,n){"use strict";var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ComponentCard=void 0;const r=o(n(41594)),i=n(65103),a=n(55163),s=o(n(50111));function u({id:e="",className:t,preview:n,version:o,description:u,envIcon:c,isDeprecated:l=!1,href:d,external:p}){return r.default.createElement(a.Card,{className:t},r.default.createElement(i.Link,{className:s.default.componentCardLink,href:d||e,external:p},r.default.createElement(a.DeprecationSticker,{isDeprecated:l}),r.default.createElement(a.PreviewContainer,{preview:n}),r.default.createElement(a.ComponentDetails,{id:e,version:o,description:u,className:s.default.content}),r.default.createElement("div",{className:s.default.bottom},r.default.createElement("div",{className:s.default.left}),r.default.createElement("img",{src:c,className:s.default.img}))))}u.__bit_component={id:"teambit.explorer/ui/gallery/component-card@0.0.495",homepage:"https://bit.dev/teambit/explorer/ui/gallery/component-card",exported:!0},t.ComponentCard=u},71312:function(e,t,n){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||o(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(67922),t)},44364:function(e,t,n){"use strict";var o=this&&this.__rest||function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ComponentGrid=void 0;const i=r(n(41594)),a=r(n(88443)),s=r(n(18389));function u(e){var{children:t,className:n}=e,r=o(e,["children","className"]);return i.default.createElement("div",Object.assign({className:(0,a.default)(s.default.componentGrid,n)},r),t)}u.__bit_component={id:"teambit.explorer/ui/gallery/component-grid@0.0.486",homepage:"https://bit.dev/teambit/explorer/ui/gallery/component-grid",exported:!0},t.ComponentGrid=u},67164:function(e,t,n){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,n,o){void 0===o&&(o=n),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,o){void 0===o&&(o=n),e[o]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||o(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(44364),t)},26898:(e,t)=>{"use strict";function n(e,t){return e.length>t?`${e.substring(0,t)}...`:e}Object.defineProperty(t,"__esModule",{value:!0}),t.ellipsis=void 0,n.__bit_component={id:"teambit.toolbox/string/ellipsis@0.0.173",homepage:"https://bit.dev/teambit/toolbox/string/ellipsis",exported:!0},t.ellipsis=n},54357:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ellipsis=void 0;var o=n(26898);Object.defineProperty(t,"ellipsis",{enumerable:!0,get:function(){return o.ellipsis}})},4170:(e,t,n)=>{"use strict";var o={id:"teambit.harmony/bit@1.8.84",homepage:"https://bit.cloud/teambit/harmony/bit",exported:!0};function r(){const e=a(n(41594));return r=function(){return e},e}function i(){const e=n(8896);return i=function(){return e},e}function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.BitLogo=void 0,r.__bit_component=o,i.__bit_component=o,a.__bit_component=o;const s=()=>r().default.createElement("div",{style:{width:"50%",margin:"auto"}},r().default.createElement(i().Logo,{customSize:64}));s.__bit_component=o,t.BitLogo=s},38766:(e,t,n)=>{"use strict";var o={id:"teambit.harmony/bit@1.8.84",homepage:"https://bit.cloud/teambit/harmony/bit",exported:!0};function r(){const e=a(n(41594));return r=function(){return e},e}function i(){const e=n(96088);return i=function(){return e},e}function a(e){return e&&e.__esModule?e:{default:e}}function s(){return r().default.createElement(i().WhatIsBit,null)}Object.defineProperty(t,"__esModule",{value:!0}),t.abstract=void 0,t.default=s,t.tags=void 0,r.__bit_component=o,i.__bit_component=o,a.__bit_component=o,t.tags=["components","software","composable","component-driven","collaboration","development","design","product","architecture","compounding"],t.abstract="Bit is an open source toolchain for component-driven software",s.__bit_component=o},66323:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={fullWidth:"image_fullWidth__sELLz"}},55255:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={centerColumn:"page-frame_centerColumn__XBa-t",wideColumn:"page-frame_wideColumn__NAkt5",textColumn:"page-frame_textColumn__UPfoU"}},61513:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={}},84100:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={bitCard:"what-is-bit_bitCard__6HJgs",logo:"what-is-bit_logo__xM-ZV"}},81606:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={xxs:"heading-sizes_xxs__SWEOY",xs:"heading-sizes_xs__Hy8ol",sm:"heading-sizes_sm__tI7SK",md:"heading-sizes_md__joonV",lg:"heading-sizes_lg__Ltd1S",xl:"heading-sizes_xl__HDfIw",xxl:"heading-sizes_xxl__cFNob"}},43271:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={h1:"heading_h1__nOnz4",h2:"heading_h2__uEyK2",h3:"heading_h3__HdM7Z",h4:"heading_h4__v8USx",h5:"heading_h5__6jcVl",h6:"heading_h6__k7dDb"}},11e3:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={h1:"margins_h1__e8-sd"}},15140:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={ellipsis:"ellipsis_ellipsis__C8hJ8",ellipsisDiv:"ellipsis_ellipsisDiv__9Db5W"}},99035:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={componentCard:"card_componentCard__Ak9CZ"}},68533:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={deprecated:"deprecation-sticker_deprecated__mKzkW",show:"deprecation-sticker_show__3kEmz"}},95817:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={content:"details_content__ifC+P",nameSpace:"details_nameSpace__5bRzq",name:"details_name__znUu1",versionHolder:"details_versionHolder__9dygA",img:"details_img__MjuDx",description:"details_description__PPRv6"}},27917:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={previewContainer:"preview-container_previewContainer__hrQXX",preview:"preview-container_preview__zRjHm",emptyPreview:"preview-container_emptyPreview__YnS1o"}},50111:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={componentCardLink:"component-card_componentCardLink__Q4l2Z",bottom:"component-card_bottom__kipWC",size:"component-card_size__zZUte",dot:"component-card_dot__FksAd",img:"component-card_img__l5R9+"}},18389:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});const o={componentGrid:"component-grid_componentGrid__pGx6B"}},59132:e=>{"use strict";e.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzU0IiBoZWlnaHQ9IjM1NCIgdmlld0JveD0iMCAwIDM1NCAzNTQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xNzcgMzQ4QzI3MS40NDEgMzQ4IDM0OCAyNzEuNDQxIDM0OCAxNzdDMzQ4IDgyLjU1OTMgMjcxLjQ0MSA2IDE3NyA2QzgyLjU1OTMgNiA2IDgyLjU1OTMgNiAxNzdDNiAyNzEuNDQxIDgyLjU1OTMgMzQ4IDE3NyAzNDhaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXIpIiBzdHJva2U9IiM3QjcwQjYiIHN0cm9rZS13aWR0aD0iMTIiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNjEuMjY1IDE5MS43MDlDMTYxLjI2NSAyMDkuNzI3IDE1MC41MjggMjIxLjMyOCAxMzEuMjc1IDIyMS4zMjhDMTI0LjM2NCAyMjEuMzI4IDExNy45NDcgMjE5Ljk3MSAxMTMuMDEgMjE3LjEzMkMxMDcuMzMzIDIxMy45MjMgMTA3LjMzMyAyMDkuODUxIDEwNy4zMzMgMjA1LjY1NVYxNDMuMzMxQzEwNy4zMzMgMTM4Ljg4OCAxMTAuMDQ4IDEzNi42NjcgMTE1LjYwMiAxMzYuNjY3QzEyMS4xNTUgMTM2LjY2NyAxMjMuODcgMTM4Ljg4OCAxMjMuODcgMTQzLjMzMVYxNjcuMDI2QzEyNi45NTYgMTY0LjkyOCAxMzEuMDI4IDE2My45NDEgMTM1LjcxOCAxNjMuOTQxQzE1MC43NzQgMTYzLjk0MSAxNjEuMjY1IDE3My45MzggMTYxLjI2NSAxOTEuNzA5Wk0xMjMuODcgMjA2LjE0OEMxMjUuOTY4IDIwNy4zODIgMTI4LjU2IDIwOCAxMzEuMzk5IDIwOEMxMzkuNDIgMjA4IDE0NC4zNTcgMjAyLjU2OSAxNDQuMzU3IDE5Mi44MkMxNDQuMzU3IDE4Mi45NDcgMTM5LjI5NyAxNzcuMjcgMTMxLjY0NSAxNzcuMjdDMTI4LjY4NCAxNzcuMjcgMTI1Ljk2OCAxNzguMTM0IDEyMy44NyAxNzkuNzM4VjIwNi4xNDhaTTE5Mi4xOCAxNDcuNjUxQzE5Mi4xOCAxNTMuMzI4IDE4OC4xMDcgMTU3LjI3NyAxODIuNDMgMTU3LjI3N0MxNzYuNzUzIDE1Ny4yNzcgMTcyLjY4IDE1My4zMjggMTcyLjY4IDE0Ny42NTFDMTcyLjY4IDE0MS45NzQgMTc2Ljc1MyAxMzguMTQ4IDE4Mi40MyAxMzguMTQ4QzE4OC4xMDcgMTM4LjE0OCAxOTIuMTggMTQxLjk3NCAxOTIuMTggMTQ3LjY1MVpNMTkwLjY5OSAxNzAuNjA1VjIxNC40MTdDMTkwLjY5OSAyMTguODYgMTg3Ljk4MyAyMjEuMDgxIDE4Mi40MyAyMjEuMDgxQzE3Ni44NzYgMjIxLjA4MSAxNzQuMTYxIDIxOC44NiAxNzQuMTYxIDIxNC40MTdWMTcwLjYwNUMxNzQuMTYxIDE2Ni4xNjMgMTc2Ljg3NiAxNjMuOTQxIDE4Mi40MyAxNjMuOTQxQzE4Ny45ODMgMTYzLjk0MSAxOTAuNjk5IDE2Ni4xNjMgMTkwLjY5OSAxNzAuNjA1Wk0yNDAuNzQzIDIwNi4yNzJDMjQ1LjMwOSAyMDYuMjcyIDI0Ni42NjYgMjExLjA4NSAyNDYuNjY2IDIxMy44QzI0Ni42NjYgMjE1LjUyOCAyNDYuMDQ5IDIxNy4yNTYgMjQzLjcwNCAyMTguNjEzQzI0MC45ODkgMjIwLjIxNyAyMzYuMyAyMjEuMzI4IDIzMS40ODcgMjIxLjMyOEMyMjIuNjAxIDIyMS4zMjggMjE3LjI5NCAyMTcuNzQ5IDIxNC41NzkgMjEyLjgxM0MyMTIuMTExIDIwOC4zNyAyMTEuODY0IDIwMy4wNjMgMjExLjg2NCAxOTcuMzg2VjE3OC44NzRIMjA3LjU0NEMyMDMuMTAyIDE3OC44NzQgMjAwLjg4IDE3Ni42NTMgMjAwLjg4IDE3MS45NjNDMjAwLjg4IDE2Ny4yNzMgMjAzLjEwMiAxNjUuMDUyIDIwNy41NDQgMTY1LjA1MkgyMTEuODY0VjE1NC4xOTFDMjExLjg2NCAxNDkuNzQ5IDIxNC41NzkgMTQ3LjUyNyAyMjAuMTMzIDE0Ny41MjdDMjI1LjY4NiAxNDcuNTI3IDIyOC40MDEgMTQ5Ljc0OSAyMjguNDAxIDE1NC4xOTFWMTY1LjA1MkgyMzguNzY4QzI0My4yMTEgMTY1LjA1MiAyNDUuNDMyIDE2Ny4yNzMgMjQ1LjQzMiAxNzEuOTYzQzI0NS40MzIgMTc2LjY1MyAyNDMuMjExIDE3OC44NzQgMjM4Ljc2OCAxNzguODc0SDIyOC40MDFWMTk3LjM4NkMyMjguNDAxIDE5OS42MDcgMjI4LjQwMSAyMDIuODE2IDIyOS41MTIgMjA0LjkxNEMyMzAuMzc2IDIwNi42NDIgMjMxLjk4IDIwNy4zODMgMjM0LjA3OCAyMDcuMzgzQzIzNS40MzYgMjA3LjM4MyAyMzYuNzkzIDIwNy4wMTIgMjM3LjkwNCAyMDYuNzY1QzIzOC44OTEgMjA2LjUxOSAyMzkuNzU1IDIwNi4yNzIgMjQwLjc0MyAyMDYuMjcyWiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTExOCA1MkM4OC45MTI5IDY0LjY1ODEgNjUuNTgyNCA4Ny45ODA1IDUzIDExNyIgc3Ryb2tlPSIjN0I3MEI2IiBzdHJva2Utd2lkdGg9IjEyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhciIgeDE9IjE3NyIgeTE9IjEyIiB4Mj0iMTc3IiB5Mj0iMzM4Ljc5NiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjNzMzOThEIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzU5NEE5NSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo="},5016:e=>{"use strict";e.exports=MdxJsReact},41594:e=>{"use strict";e.exports=React}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o].call(i.exports,i,i.exports,n),i.exports}n.m=e,n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.b=document.baseURI||self.location.href;var o={};return(()=>{"use strict";n.r(o),n.d(o,{compositions:()=>r,compositions_metadata:()=>a,overview:()=>i});var e=n(4170),t=n(38766);const r=[e],i=[t],a={compositions:[{displayName:"Bit logo",identifier:"BitLogo"}]}})(),o})()));
|
package/artifacts/schema.json
CHANGED
package/dist/app.js
CHANGED
|
@@ -50,6 +50,13 @@ function _serverCommander() {
|
|
|
50
50
|
};
|
|
51
51
|
return data;
|
|
52
52
|
}
|
|
53
|
+
function _serverForever() {
|
|
54
|
+
const data = require("./server-forever");
|
|
55
|
+
_serverForever = function () {
|
|
56
|
+
return data;
|
|
57
|
+
};
|
|
58
|
+
return data;
|
|
59
|
+
}
|
|
53
60
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
54
61
|
/* eslint-disable import/first */
|
|
55
62
|
process.on('uncaughtException', err => {
|
|
@@ -63,7 +70,9 @@ if (process.argv.includes('--get-yargs-completions')) {
|
|
|
63
70
|
(0, _autocomplete().autocomplete)();
|
|
64
71
|
process.exit(0);
|
|
65
72
|
}
|
|
66
|
-
if (
|
|
73
|
+
if (process.argv.includes('server-forever')) {
|
|
74
|
+
(0, _serverForever().spawnPTY)();
|
|
75
|
+
} else if ((0, _serverCommander().shouldUseBitServer)()) {
|
|
67
76
|
new (_serverCommander().ServerCommander)().execute().catch(() => {
|
|
68
77
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
69
78
|
initApp();
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fs","data","_interopRequireDefault","require","_gracefulFs","_bootstrap","_cli","_loadBit","_autocomplete","_serverCommander","e","__esModule","default","process","on","err","console","error","exit","gracefulFs","gracefulify","fs","argv","includes","autocomplete","shouldUseBitServer","ServerCommander","execute","catch","initApp","bootstrap","runCLI","originalError","handleErrorAndExit"],"sources":["app.ts"],"sourcesContent":["/* eslint-disable import/first */\nprocess.on('uncaughtException', (err) => {\n // eslint-disable-next-line no-console\n console.error('uncaughtException', err);\n process.exit(1);\n});\n\nimport fs from 'fs';\nimport gracefulFs from 'graceful-fs';\n// monkey patch fs module to avoid EMFILE error (especially when running watch operation)\ngracefulFs.gracefulify(fs);\n\nimport './hook-require';\nimport { bootstrap } from './bootstrap';\nimport { handleErrorAndExit } from '@teambit/cli';\nimport { runCLI } from './load-bit';\nimport { autocomplete } from './autocomplete';\nimport { ServerCommander, shouldUseBitServer } from './server-commander';\n\nif (process.argv.includes('--get-yargs-completions')) {\n autocomplete();\n process.exit(0);\n}\n\nif (shouldUseBitServer()) {\n new ServerCommander().execute().catch(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n initApp();\n });\n} else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n initApp();\n}\n\nasync function initApp() {\n try {\n await bootstrap();\n // registerCoreExtensions();\n // const harmony = await Harmony.load([ConfigExt], {});\n await runCLI();\n } catch (err: any) {\n const originalError = err.originalError || err;\n await handleErrorAndExit(originalError, process.argv[2]);\n }\n}\n"],"mappings":";;AAOA,SAAAA,IAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,GAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIAE,OAAA;AACA,SAAAE,WAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,UAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,KAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,IAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,SAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,QAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,cAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,aAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,iBAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,gBAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;
|
|
1
|
+
{"version":3,"names":["_fs","data","_interopRequireDefault","require","_gracefulFs","_bootstrap","_cli","_loadBit","_autocomplete","_serverCommander","_serverForever","e","__esModule","default","process","on","err","console","error","exit","gracefulFs","gracefulify","fs","argv","includes","autocomplete","spawnPTY","shouldUseBitServer","ServerCommander","execute","catch","initApp","bootstrap","runCLI","originalError","handleErrorAndExit"],"sources":["app.ts"],"sourcesContent":["/* eslint-disable import/first */\nprocess.on('uncaughtException', (err) => {\n // eslint-disable-next-line no-console\n console.error('uncaughtException', err);\n process.exit(1);\n});\n\nimport fs from 'fs';\nimport gracefulFs from 'graceful-fs';\n// monkey patch fs module to avoid EMFILE error (especially when running watch operation)\ngracefulFs.gracefulify(fs);\n\nimport './hook-require';\nimport { bootstrap } from './bootstrap';\nimport { handleErrorAndExit } from '@teambit/cli';\nimport { runCLI } from './load-bit';\nimport { autocomplete } from './autocomplete';\nimport { ServerCommander, shouldUseBitServer } from './server-commander';\nimport { spawnPTY } from './server-forever';\n\nif (process.argv.includes('--get-yargs-completions')) {\n autocomplete();\n process.exit(0);\n}\n\nif (process.argv.includes('server-forever')) {\n spawnPTY();\n} else if (shouldUseBitServer()) {\n new ServerCommander().execute().catch(() => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n initApp();\n });\n} else {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n initApp();\n}\n\nasync function initApp() {\n try {\n await bootstrap();\n // registerCoreExtensions();\n // const harmony = await Harmony.load([ConfigExt], {});\n await runCLI();\n } catch (err: any) {\n const originalError = err.originalError || err;\n await handleErrorAndExit(originalError, process.argv[2]);\n }\n}\n"],"mappings":";;AAOA,SAAAA,IAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,GAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIAE,OAAA;AACA,SAAAE,WAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,UAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,KAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,IAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,SAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,QAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,cAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,aAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,iBAAA;EAAA,MAAAR,IAAA,GAAAE,OAAA;EAAAM,gBAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,eAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,cAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA4C,SAAAC,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAlB5C;AACAG,OAAO,CAACC,EAAE,CAAC,mBAAmB,EAAGC,GAAG,IAAK;EACvC;EACAC,OAAO,CAACC,KAAK,CAAC,mBAAmB,EAAEF,GAAG,CAAC;EACvCF,OAAO,CAACK,IAAI,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC;AAIF;AACAC,qBAAU,CAACC,WAAW,CAACC,aAAE,CAAC;AAU1B,IAAIR,OAAO,CAACS,IAAI,CAACC,QAAQ,CAAC,yBAAyB,CAAC,EAAE;EACpD,IAAAC,4BAAY,EAAC,CAAC;EACdX,OAAO,CAACK,IAAI,CAAC,CAAC,CAAC;AACjB;AAEA,IAAIL,OAAO,CAACS,IAAI,CAACC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;EAC3C,IAAAE,yBAAQ,EAAC,CAAC;AACZ,CAAC,MAAM,IAAI,IAAAC,qCAAkB,EAAC,CAAC,EAAE;EAC/B,KAAIC,kCAAe,EAAC,CAAC,CAACC,OAAO,CAAC,CAAC,CAACC,KAAK,CAAC,MAAM;IAC1C;IACAC,OAAO,CAAC,CAAC;EACX,CAAC,CAAC;AACJ,CAAC,MAAM;EACL;EACAA,OAAO,CAAC,CAAC;AACX;AAEA,eAAeA,OAAOA,CAAA,EAAG;EACvB,IAAI;IACF,MAAM,IAAAC,sBAAS,EAAC,CAAC;IACjB;IACA;IACA,MAAM,IAAAC,iBAAM,EAAC,CAAC;EAChB,CAAC,CAAC,OAAOjB,GAAQ,EAAE;IACjB,MAAMkB,aAAa,GAAGlB,GAAG,CAACkB,aAAa,IAAIlB,GAAG;IAC9C,MAAM,IAAAmB,yBAAkB,EAACD,aAAa,EAAEpB,OAAO,CAACS,IAAI,CAAC,CAAC,CAAC,CAAC;EAC1D;AACF","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.harmony_bit@1.8.
|
|
2
|
-
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.harmony_bit@1.8.
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.harmony_bit@1.8.84/dist/bit.compositions.js';
|
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.harmony_bit@1.8.84/dist/bit.docs.js';
|
|
3
3
|
|
|
4
4
|
export const compositions = [compositions_0];
|
|
5
5
|
export const overview = [overview_0];
|
|
@@ -1,3 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is responsible for interacting with bit through a long-running background process "bit-server" rather than directly.
|
|
3
|
+
* Why not directly?
|
|
4
|
+
* 1. startup cost. currently it takes around 1 second to bootstrap bit.
|
|
5
|
+
* 2. an experimental package-manager saves node_modules in-memory. if a client starts a new process, it won't have the node_modules in-memory.
|
|
6
|
+
*
|
|
7
|
+
* In this file, there are three ways to achieve this. It's outlined in the order it was evolved.
|
|
8
|
+
* The big challenge here is to show the output correctly to the client even though the server is running in a different process.
|
|
9
|
+
*
|
|
10
|
+
* 1. process.env.BIT_CLI_SERVER === 'true'
|
|
11
|
+
* This method uses SSE - Server Send Events. The server sends events to the client with the output to print. The client listens to
|
|
12
|
+
* these events and prints them. It's cumbersome. For this, the logger was changed and every time the logger needs to print to the console,
|
|
13
|
+
* it was using this SSE to send events. Same with the loader.
|
|
14
|
+
* Cons: Other output, such as pnpm, needs an extra effort to print - for pnpm, the "process" object was passed to pnpm
|
|
15
|
+
* and its stdout was modified to use the SSE.
|
|
16
|
+
* However, other tools that print directly to the console, such as Jest, won't work.
|
|
17
|
+
*
|
|
18
|
+
* 2. process.env.BIT_CLI_SERVER_TTY === 'true'
|
|
19
|
+
* Because the terminal - tty is a fd (file descriptor) on mac/linux, it can be passed to the server. The server can write to this
|
|
20
|
+
* fd and it will be printed to the client terminal. On the server, the process.stdout.write was monkey-patched to
|
|
21
|
+
* write to the tty. (see cli-raw.route.ts file).
|
|
22
|
+
* It solves the problem of Jest and other tools that print directly to the console.
|
|
23
|
+
* Cons:
|
|
24
|
+
* A. It doesn't work on Windows. Windows doesn't treat tty as a file descriptor.
|
|
25
|
+
* B. We need two ways communication. Commands such as "bit update", display a prompt with option to select using the arrow keys.
|
|
26
|
+
* This is not possible with the tty approach. Also, if the client hits Ctrl+C, the server won't know about it and it
|
|
27
|
+
* won't kill the process.
|
|
28
|
+
*
|
|
29
|
+
* 3. process.env.BIT_CLI_SERVER_PTY === 'true'
|
|
30
|
+
* This is the most advanced approach. It spawns a pty (pseudo terminal) process to communicate between the client and the server.
|
|
31
|
+
* The client connects to the server using a socket. The server writes to the socket and the client reads from it.
|
|
32
|
+
* The client also writes to the socket and the server reads from it. See server-forever.ts to understand better.
|
|
33
|
+
* In order to pass terminal sequences, such as arrow keys or Ctrl+C, the stdin of the client is set to raw mode.
|
|
34
|
+
* In theory, this approach could work by spawning a normal process, not pty, however, then, the stdin/stdout are non-tty,
|
|
35
|
+
* and as a result, loaders such as Ora and chalk won't work.
|
|
36
|
+
* With this new approach, we also support terminating and reloading the server. A new command is added
|
|
37
|
+
* "bit server-forever", which spawns the pty-process. If the client hits Ctrl+C, this server-forever process will kill
|
|
38
|
+
* the pty-process and re-load it.
|
|
39
|
+
* Keep in mind, that to send the command and get the results, we still using http. The usage of the pty is only for
|
|
40
|
+
* the input/output during the command.
|
|
41
|
+
* I was trying to avoid the http, and use only the pty, by implementing readline to get the command from the socket,
|
|
42
|
+
* but then I wasn't able to return the prompt to the user easily. So, I decided to keep the http for the request/response part.
|
|
43
|
+
*/
|
|
1
44
|
type CommandResult = {
|
|
2
45
|
data: any;
|
|
3
46
|
exitCode: number;
|
|
@@ -6,6 +49,7 @@ export declare class ServerCommander {
|
|
|
6
49
|
execute(): Promise<void>;
|
|
7
50
|
private shouldUseTTYPath;
|
|
8
51
|
runCommandWithHttpServer(): Promise<CommandResult | undefined>;
|
|
52
|
+
private connectToSocket;
|
|
9
53
|
/**
|
|
10
54
|
* Initialize the server-sent events (SSE) connection to the server.
|
|
11
55
|
* This is used to print the logs and show the loader during the command.
|
|
@@ -19,6 +63,7 @@ export declare class ServerCommander {
|
|
|
19
63
|
*/
|
|
20
64
|
private initSSE;
|
|
21
65
|
private printPortIfAsked;
|
|
66
|
+
private printSocketPortIfAsked;
|
|
22
67
|
private getExistingUsedPort;
|
|
23
68
|
private isPortInUse;
|
|
24
69
|
private getExistingPort;
|
package/dist/server-commander.js
CHANGED
|
@@ -75,7 +75,58 @@ function _bootstrap() {
|
|
|
75
75
|
};
|
|
76
76
|
return data;
|
|
77
77
|
}
|
|
78
|
+
function _serverForever() {
|
|
79
|
+
const data = require("./server-forever");
|
|
80
|
+
_serverForever = function () {
|
|
81
|
+
return data;
|
|
82
|
+
};
|
|
83
|
+
return data;
|
|
84
|
+
}
|
|
78
85
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
86
|
+
/**
|
|
87
|
+
* This file is responsible for interacting with bit through a long-running background process "bit-server" rather than directly.
|
|
88
|
+
* Why not directly?
|
|
89
|
+
* 1. startup cost. currently it takes around 1 second to bootstrap bit.
|
|
90
|
+
* 2. an experimental package-manager saves node_modules in-memory. if a client starts a new process, it won't have the node_modules in-memory.
|
|
91
|
+
*
|
|
92
|
+
* In this file, there are three ways to achieve this. It's outlined in the order it was evolved.
|
|
93
|
+
* The big challenge here is to show the output correctly to the client even though the server is running in a different process.
|
|
94
|
+
*
|
|
95
|
+
* 1. process.env.BIT_CLI_SERVER === 'true'
|
|
96
|
+
* This method uses SSE - Server Send Events. The server sends events to the client with the output to print. The client listens to
|
|
97
|
+
* these events and prints them. It's cumbersome. For this, the logger was changed and every time the logger needs to print to the console,
|
|
98
|
+
* it was using this SSE to send events. Same with the loader.
|
|
99
|
+
* Cons: Other output, such as pnpm, needs an extra effort to print - for pnpm, the "process" object was passed to pnpm
|
|
100
|
+
* and its stdout was modified to use the SSE.
|
|
101
|
+
* However, other tools that print directly to the console, such as Jest, won't work.
|
|
102
|
+
*
|
|
103
|
+
* 2. process.env.BIT_CLI_SERVER_TTY === 'true'
|
|
104
|
+
* Because the terminal - tty is a fd (file descriptor) on mac/linux, it can be passed to the server. The server can write to this
|
|
105
|
+
* fd and it will be printed to the client terminal. On the server, the process.stdout.write was monkey-patched to
|
|
106
|
+
* write to the tty. (see cli-raw.route.ts file).
|
|
107
|
+
* It solves the problem of Jest and other tools that print directly to the console.
|
|
108
|
+
* Cons:
|
|
109
|
+
* A. It doesn't work on Windows. Windows doesn't treat tty as a file descriptor.
|
|
110
|
+
* B. We need two ways communication. Commands such as "bit update", display a prompt with option to select using the arrow keys.
|
|
111
|
+
* This is not possible with the tty approach. Also, if the client hits Ctrl+C, the server won't know about it and it
|
|
112
|
+
* won't kill the process.
|
|
113
|
+
*
|
|
114
|
+
* 3. process.env.BIT_CLI_SERVER_PTY === 'true'
|
|
115
|
+
* This is the most advanced approach. It spawns a pty (pseudo terminal) process to communicate between the client and the server.
|
|
116
|
+
* The client connects to the server using a socket. The server writes to the socket and the client reads from it.
|
|
117
|
+
* The client also writes to the socket and the server reads from it. See server-forever.ts to understand better.
|
|
118
|
+
* In order to pass terminal sequences, such as arrow keys or Ctrl+C, the stdin of the client is set to raw mode.
|
|
119
|
+
* In theory, this approach could work by spawning a normal process, not pty, however, then, the stdin/stdout are non-tty,
|
|
120
|
+
* and as a result, loaders such as Ora and chalk won't work.
|
|
121
|
+
* With this new approach, we also support terminating and reloading the server. A new command is added
|
|
122
|
+
* "bit server-forever", which spawns the pty-process. If the client hits Ctrl+C, this server-forever process will kill
|
|
123
|
+
* the pty-process and re-load it.
|
|
124
|
+
* Keep in mind, that to send the command and get the results, we still using http. The usage of the pty is only for
|
|
125
|
+
* the input/output during the command.
|
|
126
|
+
* I was trying to avoid the http, and use only the pty, by implementing readline to get the command from the socket,
|
|
127
|
+
* but then I wasn't able to return the prompt to the user easily. So, I decided to keep the http for the request/response part.
|
|
128
|
+
*/
|
|
129
|
+
|
|
79
130
|
class ServerPortFileNotFound extends Error {
|
|
80
131
|
constructor(filePath) {
|
|
81
132
|
super(`server port file not found at ${filePath}`);
|
|
@@ -123,14 +174,19 @@ class ServerCommander {
|
|
|
123
174
|
}
|
|
124
175
|
async runCommandWithHttpServer() {
|
|
125
176
|
await this.printPortIfAsked();
|
|
177
|
+
this.printSocketPortIfAsked();
|
|
126
178
|
(0, _bootstrap().printBitVersionIfAsked)();
|
|
127
179
|
const port = await this.getExistingUsedPort();
|
|
128
180
|
const url = `http://localhost:${port}/api`;
|
|
181
|
+
const shouldUsePTY = process.env.BIT_CLI_SERVER_PTY === 'true';
|
|
182
|
+
if (shouldUsePTY) {
|
|
183
|
+
await this.connectToSocket();
|
|
184
|
+
}
|
|
129
185
|
const ttyPath = this.shouldUseTTYPath() ? (0, _child_process().execSync)('tty', {
|
|
130
186
|
encoding: 'utf8',
|
|
131
187
|
stdio: ['inherit', 'pipe', 'pipe']
|
|
132
188
|
}).trim() : undefined;
|
|
133
|
-
if (!ttyPath) this.initSSE(url);
|
|
189
|
+
if (!ttyPath && !shouldUsePTY) this.initSSE(url);
|
|
134
190
|
// parse the args and options from the command
|
|
135
191
|
const args = process.argv.slice(2);
|
|
136
192
|
if (!args.includes('--json') && !args.includes('-j')) {
|
|
@@ -142,7 +198,8 @@ class ServerCommander {
|
|
|
142
198
|
command: args,
|
|
143
199
|
pwd,
|
|
144
200
|
envBitFeatures: process.env.BIT_FEATURES,
|
|
145
|
-
ttyPath
|
|
201
|
+
ttyPath,
|
|
202
|
+
isPty: shouldUsePTY
|
|
146
203
|
};
|
|
147
204
|
let res;
|
|
148
205
|
try {
|
|
@@ -172,6 +229,63 @@ class ServerCommander {
|
|
|
172
229
|
}
|
|
173
230
|
throw new Error(jsonResponse?.message || jsonResponse || res.statusText);
|
|
174
231
|
}
|
|
232
|
+
async connectToSocket() {
|
|
233
|
+
return new Promise((resolve, reject) => {
|
|
234
|
+
const socketPort = (0, _serverForever().getSocketPort)();
|
|
235
|
+
const socket = _net().default.createConnection({
|
|
236
|
+
port: socketPort
|
|
237
|
+
});
|
|
238
|
+
const resetStdin = () => {
|
|
239
|
+
process.stdin.setRawMode(false);
|
|
240
|
+
process.stdin.pause();
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
// Handle errors that occur before or after connection
|
|
244
|
+
socket.on('error', err => {
|
|
245
|
+
if (err.code === 'ECONNREFUSED') {
|
|
246
|
+
reject(new Error(`Error: Unable to connect to the socket on port ${socketPort}.
|
|
247
|
+
Please run the command "bit server-forever" first to start the server.`));
|
|
248
|
+
}
|
|
249
|
+
resetStdin();
|
|
250
|
+
socket.destroy(); // Ensure the socket is fully closed
|
|
251
|
+
reject(err);
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
// Handle successful connection
|
|
255
|
+
socket.on('connect', () => {
|
|
256
|
+
process.stdin.setRawMode(true);
|
|
257
|
+
process.stdin.resume();
|
|
258
|
+
|
|
259
|
+
// Forward stdin to the socket
|
|
260
|
+
process.stdin.on('data', data => {
|
|
261
|
+
socket.write(data);
|
|
262
|
+
|
|
263
|
+
// Detect Ctrl+C (hex code '03')
|
|
264
|
+
if (data.toString('hex') === '03') {
|
|
265
|
+
// Important to write it to the socket so the server knows to kill the PTY process
|
|
266
|
+
process.stdin.setRawMode(false);
|
|
267
|
+
process.stdin.pause();
|
|
268
|
+
socket.end();
|
|
269
|
+
process.exit();
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
// Forward data from the socket to stdout
|
|
274
|
+
socket.on('data', data => {
|
|
275
|
+
process.stdout.write(data);
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
// Handle socket close and end events
|
|
279
|
+
const cleanup = () => {
|
|
280
|
+
resetStdin();
|
|
281
|
+
socket.destroy();
|
|
282
|
+
};
|
|
283
|
+
socket.on('close', cleanup);
|
|
284
|
+
socket.on('end', cleanup);
|
|
285
|
+
resolve(); // Connection successful, resolve the Promise
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
}
|
|
175
289
|
|
|
176
290
|
/**
|
|
177
291
|
* Initialize the server-sent events (SSE) connection to the server.
|
|
@@ -220,6 +334,17 @@ class ServerCommander {
|
|
|
220
334
|
process.exit(1);
|
|
221
335
|
}
|
|
222
336
|
}
|
|
337
|
+
printSocketPortIfAsked() {
|
|
338
|
+
if (!process.argv.includes('cli-server-socket-port')) return;
|
|
339
|
+
try {
|
|
340
|
+
const port = (0, _serverForever().getSocketPort)();
|
|
341
|
+
process.stdout.write(port.toString());
|
|
342
|
+
process.exit(0);
|
|
343
|
+
} catch (err) {
|
|
344
|
+
console.error(err.message); // eslint-disable-line no-console
|
|
345
|
+
process.exit(1);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
223
348
|
async getExistingUsedPort() {
|
|
224
349
|
const port = await this.getExistingPort();
|
|
225
350
|
const isPortInUse = await this.isPortInUse(port);
|
|
@@ -276,7 +401,7 @@ class ServerCommander {
|
|
|
276
401
|
exports.ServerCommander = ServerCommander;
|
|
277
402
|
function shouldUseBitServer() {
|
|
278
403
|
const commandsToSkip = ['start', 'run', 'watch', 'server'];
|
|
279
|
-
const hasFlag = process.env.BIT_CLI_SERVER === 'true' || process.env.BIT_CLI_SERVER === '1' || process.env.BIT_CLI_SERVER_TTY === 'true';
|
|
404
|
+
const hasFlag = process.env.BIT_CLI_SERVER === 'true' || process.env.BIT_CLI_SERVER === '1' || process.env.BIT_CLI_SERVER_PTY === 'true' || process.env.BIT_CLI_SERVER_TTY === 'true';
|
|
280
405
|
return hasFlag && process.argv.length > 2 &&
|
|
281
406
|
// if it has no args, it shows the help
|
|
282
407
|
!commandsToSkip.includes(process.argv[2]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_nodeFetch","data","_interopRequireDefault","require","_net","_fsExtra","_child_process","_path","_eventsource","_scopeModules","_chalk","_loader","_bootstrap","e","__esModule","default","ServerPortFileNotFound","Error","constructor","filePath","ServerIsNotRunning","port","ScopeNotFound","scopePath","ServerCommander","execute","results","runCommandWithHttpServer","exitCode","loader","off","dataToPrint","JSON","stringify","undefined","console","log","process","exit","err","error","chalk","red","message","shouldUseTTYPath","platform","env","BIT_CLI_SERVER_TTY","printPortIfAsked","printBitVersionIfAsked","getExistingUsedPort","url","ttyPath","execSync","encoding","stdio","trim","initSSE","args","argv","slice","includes","on","endpoint","pwd","cwd","body","command","envBitFeatures","BIT_FEATURES","res","fetch","method","headers","code","deleteServerPortFile","join","ok","json","jsonResponse","statusText","eventSource","EventSource","onerror","_error","close","addEventListener","event","parsed","parse","stdout","write","toString","getExistingPort","isPortInUse","Promise","resolve","reject","client","net","Socket","once","end","connect","host","getServerPortFilePath","fileContent","fs","readFile","parseInt","remove","findScopePath","exports","shouldUseBitServer","commandsToSkip","hasFlag","BIT_CLI_SERVER","length"],"sources":["server-commander.ts"],"sourcesContent":["import fetch from 'node-fetch';\nimport net from 'net';\nimport fs from 'fs-extra';\nimport { execSync } from 'child_process';\nimport { join } from 'path';\nimport EventSource from 'eventsource';\nimport { findScopePath } from '@teambit/scope.modules.find-scope-path';\nimport chalk from 'chalk';\nimport loader from '@teambit/legacy/dist/cli/loader';\nimport { printBitVersionIfAsked } from './bootstrap';\n\nclass ServerPortFileNotFound extends Error {\n constructor(filePath: string) {\n super(`server port file not found at ${filePath}`);\n }\n}\nclass ServerIsNotRunning extends Error {\n constructor(port: number) {\n super(`bit server is not running on port ${port}`);\n }\n}\nclass ScopeNotFound extends Error {\n constructor(scopePath: string) {\n super(`scope not found at ${scopePath}`);\n }\n}\n\ntype CommandResult = { data: any; exitCode: number };\n\nexport class ServerCommander {\n async execute() {\n try {\n const results = await this.runCommandWithHttpServer();\n if (results) {\n const { data, exitCode } = results;\n loader.off();\n const dataToPrint = typeof data === 'string' ? data : JSON.stringify(data, undefined, 2);\n // eslint-disable-next-line no-console\n console.log(dataToPrint);\n process.exit(exitCode);\n }\n\n process.exit(0);\n } catch (err: any) {\n if (err instanceof ScopeNotFound || err instanceof ServerPortFileNotFound || err instanceof ServerIsNotRunning) {\n throw err;\n }\n loader.off();\n // eslint-disable-next-line no-console\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n }\n\n private shouldUseTTYPath() {\n if (process.platform === 'win32') return false; // windows doesn't support tty path\n return process.env.BIT_CLI_SERVER_TTY === 'true';\n }\n\n async runCommandWithHttpServer(): Promise<CommandResult | undefined> {\n await this.printPortIfAsked();\n printBitVersionIfAsked();\n const port = await this.getExistingUsedPort();\n const url = `http://localhost:${port}/api`;\n const ttyPath = this.shouldUseTTYPath()\n ? execSync('tty', {\n encoding: 'utf8',\n stdio: ['inherit', 'pipe', 'pipe'],\n }).trim()\n : undefined;\n if (!ttyPath) this.initSSE(url);\n // parse the args and options from the command\n const args = process.argv.slice(2);\n if (!args.includes('--json') && !args.includes('-j')) {\n loader.on();\n }\n const endpoint = `cli-raw`;\n const pwd = process.cwd();\n const body = { command: args, pwd, envBitFeatures: process.env.BIT_FEATURES, ttyPath };\n let res;\n try {\n res = await fetch(`${url}/${endpoint}`, {\n method: 'post',\n body: JSON.stringify(body),\n headers: { 'Content-Type': 'application/json' },\n });\n } catch (err: any) {\n if (err.code === 'ECONNREFUSED') {\n await this.deleteServerPortFile();\n throw new ServerIsNotRunning(port);\n }\n throw new Error(`failed to run command \"${args.join(' ')}\" on the server. ${err.message}`);\n }\n\n if (res.ok) {\n const results = await res.json();\n return results;\n }\n\n let jsonResponse;\n try {\n jsonResponse = await res.json();\n } catch (e: any) {\n // the response is not json, ignore the body.\n }\n throw new Error(jsonResponse?.message || jsonResponse || res.statusText);\n }\n\n /**\n * Initialize the server-sent events (SSE) connection to the server.\n * This is used to print the logs and show the loader during the command.\n * Without this, it only shows the response from http server, but not the \"logger.console\" or \"logger.setStatusLine\" texts.\n *\n * I wasn't able to find a better way to do it. The challenge here is that the http server is running in a different\n * process, which is not connected to the current process in any way. (unlike the IDE which is its child process and\n * can access its stdout).\n * One of the attempts I made is sending the \"tty\" path to the server and let the server console log to that path, but\n * it didn't work well. It was printed only after the response came back from the server.\n */\n private initSSE(url: string) {\n const eventSource = new EventSource(`${url}/sse-events`);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n eventSource.onerror = (_error: any) => {\n // eslint-disable-next-line no-console\n // console.error('Error occurred in SSE connection:', _error);\n // probably was unable to connect to the server and will throw ServerNotFound right after. no need to show this error.\n eventSource.close();\n };\n eventSource.addEventListener('onLoader', (event: any) => {\n const parsed = JSON.parse(event.data);\n const { method, args } = parsed;\n loader[method](...(args || []));\n });\n eventSource.addEventListener('onLogWritten', (event: any) => {\n const parsed = JSON.parse(event.data);\n process.stdout.write(parsed.message);\n });\n }\n\n private async printPortIfAsked() {\n if (!process.argv.includes('cli-server-port')) return;\n try {\n const port = await this.getExistingUsedPort();\n process.stdout.write(port.toString());\n process.exit(0);\n } catch (err: any) {\n if (err instanceof ScopeNotFound || err instanceof ServerPortFileNotFound || err instanceof ServerIsNotRunning) {\n process.exit(0);\n }\n console.error(err.message); // eslint-disable-line no-console\n process.exit(1);\n }\n }\n\n private async getExistingUsedPort(): Promise<number> {\n const port = await this.getExistingPort();\n const isPortInUse = await this.isPortInUse(port);\n if (!isPortInUse) {\n await this.deleteServerPortFile();\n throw new ServerIsNotRunning(port);\n }\n\n return port;\n }\n\n private isPortInUse(port: number): Promise<boolean> {\n return new Promise((resolve, reject) => {\n const client = new net.Socket();\n\n client.once('error', (err: any) => {\n if (err.code === 'ECONNREFUSED' || err.code === 'EHOSTUNREACH') {\n resolve(false);\n } else {\n reject(err);\n }\n });\n\n client.once('connect', () => {\n client.end();\n resolve(true);\n });\n\n client.connect({ port, host: 'localhost' });\n });\n }\n\n private async getExistingPort(): Promise<number> {\n const filePath = this.getServerPortFilePath();\n try {\n const fileContent = await fs.readFile(filePath, 'utf8');\n return parseInt(fileContent, 10);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new ServerPortFileNotFound(filePath);\n }\n throw err;\n }\n }\n\n private async deleteServerPortFile() {\n const filePath = this.getServerPortFilePath();\n await fs.remove(filePath);\n }\n\n private getServerPortFilePath() {\n const scopePath = findScopePath(process.cwd());\n if (!scopePath) {\n throw new ScopeNotFound(process.cwd());\n }\n return join(scopePath, 'server-port.txt');\n }\n}\n\nexport function shouldUseBitServer() {\n const commandsToSkip = ['start', 'run', 'watch', 'server'];\n const hasFlag =\n process.env.BIT_CLI_SERVER === 'true' ||\n process.env.BIT_CLI_SERVER === '1' ||\n process.env.BIT_CLI_SERVER_TTY === 'true';\n return (\n hasFlag &&\n process.argv.length > 2 && // if it has no args, it shows the help\n !commandsToSkip.includes(process.argv[2])\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_nodeFetch","data","_interopRequireDefault","require","_net","_fsExtra","_child_process","_path","_eventsource","_scopeModules","_chalk","_loader","_bootstrap","_serverForever","e","__esModule","default","ServerPortFileNotFound","Error","constructor","filePath","ServerIsNotRunning","port","ScopeNotFound","scopePath","ServerCommander","execute","results","runCommandWithHttpServer","exitCode","loader","off","dataToPrint","JSON","stringify","undefined","console","log","process","exit","err","error","chalk","red","message","shouldUseTTYPath","platform","env","BIT_CLI_SERVER_TTY","printPortIfAsked","printSocketPortIfAsked","printBitVersionIfAsked","getExistingUsedPort","url","shouldUsePTY","BIT_CLI_SERVER_PTY","connectToSocket","ttyPath","execSync","encoding","stdio","trim","initSSE","args","argv","slice","includes","on","endpoint","pwd","cwd","body","command","envBitFeatures","BIT_FEATURES","isPty","res","fetch","method","headers","code","deleteServerPortFile","join","ok","json","jsonResponse","statusText","Promise","resolve","reject","socketPort","getSocketPort","socket","net","createConnection","resetStdin","stdin","setRawMode","pause","destroy","resume","write","toString","end","stdout","cleanup","eventSource","EventSource","onerror","_error","close","addEventListener","event","parsed","parse","getExistingPort","isPortInUse","client","Socket","once","connect","host","getServerPortFilePath","fileContent","fs","readFile","parseInt","remove","findScopePath","exports","shouldUseBitServer","commandsToSkip","hasFlag","BIT_CLI_SERVER","length"],"sources":["server-commander.ts"],"sourcesContent":["/**\n * This file is responsible for interacting with bit through a long-running background process \"bit-server\" rather than directly.\n * Why not directly?\n * 1. startup cost. currently it takes around 1 second to bootstrap bit.\n * 2. an experimental package-manager saves node_modules in-memory. if a client starts a new process, it won't have the node_modules in-memory.\n *\n * In this file, there are three ways to achieve this. It's outlined in the order it was evolved.\n * The big challenge here is to show the output correctly to the client even though the server is running in a different process.\n *\n * 1. process.env.BIT_CLI_SERVER === 'true'\n * This method uses SSE - Server Send Events. The server sends events to the client with the output to print. The client listens to\n * these events and prints them. It's cumbersome. For this, the logger was changed and every time the logger needs to print to the console,\n * it was using this SSE to send events. Same with the loader.\n * Cons: Other output, such as pnpm, needs an extra effort to print - for pnpm, the \"process\" object was passed to pnpm\n * and its stdout was modified to use the SSE.\n * However, other tools that print directly to the console, such as Jest, won't work.\n *\n * 2. process.env.BIT_CLI_SERVER_TTY === 'true'\n * Because the terminal - tty is a fd (file descriptor) on mac/linux, it can be passed to the server. The server can write to this\n * fd and it will be printed to the client terminal. On the server, the process.stdout.write was monkey-patched to\n * write to the tty. (see cli-raw.route.ts file).\n * It solves the problem of Jest and other tools that print directly to the console.\n * Cons:\n * A. It doesn't work on Windows. Windows doesn't treat tty as a file descriptor.\n * B. We need two ways communication. Commands such as \"bit update\", display a prompt with option to select using the arrow keys.\n * This is not possible with the tty approach. Also, if the client hits Ctrl+C, the server won't know about it and it\n * won't kill the process.\n *\n * 3. process.env.BIT_CLI_SERVER_PTY === 'true'\n * This is the most advanced approach. It spawns a pty (pseudo terminal) process to communicate between the client and the server.\n * The client connects to the server using a socket. The server writes to the socket and the client reads from it.\n * The client also writes to the socket and the server reads from it. See server-forever.ts to understand better.\n * In order to pass terminal sequences, such as arrow keys or Ctrl+C, the stdin of the client is set to raw mode.\n * In theory, this approach could work by spawning a normal process, not pty, however, then, the stdin/stdout are non-tty,\n * and as a result, loaders such as Ora and chalk won't work.\n * With this new approach, we also support terminating and reloading the server. A new command is added\n * \"bit server-forever\", which spawns the pty-process. If the client hits Ctrl+C, this server-forever process will kill\n * the pty-process and re-load it.\n * Keep in mind, that to send the command and get the results, we still using http. The usage of the pty is only for\n * the input/output during the command.\n * I was trying to avoid the http, and use only the pty, by implementing readline to get the command from the socket,\n * but then I wasn't able to return the prompt to the user easily. So, I decided to keep the http for the request/response part.\n */\n\nimport fetch from 'node-fetch';\nimport net from 'net';\nimport fs from 'fs-extra';\nimport { execSync } from 'child_process';\nimport { join } from 'path';\nimport EventSource from 'eventsource';\nimport { findScopePath } from '@teambit/scope.modules.find-scope-path';\nimport chalk from 'chalk';\nimport loader from '@teambit/legacy/dist/cli/loader';\nimport { printBitVersionIfAsked } from './bootstrap';\nimport { getSocketPort } from './server-forever';\n\nclass ServerPortFileNotFound extends Error {\n constructor(filePath: string) {\n super(`server port file not found at ${filePath}`);\n }\n}\nclass ServerIsNotRunning extends Error {\n constructor(port: number) {\n super(`bit server is not running on port ${port}`);\n }\n}\nclass ScopeNotFound extends Error {\n constructor(scopePath: string) {\n super(`scope not found at ${scopePath}`);\n }\n}\n\ntype CommandResult = { data: any; exitCode: number };\n\nexport class ServerCommander {\n async execute() {\n try {\n const results = await this.runCommandWithHttpServer();\n if (results) {\n const { data, exitCode } = results;\n loader.off();\n const dataToPrint = typeof data === 'string' ? data : JSON.stringify(data, undefined, 2);\n // eslint-disable-next-line no-console\n console.log(dataToPrint);\n process.exit(exitCode);\n }\n\n process.exit(0);\n } catch (err: any) {\n if (err instanceof ScopeNotFound || err instanceof ServerPortFileNotFound || err instanceof ServerIsNotRunning) {\n throw err;\n }\n loader.off();\n // eslint-disable-next-line no-console\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n }\n\n private shouldUseTTYPath() {\n if (process.platform === 'win32') return false; // windows doesn't support tty path\n return process.env.BIT_CLI_SERVER_TTY === 'true';\n }\n\n async runCommandWithHttpServer(): Promise<CommandResult | undefined> {\n await this.printPortIfAsked();\n this.printSocketPortIfAsked();\n printBitVersionIfAsked();\n const port = await this.getExistingUsedPort();\n const url = `http://localhost:${port}/api`;\n const shouldUsePTY = process.env.BIT_CLI_SERVER_PTY === 'true';\n\n if (shouldUsePTY) {\n await this.connectToSocket();\n }\n const ttyPath = this.shouldUseTTYPath()\n ? execSync('tty', {\n encoding: 'utf8',\n stdio: ['inherit', 'pipe', 'pipe'],\n }).trim()\n : undefined;\n if (!ttyPath && !shouldUsePTY) this.initSSE(url);\n // parse the args and options from the command\n const args = process.argv.slice(2);\n if (!args.includes('--json') && !args.includes('-j')) {\n loader.on();\n }\n const endpoint = `cli-raw`;\n const pwd = process.cwd();\n const body = { command: args, pwd, envBitFeatures: process.env.BIT_FEATURES, ttyPath, isPty: shouldUsePTY };\n let res;\n try {\n res = await fetch(`${url}/${endpoint}`, {\n method: 'post',\n body: JSON.stringify(body),\n headers: { 'Content-Type': 'application/json' },\n });\n } catch (err: any) {\n if (err.code === 'ECONNREFUSED') {\n await this.deleteServerPortFile();\n throw new ServerIsNotRunning(port);\n }\n throw new Error(`failed to run command \"${args.join(' ')}\" on the server. ${err.message}`);\n }\n\n if (res.ok) {\n const results = await res.json();\n return results;\n }\n\n let jsonResponse;\n try {\n jsonResponse = await res.json();\n } catch (e: any) {\n // the response is not json, ignore the body.\n }\n throw new Error(jsonResponse?.message || jsonResponse || res.statusText);\n }\n\n private async connectToSocket() {\n return new Promise<void>((resolve, reject) => {\n const socketPort = getSocketPort();\n const socket = net.createConnection({ port: socketPort });\n\n const resetStdin = () => {\n process.stdin.setRawMode(false);\n process.stdin.pause();\n };\n\n // Handle errors that occur before or after connection\n socket.on('error', (err: any) => {\n if (err.code === 'ECONNREFUSED') {\n reject(\n new Error(`Error: Unable to connect to the socket on port ${socketPort}.\nPlease run the command \"bit server-forever\" first to start the server.`)\n );\n }\n resetStdin();\n socket.destroy(); // Ensure the socket is fully closed\n reject(err);\n });\n\n // Handle successful connection\n socket.on('connect', () => {\n process.stdin.setRawMode(true);\n process.stdin.resume();\n\n // Forward stdin to the socket\n process.stdin.on('data', (data: any) => {\n socket.write(data);\n\n // Detect Ctrl+C (hex code '03')\n if (data.toString('hex') === '03') {\n // Important to write it to the socket so the server knows to kill the PTY process\n process.stdin.setRawMode(false);\n process.stdin.pause();\n socket.end();\n process.exit();\n }\n });\n\n // Forward data from the socket to stdout\n socket.on('data', (data: any) => {\n process.stdout.write(data);\n });\n\n // Handle socket close and end events\n const cleanup = () => {\n resetStdin();\n socket.destroy();\n };\n\n socket.on('close', cleanup);\n socket.on('end', cleanup);\n\n resolve(); // Connection successful, resolve the Promise\n });\n });\n }\n\n /**\n * Initialize the server-sent events (SSE) connection to the server.\n * This is used to print the logs and show the loader during the command.\n * Without this, it only shows the response from http server, but not the \"logger.console\" or \"logger.setStatusLine\" texts.\n *\n * I wasn't able to find a better way to do it. The challenge here is that the http server is running in a different\n * process, which is not connected to the current process in any way. (unlike the IDE which is its child process and\n * can access its stdout).\n * One of the attempts I made is sending the \"tty\" path to the server and let the server console log to that path, but\n * it didn't work well. It was printed only after the response came back from the server.\n */\n private initSSE(url: string) {\n const eventSource = new EventSource(`${url}/sse-events`);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n eventSource.onerror = (_error: any) => {\n // eslint-disable-next-line no-console\n // console.error('Error occurred in SSE connection:', _error);\n // probably was unable to connect to the server and will throw ServerNotFound right after. no need to show this error.\n eventSource.close();\n };\n eventSource.addEventListener('onLoader', (event: any) => {\n const parsed = JSON.parse(event.data);\n const { method, args } = parsed;\n loader[method](...(args || []));\n });\n eventSource.addEventListener('onLogWritten', (event: any) => {\n const parsed = JSON.parse(event.data);\n process.stdout.write(parsed.message);\n });\n }\n\n private async printPortIfAsked() {\n if (!process.argv.includes('cli-server-port')) return;\n try {\n const port = await this.getExistingUsedPort();\n process.stdout.write(port.toString());\n process.exit(0);\n } catch (err: any) {\n if (err instanceof ScopeNotFound || err instanceof ServerPortFileNotFound || err instanceof ServerIsNotRunning) {\n process.exit(0);\n }\n console.error(err.message); // eslint-disable-line no-console\n process.exit(1);\n }\n }\n\n private printSocketPortIfAsked() {\n if (!process.argv.includes('cli-server-socket-port')) return;\n try {\n const port = getSocketPort();\n process.stdout.write(port.toString());\n process.exit(0);\n } catch (err: any) {\n console.error(err.message); // eslint-disable-line no-console\n process.exit(1);\n }\n }\n\n private async getExistingUsedPort(): Promise<number> {\n const port = await this.getExistingPort();\n const isPortInUse = await this.isPortInUse(port);\n if (!isPortInUse) {\n await this.deleteServerPortFile();\n throw new ServerIsNotRunning(port);\n }\n\n return port;\n }\n\n private isPortInUse(port: number): Promise<boolean> {\n return new Promise((resolve, reject) => {\n const client = new net.Socket();\n\n client.once('error', (err: any) => {\n if (err.code === 'ECONNREFUSED' || err.code === 'EHOSTUNREACH') {\n resolve(false);\n } else {\n reject(err);\n }\n });\n\n client.once('connect', () => {\n client.end();\n resolve(true);\n });\n\n client.connect({ port, host: 'localhost' });\n });\n }\n\n private async getExistingPort(): Promise<number> {\n const filePath = this.getServerPortFilePath();\n try {\n const fileContent = await fs.readFile(filePath, 'utf8');\n return parseInt(fileContent, 10);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n throw new ServerPortFileNotFound(filePath);\n }\n throw err;\n }\n }\n\n private async deleteServerPortFile() {\n const filePath = this.getServerPortFilePath();\n await fs.remove(filePath);\n }\n\n private getServerPortFilePath() {\n const scopePath = findScopePath(process.cwd());\n if (!scopePath) {\n throw new ScopeNotFound(process.cwd());\n }\n return join(scopePath, 'server-port.txt');\n }\n}\n\nexport function shouldUseBitServer() {\n const commandsToSkip = ['start', 'run', 'watch', 'server'];\n const hasFlag =\n process.env.BIT_CLI_SERVER === 'true' ||\n process.env.BIT_CLI_SERVER === '1' ||\n process.env.BIT_CLI_SERVER_PTY === 'true' ||\n process.env.BIT_CLI_SERVER_TTY === 'true';\n return (\n hasFlag &&\n process.argv.length > 2 && // if it has no args, it shows the help\n !commandsToSkip.includes(process.argv[2])\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* see the docs of server-commander.ts for more info
|
|
3
|
+
* this "server-forever" command is used to run the bit server in a way that it will never stop. if it gets killed,
|
|
4
|
+
* it will restart itself.
|
|
5
|
+
* it spawns "bit server" using node-pty for a pseudo-terminal (PTY) in order for libs such as inquirer/ora/chalk to work properly.
|
|
6
|
+
*/
|
|
7
|
+
export declare function spawnPTY(): void;
|
|
8
|
+
export declare function getSocketPort(): number;
|
|
9
|
+
/**
|
|
10
|
+
* it's easier to generate a random port based on the workspace path than to save it in a file
|
|
11
|
+
*/
|
|
12
|
+
export declare function getPortFromPath(path: string): number;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getPortFromPath = getPortFromPath;
|
|
7
|
+
exports.getSocketPort = getSocketPort;
|
|
8
|
+
exports.spawnPTY = spawnPTY;
|
|
9
|
+
function _net() {
|
|
10
|
+
const data = _interopRequireDefault(require("net"));
|
|
11
|
+
_net = function () {
|
|
12
|
+
return data;
|
|
13
|
+
};
|
|
14
|
+
return data;
|
|
15
|
+
}
|
|
16
|
+
function _crypto() {
|
|
17
|
+
const data = _interopRequireDefault(require("crypto"));
|
|
18
|
+
_crypto = function () {
|
|
19
|
+
return data;
|
|
20
|
+
};
|
|
21
|
+
return data;
|
|
22
|
+
}
|
|
23
|
+
function _nodePty() {
|
|
24
|
+
const data = require("node-pty");
|
|
25
|
+
_nodePty = function () {
|
|
26
|
+
return data;
|
|
27
|
+
};
|
|
28
|
+
return data;
|
|
29
|
+
}
|
|
30
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
31
|
+
/**
|
|
32
|
+
* see the docs of server-commander.ts for more info
|
|
33
|
+
* this "server-forever" command is used to run the bit server in a way that it will never stop. if it gets killed,
|
|
34
|
+
* it will restart itself.
|
|
35
|
+
* it spawns "bit server" using node-pty for a pseudo-terminal (PTY) in order for libs such as inquirer/ora/chalk to work properly.
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
/* eslint-disable no-console */
|
|
39
|
+
|
|
40
|
+
function spawnPTY() {
|
|
41
|
+
// Create a PTY (terminal emulation) running the 'bit server' process
|
|
42
|
+
// this way, we can catch terminal sequences like arrows, ctrl+c, etc.
|
|
43
|
+
const ptyProcess = (0, _nodePty().spawn)('bit', ['server', '--pty'], {
|
|
44
|
+
name: 'xterm-color',
|
|
45
|
+
cols: 80,
|
|
46
|
+
rows: 30,
|
|
47
|
+
cwd: process.cwd(),
|
|
48
|
+
env: process.env
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// Create a TCP server
|
|
52
|
+
const server = _net().default.createServer(socket => {
|
|
53
|
+
console.log('Client connected.');
|
|
54
|
+
|
|
55
|
+
// Forward data from the client to the ptyProcess
|
|
56
|
+
socket.on('data', data => {
|
|
57
|
+
// console.log('Server received data from client:', data.toString());
|
|
58
|
+
if (data.toString('hex') === '03') {
|
|
59
|
+
// User hit ctrl+c
|
|
60
|
+
ptyProcess.kill();
|
|
61
|
+
} else {
|
|
62
|
+
ptyProcess.write(data);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// Forward data from the ptyProcess to the client
|
|
67
|
+
// @ts-ignore
|
|
68
|
+
ptyProcess.on('data', data => {
|
|
69
|
+
// console.log('ptyProcess data:', data.toString());
|
|
70
|
+
socket.write(data);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
// Handle client disconnect
|
|
74
|
+
socket.on('end', item => {
|
|
75
|
+
console.log('Client disconnected.', item);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Handle errors
|
|
79
|
+
socket.on('error', err => {
|
|
80
|
+
console.error('Socket error:', err);
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
// @ts-ignore
|
|
84
|
+
ptyProcess.on('exit', (code, signal) => {
|
|
85
|
+
console.log(`PTY exited with code ${code} and signal ${signal}`);
|
|
86
|
+
server.close();
|
|
87
|
+
setTimeout(() => {
|
|
88
|
+
console.log('restarting the server');
|
|
89
|
+
spawnPTY();
|
|
90
|
+
}, 500);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
// @ts-ignore
|
|
94
|
+
ptyProcess.on('error', err => {
|
|
95
|
+
console.error('PTY process error:', err);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
const PORT = getSocketPort();
|
|
99
|
+
server.on('error', err => {
|
|
100
|
+
if (err.code === 'EADDRINUSE') {
|
|
101
|
+
console.error(`Error: Port ${PORT} is already in use.`);
|
|
102
|
+
console.error(`This port is assigned based on the workspace path: '${process.cwd()}'`);
|
|
103
|
+
console.error(`This means another instance may already be running in this workspace.`);
|
|
104
|
+
console.error(`\nTo resolve this issue:`);
|
|
105
|
+
console.error(`- If another instance is running, please stop it before starting a new one.`);
|
|
106
|
+
console.error(`- If no other instance is running, the port may be occupied by another application.`);
|
|
107
|
+
console.error(` You can override the default port by setting the 'BIT_CLI_SERVER_SOCKET_PORT' environment variable.`);
|
|
108
|
+
process.exit(1); // Exit the process with an error code
|
|
109
|
+
} else {
|
|
110
|
+
console.error('Server encountered an error:', err);
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
server.listen(PORT, () => {
|
|
115
|
+
console.log(`Server listening on port ${PORT}`);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
function getSocketPort() {
|
|
119
|
+
return process.env.BIT_CLI_SERVER_SOCKET_PORT ? parseInt(process.env.BIT_CLI_SERVER_SOCKET_PORT) : getPortFromPath(process.cwd());
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* it's easier to generate a random port based on the workspace path than to save it in a file
|
|
124
|
+
*/
|
|
125
|
+
function getPortFromPath(path) {
|
|
126
|
+
// Step 1: Hash the workspace path using MD5
|
|
127
|
+
const hash = _crypto().default.createHash('md5').update(path).digest('hex');
|
|
128
|
+
|
|
129
|
+
// Step 2: Convert a portion of the hash to an integer
|
|
130
|
+
// We'll use the first 8 characters (32 bits)
|
|
131
|
+
const hashInt = parseInt(hash.substring(0, 8), 16);
|
|
132
|
+
|
|
133
|
+
// Step 3: Map the integer to the port range 49152 to 65535 (these are dynamic ports not assigned by IANA)
|
|
134
|
+
const minPort = 49152;
|
|
135
|
+
const maxPort = 65535;
|
|
136
|
+
const portRange = maxPort - minPort + 1;
|
|
137
|
+
const port = hashInt % portRange + minPort;
|
|
138
|
+
return port;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
//# sourceMappingURL=server-forever.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_net","data","_interopRequireDefault","require","_crypto","_nodePty","e","__esModule","default","spawnPTY","ptyProcess","spawn","name","cols","rows","cwd","process","env","server","net","createServer","socket","console","log","on","toString","kill","write","item","err","error","code","signal","close","setTimeout","PORT","getSocketPort","exit","listen","BIT_CLI_SERVER_SOCKET_PORT","parseInt","getPortFromPath","path","hash","crypto","createHash","update","digest","hashInt","substring","minPort","maxPort","portRange","port"],"sources":["server-forever.ts"],"sourcesContent":["/**\n * see the docs of server-commander.ts for more info\n * this \"server-forever\" command is used to run the bit server in a way that it will never stop. if it gets killed,\n * it will restart itself.\n * it spawns \"bit server\" using node-pty for a pseudo-terminal (PTY) in order for libs such as inquirer/ora/chalk to work properly.\n */\n\n/* eslint-disable no-console */\n\nimport net from 'net';\nimport crypto from 'crypto';\nimport { spawn } from 'node-pty';\n\nexport function spawnPTY() {\n // Create a PTY (terminal emulation) running the 'bit server' process\n // this way, we can catch terminal sequences like arrows, ctrl+c, etc.\n const ptyProcess = spawn('bit', ['server', '--pty'], {\n name: 'xterm-color',\n cols: 80,\n rows: 30,\n cwd: process.cwd(),\n env: process.env,\n });\n\n // Create a TCP server\n const server = net.createServer((socket) => {\n console.log('Client connected.');\n\n // Forward data from the client to the ptyProcess\n socket.on('data', (data: any) => {\n // console.log('Server received data from client:', data.toString());\n if (data.toString('hex') === '03') {\n // User hit ctrl+c\n ptyProcess.kill();\n } else {\n ptyProcess.write(data);\n }\n });\n\n // Forward data from the ptyProcess to the client\n // @ts-ignore\n ptyProcess.on('data', (data) => {\n // console.log('ptyProcess data:', data.toString());\n socket.write(data);\n });\n\n // Handle client disconnect\n socket.on('end', (item) => {\n console.log('Client disconnected.', item);\n });\n\n // Handle errors\n socket.on('error', (err) => {\n console.error('Socket error:', err);\n });\n\n // @ts-ignore\n ptyProcess.on('exit', (code, signal) => {\n console.log(`PTY exited with code ${code} and signal ${signal}`);\n server.close();\n setTimeout(() => {\n console.log('restarting the server');\n spawnPTY();\n }, 500);\n });\n\n // @ts-ignore\n ptyProcess.on('error', (err) => {\n console.error('PTY process error:', err);\n });\n });\n\n const PORT = getSocketPort();\n\n server.on('error', (err: any) => {\n if (err.code === 'EADDRINUSE') {\n console.error(`Error: Port ${PORT} is already in use.`);\n console.error(`This port is assigned based on the workspace path: '${process.cwd()}'`);\n console.error(`This means another instance may already be running in this workspace.`);\n console.error(`\\nTo resolve this issue:`);\n console.error(`- If another instance is running, please stop it before starting a new one.`);\n console.error(`- If no other instance is running, the port may be occupied by another application.`);\n console.error(\n ` You can override the default port by setting the 'BIT_CLI_SERVER_SOCKET_PORT' environment variable.`\n );\n process.exit(1); // Exit the process with an error code\n } else {\n console.error('Server encountered an error:', err);\n process.exit(1);\n }\n });\n\n server.listen(PORT, () => {\n console.log(`Server listening on port ${PORT}`);\n });\n}\n\nexport function getSocketPort(): number {\n return process.env.BIT_CLI_SERVER_SOCKET_PORT\n ? parseInt(process.env.BIT_CLI_SERVER_SOCKET_PORT)\n : getPortFromPath(process.cwd());\n}\n\n/**\n * it's easier to generate a random port based on the workspace path than to save it in a file\n */\nexport function getPortFromPath(path: string): number {\n // Step 1: Hash the workspace path using MD5\n const hash = crypto.createHash('md5').update(path).digest('hex');\n\n // Step 2: Convert a portion of the hash to an integer\n // We'll use the first 8 characters (32 bits)\n const hashInt = parseInt(hash.substring(0, 8), 16);\n\n // Step 3: Map the integer to the port range 49152 to 65535 (these are dynamic ports not assigned by IANA)\n const minPort = 49152;\n const maxPort = 65535;\n const portRange = maxPort - minPort + 1;\n\n const port = (hashInt % portRange) + minPort;\n\n return port;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/bit",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.84",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/harmony/bit",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.harmony",
|
|
8
8
|
"name": "bit",
|
|
9
|
-
"version": "1.8.
|
|
9
|
+
"version": "1.8.84"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"graceful-fs": "4.2.10",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"user-home": "^3.0.0",
|
|
20
20
|
"eventsource": "^2.0.2",
|
|
21
21
|
"node-fetch": "2.6.7",
|
|
22
|
+
"node-pty": "^1.0.0",
|
|
22
23
|
"@swc/css": "^0.0.20",
|
|
23
24
|
"lightningcss": "^1.20.0",
|
|
24
25
|
"@parcel/css": "^1.8.3",
|
|
@@ -41,7 +42,7 @@
|
|
|
41
42
|
"@yarnpkg/plugin-pack": "3.2.0",
|
|
42
43
|
"@yarnpkg/core": "3.5.2",
|
|
43
44
|
"@yarnpkg/cli": "3.6.1",
|
|
44
|
-
"@teambit/legacy": "1.0.
|
|
45
|
+
"@teambit/legacy": "1.0.753",
|
|
45
46
|
"@apollo/client": "3.6.9",
|
|
46
47
|
"@teambit/harmony": "0.4.6",
|
|
47
48
|
"@teambit/design.ui.brand.logo": "1.96.2",
|
|
@@ -51,117 +52,117 @@
|
|
|
51
52
|
"@teambit/scope.modules.find-scope-path": "0.0.1",
|
|
52
53
|
"@teambit/ui-foundation.ui.navigation.react-router-adapter": "6.1.1",
|
|
53
54
|
"@teambit/base-react.navigation.link": "2.0.31",
|
|
54
|
-
"@teambit/cli": "0.0.
|
|
55
|
-
"@teambit/harmony.content.cli-reference": "2.0.
|
|
55
|
+
"@teambit/cli": "0.0.1010",
|
|
56
|
+
"@teambit/harmony.content.cli-reference": "2.0.437",
|
|
56
57
|
"@teambit/bit.get-bit-version": "0.0.1",
|
|
57
|
-
"@teambit/legacy.analytics": "0.0.
|
|
58
|
-
"@teambit/aspect-loader": "1.0.
|
|
58
|
+
"@teambit/legacy.analytics": "0.0.41",
|
|
59
|
+
"@teambit/aspect-loader": "1.0.433",
|
|
59
60
|
"@teambit/clear-cache": "0.0.414",
|
|
60
|
-
"@teambit/config": "0.0.
|
|
61
|
-
"@teambit/legacy.bit-map": "0.0.
|
|
62
|
-
"@teambit/legacy.scope-api": "0.0.
|
|
63
|
-
"@teambit/workspace.modules.node-modules-linker": "0.0.
|
|
64
|
-
"@teambit/api-reference": "1.0.
|
|
65
|
-
"@teambit/api-server": "1.0.
|
|
66
|
-
"@teambit/application": "1.0.
|
|
67
|
-
"@teambit/aspect": "1.0.
|
|
68
|
-
"@teambit/babel": "1.0.
|
|
69
|
-
"@teambit/builder": "1.0.
|
|
70
|
-
"@teambit/bundler": "1.0.
|
|
71
|
-
"@teambit/cache": "0.0.
|
|
72
|
-
"@teambit/changelog": "1.0.
|
|
73
|
-
"@teambit/checkout": "1.0.
|
|
74
|
-
"@teambit/cloud": "0.0.
|
|
75
|
-
"@teambit/code": "1.0.
|
|
76
|
-
"@teambit/command-bar": "1.0.
|
|
77
|
-
"@teambit/community": "1.0.
|
|
78
|
-
"@teambit/compiler": "1.0.
|
|
79
|
-
"@teambit/component-compare": "1.0.
|
|
80
|
-
"@teambit/component-log": "1.0.
|
|
81
|
-
"@teambit/component-sizer": "1.0.
|
|
82
|
-
"@teambit/component-tree": "1.0.
|
|
83
|
-
"@teambit/component-writer": "1.0.
|
|
84
|
-
"@teambit/component": "1.0.
|
|
85
|
-
"@teambit/compositions": "1.0.
|
|
86
|
-
"@teambit/config-merger": "0.0.
|
|
87
|
-
"@teambit/dependencies": "1.0.
|
|
88
|
-
"@teambit/dependency-resolver": "1.0.
|
|
89
|
-
"@teambit/deprecation": "1.0.
|
|
90
|
-
"@teambit/dev-files": "1.0.
|
|
91
|
-
"@teambit/diagnostic": "1.0.
|
|
92
|
-
"@teambit/docs": "1.0.
|
|
93
|
-
"@teambit/doctor": "0.0.
|
|
94
|
-
"@teambit/eject": "1.0.
|
|
95
|
-
"@teambit/env": "1.0.
|
|
96
|
-
"@teambit/envs": "1.0.
|
|
97
|
-
"@teambit/eslint": "1.0.
|
|
98
|
-
"@teambit/export": "1.0.
|
|
99
|
-
"@teambit/express": "0.0.
|
|
100
|
-
"@teambit/forking": "1.0.
|
|
101
|
-
"@teambit/formatter": "1.0.
|
|
102
|
-
"@teambit/generator": "1.0.
|
|
103
|
-
"@teambit/git": "1.0.
|
|
104
|
-
"@teambit/global-config": "0.0.
|
|
105
|
-
"@teambit/graph": "1.0.
|
|
106
|
-
"@teambit/graphql": "1.0.
|
|
107
|
-
"@teambit/harmony-ui-app": "1.0.
|
|
108
|
-
"@teambit/host-initializer": "0.0.
|
|
109
|
-
"@teambit/html": "1.0.
|
|
110
|
-
"@teambit/importer": "1.0.
|
|
111
|
-
"@teambit/insights": "1.0.
|
|
112
|
-
"@teambit/install": "1.0.
|
|
113
|
-
"@teambit/ipc-events": "1.0.
|
|
114
|
-
"@teambit/isolator": "1.0.
|
|
115
|
-
"@teambit/issues": "1.0.
|
|
116
|
-
"@teambit/jest": "1.0.
|
|
117
|
-
"@teambit/lanes": "1.0.
|
|
118
|
-
"@teambit/linter": "1.0.
|
|
119
|
-
"@teambit/lister": "1.0.
|
|
120
|
-
"@teambit/logger": "0.0.
|
|
121
|
-
"@teambit/mdx": "1.0.
|
|
122
|
-
"@teambit/merge-lanes": "1.0.
|
|
123
|
-
"@teambit/merging": "1.0.
|
|
124
|
-
"@teambit/mocha": "1.0.
|
|
125
|
-
"@teambit/mover": "1.0.
|
|
126
|
-
"@teambit/multi-compiler": "1.0.
|
|
127
|
-
"@teambit/multi-tester": "1.0.
|
|
128
|
-
"@teambit/new-component-helper": "1.0.
|
|
129
|
-
"@teambit/node": "1.0.
|
|
130
|
-
"@teambit/notifications": "1.0.
|
|
131
|
-
"@teambit/panels": "0.0.
|
|
132
|
-
"@teambit/pkg": "1.0.
|
|
133
|
-
"@teambit/pnpm": "1.0.
|
|
134
|
-
"@teambit/prettier": "1.0.
|
|
135
|
-
"@teambit/preview": "1.0.
|
|
136
|
-
"@teambit/pubsub": "1.0.
|
|
137
|
-
"@teambit/react-native": "1.0.
|
|
138
|
-
"@teambit/react-router": "1.0.
|
|
139
|
-
"@teambit/react": "1.0.
|
|
140
|
-
"@teambit/readme": "1.0.
|
|
141
|
-
"@teambit/refactoring": "1.0.
|
|
142
|
-
"@teambit/remove": "1.0.
|
|
143
|
-
"@teambit/renaming": "1.0.
|
|
144
|
-
"@teambit/schema": "1.0.
|
|
145
|
-
"@teambit/scope": "1.0.
|
|
146
|
-
"@teambit/sidebar": "1.0.
|
|
147
|
-
"@teambit/sign": "1.0.
|
|
148
|
-
"@teambit/snapping": "1.0.
|
|
149
|
-
"@teambit/stash": "1.0.
|
|
150
|
-
"@teambit/status": "1.0.
|
|
151
|
-
"@teambit/tester": "1.0.
|
|
152
|
-
"@teambit/tracker": "1.0.
|
|
153
|
-
"@teambit/typescript": "1.0.
|
|
154
|
-
"@teambit/ui": "1.0.
|
|
155
|
-
"@teambit/update-dependencies": "1.0.
|
|
156
|
-
"@teambit/user-agent": "1.0.
|
|
157
|
-
"@teambit/variants": "0.0.
|
|
158
|
-
"@teambit/version-history": "0.0.
|
|
159
|
-
"@teambit/watcher": "1.0.
|
|
160
|
-
"@teambit/webpack": "1.0.
|
|
161
|
-
"@teambit/worker": "0.0.
|
|
162
|
-
"@teambit/workspace-config-files": "1.0.
|
|
163
|
-
"@teambit/workspace": "1.0.
|
|
164
|
-
"@teambit/yarn": "1.0.
|
|
61
|
+
"@teambit/config": "0.0.1184",
|
|
62
|
+
"@teambit/legacy.bit-map": "0.0.40",
|
|
63
|
+
"@teambit/legacy.scope-api": "0.0.39",
|
|
64
|
+
"@teambit/workspace.modules.node-modules-linker": "0.0.211",
|
|
65
|
+
"@teambit/api-reference": "1.0.433",
|
|
66
|
+
"@teambit/api-server": "1.0.433",
|
|
67
|
+
"@teambit/application": "1.0.433",
|
|
68
|
+
"@teambit/aspect": "1.0.433",
|
|
69
|
+
"@teambit/babel": "1.0.433",
|
|
70
|
+
"@teambit/builder": "1.0.433",
|
|
71
|
+
"@teambit/bundler": "1.0.433",
|
|
72
|
+
"@teambit/cache": "0.0.1103",
|
|
73
|
+
"@teambit/changelog": "1.0.433",
|
|
74
|
+
"@teambit/checkout": "1.0.433",
|
|
75
|
+
"@teambit/cloud": "0.0.709",
|
|
76
|
+
"@teambit/code": "1.0.433",
|
|
77
|
+
"@teambit/command-bar": "1.0.433",
|
|
78
|
+
"@teambit/community": "1.0.433",
|
|
79
|
+
"@teambit/compiler": "1.0.433",
|
|
80
|
+
"@teambit/component-compare": "1.0.433",
|
|
81
|
+
"@teambit/component-log": "1.0.433",
|
|
82
|
+
"@teambit/component-sizer": "1.0.433",
|
|
83
|
+
"@teambit/component-tree": "1.0.433",
|
|
84
|
+
"@teambit/component-writer": "1.0.433",
|
|
85
|
+
"@teambit/component": "1.0.433",
|
|
86
|
+
"@teambit/compositions": "1.0.433",
|
|
87
|
+
"@teambit/config-merger": "0.0.300",
|
|
88
|
+
"@teambit/dependencies": "1.0.433",
|
|
89
|
+
"@teambit/dependency-resolver": "1.0.433",
|
|
90
|
+
"@teambit/deprecation": "1.0.433",
|
|
91
|
+
"@teambit/dev-files": "1.0.433",
|
|
92
|
+
"@teambit/diagnostic": "1.0.433",
|
|
93
|
+
"@teambit/docs": "1.0.433",
|
|
94
|
+
"@teambit/doctor": "0.0.116",
|
|
95
|
+
"@teambit/eject": "1.0.433",
|
|
96
|
+
"@teambit/env": "1.0.433",
|
|
97
|
+
"@teambit/envs": "1.0.433",
|
|
98
|
+
"@teambit/eslint": "1.0.433",
|
|
99
|
+
"@teambit/export": "1.0.433",
|
|
100
|
+
"@teambit/express": "0.0.1109",
|
|
101
|
+
"@teambit/forking": "1.0.433",
|
|
102
|
+
"@teambit/formatter": "1.0.433",
|
|
103
|
+
"@teambit/generator": "1.0.434",
|
|
104
|
+
"@teambit/git": "1.0.433",
|
|
105
|
+
"@teambit/global-config": "0.0.1013",
|
|
106
|
+
"@teambit/graph": "1.0.433",
|
|
107
|
+
"@teambit/graphql": "1.0.433",
|
|
108
|
+
"@teambit/harmony-ui-app": "1.0.433",
|
|
109
|
+
"@teambit/host-initializer": "0.0.146",
|
|
110
|
+
"@teambit/html": "1.0.433",
|
|
111
|
+
"@teambit/importer": "1.0.433",
|
|
112
|
+
"@teambit/insights": "1.0.433",
|
|
113
|
+
"@teambit/install": "1.0.433",
|
|
114
|
+
"@teambit/ipc-events": "1.0.433",
|
|
115
|
+
"@teambit/isolator": "1.0.433",
|
|
116
|
+
"@teambit/issues": "1.0.433",
|
|
117
|
+
"@teambit/jest": "1.0.433",
|
|
118
|
+
"@teambit/lanes": "1.0.433",
|
|
119
|
+
"@teambit/linter": "1.0.433",
|
|
120
|
+
"@teambit/lister": "1.0.433",
|
|
121
|
+
"@teambit/logger": "0.0.1103",
|
|
122
|
+
"@teambit/mdx": "1.0.433",
|
|
123
|
+
"@teambit/merge-lanes": "1.0.433",
|
|
124
|
+
"@teambit/merging": "1.0.433",
|
|
125
|
+
"@teambit/mocha": "1.0.433",
|
|
126
|
+
"@teambit/mover": "1.0.433",
|
|
127
|
+
"@teambit/multi-compiler": "1.0.433",
|
|
128
|
+
"@teambit/multi-tester": "1.0.433",
|
|
129
|
+
"@teambit/new-component-helper": "1.0.433",
|
|
130
|
+
"@teambit/node": "1.0.433",
|
|
131
|
+
"@teambit/notifications": "1.0.433",
|
|
132
|
+
"@teambit/panels": "0.0.1012",
|
|
133
|
+
"@teambit/pkg": "1.0.433",
|
|
134
|
+
"@teambit/pnpm": "1.0.433",
|
|
135
|
+
"@teambit/prettier": "1.0.433",
|
|
136
|
+
"@teambit/preview": "1.0.433",
|
|
137
|
+
"@teambit/pubsub": "1.0.433",
|
|
138
|
+
"@teambit/react-native": "1.0.433",
|
|
139
|
+
"@teambit/react-router": "1.0.433",
|
|
140
|
+
"@teambit/react": "1.0.433",
|
|
141
|
+
"@teambit/readme": "1.0.433",
|
|
142
|
+
"@teambit/refactoring": "1.0.433",
|
|
143
|
+
"@teambit/remove": "1.0.433",
|
|
144
|
+
"@teambit/renaming": "1.0.433",
|
|
145
|
+
"@teambit/schema": "1.0.433",
|
|
146
|
+
"@teambit/scope": "1.0.433",
|
|
147
|
+
"@teambit/sidebar": "1.0.433",
|
|
148
|
+
"@teambit/sign": "1.0.433",
|
|
149
|
+
"@teambit/snapping": "1.0.433",
|
|
150
|
+
"@teambit/stash": "1.0.433",
|
|
151
|
+
"@teambit/status": "1.0.433",
|
|
152
|
+
"@teambit/tester": "1.0.433",
|
|
153
|
+
"@teambit/tracker": "1.0.433",
|
|
154
|
+
"@teambit/typescript": "1.0.433",
|
|
155
|
+
"@teambit/ui": "1.0.433",
|
|
156
|
+
"@teambit/update-dependencies": "1.0.433",
|
|
157
|
+
"@teambit/user-agent": "1.0.433",
|
|
158
|
+
"@teambit/variants": "0.0.1277",
|
|
159
|
+
"@teambit/version-history": "0.0.225",
|
|
160
|
+
"@teambit/watcher": "1.0.433",
|
|
161
|
+
"@teambit/webpack": "1.0.433",
|
|
162
|
+
"@teambit/worker": "0.0.1314",
|
|
163
|
+
"@teambit/workspace-config-files": "1.0.433",
|
|
164
|
+
"@teambit/workspace": "1.0.433",
|
|
165
|
+
"@teambit/yarn": "1.0.433"
|
|
165
166
|
},
|
|
166
167
|
"devDependencies": {
|
|
167
168
|
"@types/fs-extra": "9.0.7",
|
|
@@ -174,7 +175,7 @@
|
|
|
174
175
|
},
|
|
175
176
|
"peerDependencies": {
|
|
176
177
|
"react": "17.0.2",
|
|
177
|
-
"@teambit/legacy": "1.0.
|
|
178
|
+
"@teambit/legacy": "1.0.753",
|
|
178
179
|
"@types/react": "^17.0.73"
|
|
179
180
|
},
|
|
180
181
|
"license": "Apache-2.0",
|