@synertech/ui 0.39.0 → 0.40.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/use-synertech-ui/SKILL.md +147 -4
- package/README.md +14 -4
- package/dist/index.cjs +11 -11
- package/dist/index.d.cts +745 -7
- package/dist/index.d.ts +745 -7
- package/dist/index.js +11 -11
- package/dist/markdown-editor.cjs +1 -0
- package/dist/markdown-editor.d.cts +15 -0
- package/dist/markdown-editor.d.ts +15 -0
- package/dist/markdown-editor.js +1 -0
- package/dist/styles.css +117 -7
- package/dist/types-99-Ej5og.d.cts +15 -0
- package/dist/types-99-Ej5og.d.ts +15 -0
- package/package.json +12 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';require('@mdxeditor/editor/style.css');var editor=require('@mdxeditor/editor'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var T="\xC9crivez en Markdown...",C=()=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(editor.UndoRedo,{}),jsxRuntime.jsx(editor.BlockTypeSelect,{}),jsxRuntime.jsx(editor.BoldItalicUnderlineToggles,{}),jsxRuntime.jsx(editor.CodeToggle,{}),jsxRuntime.jsx(editor.CreateLink,{}),jsxRuntime.jsx(editor.ListsToggle,{}),jsxRuntime.jsx(editor.InsertThematicBreak,{})]}),L=[editor.headingsPlugin(),editor.listsPlugin(),editor.quotePlugin(),editor.linkPlugin(),editor.linkDialogPlugin(),editor.codeBlockPlugin({defaultCodeBlockLanguage:""}),editor.thematicBreakPlugin(),editor.markdownShortcutPlugin(),editor.toolbarPlugin({toolbarContents:C})],r=react.forwardRef(({value:e,onChange:t,placeholder:n=T},d)=>jsxRuntime.jsx("div",{className:"border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden bg-white dark:bg-gray-800",children:jsxRuntime.jsx(editor.MDXEditor,{ref:d,markdown:e,onChange:t,placeholder:n,contentEditableClassName:"prose prose-sm dark:prose-invert max-w-none p-3 min-h-[16rem] focus:outline-none",plugins:L})}));r.displayName="MarkdownEditor";exports.MarkdownEditor=r;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { MDXEditorMethods } from '@mdxeditor/editor';
|
|
3
|
+
import { a as MarkdownEditorProps } from './types-99-Ej5og.cjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Markdown editor for `<HelpButton markdown editable>`.
|
|
7
|
+
*
|
|
8
|
+
* Published from `@synertech/ui/markdown-editor`, never from the main entry.
|
|
9
|
+
* `@mdxeditor/editor` is an optional peer dependency, and bundlers resolve any
|
|
10
|
+
* reference to it at build time — even a dynamic `import()` — so reaching it
|
|
11
|
+
* from the main entry breaks the build of every app that did not install it.
|
|
12
|
+
*/
|
|
13
|
+
declare const MarkdownEditor: react.ForwardRefExoticComponent<MarkdownEditorProps & react.RefAttributes<MDXEditorMethods>>;
|
|
14
|
+
|
|
15
|
+
export { MarkdownEditor, MarkdownEditorProps };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { MDXEditorMethods } from '@mdxeditor/editor';
|
|
3
|
+
import { a as MarkdownEditorProps } from './types-99-Ej5og.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Markdown editor for `<HelpButton markdown editable>`.
|
|
7
|
+
*
|
|
8
|
+
* Published from `@synertech/ui/markdown-editor`, never from the main entry.
|
|
9
|
+
* `@mdxeditor/editor` is an optional peer dependency, and bundlers resolve any
|
|
10
|
+
* reference to it at build time — even a dynamic `import()` — so reaching it
|
|
11
|
+
* from the main entry breaks the build of every app that did not install it.
|
|
12
|
+
*/
|
|
13
|
+
declare const MarkdownEditor: react.ForwardRefExoticComponent<MarkdownEditorProps & react.RefAttributes<MDXEditorMethods>>;
|
|
14
|
+
|
|
15
|
+
export { MarkdownEditor, MarkdownEditorProps };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import'@mdxeditor/editor/style.css';import {headingsPlugin,listsPlugin,quotePlugin,linkPlugin,linkDialogPlugin,codeBlockPlugin,thematicBreakPlugin,markdownShortcutPlugin,toolbarPlugin,MDXEditor,UndoRedo,BlockTypeSelect,BoldItalicUnderlineToggles,CodeToggle,CreateLink,ListsToggle,InsertThematicBreak}from'@mdxeditor/editor';import {forwardRef}from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var T="\xC9crivez en Markdown...",C=()=>jsxs(Fragment,{children:[jsx(UndoRedo,{}),jsx(BlockTypeSelect,{}),jsx(BoldItalicUnderlineToggles,{}),jsx(CodeToggle,{}),jsx(CreateLink,{}),jsx(ListsToggle,{}),jsx(InsertThematicBreak,{})]}),L=[headingsPlugin(),listsPlugin(),quotePlugin(),linkPlugin(),linkDialogPlugin(),codeBlockPlugin({defaultCodeBlockLanguage:""}),thematicBreakPlugin(),markdownShortcutPlugin(),toolbarPlugin({toolbarContents:C})],r=forwardRef(({value:e,onChange:t,placeholder:n=T},d)=>jsx("div",{className:"border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden bg-white dark:bg-gray-800",children:jsx(MDXEditor,{ref:d,markdown:e,onChange:t,placeholder:n,contentEditableClassName:"prose prose-sm dark:prose-invert max-w-none p-3 min-h-[16rem] focus:outline-none",plugins:L})}));r.displayName="MarkdownEditor";export{r as MarkdownEditor};
|
package/dist/styles.css
CHANGED
|
@@ -207,6 +207,15 @@
|
|
|
207
207
|
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
208
208
|
--default-font-family: var(--font-sans);
|
|
209
209
|
--default-mono-font-family: var(--font-mono);
|
|
210
|
+
--color-chart-1: #155dfc;
|
|
211
|
+
--color-chart-2: #f54900;
|
|
212
|
+
--color-chart-3: #e60076;
|
|
213
|
+
--color-chart-4: #e17100;
|
|
214
|
+
--color-chart-5: #009689;
|
|
215
|
+
--color-chart-6: #e7000b;
|
|
216
|
+
--color-chart-7: #7f22fe;
|
|
217
|
+
--color-chart-8: #00a63e;
|
|
218
|
+
--color-chart-muted: #99a1af;
|
|
210
219
|
}
|
|
211
220
|
}
|
|
212
221
|
@layer base {
|
|
@@ -997,6 +1006,9 @@
|
|
|
997
1006
|
.w-20 {
|
|
998
1007
|
width: calc(var(--spacing) * 20);
|
|
999
1008
|
}
|
|
1009
|
+
.w-24 {
|
|
1010
|
+
width: calc(var(--spacing) * 24);
|
|
1011
|
+
}
|
|
1000
1012
|
.w-48 {
|
|
1001
1013
|
width: calc(var(--spacing) * 48);
|
|
1002
1014
|
}
|
|
@@ -1109,6 +1121,9 @@
|
|
|
1109
1121
|
.min-w-11 {
|
|
1110
1122
|
min-width: calc(var(--spacing) * 11);
|
|
1111
1123
|
}
|
|
1124
|
+
.min-w-24 {
|
|
1125
|
+
min-width: calc(var(--spacing) * 24);
|
|
1126
|
+
}
|
|
1112
1127
|
.min-w-40 {
|
|
1113
1128
|
min-width: calc(var(--spacing) * 40);
|
|
1114
1129
|
}
|
|
@@ -1154,6 +1169,9 @@
|
|
|
1154
1169
|
.shrink-0 {
|
|
1155
1170
|
flex-shrink: 0;
|
|
1156
1171
|
}
|
|
1172
|
+
.grow {
|
|
1173
|
+
flex-grow: 1;
|
|
1174
|
+
}
|
|
1157
1175
|
.border-collapse {
|
|
1158
1176
|
border-collapse: collapse;
|
|
1159
1177
|
}
|
|
@@ -1259,6 +1277,9 @@
|
|
|
1259
1277
|
.cursor-text {
|
|
1260
1278
|
cursor: text;
|
|
1261
1279
|
}
|
|
1280
|
+
.touch-none {
|
|
1281
|
+
touch-action: none;
|
|
1282
|
+
}
|
|
1262
1283
|
.resize {
|
|
1263
1284
|
resize: both;
|
|
1264
1285
|
}
|
|
@@ -1274,6 +1295,9 @@
|
|
|
1274
1295
|
.list-disc {
|
|
1275
1296
|
list-style-type: disc;
|
|
1276
1297
|
}
|
|
1298
|
+
.list-none {
|
|
1299
|
+
list-style-type: none;
|
|
1300
|
+
}
|
|
1277
1301
|
.appearance-none {
|
|
1278
1302
|
-webkit-appearance: none;
|
|
1279
1303
|
-moz-appearance: none;
|
|
@@ -1521,6 +1545,9 @@
|
|
|
1521
1545
|
.overflow-hidden {
|
|
1522
1546
|
overflow: hidden;
|
|
1523
1547
|
}
|
|
1548
|
+
.overflow-visible {
|
|
1549
|
+
overflow: visible;
|
|
1550
|
+
}
|
|
1524
1551
|
.overflow-x-auto {
|
|
1525
1552
|
overflow-x: auto;
|
|
1526
1553
|
}
|
|
@@ -2529,9 +2556,18 @@
|
|
|
2529
2556
|
.fill-gray-300 {
|
|
2530
2557
|
fill: var(--color-gray-300);
|
|
2531
2558
|
}
|
|
2559
|
+
.fill-gray-400 {
|
|
2560
|
+
fill: var(--color-gray-400);
|
|
2561
|
+
}
|
|
2562
|
+
.fill-gray-500 {
|
|
2563
|
+
fill: var(--color-gray-500);
|
|
2564
|
+
}
|
|
2532
2565
|
.fill-gray-600 {
|
|
2533
2566
|
fill: var(--color-gray-600);
|
|
2534
2567
|
}
|
|
2568
|
+
.fill-gray-900 {
|
|
2569
|
+
fill: var(--color-gray-900);
|
|
2570
|
+
}
|
|
2535
2571
|
.stroke-blue-500 {
|
|
2536
2572
|
stroke: var(--color-blue-500);
|
|
2537
2573
|
}
|
|
@@ -2586,6 +2622,9 @@
|
|
|
2586
2622
|
.stroke-teal-500 {
|
|
2587
2623
|
stroke: var(--color-teal-500);
|
|
2588
2624
|
}
|
|
2625
|
+
.stroke-white {
|
|
2626
|
+
stroke: var(--color-white);
|
|
2627
|
+
}
|
|
2589
2628
|
.stroke-yellow-500 {
|
|
2590
2629
|
stroke: var(--color-yellow-500);
|
|
2591
2630
|
}
|
|
@@ -3190,12 +3229,18 @@
|
|
|
3190
3229
|
--tw-numeric-spacing: tabular-nums;
|
|
3191
3230
|
font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);
|
|
3192
3231
|
}
|
|
3232
|
+
.\[font-variant-numeric\:tabular-nums\] {
|
|
3233
|
+
font-variant-numeric: tabular-nums;
|
|
3234
|
+
}
|
|
3193
3235
|
.line-through {
|
|
3194
3236
|
text-decoration-line: line-through;
|
|
3195
3237
|
}
|
|
3196
3238
|
.underline {
|
|
3197
3239
|
text-decoration-line: underline;
|
|
3198
3240
|
}
|
|
3241
|
+
.underline-offset-2 {
|
|
3242
|
+
text-underline-offset: 2px;
|
|
3243
|
+
}
|
|
3199
3244
|
.antialiased {
|
|
3200
3245
|
-webkit-font-smoothing: antialiased;
|
|
3201
3246
|
-moz-osx-font-smoothing: grayscale;
|
|
@@ -3369,6 +3414,10 @@
|
|
|
3369
3414
|
--tw-blur: blur(8px);
|
|
3370
3415
|
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,);
|
|
3371
3416
|
}
|
|
3417
|
+
.invert {
|
|
3418
|
+
--tw-invert: invert(100%);
|
|
3419
|
+
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,);
|
|
3420
|
+
}
|
|
3372
3421
|
.filter {
|
|
3373
3422
|
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,);
|
|
3374
3423
|
}
|
|
@@ -3822,13 +3871,6 @@
|
|
|
3822
3871
|
}
|
|
3823
3872
|
}
|
|
3824
3873
|
}
|
|
3825
|
-
.hover\:bg-green-600 {
|
|
3826
|
-
&:hover {
|
|
3827
|
-
@media (hover: hover) {
|
|
3828
|
-
background-color: var(--color-green-600);
|
|
3829
|
-
}
|
|
3830
|
-
}
|
|
3831
|
-
}
|
|
3832
3874
|
.hover\:bg-green-700 {
|
|
3833
3875
|
&:hover {
|
|
3834
3876
|
@media (hover: hover) {
|
|
@@ -4437,6 +4479,22 @@
|
|
|
4437
4479
|
--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
4438
4480
|
}
|
|
4439
4481
|
}
|
|
4482
|
+
.focus-visible\:outline-2 {
|
|
4483
|
+
&:focus-visible {
|
|
4484
|
+
outline-style: var(--tw-outline-style);
|
|
4485
|
+
outline-width: 2px;
|
|
4486
|
+
}
|
|
4487
|
+
}
|
|
4488
|
+
.focus-visible\:outline-offset-2 {
|
|
4489
|
+
&:focus-visible {
|
|
4490
|
+
outline-offset: 2px;
|
|
4491
|
+
}
|
|
4492
|
+
}
|
|
4493
|
+
.focus-visible\:outline-blue-500 {
|
|
4494
|
+
&:focus-visible {
|
|
4495
|
+
outline-color: var(--color-blue-500);
|
|
4496
|
+
}
|
|
4497
|
+
}
|
|
4440
4498
|
.active\:scale-95 {
|
|
4441
4499
|
&:active {
|
|
4442
4500
|
--tw-scale-x: 95%;
|
|
@@ -4500,6 +4558,11 @@
|
|
|
4500
4558
|
width: calc(var(--spacing) * 52);
|
|
4501
4559
|
}
|
|
4502
4560
|
}
|
|
4561
|
+
.sm\:grid-cols-1 {
|
|
4562
|
+
@media (width >= 40rem) {
|
|
4563
|
+
grid-template-columns: repeat(1, minmax(0, 1fr));
|
|
4564
|
+
}
|
|
4565
|
+
}
|
|
4503
4566
|
.sm\:grid-cols-2 {
|
|
4504
4567
|
@media (width >= 40rem) {
|
|
4505
4568
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
@@ -5540,11 +5603,26 @@
|
|
|
5540
5603
|
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
|
|
5541
5604
|
}
|
|
5542
5605
|
}
|
|
5606
|
+
.dark\:fill-gray-100 {
|
|
5607
|
+
@media (prefers-color-scheme: dark) {
|
|
5608
|
+
fill: var(--color-gray-100);
|
|
5609
|
+
}
|
|
5610
|
+
}
|
|
5543
5611
|
.dark\:fill-gray-300 {
|
|
5544
5612
|
@media (prefers-color-scheme: dark) {
|
|
5545
5613
|
fill: var(--color-gray-300);
|
|
5546
5614
|
}
|
|
5547
5615
|
}
|
|
5616
|
+
.dark\:fill-gray-400 {
|
|
5617
|
+
@media (prefers-color-scheme: dark) {
|
|
5618
|
+
fill: var(--color-gray-400);
|
|
5619
|
+
}
|
|
5620
|
+
}
|
|
5621
|
+
.dark\:fill-gray-500 {
|
|
5622
|
+
@media (prefers-color-scheme: dark) {
|
|
5623
|
+
fill: var(--color-gray-500);
|
|
5624
|
+
}
|
|
5625
|
+
}
|
|
5548
5626
|
.dark\:fill-gray-600 {
|
|
5549
5627
|
@media (prefers-color-scheme: dark) {
|
|
5550
5628
|
fill: var(--color-gray-600);
|
|
@@ -5565,11 +5643,26 @@
|
|
|
5565
5643
|
stroke: var(--color-gray-400);
|
|
5566
5644
|
}
|
|
5567
5645
|
}
|
|
5646
|
+
.dark\:stroke-gray-500 {
|
|
5647
|
+
@media (prefers-color-scheme: dark) {
|
|
5648
|
+
stroke: var(--color-gray-500);
|
|
5649
|
+
}
|
|
5650
|
+
}
|
|
5651
|
+
.dark\:stroke-gray-600 {
|
|
5652
|
+
@media (prefers-color-scheme: dark) {
|
|
5653
|
+
stroke: var(--color-gray-600);
|
|
5654
|
+
}
|
|
5655
|
+
}
|
|
5568
5656
|
.dark\:stroke-gray-700 {
|
|
5569
5657
|
@media (prefers-color-scheme: dark) {
|
|
5570
5658
|
stroke: var(--color-gray-700);
|
|
5571
5659
|
}
|
|
5572
5660
|
}
|
|
5661
|
+
.dark\:stroke-gray-800 {
|
|
5662
|
+
@media (prefers-color-scheme: dark) {
|
|
5663
|
+
stroke: var(--color-gray-800);
|
|
5664
|
+
}
|
|
5665
|
+
}
|
|
5573
5666
|
.dark\:stroke-green-500 {
|
|
5574
5667
|
@media (prefers-color-scheme: dark) {
|
|
5575
5668
|
stroke: var(--color-green-500);
|
|
@@ -6451,6 +6544,23 @@
|
|
|
6451
6544
|
transform: translateX(400%);
|
|
6452
6545
|
}
|
|
6453
6546
|
}
|
|
6547
|
+
@media (prefers-color-scheme: dark) {
|
|
6548
|
+
:root:not(.light):not([data-theme="light"]) {
|
|
6549
|
+
--color-chart-1: #2b7fff;
|
|
6550
|
+
--color-chart-3: #f6339a;
|
|
6551
|
+
--color-chart-6: #fb2c36;
|
|
6552
|
+
--color-chart-7: #8e51ff;
|
|
6553
|
+
--color-chart-muted: #6a7282;
|
|
6554
|
+
}
|
|
6555
|
+
}
|
|
6556
|
+
:root.dark,
|
|
6557
|
+
:root[data-theme="dark"] {
|
|
6558
|
+
--color-chart-1: #2b7fff;
|
|
6559
|
+
--color-chart-3: #f6339a;
|
|
6560
|
+
--color-chart-6: #fb2c36;
|
|
6561
|
+
--color-chart-7: #8e51ff;
|
|
6562
|
+
--color-chart-muted: #6a7282;
|
|
6563
|
+
}
|
|
6454
6564
|
@property --tw-translate-x {
|
|
6455
6565
|
syntax: "*";
|
|
6456
6566
|
inherits: false;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ComponentType } from 'react';
|
|
2
|
+
|
|
3
|
+
/** Props `HelpButton` passes to the Markdown editor it is given. */
|
|
4
|
+
interface MarkdownEditorProps {
|
|
5
|
+
value: string;
|
|
6
|
+
onChange: (markdown: string) => void;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Any component accepting {@link MarkdownEditorProps}. The stock one is
|
|
11
|
+
* `MarkdownEditor` from `@synertech/ui/markdown-editor`.
|
|
12
|
+
*/
|
|
13
|
+
type MarkdownEditorComponent = ComponentType<MarkdownEditorProps>;
|
|
14
|
+
|
|
15
|
+
export type { MarkdownEditorComponent as M, MarkdownEditorProps as a };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ComponentType } from 'react';
|
|
2
|
+
|
|
3
|
+
/** Props `HelpButton` passes to the Markdown editor it is given. */
|
|
4
|
+
interface MarkdownEditorProps {
|
|
5
|
+
value: string;
|
|
6
|
+
onChange: (markdown: string) => void;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Any component accepting {@link MarkdownEditorProps}. The stock one is
|
|
11
|
+
* `MarkdownEditor` from `@synertech/ui/markdown-editor`.
|
|
12
|
+
*/
|
|
13
|
+
type MarkdownEditorComponent = ComponentType<MarkdownEditorProps>;
|
|
14
|
+
|
|
15
|
+
export type { MarkdownEditorComponent as M, MarkdownEditorProps as a };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synertech/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.40.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Synertech UI component library",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -17,6 +17,16 @@
|
|
|
17
17
|
"default": "./dist/index.cjs"
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
|
+
"./markdown-editor": {
|
|
21
|
+
"import": {
|
|
22
|
+
"types": "./dist/markdown-editor.d.ts",
|
|
23
|
+
"default": "./dist/markdown-editor.js"
|
|
24
|
+
},
|
|
25
|
+
"require": {
|
|
26
|
+
"types": "./dist/markdown-editor.d.cts",
|
|
27
|
+
"default": "./dist/markdown-editor.cjs"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
20
30
|
"./styles.css": "./dist/styles.css"
|
|
21
31
|
},
|
|
22
32
|
"bin": {
|
|
@@ -31,7 +41,7 @@
|
|
|
31
41
|
"*.css"
|
|
32
42
|
],
|
|
33
43
|
"scripts": {
|
|
34
|
-
"build": "tsup",
|
|
44
|
+
"build": "tsup && node scripts/check-bundle-boundary.mjs",
|
|
35
45
|
"dev": "tsup --watch",
|
|
36
46
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
37
47
|
"lint": "eslint src/",
|