@jujulego/jill 3.0.0-alpha.2 → 3.0.0-alpha.3

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/README.md CHANGED
@@ -2,8 +2,7 @@
2
2
  [![Version](https://img.shields.io/npm/v/@jujulego/jill)](https://www.npmjs.com/package/@jujulego/jill)
3
3
  ![Licence](https://img.shields.io/github/license/jujulego/jill)
4
4
  ![Language](https://img.shields.io/github/languages/top/jujulego/jill)
5
- [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=jujulego_jill&metric=alert_status)](https://sonarcloud.io/dashboard?id=jujulego_jill)
6
- [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=jujulego_jill&metric=coverage)](https://sonarcloud.io/dashboard?id=jujulego_jill)
5
+ [![codecov](https://codecov.io/gh/Jujulego/jill/graph/badge.svg?token=Ug8TWPaPNA)](https://codecov.io/gh/Jujulego/jill)
7
6
 
8
7
  Zero-config monorepo cli
9
8
 
package/bin/jill.js CHANGED
@@ -1,3 +1,4 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ import '../dist/instrument.js';
3
4
  import '../dist/main.js';
package/dist/TaskName.js CHANGED
@@ -1,4 +1,4 @@
1
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
1
+ ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="37ad726c-3634-4efb-a2ff-4245662538b8",e._sentryDebugIdIdentifier="sentry-dbid-37ad726c-3634-4efb-a2ff-4245662538b8");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.3"};}catch(e){}}();import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { Text } from 'ink';
3
3
  import { a as isScriptCtx } from './parser.js';
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"TaskName.js","sources":["../src/cli/components/TaskName.tsx"],"sourcesContent":["import { type Task, type TaskSummary } from '@jujulego/tasks';\nimport { Text } from 'ink';\nimport { isScriptCtx } from '../../tasks/script-task.js';\n\n// Components\nexport default function TaskName({ task, withWorkspace }: TaskNameProps) {\n if (isScriptCtx(task.context)) {\n return (\n <Text>\n Run <Text bold>{ task.context.script }</Text> script{ withWorkspace && <>{' '}in { task.context.workspace.name }</> }\n </Text>\n );\n } else {\n return <Text>{ task.name }</Text>;\n }\n}\n\n// Types\nexport interface TaskNameProps {\n readonly task: Task | TaskSummary;\n readonly withWorkspace?: boolean;\n}\n"],"names":["TaskName","task","withWorkspace","isScriptCtx","context","_jsxs","Text","_jsx","bold","script","_Fragment","workspace","name"],"mappings":";;;;AAIA;AACe,SAASA,QAAAA,CAAS,EAAEC,IAAI,EAAEC,aAAa,EAAiB,EAAA;IACrE,IAAIC,WAAAA,CAAYF,IAAAA,CAAKG,OAAO,CAAA,EAAG;AAC7B,QAAA,qBACEC,IAAA,CAACC,IAAAA,EAAAA;;AAAK,gBAAA,MAAA;8BACAC,GAAA,CAACD,IAAAA,EAAAA;oBAAKE,IAAI,EAAA,IAAA;8BAAGP,IAAAA,CAAKG,OAAO,CAACK;;AAAe,gBAAA,SAAA;gBAASP,aAAAA,kBAAiBG,IAAA,CAAAK,QAAA,EAAA;;AAAG,wBAAA,GAAA;AAAI,wBAAA,KAAA;AAAKT,wBAAAA,IAAAA,CAAKG,OAAO,CAACO,SAAS,CAACC;;;;;IAGhH,CAAA,MAAO;AACL,QAAA,qBAAOL,GAAA,CAACD,IAAAA,EAAAA;AAAOL,YAAAA,QAAAA,EAAAA,IAAAA,CAAKW;;AACtB,IAAA;AACF;;;;"}
1
+ {"version":3,"file":"TaskName.js","sources":["../src/cli/components/TaskName.tsx"],"sourcesContent":["import { type Task, type TaskSummary } from '@jujulego/tasks';\nimport { Text } from 'ink';\nimport { isScriptCtx } from '../../tasks/script-task.js';\n\n// Components\nexport default function TaskName({ task, withWorkspace }: TaskNameProps) {\n if (isScriptCtx(task.context)) {\n return (\n <Text>\n Run <Text bold>{ task.context.script }</Text> script{ withWorkspace && <>{' '}in { task.context.workspace.name }</> }\n </Text>\n );\n } else {\n return <Text>{ task.name }</Text>;\n }\n}\n\n// Types\nexport interface TaskNameProps {\n readonly task: Task | TaskSummary;\n readonly withWorkspace?: boolean;\n}\n"],"names":["TaskName","task","withWorkspace","isScriptCtx","context","_jsxs","Text","_jsx","bold","script","_Fragment","workspace","name"],"mappings":";;;;AAIA,CAAA,CAAA,CAAA,UAAA;AACe,QAAA,CAASA,QAAAA,CAAS,CAAA,CAAEC,IAAI,CAAA,CAAEC,aAAa,EAAiB,CAAA,CAAA,CAAA;IACrE,IAAIC,WAAAA,CAAYF,IAAAA,CAAKG,OAAO,CAAA,CAAA,CAAG,CAAA;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CACEC,IAAA,CAACC,IAAAA,CAAAA,CAAAA,CAAAA;;AAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA;8BACAC,GAAA,CAACD,IAAAA,CAAAA,CAAAA,CAAAA;oBAAKE,IAAI,EAAA,IAAA,CAAA;8BAAGP,IAAAA,CAAKG,OAAO,CAACK,MAAAA;;AAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA;gBAASP,aAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA,CAAiBG,IAAA,CAAAK,QAAA,CAAA,CAAA,CAAA;;AAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAKT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAKG,OAAO,CAACO,SAAS,CAACC,IAAAA;;;;;IAGhH,CAAA,CAAA,IAAA,CAAO,CAAA;AACL,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAOL,GAAA,CAACD,IAAAA,CAAAA,CAAAA,CAAAA;AAAOL,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA,IAAAA,CAAKW,IAAAA;;AACtB,CAAA,CAAA,CAAA,CAAA,CAAA;AACF,CAAA;;"}
package/dist/inked.js CHANGED
@@ -1,4 +1,5 @@
1
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
1
+ ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="dbf89afb-2036-40fc-a280-520e18c50982",e._sentryDebugIdIdentifier="sentry-dbid-dbf89afb-2036-40fc-a280-520e18c50982");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.3"};}catch(e){}}();import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { startSpan } from '@sentry/node';
2
3
  import { useStderr, render } from 'ink';
3
4
  import { inject$ } from '@kyrielle/injector';
4
5
  import { LogGateway } from '@kyrielle/logger';
@@ -28,34 +29,37 @@ function StaticLogs() {
28
29
  /**
29
30
  * Renders each yielded element using ink
30
31
  */ function inked(stepper) {
31
- return async (props)=>{
32
- const controller = new AbortController();
33
- const app = render(/*#__PURE__*/ jsx(StaticLogs, {}), {
34
- exitOnCtrlC: true
35
- });
36
- void app.waitUntilExit().then(()=>{
37
- controller.abort();
38
- });
39
- try {
40
- const generator = stepper(props, {
41
- app,
42
- controller
32
+ return (props)=>startSpan({
33
+ name: 'inked',
34
+ op: 'ui.ink'
35
+ }, async ()=>{
36
+ const controller = new AbortController();
37
+ const app = render(/*#__PURE__*/ jsx(StaticLogs, {}), {
38
+ exitOnCtrlC: true
43
39
  });
44
- let result = await generator.next();
45
- while(!result.done){
46
- app.rerender(/*#__PURE__*/ jsxs(Fragment, {
47
- children: [
48
- /*#__PURE__*/ jsx(StaticLogs, {}),
49
- result.value
50
- ]
51
- }));
52
- result = await generator.next();
40
+ void app.waitUntilExit().then(()=>{
41
+ controller.abort();
42
+ });
43
+ try {
44
+ const generator = stepper(props, {
45
+ app,
46
+ controller
47
+ });
48
+ let result = await generator.next();
49
+ while(!result.done){
50
+ app.rerender(/*#__PURE__*/ jsxs(Fragment, {
51
+ children: [
52
+ /*#__PURE__*/ jsx(StaticLogs, {}),
53
+ result.value
54
+ ]
55
+ }));
56
+ result = await generator.next();
57
+ }
58
+ return result.value;
59
+ } finally{
60
+ app.unmount();
53
61
  }
54
- return result.value;
55
- } finally{
56
- app.unmount();
57
- }
58
- };
62
+ });
59
63
  }
60
64
 
61
65
  export { inked as i };
package/dist/inked.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"inked.js","sources":["../src/cli/components/StaticLogs.tsx","../src/cli/inked.tsx"],"sourcesContent":["import { inject$ } from '@kyrielle/injector';\nimport { LogGateway, type WithDelay } from '@kyrielle/logger';\nimport { useStderr } from 'ink';\nimport { observer$ } from 'kyrielle';\nimport { useLayoutEffect } from 'react';\nimport { logFormat } from '../../utils/logger.js';\n\n// Component\nexport default function StaticLogs() {\n const stderr = useStderr();\n\n useLayoutEffect(() => {\n const gateway: LogGateway<WithDelay> = inject$(LogGateway);\n const toConsole = gateway.disconnect('console')!;\n\n gateway.connect('ink', observer$({\n next: (log) => stderr.write(logFormat(log) + '\\n')\n }));\n\n return () => {\n gateway.disconnect('ink');\n gateway.connect('console', toConsole);\n };\n }, [stderr]);\n\n return null;\n}\n\n","import { type Instance, render } from 'ink';\nimport type { ReactNode } from 'react';\nimport StaticLogs from './components/StaticLogs.jsx';\n\n/**\n * Renders each yielded element using ink\n */\nexport function inked<P, R>(stepper: InkedStepper<P, R>): InkedComponent<P, R> {\n return async (props: P): Promise<R> => {\n const controller = new AbortController();\n\n const app = render(<StaticLogs />, { exitOnCtrlC: true });\n void app.waitUntilExit().then(() => {\n controller.abort();\n });\n\n try {\n const generator = stepper(props, { app, controller });\n let result = await generator.next();\n\n while (!result.done) {\n app.rerender(\n <>\n <StaticLogs />\n { result.value }\n </>\n );\n\n result = await generator.next();\n }\n\n return result.value;\n } finally {\n app.unmount();\n }\n };\n}\n\n// Types\nexport interface InkedContext {\n readonly app: Instance;\n readonly controller: AbortController;\n}\n\nexport type InkedStepper<P, R> = (props: P, context: InkedContext) => AsyncGenerator<ReactNode, R> | Generator<ReactNode, R>;\nexport type InkedComponent<P, R> = (props: P) => Promise<R>;\n"],"names":["StaticLogs","stderr","useStderr","useLayoutEffect","gateway","inject$","LogGateway","toConsole","disconnect","connect","observer$","next","log","write","logFormat","inked","stepper","props","controller","AbortController","app","render","_jsx","exitOnCtrlC","waitUntilExit","then","abort","generator","result","done","rerender","_jsxs","_Fragment","value","unmount"],"mappings":";;;;;;;;AAOA;AACe,SAASA,UAAAA,GAAAA;AACtB,IAAA,MAAMC,MAAAA,GAASC,SAAAA,EAAAA;IAEfC,eAAAA,CAAgB,IAAA;AACd,QAAA,MAAMC,UAAiCC,OAAAA,CAAQC,UAAAA,CAAAA;QAC/C,MAAMC,SAAAA,GAAYH,OAAAA,CAAQI,UAAU,CAAC,SAAA,CAAA;QAErCJ,OAAAA,CAAQK,OAAO,CAAC,KAAA,EAAOC,SAAAA,CAAU;AAC/BC,YAAAA,IAAAA,EAAM,CAACC,GAAAA,GAAQX,MAAAA,CAAOY,KAAK,CAACC,UAAUF,GAAAA,CAAAA,GAAO,IAAA;AAC/C,SAAA,CAAA,CAAA;QAEA,OAAO,IAAA;AACLR,YAAAA,OAAAA,CAAQI,UAAU,CAAC,KAAA,CAAA;YACnBJ,OAAAA,CAAQK,OAAO,CAAC,SAAA,EAAWF,SAAAA,CAAAA;AAC7B,QAAA,CAAA;IACF,CAAA,EAAG;AAACN,QAAAA;AAAO,KAAA,CAAA;IAEX,OAAO,IAAA;AACT;;ACtBA;;IAGO,SAASc,KAAAA,CAAYC,OAA2B,EAAA;AACrD,IAAA,OAAO,OAAOC,KAAAA,GAAAA;AACZ,QAAA,MAAMC,aAAa,IAAIC,eAAAA,EAAAA;QAEvB,MAAMC,GAAAA,GAAMC,MAAAA,eAAOC,GAAA,CAACtB,UAAAA,EAAAA,EAAAA,CAAAA,EAAe;YAAEuB,WAAAA,EAAa;AAAK,SAAA,CAAA;AACvD,QAAA,KAAKH,GAAAA,CAAII,aAAa,EAAA,CAAGC,IAAI,CAAC,IAAA;AAC5BP,YAAAA,UAAAA,CAAWQ,KAAK,EAAA;AAClB,QAAA,CAAA,CAAA;QAEA,IAAI;YACF,MAAMC,SAAAA,GAAYX,QAAQC,KAAAA,EAAO;AAAEG,gBAAAA,GAAAA;AAAKF,gBAAAA;AAAW,aAAA,CAAA;YACnD,IAAIU,MAAAA,GAAS,MAAMD,SAAAA,CAAUhB,IAAI,EAAA;YAEjC,MAAO,CAACiB,MAAAA,CAAOC,IAAI,CAAE;AACnBT,gBAAAA,GAAAA,CAAIU,QAAQ,eACVC,IAAA,CAAAC,QAAA,EAAA;;sCACEV,GAAA,CAACtB,UAAAA,EAAAA,EAAAA,CAAAA;AACC4B,wBAAAA,MAAAA,CAAOK;;;gBAIbL,MAAAA,GAAS,MAAMD,UAAUhB,IAAI,EAAA;AAC/B,YAAA;AAEA,YAAA,OAAOiB,OAAOK,KAAK;QACrB,CAAA,QAAU;AACRb,YAAAA,GAAAA,CAAIc,OAAO,EAAA;AACb,QAAA;AACF,IAAA,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"inked.js","sources":["../src/cli/components/StaticLogs.tsx","../src/cli/inked.tsx"],"sourcesContent":["import { inject$ } from '@kyrielle/injector';\nimport { LogGateway, type WithDelay } from '@kyrielle/logger';\nimport { useStderr } from 'ink';\nimport { observer$ } from 'kyrielle';\nimport { useLayoutEffect } from 'react';\nimport { logFormat } from '../../utils/logger.js';\n\n// Component\nexport default function StaticLogs() {\n const stderr = useStderr();\n\n useLayoutEffect(() => {\n const gateway: LogGateway<WithDelay> = inject$(LogGateway);\n const toConsole = gateway.disconnect('console')!;\n\n gateway.connect('ink', observer$({\n next: (log) => stderr.write(logFormat(log) + '\\n')\n }));\n\n return () => {\n gateway.disconnect('ink');\n gateway.connect('console', toConsole);\n };\n }, [stderr]);\n\n return null;\n}\n\n","import { startSpan } from '@sentry/node';\nimport { type Instance, render } from 'ink';\nimport type { ReactNode } from 'react';\nimport StaticLogs from './components/StaticLogs.jsx';\n\n/**\n * Renders each yielded element using ink\n */\nexport function inked<P, R>(stepper: InkedStepper<P, R>): InkedComponent<P, R> {\n return (props: P): Promise<R> => startSpan({ name: 'inked', op: 'ui.ink' }, async () => {\n const controller = new AbortController();\n\n const app = render(<StaticLogs />, { exitOnCtrlC: true });\n void app.waitUntilExit().then(() => {\n controller.abort();\n });\n\n try {\n const generator = stepper(props, { app, controller });\n let result = await generator.next();\n\n while (!result.done) {\n app.rerender(\n <>\n <StaticLogs />\n { result.value }\n </>\n );\n\n result = await generator.next();\n }\n\n return result.value;\n } finally {\n app.unmount();\n }\n });\n}\n\n// Types\nexport interface InkedContext {\n readonly app: Instance;\n readonly controller: AbortController;\n}\n\nexport type InkedStepper<P, R> = (props: P, context: InkedContext) => AsyncGenerator<ReactNode, R> | Generator<ReactNode, R>;\nexport type InkedComponent<P, R> = (props: P) => Promise<R>;\n"],"names":["StaticLogs","stderr","useStderr","useLayoutEffect","gateway","inject$","LogGateway","toConsole","disconnect","connect","observer$","next","log","write","logFormat","inked","stepper","props","startSpan","name","op","controller","AbortController","app","render","_jsx","exitOnCtrlC","waitUntilExit","then","abort","generator","result","done","rerender","_jsxs","_Fragment","value","unmount"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c9edf498-8d73-40aa-9138-6bd0d404a495",e._sentryDebugIdIdentifier="sentry-dbid-c9edf498-8d73-40aa-9138-6bd0d404a495");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.3"};}catch(e){}}();import { init } from '@sentry/node';
2
+
3
+ init({
4
+ dsn: 'https://53e6d10c16975ebd025175d9836d039b@o4508229080055808.ingest.de.sentry.io/4509876546895952',
5
+ sendDefaultPii: false,
6
+ tracesSampleRate: 1.0
7
+ });
8
+ //# sourceMappingURL=instrument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrument.js","sources":["../src/instrument.ts"],"sourcesContent":["import { init } from '@sentry/node';\n\ninit({\n dsn: 'https://53e6d10c16975ebd025175d9836d039b@o4508229080055808.ingest.de.sentry.io/4509876546895952',\n sendDefaultPii: false,\n tracesSampleRate: 1.0,\n});\n"],"names":["init","dsn","sendDefaultPii","tracesSampleRate"],"mappings":";;AAEAA,IAAAA,CAAK,CAAA;IACHC,GAAAA,EAAK,CAAA,KAAA,CAAA,CAAA,CAAA,gCAAA,CAAA,iBAAA,CAAA,MAAA,CAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA;IACLC,cAAAA,EAAgB,KAAA,CAAA;IAChBC,gBAAAA,CAAAA,CAAkB,CAAA,CAAA,CAAA;AACpB,CAAA,CAAA"}
package/dist/list.ink.js CHANGED
@@ -1,4 +1,4 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
1
+ ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3a2f22a4-6985-460a-97d1-9545683745a8",e._sentryDebugIdIdentifier="sentry-dbid-3a2f22a4-6985-460a-97d1-9545683745a8");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.3"};}catch(e){}}();import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { Box, Text } from 'ink';
3
3
  import { c as capitalize } from './parser.js';
4
4
  import { i as inked } from './inked.js';
@@ -6,19 +6,20 @@ import '@jujulego/tasks';
6
6
  import '@kyrielle/injector';
7
7
  import 'kyrielle';
8
8
  import '@kyrielle/logger';
9
+ import '@sentry/node';
9
10
  import 'node:path';
10
- import 'glob';
11
- import 'node:fs';
12
- import 'normalize-package-data';
13
- import 'semver';
14
- import 'moo';
15
11
  import 'node:child_process';
16
12
  import 'node:process';
17
13
  import 'chalk';
14
+ import 'semver';
18
15
  import 'slugify';
19
16
  import 'yargs';
20
- import 'yargs/helpers';
17
+ import 'node:fs';
21
18
  import 'path-scurry';
19
+ import '@swc/helpers/_/_apply_decs_2203_r';
20
+ import 'glob';
21
+ import 'normalize-package-data';
22
+ import 'moo';
22
23
  import '@jujulego/quick-tag';
23
24
  import 'ajv';
24
25
  import 'node:os';
@@ -1 +1 @@
1
- {"version":3,"file":"list.ink.js","sources":["../src/cli/commands/list.ink.tsx"],"sourcesContent":["import { Box, Text } from 'ink';\nimport { capitalize } from '../../utils/string.js';\nimport { inked } from '../inked.jsx';\nimport type { ExtractedData, ListAttr } from './list.js';\n\nconst ListInk = inked(function* (props: ListInkProps) {\n const { attributes, headers, workspaces } = props;\n\n yield (\n <Box>\n { attributes.map((attr) => (\n <Box key={attr} flexDirection=\"column\" marginRight={2}>\n { headers && (\n <Text bold>{ capitalize(attr) }</Text>\n ) }\n { workspaces.map((wks, idx) => (\n <Text key={idx}>{ wks[attr] || ' ' }</Text>\n ))}\n </Box>\n )) }\n </Box>\n );\n});\n\nexport default ListInk;\n\n// Types\nexport interface ListInkProps {\n readonly attributes: readonly ListAttr[];\n readonly headers?: boolean;\n readonly workspaces: readonly ExtractedData[];\n}"],"names":["ListInk","inked","props","attributes","headers","workspaces","_jsx","Box","map","attr","_jsxs","flexDirection","marginRight","Text","bold","capitalize","wks","idx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAMA,OAAAA,GAAUC,KAAAA,CAAM,UAAWC,KAAmB,EAAA;AAClD,IAAA,MAAM,EAAEC,UAAU,EAAEC,OAAO,EAAEC,UAAU,EAAE,GAAGH,KAAAA;AAE5C,IAAA,oBACEI,GAAA,CAACC,GAAAA,EAAAA;AACGJ,QAAAA,QAAAA,EAAAA,UAAAA,CAAWK,GAAG,CAAC,CAACC,IAAAA,iBAChBC,IAAA,CAACH,GAAAA,EAAAA;gBAAeI,aAAAA,EAAc,QAAA;gBAASC,WAAAA,EAAa,CAAA;;AAChDR,oBAAAA,OAAAA,kBACAE,GAAA,CAACO,IAAAA,EAAAA;wBAAKC,IAAI,EAAA,IAAA;kCAAGC,UAAAA,CAAWN,IAAAA;;AAExBJ,oBAAAA,UAAAA,CAAWG,GAAG,CAAC,CAACQ,GAAAA,EAAKC,oBACrBX,GAAA,CAACO,IAAAA,EAAAA;sCAAiBG,GAAG,CAACP,KAAK,IAAI;AAApBQ,yBAAAA,EAAAA,GAAAA,CAAAA;;AALLR,aAAAA,EAAAA,IAAAA,CAAAA;;AAWlB,CAAA;;;;"}
1
+ {"version":3,"file":"list.ink.js","sources":["../src/cli/commands/list.ink.tsx"],"sourcesContent":["import { Box, Text } from 'ink';\nimport { capitalize } from '../../utils/string.js';\nimport { inked } from '../inked.jsx';\nimport type { ExtractedData, ListAttr } from './list.js';\n\nconst ListInk = inked(function* (props: ListInkProps) {\n const { attributes, headers, workspaces } = props;\n\n yield (\n <Box>\n { attributes.map((attr) => (\n <Box key={attr} flexDirection=\"column\" marginRight={2}>\n { headers && (\n <Text bold>{ capitalize(attr) }</Text>\n ) }\n { workspaces.map((wks, idx) => (\n <Text key={idx}>{ wks[attr] || ' ' }</Text>\n ))}\n </Box>\n )) }\n </Box>\n );\n});\n\nexport default ListInk;\n\n// Types\nexport interface ListInkProps {\n readonly attributes: readonly ListAttr[];\n readonly headers?: boolean;\n readonly workspaces: readonly ExtractedData[];\n}"],"names":["ListInk","inked","props","attributes","headers","workspaces","_jsx","Box","map","attr","_jsxs","flexDirection","marginRight","Text","bold","capitalize","wks","idx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,KAAA,CAAMA,OAAAA,CAAAA,CAAAA,CAAUC,KAAAA,CAAM,QAAA,CAAA,CAAWC,KAAmB,CAAA,CAAA,CAAA;AAClD,CAAA,CAAA,CAAA,CAAA,KAAA,CAAM,EAAEC,UAAU,CAAA,CAAEC,OAAO,CAAA,CAAEC,UAAU,CAAA,CAAE,CAAA,CAAA,CAAGH,KAAAA,CAAAA;AAE5C,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CACEI,GAAA,CAACC,GAAAA,CAAAA,CAAAA,CAAAA;AACGJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA,UAAAA,CAAWK,GAAG,CAAC,CAACC,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA,CAChBC,IAAA,CAACH,GAAAA,CAAAA,CAAAA,CAAAA;gBAAeI,aAAAA,EAAc,CAAA,MAAA,CAAA,CAAA;gBAASC,WAAAA,EAAa,CAAA,CAAA;;AAChDR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAAAA,CAAAA,CACAE,GAAA,CAACO,IAAAA,CAAAA,CAAAA,CAAAA;wBAAKC,IAAI,EAAA,IAAA,CAAA;kCAAGC,UAAAA,CAAWN,IAAAA,CAAAA;;AAExBJ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,UAAAA,CAAWG,GAAG,CAAC,CAACQ,GAAAA,CAAAA,CAAKC,oBACrBX,GAAA,CAACO,IAAAA,CAAAA,CAAAA,CAAAA;sCAAiBG,GAAG,CAACP,KAAK,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA;AAApBQ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,CAAAA;;AALLR,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,IAAAA,CAAAA,CAAAA;;AAWlB,CAAA,CAAA,CAAA;;"}
package/dist/main.js CHANGED
@@ -1,21 +1,23 @@
1
- import { e as executeParser } from './parser.js';
1
+ ;{try{(function(){var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8a2485f3-b592-4c76-b67b-06ad641e7844",e._sentryDebugIdIdentifier="sentry-dbid-8a2485f3-b592-4c76-b67b-06ad641e7844");})();}catch(e){}};!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"3.0.0-alpha.3"};}catch(e){}}();import { inject$ } from '@kyrielle/injector';
2
+ import { startSpan, captureMessage, captureException } from '@sentry/node';
3
+ import process from 'node:process';
4
+ import { hideBin } from 'yargs/helpers';
5
+ import { e as executeParser, L as LOGGER, C as ClientError } from './parser.js';
2
6
  import '@jujulego/tasks';
3
- import '@kyrielle/injector';
4
7
  import 'kyrielle';
5
8
  import '@kyrielle/logger';
6
9
  import 'node:path';
7
- import 'glob';
8
- import 'node:fs';
9
- import 'normalize-package-data';
10
- import 'semver';
11
- import 'moo';
12
10
  import 'node:child_process';
13
- import 'node:process';
14
11
  import 'chalk';
12
+ import 'semver';
15
13
  import 'slugify';
16
14
  import 'yargs';
17
- import 'yargs/helpers';
15
+ import 'node:fs';
18
16
  import 'path-scurry';
17
+ import '@swc/helpers/_/_apply_decs_2203_r';
18
+ import 'glob';
19
+ import 'normalize-package-data';
20
+ import 'moo';
19
21
  import '@jujulego/quick-tag';
20
22
  import 'ajv';
21
23
  import 'node:os';
@@ -23,6 +25,31 @@ import 'cosmiconfig';
23
25
  import 'chalk-template';
24
26
 
25
27
  // Bootstrap
28
+ const argv = hideBin(process.argv);
26
29
  const parser = executeParser();
27
- await parser.wrap(parser.terminalWidth()).parseAsync();
30
+ await startSpan({
31
+ name: 'jill',
32
+ op: 'cli.main',
33
+ attributes: {
34
+ 'cli.argv': argv
35
+ }
36
+ }, ()=>parser.wrap(parser.terminalWidth()).fail((msg, err)=>{
37
+ const logger = inject$(LOGGER);
38
+ if (msg) {
39
+ logger.error(msg);
40
+ captureMessage(msg, {
41
+ level: 'error'
42
+ });
43
+ } else if (err instanceof ClientError) {
44
+ logger.warning(err.message);
45
+ } else {
46
+ captureException(err, {
47
+ tags: {
48
+ handled: false
49
+ }
50
+ });
51
+ logger.error(err.message);
52
+ }
53
+ process.exitCode = 1;
54
+ }).parseAsync(argv).catch(()=>{}));
28
55
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/main.ts"],"sourcesContent":["import { executeParser } from './cli/parser.js';\n\n// Bootstrap\nconst parser = executeParser();\n\nawait parser\n .wrap(parser.terminalWidth())\n .parseAsync();\n"],"names":["parser","executeParser","wrap","terminalWidth","parseAsync"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAEA;AACA,MAAMA,MAAAA,GAASC,aAAAA,EAAAA;AAEf,MAAMD,OACHE,IAAI,CAACF,MAAAA,CAAOG,aAAa,IACzBC,UAAU,EAAA"}
1
+ {"version":3,"file":"main.js","sources":["../src/main.ts"],"sourcesContent":["import { inject$ } from '@kyrielle/injector';\nimport { captureException, captureMessage, startSpan } from '@sentry/node';\nimport process from 'node:process';\nimport { hideBin } from 'yargs/helpers';\nimport { executeParser } from './cli/parser.js';\nimport { ClientError } from './cli/utils/errors.js';\nimport { LOGGER } from './tokens.js';\n\n// Bootstrap\nconst argv = hideBin(process.argv);\nconst parser = executeParser();\n\nawait startSpan({ name: 'jill', op: 'cli.main', attributes: { 'cli.argv': argv } }, () => parser\n .wrap(parser.terminalWidth())\n .fail((msg, err) => {\n const logger = inject$(LOGGER);\n\n if (msg) {\n logger.error(msg);\n captureMessage(msg, { level: 'error' });\n } else if (err instanceof ClientError) {\n logger.warning(err.message);\n } else {\n captureException(err, { tags: { handled: false } });\n logger.error(err.message);\n }\n\n process.exitCode = 1;\n })\n .parseAsync(argv)\n .catch(() => {})\n);\n"],"names":["argv","hideBin","process","parser","executeParser","startSpan","name","op","attributes","wrap","terminalWidth","fail","msg","err","logger","inject$","LOGGER","error","captureMessage","level","ClientError","warning","message","captureException","tags","handled","exitCode","parseAsync","catch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,CAAA,CAAA,CAAA,SAAA;AACA,KAAA,CAAMA,IAAAA,CAAAA,CAAAA,CAAOC,OAAAA,CAAQC,OAAAA,CAAQF,IAAI,CAAA,CAAA;AACjC,KAAA,CAAMG,MAAAA,CAAAA,CAAAA,CAASC,aAAAA,CAAAA,CAAAA,CAAAA;AAEf,KAAA,CAAMC,SAAAA,CAAU,CAAA;IAAEC,IAAAA,EAAM,CAAA,IAAA,CAAA,CAAA;IAAQC,EAAAA,EAAI,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA;IAAYC,UAAAA,CAAAA,CAAY,CAAA;QAAE,UAAA,CAAA,CAAYR,IAAAA;AAAK,CAAA,CAAA,CAAA,CAAA,CAAA;AAAE,CAAA,EAAG,CAAA,CAAA,CAAA,CAAMG,MAAAA,CACvFM,IAAI,CAACN,MAAAA,CAAOO,aAAa,CAAA,CAAA,CAAA,CACzBC,IAAI,CAAC,CAACC,GAAAA,CAAAA,CAAKC,GAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAMC,SAASC,MAAAA,CAAAA,CAAQC,MAAAA,CAAAA,CAAAA;AAEvB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAIJ,GAAAA,CAAAA,CAAK,CAAA;AACPE,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,CAAOG,KAAK,CAACL,GAAAA,CAAAA,CAAAA;AACbM,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,cAAAA,CAAeN,GAAAA,CAAAA,CAAK,CAAA;gBAAEO,KAAAA,CAAAA,CAAO,CAAA,KAAA,CAAA;AAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACvC,CAAA,CAAA,IAAA,CAAO,EAAA,CAAA,CAAIN,eAAeO,WAAAA,CAAAA,CAAa,CAAA;YACrCN,MAAAA,CAAOO,OAAO,CAACR,GAAAA,CAAIS,OAAO,CAAA,CAAA;QAC5B,CAAA,CAAA,IAAA,CAAO,CAAA;AACLC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,gBAAAA,CAAiBV,GAAAA,CAAAA,CAAK,CAAA;gBAAEW,IAAAA,CAAAA,CAAM,CAAA;oBAAEC,OAAAA,CAAAA,CAAS,KAAA;AAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;YACjDX,MAAAA,CAAOG,KAAK,CAACJ,GAAAA,CAAIS,OAAO,CAAA,CAAA;AAC1B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAEApB,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,OAAAA,CAAQwB,QAAQ,CAAA,CAAA,CAAG,CAAA,CAAA;AACrB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACCC,UAAU,CAAC3B,IAAAA,CAAAA,CACX4B,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA"}