nx 16.5.3 → 16.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/migrations.json +6 -0
- package/package.json +13 -13
- package/src/core/graph/main.js +1 -1
- package/src/core/graph/styles.css +2 -2
- package/src/daemon/client/client.d.ts +3 -1
- package/src/daemon/client/client.js +35 -17
- package/src/hasher/task-hasher.js +29 -18
- package/src/migrations/update-16-5-4/update-output-globs.d.ts +2 -0
- package/src/migrations/update-16-5-4/update-output-globs.js +44 -0
- package/src/plugins/js/lock-file/lock-file.js +5 -2
- package/src/plugins/js/lock-file/yarn-parser.d.ts +1 -1
- package/src/plugins/js/lock-file/yarn-parser.js +39 -13
- package/src/tasks-runner/utils.js +1 -1
- package/src/utils/testing/temp-fs.js +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}} /*
|
|
1
|
+
.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.form-input,.form-multiselect,.form-select,.form-textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}.form-input:focus,.form-multiselect:focus,.form-select:focus,.form-textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact} /*
|
|
2
2
|
! tailwindcss v3.2.4 | MIT License | https://tailwindcss.com
|
|
3
|
-
*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-y-0{bottom:0;top:0}.top-5{top:1.25rem}.left-5{left:1.25rem}.bottom-4{bottom:1rem}.right-4{right:1rem}.top-1\/2{top:50%}.left-1\/2{left:50%}.right-0{right:0}.right-2{right:.5rem}.top-2{top:.5rem}.top-1{top:.25rem}.right-1{right:.25rem}.z-50{z-index:50}.z-0{z-index:0}.z-10{z-index:10}.-z-10{z-index:-10}.mx-4{margin-left:1rem;margin-right:1rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.mt-3{margin-top:.75rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.-mt-3{margin-top:-.75rem}.-ml-3{margin-left:-.75rem}.mr-1{margin-right:.25rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.mt-2{margin-top:.5rem}.mt-8{margin-top:2rem}.ml-3{margin-left:.75rem}.mt-10{margin-top:2.5rem}.-mt-1{margin-top:-.25rem}.-ml-1{margin-left:-.25rem}.mb-3{margin-bottom:.75rem}.mr-3{margin-right:.75rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.h-full{height:100%}.h-10{height:2.5rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-16{height:4rem}.h-5{height:1.25rem}.max-h-\[300px\]{max-height:300px}.w-full{width:100%}.w-72{width:18rem}.w-auto{width:auto}.w-4{width:1rem}.w-6{width:1.5rem}.w-16{width:4rem}.w-5{width:1.25rem}.w-36{width:9rem}.min-w-\[250px\]{min-width:250px}.flex-1{flex:1 1 0%}.flex-grow{flex-grow:1}.origin-top-right{transform-origin:top right}.translate-x-32{--tw-translate-x:8rem}.rotate-45,.translate-x-32{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate:45deg}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.cursor-text{cursor:text}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.resize{resize:both}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-center{justify-items:center}.gap-4{gap:1rem}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-slate-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(226 232 240/var(--tw-divide-opacity))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-none{border-radius:0}.rounded-l-md{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem}.rounded-r-md{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem}.border-2{border-width:2px}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-r-0{border-right-width:0}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-slate-900\/10{border-color:rgba(15,23,42,.1)}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.border-slate-400\/10{border-color:rgba(148,163,184,.1)}.border-slate-200\/10{border-color:rgba(226,232,240,.1)}.border-purple-500{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-pink-500{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-pink-400{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-1\.5{padding:.375rem}.p-3{padding:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.pb-10{padding-bottom:2.5rem}.pl-2{padding-left:.5rem}.pr-6{padding-right:1.5rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-light{font-weight:300}.uppercase{text-transform:uppercase}.leading-4{line-height:1rem}.tracking-wide{letter-spacing:.025em}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-slate-50{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.accent-blue-500{accent-color:#3b82f6}.accent-purple-500{accent-color:#a855f7}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-slate-900\/10{--tw-ring-color:rgba(15,23,42,.1)}.ring-slate-200{--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity))}.ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.ring-slate-500{--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity))}.ring-opacity-10{--tw-ring-opacity:0.1}.ring-opacity-5{--tw-ring-opacity:0.05}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-300{transition-duration:.3s}.duration-200{transition-duration:.2s}.duration-100{transition-duration:.1s}.duration-75{transition-duration:75ms}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.dark{color-scheme:dark}.placeholder\:font-light::placeholder{font-weight:300}.placeholder\:text-slate-400::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\:bg-pink-500:hover{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.hover\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\:underline:hover{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-white:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.focus-visible\:ring-opacity-75:focus-visible{--tw-ring-opacity:0.75}.group:hover .group-hover\:translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-60{opacity:.6}.dark .dark\:divide-slate-800>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(30 41 59/var(--tw-divide-opacity))}.dark .dark\:border-slate-300\/10{border-color:rgba(203,213,225,.1)}.dark .dark\:border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.dark .dark\:border-purple-600{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.dark .dark\:border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.dark .dark\:border-fuchsia-800{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.dark .dark\:border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.dark .dark\:border-slate-900{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.dark .dark\:border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.dark .dark\:bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.dark .dark\:bg-transparent{background-color:transparent}.dark .dark\:bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.dark .dark\:bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.dark .dark\:bg-\[\#0B1221\]{--tw-bg-opacity:1;background-color:rgb(11 18 33/var(--tw-bg-opacity))}.dark .dark\:bg-fuchsia-700{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.dark .dark\:bg-slate-600\/30{background-color:rgba(71,85,105,.3)}.dark .dark\:text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.dark .dark\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark .dark\:text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.dark .dark\:text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.dark .dark\:text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.dark .dark\:text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.dark .dark\:text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.dark .dark\:accent-sky-500{accent-color:#0ea5e9}.dark .dark\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.dark .dark\:ring-slate-300\/10{--tw-ring-color:rgba(203,213,225,.1)}.dark .dark\:ring-slate-600{--tw-ring-opacity:1;--tw-ring-color:rgb(71 85 105/var(--tw-ring-opacity))}.dark .dark\:ring-sky-500{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity))}.dark .dark\:ring-slate-700{--tw-ring-opacity:1;--tw-ring-color:rgb(51 65 85/var(--tw-ring-opacity))}.dark .hover\:dark\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.dark .hover\:dark\:bg-fuchsia-600:hover{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.dark .dark\:hover\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}@media (min-width:1024px){.lg\:text-xs{font-size:.75rem;line-height:1rem}}
|
|
3
|
+
*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-y-0{bottom:0;top:0}.top-5{top:1.25rem}.left-5{left:1.25rem}.bottom-4{bottom:1rem}.right-4{right:1rem}.top-1\/2{top:50%}.left-1\/2{left:50%}.right-0{right:0}.right-2{right:.5rem}.top-2{top:.5rem}.top-1{top:.25rem}.right-1{right:.25rem}.z-50{z-index:50}.z-0{z-index:0}.z-10{z-index:10}.-z-10{z-index:-10}.mx-4{margin-left:1rem;margin-right:1rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.mt-3{margin-top:.75rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.-mt-3{margin-top:-.75rem}.-ml-3{margin-left:-.75rem}.mr-1{margin-right:.25rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.mt-2{margin-top:.5rem}.mt-8{margin-top:2rem}.ml-3{margin-left:.75rem}.mt-10{margin-top:2.5rem}.-mt-1{margin-top:-.25rem}.-ml-1{margin-left:-.25rem}.mb-3{margin-bottom:.75rem}.mr-3{margin-right:.75rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.h-full{height:100%}.h-10{height:2.5rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-16{height:4rem}.h-5{height:1.25rem}.max-h-\[300px\]{max-height:300px}.w-full{width:100%}.w-72{width:18rem}.w-auto{width:auto}.w-4{width:1rem}.w-6{width:1.5rem}.w-16{width:4rem}.w-5{width:1.25rem}.w-36{width:9rem}.min-w-\[250px\]{min-width:250px}.flex-1{flex:1 1 0%}.flex-grow{flex-grow:1}.origin-top-right{transform-origin:top right}.translate-x-32{--tw-translate-x:8rem}.rotate-45,.translate-x-32{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate:45deg}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.cursor-text{cursor:text}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.resize{resize:both}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-center{justify-items:center}.gap-4{gap:1rem}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-slate-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(226 232 240/var(--tw-divide-opacity))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-none{border-radius:0}.rounded-l-md{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem}.rounded-r-md{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem}.border-2{border-width:2px}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-r-0{border-right-width:0}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-slate-900\/10{border-color:rgba(15,23,42,.1)}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity))}.border-slate-400\/10{border-color:rgba(148,163,184,.1)}.border-slate-200\/10{border-color:rgba(226,232,240,.1)}.border-purple-500{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity))}.border-pink-500{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity))}.border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.bg-pink-400{--tw-bg-opacity:1;background-color:rgb(244 114 182/var(--tw-bg-opacity))}.bg-slate-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity))}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-1\.5{padding:.375rem}.p-3{padding:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.pb-10{padding-bottom:2.5rem}.pl-2{padding-left:.5rem}.pr-6{padding-right:1.5rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pl-4{padding-left:1rem}.pr-8{padding-right:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-light{font-weight:300}.uppercase{text-transform:uppercase}.leading-4{line-height:1rem}.tracking-wide{letter-spacing:.025em}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity))}.text-slate-50{--tw-text-opacity:1;color:rgb(248 250 252/var(--tw-text-opacity))}.accent-blue-500{accent-color:#3b82f6}.accent-purple-500{accent-color:#a855f7}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-slate-900\/10{--tw-ring-color:rgba(15,23,42,.1)}.ring-slate-200{--tw-ring-opacity:1;--tw-ring-color:rgb(226 232 240/var(--tw-ring-opacity))}.ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity))}.ring-slate-500{--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity))}.ring-opacity-10{--tw-ring-opacity:0.1}.ring-opacity-5{--tw-ring-opacity:0.05}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-300{transition-duration:.3s}.duration-200{transition-duration:.2s}.duration-100{transition-duration:.1s}.duration-75{transition-duration:75ms}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.dark{color-scheme:dark}.placeholder\:font-light::placeholder{font-weight:300}.placeholder\:text-slate-400::placeholder{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity))}.hover\:bg-pink-500:hover{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity))}.hover\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.hover\:underline:hover{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-white:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.focus-visible\:ring-opacity-75:focus-visible{--tw-ring-opacity:0.75}.group:hover .group-hover\:translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-60{opacity:.6}.dark .dark\:divide-slate-800>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(30 41 59/var(--tw-divide-opacity))}.dark .dark\:border-slate-300\/10{border-color:rgba(203,213,225,.1)}.dark .dark\:border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity))}.dark .dark\:border-purple-600{--tw-border-opacity:1;border-color:rgb(147 51 234/var(--tw-border-opacity))}.dark .dark\:border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity))}.dark .dark\:border-fuchsia-800{--tw-border-opacity:1;border-color:rgb(134 25 143/var(--tw-border-opacity))}.dark .dark\:border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity))}.dark .dark\:border-slate-900{--tw-border-opacity:1;border-color:rgb(15 23 42/var(--tw-border-opacity))}.dark .dark\:border-slate-800{--tw-border-opacity:1;border-color:rgb(30 41 59/var(--tw-border-opacity))}.dark .dark\:bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity))}.dark .dark\:bg-transparent{background-color:transparent}.dark .dark\:bg-sky-500{--tw-bg-opacity:1;background-color:rgb(14 165 233/var(--tw-bg-opacity))}.dark .dark\:bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.dark .dark\:bg-\[\#0B1221\]{--tw-bg-opacity:1;background-color:rgb(11 18 33/var(--tw-bg-opacity))}.dark .dark\:bg-fuchsia-700{--tw-bg-opacity:1;background-color:rgb(162 28 175/var(--tw-bg-opacity))}.dark .dark\:bg-slate-600\/30{background-color:rgba(71,85,105,.3)}.dark .dark\:text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.dark .dark\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.dark .dark\:text-sky-500{--tw-text-opacity:1;color:rgb(14 165 233/var(--tw-text-opacity))}.dark .dark\:text-slate-200{--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity))}.dark .dark\:text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}.dark .dark\:text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity))}.dark .dark\:text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.dark .dark\:accent-sky-500{accent-color:#0ea5e9}.dark .dark\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.dark .dark\:ring-slate-300\/10{--tw-ring-color:rgba(203,213,225,.1)}.dark .dark\:ring-slate-600{--tw-ring-opacity:1;--tw-ring-color:rgb(71 85 105/var(--tw-ring-opacity))}.dark .dark\:ring-sky-500{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity))}.dark .dark\:ring-slate-700{--tw-ring-opacity:1;--tw-ring-color:rgb(51 65 85/var(--tw-ring-opacity))}.dark .hover\:dark\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}.dark .hover\:dark\:bg-fuchsia-600:hover{--tw-bg-opacity:1;background-color:rgb(192 38 211/var(--tw-bg-opacity))}.dark .dark\:hover\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity))}@media (min-width:1024px){.lg\:text-xs{font-size:.75rem;line-height:1rem}}
|
|
@@ -18,7 +18,9 @@ export declare class DaemonClient {
|
|
|
18
18
|
private currentResolve;
|
|
19
19
|
private currentReject;
|
|
20
20
|
private _enabled;
|
|
21
|
-
private
|
|
21
|
+
private _daemonStatus;
|
|
22
|
+
private _waitForDaemonReady;
|
|
23
|
+
private _daemonReady;
|
|
22
24
|
private _out;
|
|
23
25
|
private _err;
|
|
24
26
|
enabled(): boolean;
|
|
@@ -20,9 +20,18 @@ const workspaces_1 = require("../../config/workspaces");
|
|
|
20
20
|
const socket_messenger_1 = require("./socket-messenger");
|
|
21
21
|
const cache_1 = require("../cache");
|
|
22
22
|
const DAEMON_ENV_SETTINGS = Object.assign(Object.assign({}, process.env), { NX_PROJECT_GLOB_CACHE: 'false', NX_CACHE_PROJECTS_CONFIG: 'false' });
|
|
23
|
+
var DaemonStatus;
|
|
24
|
+
(function (DaemonStatus) {
|
|
25
|
+
DaemonStatus[DaemonStatus["CONNECTING"] = 0] = "CONNECTING";
|
|
26
|
+
DaemonStatus[DaemonStatus["DISCONNECTED"] = 1] = "DISCONNECTED";
|
|
27
|
+
DaemonStatus[DaemonStatus["CONNECTED"] = 2] = "CONNECTED";
|
|
28
|
+
})(DaemonStatus || (DaemonStatus = {}));
|
|
23
29
|
class DaemonClient {
|
|
24
30
|
constructor(nxJson) {
|
|
25
31
|
this.nxJson = nxJson;
|
|
32
|
+
this._daemonStatus = DaemonStatus.DISCONNECTED;
|
|
33
|
+
this._waitForDaemonReady = null;
|
|
34
|
+
this._daemonReady = null;
|
|
26
35
|
this._out = null;
|
|
27
36
|
this._err = null;
|
|
28
37
|
this.reset();
|
|
@@ -71,7 +80,8 @@ class DaemonClient {
|
|
|
71
80
|
(_c = this._err) === null || _c === void 0 ? void 0 : _c.close();
|
|
72
81
|
this._out = null;
|
|
73
82
|
this._err = null;
|
|
74
|
-
this.
|
|
83
|
+
this._daemonStatus = DaemonStatus.DISCONNECTED;
|
|
84
|
+
this._waitForDaemonReady = new Promise((resolve) => (this._daemonReady = resolve));
|
|
75
85
|
}
|
|
76
86
|
requestShutdown() {
|
|
77
87
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -101,20 +111,23 @@ class DaemonClient {
|
|
|
101
111
|
registerFileWatcher(config, callback) {
|
|
102
112
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
103
113
|
yield this.getProjectGraph();
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
let messenger;
|
|
115
|
+
yield this.queue.sendToQueue(() => {
|
|
116
|
+
messenger = new socket_messenger_1.SocketMessenger((0, net_1.connect)(socket_utils_1.FULL_OS_SOCKET_PATH)).listen((message) => {
|
|
117
|
+
try {
|
|
118
|
+
const parsedMessage = JSON.parse(message);
|
|
119
|
+
callback(null, parsedMessage);
|
|
120
|
+
}
|
|
121
|
+
catch (e) {
|
|
122
|
+
callback(e, null);
|
|
123
|
+
}
|
|
124
|
+
}, () => {
|
|
125
|
+
callback('closed', null);
|
|
126
|
+
}, (err) => callback(err, null));
|
|
127
|
+
return messenger.sendMessage({ type: 'REGISTER_FILE_WATCHER', config });
|
|
128
|
+
});
|
|
116
129
|
return () => {
|
|
117
|
-
messenger.close();
|
|
130
|
+
messenger === null || messenger === void 0 ? void 0 : messenger.close();
|
|
118
131
|
};
|
|
119
132
|
});
|
|
120
133
|
}
|
|
@@ -171,7 +184,7 @@ class DaemonClient {
|
|
|
171
184
|
// it's ok for the daemon to terminate if the client doesn't wait on
|
|
172
185
|
// any messages from the daemon
|
|
173
186
|
if (this.queue.isEmpty()) {
|
|
174
|
-
this.
|
|
187
|
+
this.reset();
|
|
175
188
|
}
|
|
176
189
|
else {
|
|
177
190
|
output_1.output.error({
|
|
@@ -212,12 +225,17 @@ class DaemonClient {
|
|
|
212
225
|
}
|
|
213
226
|
sendMessageToDaemon(message) {
|
|
214
227
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
215
|
-
if (
|
|
216
|
-
this.
|
|
228
|
+
if (this._daemonStatus == DaemonStatus.DISCONNECTED) {
|
|
229
|
+
this._daemonStatus = DaemonStatus.CONNECTING;
|
|
217
230
|
if (!(yield this.isServerAvailable())) {
|
|
218
231
|
yield this.startInBackground();
|
|
219
232
|
}
|
|
220
233
|
this.setUpConnection();
|
|
234
|
+
this._daemonStatus = DaemonStatus.CONNECTED;
|
|
235
|
+
this._daemonReady();
|
|
236
|
+
}
|
|
237
|
+
else if (this._daemonStatus == DaemonStatus.CONNECTING) {
|
|
238
|
+
yield this._waitForDaemonReady;
|
|
221
239
|
}
|
|
222
240
|
return new Promise((resolve, reject) => {
|
|
223
241
|
perf_hooks_1.performance.mark('sendMessageToDaemon-start');
|
|
@@ -188,7 +188,7 @@ class TaskHasherImpl {
|
|
|
188
188
|
return yield this.hashNamedInputForDependencies(d.target, task, input.input || 'default', visited);
|
|
189
189
|
}
|
|
190
190
|
else {
|
|
191
|
-
const hash = this.hashExternalDependency(d.
|
|
191
|
+
const { hash } = this.hashExternalDependency(d.target);
|
|
192
192
|
return {
|
|
193
193
|
value: hash,
|
|
194
194
|
details: {
|
|
@@ -239,17 +239,18 @@ class TaskHasherImpl {
|
|
|
239
239
|
}
|
|
240
240
|
return partialHashes;
|
|
241
241
|
}
|
|
242
|
-
|
|
243
|
-
return `${sourceProjectName}->${targetProjectName}`;
|
|
244
|
-
}
|
|
245
|
-
hashExternalDependency(sourceProjectName, targetProjectName, visited = new Set()) {
|
|
242
|
+
hashExternalDependency(projectName, parentProjects = new Set()) {
|
|
246
243
|
// try to retrieve the hash from cache
|
|
247
|
-
if (this.externalDepsHashCache[
|
|
248
|
-
return
|
|
244
|
+
if (this.externalDepsHashCache[projectName]) {
|
|
245
|
+
return {
|
|
246
|
+
fullyResolved: true,
|
|
247
|
+
hash: this.externalDepsHashCache[projectName],
|
|
248
|
+
};
|
|
249
249
|
}
|
|
250
|
-
|
|
251
|
-
const node = this.projectGraph.externalNodes[
|
|
250
|
+
parentProjects.add(projectName);
|
|
251
|
+
const node = this.projectGraph.externalNodes[projectName];
|
|
252
252
|
let partialHash;
|
|
253
|
+
let fullyResolved = true;
|
|
253
254
|
if (node) {
|
|
254
255
|
const partialHashes = [];
|
|
255
256
|
if (node.data.hash) {
|
|
@@ -261,10 +262,18 @@ class TaskHasherImpl {
|
|
|
261
262
|
partialHashes.push(node.data.version);
|
|
262
263
|
}
|
|
263
264
|
// we want to calculate the hash of the entire dependency tree
|
|
264
|
-
if (this.projectGraph.dependencies[
|
|
265
|
-
this.projectGraph.dependencies[
|
|
266
|
-
if (!
|
|
267
|
-
|
|
265
|
+
if (this.projectGraph.dependencies[projectName]) {
|
|
266
|
+
this.projectGraph.dependencies[projectName].forEach((d) => {
|
|
267
|
+
if (!parentProjects.has(d.target)) {
|
|
268
|
+
const hashResult = this.hashExternalDependency(d.target, new Set(parentProjects));
|
|
269
|
+
partialHashes.push(hashResult.hash);
|
|
270
|
+
if (!hashResult.fullyResolved) {
|
|
271
|
+
fullyResolved = false;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
// NOTE: do not store hash to cache since it is only a partial hash
|
|
276
|
+
fullyResolved = false;
|
|
268
277
|
}
|
|
269
278
|
});
|
|
270
279
|
}
|
|
@@ -275,10 +284,12 @@ class TaskHasherImpl {
|
|
|
275
284
|
// this may occur if dependency is not an npm package
|
|
276
285
|
// but rather symlinked in node_modules or it's pointing to a remote git repo
|
|
277
286
|
// in this case we have no information about the versioning of the given package
|
|
278
|
-
partialHash = `__${
|
|
287
|
+
partialHash = `__${projectName}__`;
|
|
288
|
+
}
|
|
289
|
+
if (fullyResolved) {
|
|
290
|
+
this.externalDepsHashCache[projectName] = partialHash;
|
|
279
291
|
}
|
|
280
|
-
|
|
281
|
-
return partialHash;
|
|
292
|
+
return { fullyResolved, hash: partialHash };
|
|
282
293
|
}
|
|
283
294
|
hashTarget(projectName, targetName, selfInputs) {
|
|
284
295
|
const projectNode = this.projectGraph.nodes[projectName];
|
|
@@ -293,7 +304,7 @@ class TaskHasherImpl {
|
|
|
293
304
|
target.executor.startsWith(`@nx/`)) {
|
|
294
305
|
const executorPackage = target.executor.split(':')[0];
|
|
295
306
|
const executorNodeName = this.findExternalDependencyNodeName(executorPackage);
|
|
296
|
-
hash = this.hashExternalDependency(
|
|
307
|
+
hash = this.hashExternalDependency(executorNodeName).hash;
|
|
297
308
|
}
|
|
298
309
|
else {
|
|
299
310
|
// use command external dependencies if available to construct the hash
|
|
@@ -306,7 +317,7 @@ class TaskHasherImpl {
|
|
|
306
317
|
const externalDependencies = input['externalDependencies'];
|
|
307
318
|
for (let dep of externalDependencies) {
|
|
308
319
|
dep = this.findExternalDependencyNodeName(dep);
|
|
309
|
-
partialHashes.push(this.hashExternalDependency(
|
|
320
|
+
partialHashes.push(this.hashExternalDependency(dep).hash);
|
|
310
321
|
}
|
|
311
322
|
}
|
|
312
323
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const project_configuration_1 = require("../../generators/utils/project-configuration");
|
|
5
|
+
const format_changed_files_with_prettier_if_available_1 = require("../../generators/internal-utils/format-changed-files-with-prettier-if-available");
|
|
6
|
+
const json_1 = require("../../generators/utils/json");
|
|
7
|
+
function replaceOutput(output) {
|
|
8
|
+
// replace {projectRoot}/folder/*.(js|map|ts) to {projectRoot}/folder/*.{js,map,ts}
|
|
9
|
+
const regex = /\(([^)]+)\)/g;
|
|
10
|
+
return output.replace(regex, (match, group1) => {
|
|
11
|
+
let replacements = group1.split('|').join(',');
|
|
12
|
+
return `{${replacements}}`;
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function updateOutputsGlobs(tree) {
|
|
16
|
+
var _a;
|
|
17
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
for (const [projectName, projectConfiguration] of (0, project_configuration_1.getProjects)(tree).entries()) {
|
|
19
|
+
for (const [targetName, targetConfiguration] of Object.entries((_a = projectConfiguration.targets) !== null && _a !== void 0 ? _a : {})) {
|
|
20
|
+
if (!Array.isArray(targetConfiguration.outputs)) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
targetConfiguration.outputs =
|
|
24
|
+
targetConfiguration.outputs.map(replaceOutput);
|
|
25
|
+
}
|
|
26
|
+
(0, project_configuration_1.updateProjectConfiguration)(tree, projectName, projectConfiguration);
|
|
27
|
+
}
|
|
28
|
+
if (tree.exists('nx.json')) {
|
|
29
|
+
(0, json_1.updateJson)(tree, 'nx.json', (json) => {
|
|
30
|
+
var _a;
|
|
31
|
+
for (const [, targetConfiguration] of Object.entries((_a = json.targetDefaults) !== null && _a !== void 0 ? _a : {})) {
|
|
32
|
+
if (!Array.isArray(targetConfiguration.outputs)) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
targetConfiguration.outputs =
|
|
36
|
+
targetConfiguration.outputs.map(replaceOutput);
|
|
37
|
+
}
|
|
38
|
+
return json;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
yield (0, format_changed_files_with_prettier_if_available_1.formatChangedFilesWithPrettierIfAvailable)(tree);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
exports.default = updateOutputsGlobs;
|
|
@@ -17,6 +17,7 @@ const pnpm_parser_1 = require("./pnpm-parser");
|
|
|
17
17
|
const yarn_parser_1 = require("./yarn-parser");
|
|
18
18
|
const project_graph_pruning_1 = require("./project-graph-pruning");
|
|
19
19
|
const package_json_1 = require("./utils/package-json");
|
|
20
|
+
const fileutils_1 = require("../../../utils/fileutils");
|
|
20
21
|
const YARN_LOCK_FILE = 'yarn.lock';
|
|
21
22
|
const NPM_LOCK_FILE = 'package-lock.json';
|
|
22
23
|
const PNPM_LOCK_FILE = 'pnpm-lock.yaml';
|
|
@@ -69,7 +70,8 @@ function parseLockFile(packageManager = (0, package_manager_1.detectPackageManag
|
|
|
69
70
|
try {
|
|
70
71
|
if (packageManager === 'yarn') {
|
|
71
72
|
const content = (0, fs_1.readFileSync)(YARN_LOCK_PATH, 'utf8');
|
|
72
|
-
(0,
|
|
73
|
+
const packageJson = (0, fileutils_1.readJsonFile)('package.json');
|
|
74
|
+
(0, yarn_parser_1.parseYarnLockfile)(content, packageJson, builder);
|
|
73
75
|
return builder.getUpdatedProjectGraph();
|
|
74
76
|
}
|
|
75
77
|
if (packageManager === 'pnpm') {
|
|
@@ -124,10 +126,11 @@ exports.getLockFileName = getLockFileName;
|
|
|
124
126
|
function createLockFile(packageJson, packageManager = (0, package_manager_1.detectPackageManager)(workspace_root_1.workspaceRoot)) {
|
|
125
127
|
const normalizedPackageJson = (0, package_json_1.normalizePackageJson)(packageJson);
|
|
126
128
|
const content = (0, fs_1.readFileSync)(getLockFileName(packageManager), 'utf8');
|
|
129
|
+
const rootPackageJson = (0, fileutils_1.readJsonFile)('package.json');
|
|
127
130
|
const builder = new project_graph_builder_1.ProjectGraphBuilder();
|
|
128
131
|
try {
|
|
129
132
|
if (packageManager === 'yarn') {
|
|
130
|
-
(0, yarn_parser_1.parseYarnLockfile)(content, builder);
|
|
133
|
+
(0, yarn_parser_1.parseYarnLockfile)(content, rootPackageJson, builder);
|
|
131
134
|
const graph = builder.getUpdatedProjectGraph();
|
|
132
135
|
const prunedGraph = (0, project_graph_pruning_1.pruneProjectGraph)(graph, packageJson);
|
|
133
136
|
return (0, yarn_parser_1.stringifyYarnLockfile)(prunedGraph, content, normalizedPackageJson);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ProjectGraphBuilder } from '../../../project-graph/project-graph-builder';
|
|
2
2
|
import { NormalizedPackageJson } from './utils/package-json';
|
|
3
3
|
import { ProjectGraph } from '../../../config/project-graph';
|
|
4
|
-
export declare function parseYarnLockfile(lockFileContent: string, builder: ProjectGraphBuilder): void;
|
|
4
|
+
export declare function parseYarnLockfile(lockFileContent: string, packageJson: NormalizedPackageJson, builder: ProjectGraphBuilder): void;
|
|
5
5
|
export declare function stringifyYarnLockfile(graph: ProjectGraph, rootLockFileContent: string, packageJson: NormalizedPackageJson): string;
|
|
@@ -6,12 +6,12 @@ const package_json_1 = require("./utils/package-json");
|
|
|
6
6
|
const semver_1 = require("semver");
|
|
7
7
|
const file_hasher_1 = require("../../../hasher/file-hasher");
|
|
8
8
|
const object_sort_1 = require("../../../utils/object-sort");
|
|
9
|
-
function parseYarnLockfile(lockFileContent, builder) {
|
|
9
|
+
function parseYarnLockfile(lockFileContent, packageJson, builder) {
|
|
10
10
|
const { parseSyml } = require('@yarnpkg/parsers');
|
|
11
11
|
const data = parseSyml(lockFileContent);
|
|
12
12
|
// we use key => node map to avoid duplicate work when parsing keys
|
|
13
13
|
const keyMap = new Map();
|
|
14
|
-
addNodes(data, builder, keyMap);
|
|
14
|
+
addNodes(data, packageJson, builder, keyMap);
|
|
15
15
|
addDependencies(data, builder, keyMap);
|
|
16
16
|
}
|
|
17
17
|
exports.parseYarnLockfile = parseYarnLockfile;
|
|
@@ -23,10 +23,11 @@ function getPackageNames(keys) {
|
|
|
23
23
|
});
|
|
24
24
|
return Array.from(packageNames);
|
|
25
25
|
}
|
|
26
|
-
function addNodes(_a, builder, keyMap) {
|
|
26
|
+
function addNodes(_a, packageJson, builder, keyMap) {
|
|
27
27
|
var { __metadata } = _a, dependencies = tslib_1.__rest(_a, ["__metadata"]);
|
|
28
28
|
const isBerry = !!__metadata;
|
|
29
29
|
const nodes = new Map();
|
|
30
|
+
const combinedDeps = Object.assign(Object.assign(Object.assign(Object.assign({}, packageJson.dependencies), packageJson.devDependencies), packageJson.peerDependencies), packageJson.optionalDependencies);
|
|
30
31
|
Object.entries(dependencies).forEach(([keys, snapshot]) => {
|
|
31
32
|
// ignore workspace projects & patches
|
|
32
33
|
if (snapshot.linkType === 'soft' || keys.includes('@patch:')) {
|
|
@@ -57,24 +58,21 @@ function addNodes(_a, builder, keyMap) {
|
|
|
57
58
|
},
|
|
58
59
|
};
|
|
59
60
|
keyMap.set(key, node);
|
|
61
|
+
// use actual version so we can detect it later based on npm package's version
|
|
62
|
+
const mapKey = snapshot.version && version !== snapshot.version
|
|
63
|
+
? snapshot.version
|
|
64
|
+
: version;
|
|
60
65
|
if (!nodes.has(packageName)) {
|
|
61
|
-
nodes.set(packageName, new Map([[
|
|
66
|
+
nodes.set(packageName, new Map([[mapKey, node]]));
|
|
62
67
|
}
|
|
63
68
|
else {
|
|
64
|
-
nodes.get(packageName).set(
|
|
69
|
+
nodes.get(packageName).set(mapKey, node);
|
|
65
70
|
}
|
|
66
71
|
});
|
|
67
72
|
});
|
|
68
73
|
});
|
|
69
74
|
for (const [packageName, versionMap] of nodes.entries()) {
|
|
70
|
-
|
|
71
|
-
if (versionMap.size === 1) {
|
|
72
|
-
hoistedNode = versionMap.values().next().value;
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
const hoistedVersion = getHoistedVersion(packageName);
|
|
76
|
-
hoistedNode = versionMap.get(hoistedVersion);
|
|
77
|
-
}
|
|
75
|
+
const hoistedNode = findHoistedNode(packageName, versionMap, combinedDeps);
|
|
78
76
|
if (hoistedNode) {
|
|
79
77
|
hoistedNode.name = `npm:${packageName}`;
|
|
80
78
|
}
|
|
@@ -83,6 +81,34 @@ function addNodes(_a, builder, keyMap) {
|
|
|
83
81
|
});
|
|
84
82
|
}
|
|
85
83
|
}
|
|
84
|
+
function findHoistedNode(packageName, versionMap, combinedDeps) {
|
|
85
|
+
const hoistedVersion = getHoistedVersion(packageName);
|
|
86
|
+
if (hoistedVersion) {
|
|
87
|
+
return versionMap.get(hoistedVersion);
|
|
88
|
+
}
|
|
89
|
+
const rootVersionSpecifier = combinedDeps[packageName];
|
|
90
|
+
if (!rootVersionSpecifier) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const versions = Array.from(versionMap.keys()).sort((a, b) => (0, semver_1.gt)(a, b) ? -1 : 1);
|
|
94
|
+
// take the highest version found
|
|
95
|
+
if (rootVersionSpecifier === '*') {
|
|
96
|
+
return versionMap.get(versions[0]);
|
|
97
|
+
}
|
|
98
|
+
// take version that satisfies the root version specifier
|
|
99
|
+
let version = versions.find((v) => (0, semver_1.satisfies)(v, rootVersionSpecifier));
|
|
100
|
+
if (!version) {
|
|
101
|
+
// try to find alias version
|
|
102
|
+
version = versions.find((v) => versionMap.get(v).name === `npm:${packageName}@${rootVersionSpecifier}`);
|
|
103
|
+
}
|
|
104
|
+
if (!version) {
|
|
105
|
+
// try to find tarball package
|
|
106
|
+
version = versions.find((v) => versionMap.get(v).data.version !== v);
|
|
107
|
+
}
|
|
108
|
+
if (version) {
|
|
109
|
+
return versionMap.get(version);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
86
112
|
function findVersion(packageName, key, snapshot, isBerry) {
|
|
87
113
|
const versionRange = key.slice(packageName.length + 1);
|
|
88
114
|
// check for alias packages
|
|
@@ -132,7 +132,7 @@ function getOutputsForTargetAndConfiguration(task, node) {
|
|
|
132
132
|
options,
|
|
133
133
|
});
|
|
134
134
|
})
|
|
135
|
-
.filter((output) => !!output && !output.match(/{.*}/));
|
|
135
|
+
.filter((output) => !!output && !output.match(/{(projectRoot|workspaceRoot|(options.*))}/));
|
|
136
136
|
}
|
|
137
137
|
// Keep backwards compatibility in case `outputs` doesn't exist
|
|
138
138
|
if (options.outputPath) {
|
|
@@ -10,7 +10,7 @@ const fs_1 = require("fs");
|
|
|
10
10
|
class TempFs {
|
|
11
11
|
constructor(dirname, overrideWorkspaceRoot = true) {
|
|
12
12
|
this.dirname = dirname;
|
|
13
|
-
this.tempDir = (0, fs_extra_1.mkdtempSync)((0, path_1.join)((0, os_1.tmpdir)(), this.dirname));
|
|
13
|
+
this.tempDir = (0, fs_extra_1.realpathSync)((0, fs_extra_1.mkdtempSync)((0, path_1.join)((0, os_1.tmpdir)(), this.dirname)));
|
|
14
14
|
if (overrideWorkspaceRoot) {
|
|
15
15
|
process.env.NX_WORKSPACE_ROOT_PATH = this.tempDir;
|
|
16
16
|
}
|