crankscript 0.2.0 → 0.3.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/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "crankscript",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "scripts": {
5
- "dev": "tsx src/index.ts"
5
+ "dev": "tsx src/index.ts",
6
+ "post-build": "tsc-alias --project tsconfig.json"
6
7
  },
7
8
  "bin": {
8
9
  "crankscript": "./src/index.js"
@@ -12,10 +12,12 @@ export class GenerateTypesCommand extends EnvironmentAwareCommand {
12
12
  }
13
13
  constructor(...args){
14
14
  super(...args);
15
- this.version = Option.String('-v,--version', PlaydateSdkVersionIdentifier.FromConfig, {
15
+ this.version = Option.String('-s,--sdk-version', PlaydateSdkVersionIdentifier.FromConfig, {
16
+ tolerateBoolean: false,
16
17
  description: 'The version',
17
18
  validator: t.isOneOf([
18
19
  t.isLiteral(PlaydateSdkVersionIdentifier.FromConfig),
20
+ t.isLiteral(PlaydateSdkVersionIdentifier.Latest),
19
21
  t.matchesRegExp(/^[0-9]+\.[0-9]+\.[0-9]+$/)
20
22
  ])
21
23
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../libs/cli/src/commands/GenerateTypes/GenerateTypesCommand.tsx"],"sourcesContent":["import { Command, Option } from 'clipanion';\nimport React from 'react';\nimport * as t from 'typanion';\nimport { AnyStrictValidator } from 'typanion';\nimport { EnvironmentAwareCommand } from '@/cli/commands/EnvironmentAwareCommand/index.js';\nimport { Environment } from '@/cli/environment/dto/Environment.js';\nimport { PlaydateSdkVersionIdentifier } from '@/cli/types.js';\nimport { GenerateTypes } from './components/GenerateTypes.js';\n\nexport class GenerateTypesCommand extends EnvironmentAwareCommand {\n static override paths = [['generate-types']];\n static override usage = Command.Usage({\n description: 'Generate types from the Playdate SDK documentation',\n });\n\n version = Option.String(\n '-v,--version',\n PlaydateSdkVersionIdentifier.FromConfig,\n {\n description: 'The version',\n validator: t.isOneOf([\n t.isLiteral(PlaydateSdkVersionIdentifier.FromConfig),\n t.matchesRegExp(\n /^[0-9]+\\.[0-9]+\\.[0-9]+$/\n ) as AnyStrictValidator,\n ]),\n }\n );\n\n override renderWithEnvironment(environment: Environment) {\n return (\n <GenerateTypes\n version={\n this.version === PlaydateSdkVersionIdentifier.FromConfig\n ? environment.configuration.version\n : this.version\n }\n />\n );\n }\n}\n"],"names":["Command","Option","React","t","EnvironmentAwareCommand","PlaydateSdkVersionIdentifier","GenerateTypes","GenerateTypesCommand","renderWithEnvironment","environment","version","FromConfig","configuration","String","description","validator","isOneOf","isLiteral","matchesRegExp","paths","usage","Usage"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,OAAO,EAAEC,MAAM,QAAQ,YAAY;AAC5C,OAAOC,WAAW,QAAQ;AAC1B,YAAYC,OAAO,WAAW;AAE9B,SAASC,uBAAuB,QAAQ,kDAAkD;AAE1F,SAASC,4BAA4B,QAAQ,iBAAiB;AAC9D,SAASC,aAAa,QAAQ,gCAAgC;AAE9D,OAAO,MAAMC,6BAA6BH;IAoB7BI,sBAAsBC,WAAwB,EAAE;QACrD,qBACI,oBAACH;YACGI,SACI,IAAI,CAACA,OAAO,KAAKL,6BAA6BM,UAAU,GAClDF,YAAYG,aAAa,CAACF,OAAO,GACjC,IAAI,CAACA,OAAO;;IAIlC;;;aAxBAA,UAAUT,OAAOY,MAAM,CACnB,gBACAR,6BAA6BM,UAAU,EACvC;YACIG,aAAa;YACbC,WAAWZ,EAAEa,OAAO,CAAC;gBACjBb,EAAEc,SAAS,CAACZ,6BAA6BM,UAAU;gBACnDR,EAAEe,aAAa,CACX;aAEP;QACL;;AAcR;AA/BaX,qBACOY,QAAQ;IAAC;QAAC;KAAiB;CAAC;AADnCZ,qBAEOa,QAAQpB,QAAQqB,KAAK,CAAC;IAClCP,aAAa;AACjB"}
1
+ {"version":3,"sources":["../../../../../../libs/cli/src/commands/GenerateTypes/GenerateTypesCommand.tsx"],"sourcesContent":["import { Command, Option } from 'clipanion';\nimport React from 'react';\nimport * as t from 'typanion';\nimport { AnyStrictValidator } from 'typanion';\nimport { EnvironmentAwareCommand } from '@/cli/commands/EnvironmentAwareCommand/index.js';\nimport { Environment } from '@/cli/environment/dto/Environment.js';\nimport { PlaydateSdkVersionIdentifier } from '@/cli/types.js';\nimport { GenerateTypes } from './components/GenerateTypes.js';\n\nexport class GenerateTypesCommand extends EnvironmentAwareCommand {\n static override paths = [['generate-types']];\n static override usage = Command.Usage({\n description: 'Generate types from the Playdate SDK documentation',\n });\n\n version = Option.String(\n '-s,--sdk-version',\n PlaydateSdkVersionIdentifier.FromConfig,\n {\n tolerateBoolean: false,\n description: 'The version',\n validator: t.isOneOf([\n t.isLiteral(PlaydateSdkVersionIdentifier.FromConfig),\n t.isLiteral(PlaydateSdkVersionIdentifier.Latest),\n t.matchesRegExp(\n /^[0-9]+\\.[0-9]+\\.[0-9]+$/\n ) as AnyStrictValidator,\n ]),\n }\n );\n\n override renderWithEnvironment(environment: Environment) {\n return (\n <GenerateTypes\n version={\n this.version === PlaydateSdkVersionIdentifier.FromConfig\n ? environment.configuration.version\n : this.version\n }\n />\n );\n }\n}\n"],"names":["Command","Option","React","t","EnvironmentAwareCommand","PlaydateSdkVersionIdentifier","GenerateTypes","GenerateTypesCommand","renderWithEnvironment","environment","version","FromConfig","configuration","String","tolerateBoolean","description","validator","isOneOf","isLiteral","Latest","matchesRegExp","paths","usage","Usage"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,OAAO,EAAEC,MAAM,QAAQ,YAAY;AAC5C,OAAOC,WAAW,QAAQ;AAC1B,YAAYC,OAAO,WAAW;AAE9B,SAASC,uBAAuB,QAAQ,kDAAkD;AAE1F,SAASC,4BAA4B,QAAQ,iBAAiB;AAC9D,SAASC,aAAa,QAAQ,gCAAgC;AAE9D,OAAO,MAAMC,6BAA6BH;IAsB7BI,sBAAsBC,WAAwB,EAAE;QACrD,qBACI,oBAACH;YACGI,SACI,IAAI,CAACA,OAAO,KAAKL,6BAA6BM,UAAU,GAClDF,YAAYG,aAAa,CAACF,OAAO,GACjC,IAAI,CAACA,OAAO;;IAIlC;;;aA1BAA,UAAUT,OAAOY,MAAM,CACnB,oBACAR,6BAA6BM,UAAU,EACvC;YACIG,iBAAiB;YACjBC,aAAa;YACbC,WAAWb,EAAEc,OAAO,CAAC;gBACjBd,EAAEe,SAAS,CAACb,6BAA6BM,UAAU;gBACnDR,EAAEe,SAAS,CAACb,6BAA6Bc,MAAM;gBAC/ChB,EAAEiB,aAAa,CACX;aAEP;QACL;;AAcR;AAjCab,qBACOc,QAAQ;IAAC;QAAC;KAAiB;CAAC;AADnCd,qBAEOe,QAAQtB,QAAQuB,KAAK,CAAC;IAClCR,aAAa;AACjB"}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
+ import { ConfigurationType } from '@/cli/environment/configuration/ConfigurationSchema.js';
2
3
  interface Props {
3
- version: string;
4
+ version: ConfigurationType['version'];
4
5
  }
5
6
  export declare const GenerateTypes: ({ version }: Props) => React.JSX.Element;
6
7
  export {};
@@ -1,7 +1,22 @@
1
- import { Text } from 'ink';
2
1
  import React from 'react';
2
+ import { CheckList } from '@/cli/components/CheckList/index.js';
3
+ import { useQuitOnCtrlC } from '@/cli/hooks/useQuitOnCtrlC.js';
3
4
  export const GenerateTypes = ({ version })=>{
4
- return /*#__PURE__*/ React.createElement(Text, null, version);
5
+ useQuitOnCtrlC();
6
+ return /*#__PURE__*/ React.createElement(CheckList, {
7
+ items: [
8
+ {
9
+ // Example
10
+ waitingDescription: ()=>`Generating types for version ${version}`,
11
+ runningDescription: ()=>'Generating types...',
12
+ errorDescription: ()=>'Failed to generate types',
13
+ finishedDescription: ()=>'Types generated',
14
+ runner: async ()=>{
15
+ await new Promise((resolve)=>setTimeout(resolve, 1000));
16
+ }
17
+ }
18
+ ]
19
+ });
5
20
  };
6
21
 
7
22
  //# sourceMappingURL=GenerateTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../libs/cli/src/commands/GenerateTypes/components/GenerateTypes.tsx"],"sourcesContent":["import { Text } from 'ink';\nimport React from 'react';\n\ninterface Props {\n version: string;\n}\n\nexport const GenerateTypes = ({ version }: Props) => {\n return <Text>{version}</Text>;\n};\n"],"names":["Text","React","GenerateTypes","version"],"rangeMappings":";;;;","mappings":"AAAA,SAASA,IAAI,QAAQ,MAAM;AAC3B,OAAOC,WAAW,QAAQ;AAM1B,OAAO,MAAMC,gBAAgB,CAAC,EAAEC,OAAO,EAAS;IAC5C,qBAAO,oBAACH,YAAMG;AAClB,EAAE"}
1
+ {"version":3,"sources":["../../../../../../../libs/cli/src/commands/GenerateTypes/components/GenerateTypes.tsx"],"sourcesContent":["import React from 'react';\nimport { CheckList } from '@/cli/components/CheckList/index.js';\nimport { ConfigurationType } from '@/cli/environment/configuration/ConfigurationSchema.js';\nimport { useQuitOnCtrlC } from '@/cli/hooks/useQuitOnCtrlC.js';\n\ninterface Props {\n version: ConfigurationType['version'];\n}\n\nexport const GenerateTypes = ({ version }: Props) => {\n useQuitOnCtrlC();\n\n return (\n <CheckList\n items={[\n {\n // Example\n waitingDescription: () =>\n `Generating types for version ${version}`,\n runningDescription: () => 'Generating types...',\n errorDescription: () => 'Failed to generate types',\n finishedDescription: () => 'Types generated',\n runner: async () => {\n await new Promise((resolve) =>\n setTimeout(resolve, 1000)\n );\n },\n },\n ]}\n />\n );\n};\n"],"names":["React","CheckList","useQuitOnCtrlC","GenerateTypes","version","items","waitingDescription","runningDescription","errorDescription","finishedDescription","runner","Promise","resolve","setTimeout"],"rangeMappings":";;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,WAAW,QAAQ;AAC1B,SAASC,SAAS,QAAQ,sCAAsC;AAEhE,SAASC,cAAc,QAAQ,gCAAgC;AAM/D,OAAO,MAAMC,gBAAgB,CAAC,EAAEC,OAAO,EAAS;IAC5CF;IAEA,qBACI,oBAACD;QACGI,OAAO;YACH;gBACI,UAAU;gBACVC,oBAAoB,IAChB,CAAC,6BAA6B,EAAEF,QAAQ,CAAC;gBAC7CG,oBAAoB,IAAM;gBAC1BC,kBAAkB,IAAM;gBACxBC,qBAAqB,IAAM;gBAC3BC,QAAQ;oBACJ,MAAM,IAAIC,QAAQ,CAACC,UACfC,WAAWD,SAAS;gBAE5B;YACJ;SACH;;AAGb,EAAE"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { CheckListItem } from '@/cli/types.js';
3
+ interface Props {
4
+ items: CheckListItem[];
5
+ }
6
+ export declare const CheckList: ({ items }: Props) => React.JSX.Element;
7
+ export {};
@@ -0,0 +1,34 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ import React, { useEffect, useState } from 'react';
3
+ import { Item } from './Item.js';
4
+ export const CheckList = ({ items })=>{
5
+ const [currentIndex, setCurrentIndex] = useState(null);
6
+ useEffect(()=>{
7
+ if (currentIndex === null && items.length > 0) {
8
+ setCurrentIndex(0);
9
+ }
10
+ }, [
11
+ currentIndex,
12
+ items
13
+ ]);
14
+ const handleFinish = (index)=>{
15
+ if (index + 1 < items.length) {
16
+ setCurrentIndex(index + 1);
17
+ } else {
18
+ setCurrentIndex(null);
19
+ }
20
+ };
21
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, items.map((item, index)=>/*#__PURE__*/ React.createElement(Item, {
22
+ key: index,
23
+ item: _extends({}, item, {
24
+ onFinish: ()=>{
25
+ var _item_onFinish;
26
+ item == null ? void 0 : (_item_onFinish = item.onFinish) == null ? void 0 : _item_onFinish.call(item);
27
+ handleFinish(index);
28
+ }
29
+ }),
30
+ start: index === currentIndex
31
+ })));
32
+ };
33
+
34
+ //# sourceMappingURL=CheckList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/cli/src/components/CheckList/CheckList.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { CheckListItem } from '@/cli/types.js';\nimport { Item } from './Item.js';\n\ninterface Props {\n items: CheckListItem[];\n}\n\nexport const CheckList = ({ items }: Props) => {\n const [currentIndex, setCurrentIndex] = useState<number | null>(null);\n\n useEffect(() => {\n if (currentIndex === null && items.length > 0) {\n setCurrentIndex(0);\n }\n }, [currentIndex, items]);\n\n const handleFinish = (index: number) => {\n if (index + 1 < items.length) {\n setCurrentIndex(index + 1);\n } else {\n setCurrentIndex(null);\n }\n };\n\n return (\n <>\n {items.map((item, index) => (\n <Item\n key={index}\n item={{\n ...item,\n onFinish: () => {\n item?.onFinish?.();\n handleFinish(index);\n },\n }}\n start={index === currentIndex}\n />\n ))}\n </>\n );\n};\n"],"names":["React","useEffect","useState","Item","CheckList","items","currentIndex","setCurrentIndex","length","handleFinish","index","map","item","key","onFinish","start"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,OAAOA,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAEnD,SAASC,IAAI,QAAQ,YAAY;AAMjC,OAAO,MAAMC,YAAY,CAAC,EAAEC,KAAK,EAAS;IACtC,MAAM,CAACC,cAAcC,gBAAgB,GAAGL,SAAwB;IAEhED,UAAU;QACN,IAAIK,iBAAiB,QAAQD,MAAMG,MAAM,GAAG,GAAG;YAC3CD,gBAAgB;QACpB;IACJ,GAAG;QAACD;QAAcD;KAAM;IAExB,MAAMI,eAAe,CAACC;QAClB,IAAIA,QAAQ,IAAIL,MAAMG,MAAM,EAAE;YAC1BD,gBAAgBG,QAAQ;QAC5B,OAAO;YACHH,gBAAgB;QACpB;IACJ;IAEA,qBACI,0CACKF,MAAMM,GAAG,CAAC,CAACC,MAAMF,sBACd,oBAACP;YACGU,KAAKH;YACLE,MAAM,aACCA;gBACHE,UAAU;wBACNF;oBAAAA,yBAAAA,iBAAAA,KAAME,QAAQ,qBAAdF,oBAAAA;oBACAH,aAAaC;gBACjB;;YAEJK,OAAOL,UAAUJ;;AAKrC,EAAE"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { CheckListItem } from '@/cli/types.js';
3
+ export interface ItemProps {
4
+ item: CheckListItem;
5
+ start: boolean;
6
+ }
7
+ export declare const Item: ({ item: { runningDescription, waitingDescription, errorDescription, finishedDescription, runner, onFinish, }, start, }: ItemProps) => React.JSX.Element;
@@ -0,0 +1,79 @@
1
+ import { StatusMessage, Spinner, extendTheme, defaultTheme, ThemeProvider } from '@inkjs/ui';
2
+ import { Text } from 'ink';
3
+ import React, { useEffect, useState } from 'react';
4
+ // todo: possibly extract this
5
+ const SpinnerTheme = extendTheme(defaultTheme, {
6
+ components: {
7
+ Spinner: {
8
+ styles: {
9
+ frame: ()=>({
10
+ color: 'yellowBright'
11
+ }),
12
+ label: ()=>({
13
+ color: 'yellowBright'
14
+ })
15
+ }
16
+ }
17
+ }
18
+ });
19
+ export const Item = ({ item: { runningDescription, waitingDescription, errorDescription, finishedDescription, runner, onFinish }, start })=>{
20
+ const [resultPresent, setResultPresent] = useState(false);
21
+ const [failedReason, setfailedReason] = useState(null);
22
+ const hasResult = !failedReason && resultPresent;
23
+ const isRunning = !failedReason && !hasResult && start;
24
+ const isWaiting = !failedReason && !hasResult && !start;
25
+ useEffect(()=>{
26
+ if (failedReason) {
27
+ process.exit();
28
+ }
29
+ }, [
30
+ failedReason
31
+ ]);
32
+ useEffect(()=>{
33
+ if (!start) {
34
+ return;
35
+ }
36
+ runner().then((result)=>{
37
+ if (result === false) {
38
+ setfailedReason(errorDescription);
39
+ return;
40
+ }
41
+ setResultPresent(true);
42
+ onFinish == null ? void 0 : onFinish();
43
+ }).catch((reason)=>{
44
+ setfailedReason(reason.message);
45
+ });
46
+ }, [
47
+ errorDescription,
48
+ onFinish,
49
+ runner,
50
+ start
51
+ ]);
52
+ let message = waitingDescription();
53
+ let variant = 'info';
54
+ if (failedReason) {
55
+ message = failedReason;
56
+ variant = 'error';
57
+ } else if (isRunning) {
58
+ message = runningDescription();
59
+ variant = 'warning';
60
+ } else if (hasResult) {
61
+ message = finishedDescription();
62
+ variant = 'success';
63
+ }
64
+ if (isRunning) {
65
+ return /*#__PURE__*/ React.createElement(ThemeProvider, {
66
+ theme: SpinnerTheme
67
+ }, /*#__PURE__*/ React.createElement(Spinner, {
68
+ label: ` ${message}`
69
+ }));
70
+ }
71
+ return /*#__PURE__*/ React.createElement(StatusMessage, {
72
+ variant: variant
73
+ }, /*#__PURE__*/ React.createElement(Text, {
74
+ bold: !isWaiting,
75
+ color: isRunning ? 'yellow' : isWaiting ? 'gray' : failedReason ? 'red' : 'green'
76
+ }, message));
77
+ };
78
+
79
+ //# sourceMappingURL=Item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/cli/src/components/CheckList/Item.tsx"],"sourcesContent":["import {\n StatusMessage,\n StatusMessageProps,\n Spinner,\n extendTheme,\n defaultTheme,\n ThemeProvider,\n} from '@inkjs/ui';\nimport { Text, TextProps } from 'ink';\nimport React, { useEffect, useState } from 'react';\nimport { CheckListItem } from '@/cli/types.js';\n\nexport interface ItemProps {\n item: CheckListItem;\n start: boolean;\n}\n\n// todo: possibly extract this\nconst SpinnerTheme = extendTheme(defaultTheme, {\n components: {\n Spinner: {\n styles: {\n frame: (): TextProps => ({\n color: 'yellowBright',\n }),\n label: (): TextProps => ({\n color: 'yellowBright',\n }),\n },\n },\n },\n});\n\nexport const Item = ({\n item: {\n runningDescription,\n waitingDescription,\n errorDescription,\n finishedDescription,\n runner,\n onFinish,\n },\n start,\n}: ItemProps) => {\n const [resultPresent, setResultPresent] = useState(false);\n const [failedReason, setfailedReason] = useState<string | null>(null);\n const hasResult = !failedReason && resultPresent;\n const isRunning = !failedReason && !hasResult && start;\n const isWaiting = !failedReason && !hasResult && !start;\n\n useEffect(() => {\n if (failedReason) {\n process.exit();\n }\n }, [failedReason]);\n\n useEffect(() => {\n if (!start) {\n return;\n }\n\n runner()\n .then((result) => {\n if (result === false) {\n setfailedReason(errorDescription);\n\n return;\n }\n\n setResultPresent(true);\n onFinish?.();\n })\n .catch((reason) => {\n setfailedReason(reason.message);\n });\n }, [errorDescription, onFinish, runner, start]);\n\n let message = waitingDescription();\n let variant: StatusMessageProps['variant'] = 'info';\n\n if (failedReason) {\n message = failedReason;\n variant = 'error';\n } else if (isRunning) {\n message = runningDescription();\n variant = 'warning';\n } else if (hasResult) {\n message = finishedDescription();\n variant = 'success';\n }\n\n if (isRunning) {\n return (\n <ThemeProvider theme={SpinnerTheme}>\n <Spinner label={` ${message}`} />\n </ThemeProvider>\n );\n }\n\n return (\n <StatusMessage variant={variant}>\n <Text\n bold={!isWaiting}\n color={\n isRunning\n ? 'yellow'\n : isWaiting\n ? 'gray'\n : failedReason\n ? 'red'\n : 'green'\n }\n >\n {message}\n </Text>\n </StatusMessage>\n );\n};\n"],"names":["StatusMessage","Spinner","extendTheme","defaultTheme","ThemeProvider","Text","React","useEffect","useState","SpinnerTheme","components","styles","frame","color","label","Item","item","runningDescription","waitingDescription","errorDescription","finishedDescription","runner","onFinish","start","resultPresent","setResultPresent","failedReason","setfailedReason","hasResult","isRunning","isWaiting","process","exit","then","result","catch","reason","message","variant","theme","bold"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SACIA,aAAa,EAEbC,OAAO,EACPC,WAAW,EACXC,YAAY,EACZC,aAAa,QACV,YAAY;AACnB,SAASC,IAAI,QAAmB,MAAM;AACtC,OAAOC,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAQnD,8BAA8B;AAC9B,MAAMC,eAAeP,YAAYC,cAAc;IAC3CO,YAAY;QACRT,SAAS;YACLU,QAAQ;gBACJC,OAAO,IAAkB,CAAA;wBACrBC,OAAO;oBACX,CAAA;gBACAC,OAAO,IAAkB,CAAA;wBACrBD,OAAO;oBACX,CAAA;YACJ;QACJ;IACJ;AACJ;AAEA,OAAO,MAAME,OAAO,CAAC,EACjBC,MAAM,EACFC,kBAAkB,EAClBC,kBAAkB,EAClBC,gBAAgB,EAChBC,mBAAmB,EACnBC,MAAM,EACNC,QAAQ,EACX,EACDC,KAAK,EACG;IACR,MAAM,CAACC,eAAeC,iBAAiB,GAAGjB,SAAS;IACnD,MAAM,CAACkB,cAAcC,gBAAgB,GAAGnB,SAAwB;IAChE,MAAMoB,YAAY,CAACF,gBAAgBF;IACnC,MAAMK,YAAY,CAACH,gBAAgB,CAACE,aAAaL;IACjD,MAAMO,YAAY,CAACJ,gBAAgB,CAACE,aAAa,CAACL;IAElDhB,UAAU;QACN,IAAImB,cAAc;YACdK,QAAQC,IAAI;QAChB;IACJ,GAAG;QAACN;KAAa;IAEjBnB,UAAU;QACN,IAAI,CAACgB,OAAO;YACR;QACJ;QAEAF,SACKY,IAAI,CAAC,CAACC;YACH,IAAIA,WAAW,OAAO;gBAClBP,gBAAgBR;gBAEhB;YACJ;YAEAM,iBAAiB;YACjBH,4BAAAA;QACJ,GACCa,KAAK,CAAC,CAACC;YACJT,gBAAgBS,OAAOC,OAAO;QAClC;IACR,GAAG;QAAClB;QAAkBG;QAAUD;QAAQE;KAAM;IAE9C,IAAIc,UAAUnB;IACd,IAAIoB,UAAyC;IAE7C,IAAIZ,cAAc;QACdW,UAAUX;QACVY,UAAU;IACd,OAAO,IAAIT,WAAW;QAClBQ,UAAUpB;QACVqB,UAAU;IACd,OAAO,IAAIV,WAAW;QAClBS,UAAUjB;QACVkB,UAAU;IACd;IAEA,IAAIT,WAAW;QACX,qBACI,oBAACzB;YAAcmC,OAAO9B;yBAClB,oBAACR;YAAQa,OAAO,CAAC,CAAC,EAAEuB,QAAQ,CAAC;;IAGzC;IAEA,qBACI,oBAACrC;QAAcsC,SAASA;qBACpB,oBAACjC;QACGmC,MAAM,CAACV;QACPjB,OACIgB,YACM,WACAC,YACA,SACAJ,eACA,QACA;OAGTW;AAIjB,EAAE"}
@@ -0,0 +1 @@
1
+ export * from './CheckList.js';
@@ -0,0 +1,3 @@
1
+ export * from './CheckList.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/cli/src/components/CheckList/index.ts"],"sourcesContent":["export * from './CheckList.js';\n"],"names":[],"rangeMappings":"","mappings":"AAAA,cAAc,iBAAiB"}
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  export declare const ConfigurationSchema: z.ZodObject<{
3
- version: z.ZodString;
3
+ version: z.ZodUnion<[z.ZodString, z.ZodLiteral<"latest">]>;
4
4
  }, "strip", z.ZodTypeAny, {
5
5
  version: string;
6
6
  }, {
@@ -1,6 +1,9 @@
1
1
  import { z } from 'zod';
2
2
  export const ConfigurationSchema = z.object({
3
- version: z.string().regex(/^\d+\.\d+\.\d+$/)
3
+ version: z.union([
4
+ z.string().regex(/^\d+\.\d+\.\d+$/),
5
+ z.literal('latest')
6
+ ])
4
7
  });
5
8
 
6
9
  //# sourceMappingURL=ConfigurationSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../libs/cli/src/environment/configuration/ConfigurationSchema.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const ConfigurationSchema = z.object({\n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+$/),\n});\n\nexport type ConfigurationType = z.infer<typeof ConfigurationSchema>;\n"],"names":["z","ConfigurationSchema","object","version","string","regex"],"rangeMappings":";;;","mappings":"AAAA,SAASA,CAAC,QAAQ,MAAM;AAExB,OAAO,MAAMC,sBAAsBD,EAAEE,MAAM,CAAC;IACxCC,SAASH,EAAEI,MAAM,GAAGC,KAAK,CAAC;AAC9B,GAAG"}
1
+ {"version":3,"sources":["../../../../../../libs/cli/src/environment/configuration/ConfigurationSchema.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const ConfigurationSchema = z.object({\n version: z.union([\n z.string().regex(/^\\d+\\.\\d+\\.\\d+$/),\n z.literal('latest'),\n ]),\n});\n\nexport type ConfigurationType = z.infer<typeof ConfigurationSchema>;\n"],"names":["z","ConfigurationSchema","object","version","union","string","regex","literal"],"rangeMappings":";;;;;;","mappings":"AAAA,SAASA,CAAC,QAAQ,MAAM;AAExB,OAAO,MAAMC,sBAAsBD,EAAEE,MAAM,CAAC;IACxCC,SAASH,EAAEI,KAAK,CAAC;QACbJ,EAAEK,MAAM,GAAGC,KAAK,CAAC;QACjBN,EAAEO,OAAO,CAAC;KACb;AACL,GAAG"}
@@ -0,0 +1 @@
1
+ export declare const useQuitOnCtrlC: () => void;
@@ -0,0 +1,10 @@
1
+ import { useInput } from 'ink';
2
+ export const useQuitOnCtrlC = ()=>{
3
+ useInput((input, key)=>{
4
+ if (key.ctrl && input === 'c') {
5
+ process.exit();
6
+ }
7
+ });
8
+ };
9
+
10
+ //# sourceMappingURL=useQuitOnCtrlC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../libs/cli/src/hooks/useQuitOnCtrlC.ts"],"sourcesContent":["import { useInput } from 'ink';\n\nexport const useQuitOnCtrlC = () => {\n useInput((input, key) => {\n if (key.ctrl && input === 'c') {\n process.exit();\n }\n });\n};\n"],"names":["useInput","useQuitOnCtrlC","input","key","ctrl","process","exit"],"rangeMappings":";;;;;;;","mappings":"AAAA,SAASA,QAAQ,QAAQ,MAAM;AAE/B,OAAO,MAAMC,iBAAiB;IAC1BD,SAAS,CAACE,OAAOC;QACb,IAAIA,IAAIC,IAAI,IAAIF,UAAU,KAAK;YAC3BG,QAAQC,IAAI;QAChB;IACJ;AACJ,EAAE"}
package/src/types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Environment } from '@/cli/environment/dto/Environment.js';
2
2
  export declare enum PlaydateSdkVersionIdentifier {
3
- FromConfig = "FromConfig"
3
+ FromConfig = "FromConfig",
4
+ Latest = "latest"
4
5
  }
5
6
  export type EnvironmentHealthResult = {
6
7
  isHealthy: true;
@@ -24,3 +25,11 @@ export declare enum ConfigurationFileValidationErrorType {
24
25
  InvalidJson = "InvalidJson",
25
26
  InvalidSchema = "InvalidSchema"
26
27
  }
28
+ export type CheckListItem = {
29
+ runningDescription: () => string;
30
+ waitingDescription: () => string;
31
+ errorDescription: () => string;
32
+ finishedDescription: () => string;
33
+ runner: () => Promise<void> | Promise<false>;
34
+ onFinish?: () => void;
35
+ };
package/src/types.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export var PlaydateSdkVersionIdentifier;
2
2
  (function(PlaydateSdkVersionIdentifier) {
3
3
  PlaydateSdkVersionIdentifier["FromConfig"] = "FromConfig";
4
+ PlaydateSdkVersionIdentifier["Latest"] = "latest";
4
5
  })(PlaydateSdkVersionIdentifier || (PlaydateSdkVersionIdentifier = {}));
5
6
  export var HealthCheckStatus;
6
7
  (function(HealthCheckStatus) {
package/src/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../libs/cli/src/types.ts"],"sourcesContent":["import { Environment } from '@/cli/environment/dto/Environment.js';\n\nexport enum PlaydateSdkVersionIdentifier {\n FromConfig = 'FromConfig',\n}\n\nexport type EnvironmentHealthResult =\n | {\n isHealthy: true;\n environment: Environment;\n health: EnvironmentHealth;\n }\n | {\n isHealthy: false;\n health: EnvironmentHealth;\n };\n\nexport enum HealthCheckStatus {\n Healthy = 'Healthy',\n Unhealthy = 'Unhealthy',\n Unknown = 'Unknown',\n}\n\nexport interface EnvironmentHealth {\n configurationFilePresent: HealthCheckStatus;\n configurationFileValid: HealthCheckStatus;\n sdkPathKnown: HealthCheckStatus;\n}\n\nexport enum ConfigurationFileValidationErrorType {\n InvalidJson = 'InvalidJson',\n InvalidSchema = 'InvalidSchema',\n}\n"],"names":["PlaydateSdkVersionIdentifier","HealthCheckStatus","ConfigurationFileValidationErrorType"],"rangeMappings":";;;;;;;;;;;;;;","mappings":";UAEYA;;GAAAA,iCAAAA;;UAeAC;;;;GAAAA,sBAAAA;;UAYAC;;;GAAAA,yCAAAA"}
1
+ {"version":3,"sources":["../../../../libs/cli/src/types.ts"],"sourcesContent":["import { Environment } from '@/cli/environment/dto/Environment.js';\n\nexport enum PlaydateSdkVersionIdentifier {\n FromConfig = 'FromConfig',\n Latest = 'latest',\n}\n\nexport type EnvironmentHealthResult =\n | {\n isHealthy: true;\n environment: Environment;\n health: EnvironmentHealth;\n }\n | {\n isHealthy: false;\n health: EnvironmentHealth;\n };\n\nexport enum HealthCheckStatus {\n Healthy = 'Healthy',\n Unhealthy = 'Unhealthy',\n Unknown = 'Unknown',\n}\n\nexport interface EnvironmentHealth {\n configurationFilePresent: HealthCheckStatus;\n configurationFileValid: HealthCheckStatus;\n sdkPathKnown: HealthCheckStatus;\n}\n\nexport enum ConfigurationFileValidationErrorType {\n InvalidJson = 'InvalidJson',\n InvalidSchema = 'InvalidSchema',\n}\n\nexport type CheckListItem = {\n runningDescription: () => string;\n waitingDescription: () => string;\n errorDescription: () => string;\n finishedDescription: () => string;\n runner: () => Promise<void> | Promise<false>;\n onFinish?: () => void;\n};\n"],"names":["PlaydateSdkVersionIdentifier","HealthCheckStatus","ConfigurationFileValidationErrorType"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":";UAEYA;;;GAAAA,iCAAAA;;UAgBAC;;;;GAAAA,sBAAAA;;UAYAC;;;GAAAA,yCAAAA"}