crankscript 0.9.11 → 0.10.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/assets/plugin.js +10 -0
- package/assets/plugin.ts +23 -0
- package/package.json +2 -1
- package/src/commands/CompileCommand/CompileCommand.d.ts +0 -1
- package/src/commands/CompileCommand/CompileCommand.js +2 -9
- package/src/commands/CompileCommand/CompileCommand.js.map +1 -1
- package/src/commands/CompileCommand/components/Compile.d.ts +1 -2
- package/src/commands/CompileCommand/components/Compile.js +5 -35
- package/src/commands/CompileCommand/components/Compile.js.map +1 -1
- package/src/commands/CompileCommand/fn/getPdcPathFromEnvironment.d.ts +2 -0
- package/src/commands/CompileCommand/fn/getPdcPathFromEnvironment.js +6 -0
- package/src/commands/CompileCommand/fn/getPdcPathFromEnvironment.js.map +1 -0
- package/src/commands/CompileCommand/hooks/useCompileTasks.d.ts +2 -0
- package/src/commands/CompileCommand/hooks/useCompileTasks.js +34 -0
- package/src/commands/CompileCommand/hooks/useCompileTasks.js.map +1 -0
- package/src/commands/GenerateTypes/components/GenerateTypes.js +0 -2
- package/src/commands/GenerateTypes/components/GenerateTypes.js.map +1 -1
- package/src/commands/GenerateTypes/fn/getApiDefinitions.d.ts +2 -2
- package/src/commands/GenerateTypes/fn/getApiDefinitions.js +3 -2
- package/src/commands/GenerateTypes/fn/getApiDefinitions.js.map +1 -1
- package/src/commands/GenerateTypes/fn/getFunctionTypeOverride.d.ts +1 -0
- package/src/commands/GenerateTypes/fn/getFunctionTypeOverride.js +7 -0
- package/src/commands/GenerateTypes/fn/getFunctionTypeOverride.js.map +1 -0
- package/src/commands/GenerateTypes/hooks/useParseDocumentation.js +2 -1
- package/src/commands/GenerateTypes/hooks/useParseDocumentation.js.map +1 -1
- package/src/commands/GenerateTypes/utils/functionTypeOverrides.d.ts +2 -0
- package/src/commands/GenerateTypes/utils/functionTypeOverrides.js +18 -0
- package/src/commands/GenerateTypes/utils/functionTypeOverrides.js.map +1 -0
- package/src/commands/NewCommand/NewCommand.d.ts +10 -0
- package/src/commands/NewCommand/NewCommand.js +35 -0
- package/src/commands/NewCommand/NewCommand.js.map +1 -0
- package/src/commands/NewCommand/components/New.d.ts +8 -0
- package/src/commands/NewCommand/components/New.js +26 -0
- package/src/commands/NewCommand/components/New.js.map +1 -0
- package/src/commands/SimulatorCommand/SimulatorCommand.d.ts +11 -0
- package/src/commands/SimulatorCommand/SimulatorCommand.js +35 -0
- package/src/commands/SimulatorCommand/SimulatorCommand.js.map +1 -0
- package/src/commands/SimulatorCommand/components/Simulator.d.ts +10 -0
- package/src/commands/SimulatorCommand/components/Simulator.js +66 -0
- package/src/commands/SimulatorCommand/components/Simulator.js.map +1 -0
- package/src/commands/SimulatorCommand/index.d.ts +1 -0
- package/src/commands/SimulatorCommand/index.js +3 -0
- package/src/commands/SimulatorCommand/index.js.map +1 -0
- package/src/commands/TranspileCommand/TranspileCommand.d.ts +1 -0
- package/src/commands/TranspileCommand/TranspileCommand.js +5 -4
- package/src/commands/TranspileCommand/TranspileCommand.js.map +1 -1
- package/src/commands/TranspileCommand/components/Transpile.d.ts +4 -2
- package/src/commands/TranspileCommand/components/Transpile.js +2 -30
- package/src/commands/TranspileCommand/components/Transpile.js.map +1 -1
- package/src/commands/TranspileCommand/fn/transpile.d.ts +1 -0
- package/src/commands/TranspileCommand/fn/transpile.js +19 -0
- package/src/commands/TranspileCommand/fn/transpile.js.map +1 -0
- package/src/commands/TranspileCommand/hooks/useTranspileTasks.d.ts +2 -0
- package/src/commands/TranspileCommand/hooks/useTranspileTasks.js +18 -0
- package/src/commands/TranspileCommand/hooks/useTranspileTasks.js.map +1 -0
- package/src/components/CheckList/Item.js +5 -21
- package/src/components/CheckList/Item.js.map +1 -1
- package/src/components/Spinner.d.ts +3 -0
- package/src/components/Spinner.js +26 -0
- package/src/components/Spinner.js.map +1 -0
- package/src/index.js +7 -0
- package/src/index.js.map +1 -1
- package/src/types.d.ts +6 -0
- package/src/types.js +4 -0
- package/src/types.js.map +1 -1
- package/src/hooks/useQuitOnCtrlC.d.ts +0 -1
- package/src/hooks/useQuitOnCtrlC.js +0 -10
- package/src/hooks/useQuitOnCtrlC.js.map +0 -1
package/assets/plugin.js
CHANGED
@@ -162,6 +162,16 @@ var transformClassDeclaration = function (declaration, context) {
|
|
162
162
|
.map(function (method) { return transformMethodDeclaration(context, method, className); })
|
163
163
|
.filter(function (method) { return method !== undefined; });
|
164
164
|
statements.push.apply(statements, methods);
|
165
|
+
// export
|
166
|
+
if ('localSymbol' in declaration &&
|
167
|
+
typeof declaration.localSymbol === 'object' &&
|
168
|
+
'exportSymbol' in declaration.localSymbol &&
|
169
|
+
typeof declaration.localSymbol.exportSymbol === 'object' &&
|
170
|
+
'escapedName' in declaration.localSymbol.exportSymbol &&
|
171
|
+
typeof declaration.localSymbol.exportSymbol.escapedName === 'string') {
|
172
|
+
var escapedName = declaration.localSymbol.exportSymbol.escapedName;
|
173
|
+
statements.push(tstl.createAssignmentStatement(tstl.createTableIndexExpression(tstl.createIdentifier('____exports'), tstl.createStringLiteral(escapedName)), className));
|
174
|
+
}
|
165
175
|
return statements;
|
166
176
|
};
|
167
177
|
exports.transformClassDeclaration = transformClassDeclaration;
|
package/assets/plugin.ts
CHANGED
@@ -233,6 +233,29 @@ export const transformClassDeclaration: FunctionVisitor<
|
|
233
233
|
.filter((method): method is tstl.Statement => method !== undefined);
|
234
234
|
statements.push(...methods);
|
235
235
|
|
236
|
+
// export the class if needed
|
237
|
+
// todo: check if there is a cleaner way to do this
|
238
|
+
if (
|
239
|
+
'localSymbol' in declaration &&
|
240
|
+
typeof declaration.localSymbol === 'object' &&
|
241
|
+
'exportSymbol' in declaration.localSymbol &&
|
242
|
+
typeof declaration.localSymbol.exportSymbol === 'object' &&
|
243
|
+
'escapedName' in declaration.localSymbol.exportSymbol &&
|
244
|
+
typeof declaration.localSymbol.exportSymbol.escapedName === 'string'
|
245
|
+
) {
|
246
|
+
const escapedName = declaration.localSymbol.exportSymbol.escapedName;
|
247
|
+
|
248
|
+
statements.push(
|
249
|
+
tstl.createAssignmentStatement(
|
250
|
+
tstl.createTableIndexExpression(
|
251
|
+
tstl.createIdentifier('____exports'),
|
252
|
+
tstl.createStringLiteral(escapedName)
|
253
|
+
),
|
254
|
+
className
|
255
|
+
)
|
256
|
+
);
|
257
|
+
}
|
258
|
+
|
236
259
|
return statements;
|
237
260
|
};
|
238
261
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "crankscript",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.10.0",
|
4
4
|
"scripts": {
|
5
5
|
"dev": "tsx src/index.ts",
|
6
6
|
"post-build": "tsc-alias --project tsconfig.json",
|
@@ -17,6 +17,7 @@
|
|
17
17
|
"clipanion": "^4.0.0-rc.4",
|
18
18
|
"ink": "^5.0.1",
|
19
19
|
"react": "^18.3.1",
|
20
|
+
"tiged": "^3.0.0-rc.0",
|
20
21
|
"ts-morph": "^23.0.0",
|
21
22
|
"typanion": "^3.14.0",
|
22
23
|
"typescript-to-lua": "^1.27.0"
|
@@ -4,6 +4,5 @@ import { Environment } from '../../environment/dto/Environment.js';
|
|
4
4
|
export declare class CompileCommand extends EnvironmentAwareCommand {
|
5
5
|
static paths: string[][];
|
6
6
|
static usage: import("clipanion").Usage;
|
7
|
-
watch: boolean;
|
8
7
|
renderWithEnvironment(environment: Environment): React.JSX.Element;
|
9
8
|
}
|
@@ -1,18 +1,11 @@
|
|
1
|
-
import { Command
|
1
|
+
import { Command } from 'clipanion';
|
2
2
|
import React from 'react';
|
3
3
|
import { Compile } from '../../commands/CompileCommand/components/Compile.js';
|
4
4
|
import { EnvironmentAwareCommand } from '../../commands/EnvironmentAwareCommand/index.js';
|
5
5
|
export class CompileCommand extends EnvironmentAwareCommand {
|
6
6
|
renderWithEnvironment(environment) {
|
7
7
|
return /*#__PURE__*/ React.createElement(Compile, {
|
8
|
-
environment: environment
|
9
|
-
watch: this.watch
|
10
|
-
});
|
11
|
-
}
|
12
|
-
constructor(...args){
|
13
|
-
super(...args);
|
14
|
-
this.watch = Option.Boolean('-w,--watch', false, {
|
15
|
-
description: 'Watch for changes'
|
8
|
+
environment: environment
|
16
9
|
});
|
17
10
|
}
|
18
11
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../libs/cli/src/commands/CompileCommand/CompileCommand.tsx"],"sourcesContent":["import { Command
|
1
|
+
{"version":3,"sources":["../../../../../../libs/cli/src/commands/CompileCommand/CompileCommand.tsx"],"sourcesContent":["import { Command } from 'clipanion';\nimport React from 'react';\nimport { Compile } from '@/cli/commands/CompileCommand/components/Compile.js';\nimport { EnvironmentAwareCommand } from '@/cli/commands/EnvironmentAwareCommand/index.js';\nimport { Environment } from '@/cli/environment/dto/Environment.js';\n\nexport class CompileCommand extends EnvironmentAwareCommand {\n static override paths = [['compile']];\n\n static override usage = Command.Usage({\n description: 'Compiles the code and runs the simulator',\n });\n\n override renderWithEnvironment(environment: Environment) {\n return <Compile environment={environment} />;\n }\n}\n"],"names":["Command","React","Compile","EnvironmentAwareCommand","CompileCommand","renderWithEnvironment","environment","paths","usage","Usage","description"],"rangeMappings":";;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,OAAO,QAAQ,YAAY;AACpC,OAAOC,WAAW,QAAQ;AAC1B,SAASC,OAAO,QAAQ,sDAAsD;AAC9E,SAASC,uBAAuB,QAAQ,kDAAkD;AAG1F,OAAO,MAAMC,uBAAuBD;IAOvBE,sBAAsBC,WAAwB,EAAE;QACrD,qBAAO,oBAACJ;YAAQI,aAAaA;;IACjC;AACJ;AAVaF,eACOG,QAAQ;IAAC;QAAC;KAAU;CAAC;AAD5BH,eAGOI,QAAQR,QAAQS,KAAK,CAAC;IAClCC,aAAa;AACjB"}
|
@@ -2,7 +2,6 @@ import React from 'react';
|
|
2
2
|
import { Environment } from '../../../environment/dto/Environment.js';
|
3
3
|
interface Props {
|
4
4
|
environment: Environment;
|
5
|
-
watch?: boolean;
|
6
5
|
}
|
7
|
-
export declare const Compile: ({ environment
|
6
|
+
export declare const Compile: ({ environment }: Props) => React.JSX.Element;
|
8
7
|
export {};
|
@@ -1,40 +1,10 @@
|
|
1
|
-
import { exec } from 'node:child_process';
|
2
|
-
import { existsSync } from 'node:fs';
|
3
|
-
import { join } from 'node:path';
|
4
1
|
import process from 'node:process';
|
5
|
-
import
|
6
|
-
import
|
2
|
+
import React from 'react';
|
3
|
+
import { getPdcPathFromEnvironment } from '../../../commands/CompileCommand/fn/getPdcPathFromEnvironment.js';
|
4
|
+
import { useCompileTasks } from '../../../commands/CompileCommand/hooks/useCompileTasks.js';
|
7
5
|
import { CheckList } from '../../../components/CheckList/index.js';
|
8
|
-
|
9
|
-
const
|
10
|
-
export const Compile = ({ environment, watch = false })=>{
|
11
|
-
useQuitOnCtrlC();
|
12
|
-
const path = join(environment.sdkPath.path, 'bin', 'pdc');
|
13
|
-
const items = useMemo(()=>[
|
14
|
-
{
|
15
|
-
waitingDescription: 'Waiting to check for pdc binary...',
|
16
|
-
errorDescription: 'Could not find pdc binary',
|
17
|
-
runningDescription: 'Checking for pdc binary...',
|
18
|
-
finishedDescription: (result)=>`Found pdc binary at "${result}"`,
|
19
|
-
runner: async ()=>{
|
20
|
-
if (!existsSync(path)) {
|
21
|
-
throw new Error('Could not find pdc binary');
|
22
|
-
}
|
23
|
-
return path;
|
24
|
-
},
|
25
|
-
ready: true
|
26
|
-
},
|
27
|
-
{
|
28
|
-
waitingDescription: 'Waiting for pdc binary path...',
|
29
|
-
errorDescription: 'Could not compile lua code',
|
30
|
-
runningDescription: 'Compiling lua code...',
|
31
|
-
finishedDescription: ()=>'Lua code compiled',
|
32
|
-
runner: async ()=>{
|
33
|
-
return promisifiedExec(`${path} Source`);
|
34
|
-
},
|
35
|
-
ready: true
|
36
|
-
}
|
37
|
-
], []);
|
6
|
+
export const Compile = ({ environment })=>{
|
7
|
+
const items = useCompileTasks(getPdcPathFromEnvironment(environment));
|
38
8
|
return /*#__PURE__*/ React.createElement(CheckList, {
|
39
9
|
items: items,
|
40
10
|
onFinish: process.exit
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/CompileCommand/components/Compile.tsx"],"sourcesContent":["import
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/CompileCommand/components/Compile.tsx"],"sourcesContent":["import process from 'node:process';\nimport React from 'react';\nimport { getPdcPathFromEnvironment } from '@/cli/commands/CompileCommand/fn/getPdcPathFromEnvironment.js';\nimport { useCompileTasks } from '@/cli/commands/CompileCommand/hooks/useCompileTasks.js';\nimport { CheckList } from '@/cli/components/CheckList/index.js';\nimport { Environment } from '@/cli/environment/dto/Environment.js';\n\ninterface Props {\n environment: Environment;\n}\n\nexport const Compile = ({ environment }: Props) => {\n const items = useCompileTasks(getPdcPathFromEnvironment(environment));\n\n return <CheckList items={items} onFinish={process.exit} />;\n};\n"],"names":["process","React","getPdcPathFromEnvironment","useCompileTasks","CheckList","Compile","environment","items","onFinish","exit"],"rangeMappings":";;;;;;;;;;;","mappings":"AAAA,OAAOA,aAAa,eAAe;AACnC,OAAOC,WAAW,QAAQ;AAC1B,SAASC,yBAAyB,QAAQ,gEAAgE;AAC1G,SAASC,eAAe,QAAQ,yDAAyD;AACzF,SAASC,SAAS,QAAQ,sCAAsC;AAOhE,OAAO,MAAMC,UAAU,CAAC,EAAEC,WAAW,EAAS;IAC1C,MAAMC,QAAQJ,gBAAgBD,0BAA0BI;IAExD,qBAAO,oBAACF;QAAUG,OAAOA;QAAOC,UAAUR,QAAQS,IAAI;;AAC1D,EAAE"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/CompileCommand/fn/getPdcPathFromEnvironment.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { Environment } from '@/cli/environment/dto/Environment.js';\n\nexport const getPdcPathFromEnvironment = (environment: Environment) => {\n return join(environment.sdkPath.path, 'bin', 'pdc');\n};\n"],"names":["join","getPdcPathFromEnvironment","environment","sdkPath","path"],"rangeMappings":";;;","mappings":"AAAA,SAASA,IAAI,QAAQ,YAAY;AAGjC,OAAO,MAAMC,4BAA4B,CAACC;IACtC,OAAOF,KAAKE,YAAYC,OAAO,CAACC,IAAI,EAAE,OAAO;AACjD,EAAE"}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import { exec } from 'node:child_process';
|
2
|
+
import { existsSync } from 'node:fs';
|
3
|
+
import { promisify } from 'node:util';
|
4
|
+
import { useMemo } from 'react';
|
5
|
+
const promisifiedExec = promisify(exec);
|
6
|
+
export const useCompileTasks = (sdkPath)=>{
|
7
|
+
return useMemo(()=>[
|
8
|
+
{
|
9
|
+
waitingDescription: 'Waiting to check for pdc binary...',
|
10
|
+
errorDescription: 'Could not find pdc binary',
|
11
|
+
runningDescription: 'Checking for pdc binary...',
|
12
|
+
finishedDescription: (result)=>`Found pdc binary at "${result}"`,
|
13
|
+
runner: async ()=>{
|
14
|
+
if (!existsSync(sdkPath)) {
|
15
|
+
throw new Error('Could not find pdc binary');
|
16
|
+
}
|
17
|
+
return sdkPath;
|
18
|
+
},
|
19
|
+
ready: true
|
20
|
+
},
|
21
|
+
{
|
22
|
+
waitingDescription: 'Waiting for pdc binary path...',
|
23
|
+
errorDescription: 'Could not compile lua code',
|
24
|
+
runningDescription: 'Compiling lua code...',
|
25
|
+
finishedDescription: ()=>'Lua code compiled',
|
26
|
+
runner: async ()=>{
|
27
|
+
return promisifiedExec(`${sdkPath} Source`);
|
28
|
+
},
|
29
|
+
ready: true
|
30
|
+
}
|
31
|
+
], []);
|
32
|
+
};
|
33
|
+
|
34
|
+
//# sourceMappingURL=useCompileTasks.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/CompileCommand/hooks/useCompileTasks.ts"],"sourcesContent":["import { exec } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { promisify } from 'node:util';\nimport { useMemo } from 'react';\nimport { CheckListItem } from '@/cli/types.js';\n\nconst promisifiedExec = promisify(exec);\n\nexport const useCompileTasks = (sdkPath: string) => {\n return useMemo(\n () => [\n {\n waitingDescription: 'Waiting to check for pdc binary...',\n errorDescription: 'Could not find pdc binary',\n runningDescription: 'Checking for pdc binary...',\n finishedDescription: (result) =>\n `Found pdc binary at \"${result}\"`,\n runner: async () => {\n if (!existsSync(sdkPath)) {\n throw new Error('Could not find pdc binary');\n }\n\n return sdkPath;\n },\n ready: true,\n } satisfies CheckListItem<string>,\n {\n waitingDescription: 'Waiting for pdc binary path...',\n errorDescription: 'Could not compile lua code',\n runningDescription: 'Compiling lua code...',\n finishedDescription: () => 'Lua code compiled',\n runner: async () => {\n return promisifiedExec(`${sdkPath} Source`);\n },\n ready: true,\n },\n ],\n []\n ) as CheckListItem<unknown>[];\n};\n"],"names":["exec","existsSync","promisify","useMemo","promisifiedExec","useCompileTasks","sdkPath","waitingDescription","errorDescription","runningDescription","finishedDescription","result","runner","Error","ready"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,IAAI,QAAQ,qBAAqB;AAC1C,SAASC,UAAU,QAAQ,UAAU;AACrC,SAASC,SAAS,QAAQ,YAAY;AACtC,SAASC,OAAO,QAAQ,QAAQ;AAGhC,MAAMC,kBAAkBF,UAAUF;AAElC,OAAO,MAAMK,kBAAkB,CAACC;IAC5B,OAAOH,QACH,IAAM;YACF;gBACII,oBAAoB;gBACpBC,kBAAkB;gBAClBC,oBAAoB;gBACpBC,qBAAqB,CAACC,SAClB,CAAC,qBAAqB,EAAEA,OAAO,CAAC,CAAC;gBACrCC,QAAQ;oBACJ,IAAI,CAACX,WAAWK,UAAU;wBACtB,MAAM,IAAIO,MAAM;oBACpB;oBAEA,OAAOP;gBACX;gBACAQ,OAAO;YACX;YACA;gBACIP,oBAAoB;gBACpBC,kBAAkB;gBAClBC,oBAAoB;gBACpBC,qBAAqB,IAAM;gBAC3BE,QAAQ;oBACJ,OAAOR,gBAAgB,CAAC,EAAEE,QAAQ,OAAO,CAAC;gBAC9C;gBACAQ,OAAO;YACX;SACH,EACD,EAAE;AAEV,EAAE"}
|
@@ -4,9 +4,7 @@ import { useGenerateTypeFile } from '../../../commands/GenerateTypes/hooks/useGe
|
|
4
4
|
import { useGetVersion } from '../../../commands/GenerateTypes/hooks/useGetVersion.js';
|
5
5
|
import { useParseDocumentation } from '../../../commands/GenerateTypes/hooks/useParseDocumentation.js';
|
6
6
|
import { CheckList } from '../../../components/CheckList/index.js';
|
7
|
-
import { useQuitOnCtrlC } from '../../../hooks/useQuitOnCtrlC.js';
|
8
7
|
export const GenerateTypes = ({ output, version, overwriteJson })=>{
|
9
|
-
useQuitOnCtrlC();
|
10
8
|
const { typeProvider, fetchedVersion, getVersion } = useGetVersion(version);
|
11
9
|
const { html, fetchHtml } = useFetchHtml(fetchedVersion);
|
12
10
|
const { definitions, parseDocumentation } = useParseDocumentation(html, version);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/GenerateTypes/components/GenerateTypes.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { useFetchHtml } from '@/cli/commands/GenerateTypes/hooks/useFetchHtml.js';\nimport { useGenerateTypeFile } from '@/cli/commands/GenerateTypes/hooks/useGenerateTypeFile.js';\nimport { useGetVersion } from '@/cli/commands/GenerateTypes/hooks/useGetVersion.js';\nimport { useParseDocumentation } from '@/cli/commands/GenerateTypes/hooks/useParseDocumentation.js';\nimport { CheckList } from '@/cli/components/CheckList/index.js';\nimport {
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/GenerateTypes/components/GenerateTypes.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { useFetchHtml } from '@/cli/commands/GenerateTypes/hooks/useFetchHtml.js';\nimport { useGenerateTypeFile } from '@/cli/commands/GenerateTypes/hooks/useGenerateTypeFile.js';\nimport { useGetVersion } from '@/cli/commands/GenerateTypes/hooks/useGetVersion.js';\nimport { useParseDocumentation } from '@/cli/commands/GenerateTypes/hooks/useParseDocumentation.js';\nimport { CheckList } from '@/cli/components/CheckList/index.js';\nimport { CheckListItem, PlaydateSdkVersion } from '@/cli/types.js';\n\ninterface Props {\n output: string;\n version: PlaydateSdkVersion;\n overwriteJson: boolean;\n}\n\nexport const GenerateTypes = ({ output, version, overwriteJson }: Props) => {\n const { typeProvider, fetchedVersion, getVersion } = useGetVersion(version);\n const { html, fetchHtml } = useFetchHtml(fetchedVersion);\n const { definitions, parseDocumentation } = useParseDocumentation(\n html,\n version\n );\n const { generateTypeFile } = useGenerateTypeFile(\n output,\n definitions,\n typeProvider\n );\n\n const items = useMemo(() => {\n return [\n getVersion,\n fetchHtml,\n parseDocumentation,\n generateTypeFile,\n ] as CheckListItem<unknown>[];\n }, [fetchedVersion, html, definitions, typeProvider]);\n\n return (\n <CheckList\n items={items}\n onFinish={() => {\n if (overwriteJson) {\n typeProvider?.save();\n }\n\n process.exit();\n }}\n />\n );\n};\n"],"names":["React","useMemo","useFetchHtml","useGenerateTypeFile","useGetVersion","useParseDocumentation","CheckList","GenerateTypes","output","version","overwriteJson","typeProvider","fetchedVersion","getVersion","html","fetchHtml","definitions","parseDocumentation","generateTypeFile","items","onFinish","save","process","exit"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,SAASC,OAAO,QAAQ,QAAQ;AACvC,SAASC,YAAY,QAAQ,qDAAqD;AAClF,SAASC,mBAAmB,QAAQ,4DAA4D;AAChG,SAASC,aAAa,QAAQ,sDAAsD;AACpF,SAASC,qBAAqB,QAAQ,8DAA8D;AACpG,SAASC,SAAS,QAAQ,sCAAsC;AAShE,OAAO,MAAMC,gBAAgB,CAAC,EAAEC,MAAM,EAAEC,OAAO,EAAEC,aAAa,EAAS;IACnE,MAAM,EAAEC,YAAY,EAAEC,cAAc,EAAEC,UAAU,EAAE,GAAGT,cAAcK;IACnE,MAAM,EAAEK,IAAI,EAAEC,SAAS,EAAE,GAAGb,aAAaU;IACzC,MAAM,EAAEI,WAAW,EAAEC,kBAAkB,EAAE,GAAGZ,sBACxCS,MACAL;IAEJ,MAAM,EAAES,gBAAgB,EAAE,GAAGf,oBACzBK,QACAQ,aACAL;IAGJ,MAAMQ,QAAQlB,QAAQ;QAClB,OAAO;YACHY;YACAE;YACAE;YACAC;SACH;IACL,GAAG;QAACN;QAAgBE;QAAME;QAAaL;KAAa;IAEpD,qBACI,oBAACL;QACGa,OAAOA;QACPC,UAAU;YACN,IAAIV,eAAe;gBACfC,gCAAAA,aAAcU,IAAI;YACtB;YAEAC,QAAQC,IAAI;QAChB;;AAGZ,EAAE"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import { ApiDefinitions, FunctionDescription, PropertyDescription } from '../../../types.js';
|
2
|
-
export declare const getApiDefinitions: (functions: FunctionDescription[], properties: PropertyDescription[]) => ApiDefinitions;
|
1
|
+
import { ApiDefinitions, FunctionDescription, PropertyDescription, FunctionTypeOverrideMap } from '../../../types.js';
|
2
|
+
export declare const getApiDefinitions: (functions: FunctionDescription[], properties: PropertyDescription[], functionTypeOverride: FunctionTypeOverrideMap) => ApiDefinitions;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
export const getApiDefinitions = (functions, properties)=>{
|
1
|
+
export const getApiDefinitions = (functions, properties, functionTypeOverride)=>{
|
2
2
|
const global = {
|
3
3
|
functions: [],
|
4
4
|
methods: [],
|
@@ -19,8 +19,9 @@ export const getApiDefinitions = (functions, properties)=>{
|
|
19
19
|
}, root);
|
20
20
|
};
|
21
21
|
functions.forEach((func)=>{
|
22
|
+
var _functionTypeOverride_func_signature;
|
22
23
|
const targetNamespace = getOrCreateNamespace(func.namespaces, global);
|
23
|
-
if (func.hasSelf) {
|
24
|
+
if (func.hasSelf || ((_functionTypeOverride_func_signature = functionTypeOverride[func.signature]) == null ? void 0 : _functionTypeOverride_func_signature.isMethod)) {
|
24
25
|
targetNamespace.methods.push(func);
|
25
26
|
} else {
|
26
27
|
targetNamespace.functions.push(func);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/GenerateTypes/fn/getApiDefinitions.ts"],"sourcesContent":["import {\n ApiDefinitions,\n FunctionDescription,\n ApiObject,\n PropertyDescription,\n} from '@/cli/types.js';\n\nexport const getApiDefinitions = (\n functions: FunctionDescription[],\n properties: PropertyDescription[]\n): ApiDefinitions => {\n const global: ApiObject = {\n functions: [],\n methods: [],\n properties: [],\n namespaces: {},\n };\n\n const getOrCreateNamespace = (\n path: string[],\n root: ApiObject\n ): ApiObject => {\n return path.reduce((currentNamespace, ns) => {\n if (!currentNamespace.namespaces[ns]) {\n currentNamespace.namespaces[ns] = {\n functions: [],\n methods: [],\n properties: [],\n namespaces: {},\n };\n }\n return currentNamespace.namespaces[ns];\n }, root);\n };\n\n functions.forEach((func) => {\n const targetNamespace = getOrCreateNamespace(func.namespaces, global);\n if (func.hasSelf) {\n targetNamespace.methods.push(func);\n } else {\n targetNamespace.functions.push(func);\n }\n });\n\n properties.forEach((prop) => {\n const targetNamespace = getOrCreateNamespace(prop.namespaces, global);\n targetNamespace.properties.push(prop);\n });\n\n return { global };\n};\n"],"names":["getApiDefinitions","functions","properties","global","methods","namespaces","getOrCreateNamespace","path","root","reduce","currentNamespace","ns","forEach","func","targetNamespace","hasSelf","push","prop"],"rangeMappings":"
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/GenerateTypes/fn/getApiDefinitions.ts"],"sourcesContent":["import {\n ApiDefinitions,\n FunctionDescription,\n ApiObject,\n PropertyDescription,\n FunctionTypeOverrideMap,\n} from '@/cli/types.js';\n\nexport const getApiDefinitions = (\n functions: FunctionDescription[],\n properties: PropertyDescription[],\n functionTypeOverride: FunctionTypeOverrideMap\n): ApiDefinitions => {\n const global: ApiObject = {\n functions: [],\n methods: [],\n properties: [],\n namespaces: {},\n };\n\n const getOrCreateNamespace = (\n path: string[],\n root: ApiObject\n ): ApiObject => {\n return path.reduce((currentNamespace, ns) => {\n if (!currentNamespace.namespaces[ns]) {\n currentNamespace.namespaces[ns] = {\n functions: [],\n methods: [],\n properties: [],\n namespaces: {},\n };\n }\n return currentNamespace.namespaces[ns];\n }, root);\n };\n\n functions.forEach((func) => {\n const targetNamespace = getOrCreateNamespace(func.namespaces, global);\n if (func.hasSelf || functionTypeOverride[func.signature]?.isMethod) {\n targetNamespace.methods.push(func);\n } else {\n targetNamespace.functions.push(func);\n }\n });\n\n properties.forEach((prop) => {\n const targetNamespace = getOrCreateNamespace(prop.namespaces, global);\n targetNamespace.properties.push(prop);\n });\n\n return { global };\n};\n"],"names":["getApiDefinitions","functions","properties","functionTypeOverride","global","methods","namespaces","getOrCreateNamespace","path","root","reduce","currentNamespace","ns","forEach","func","targetNamespace","hasSelf","signature","isMethod","push","prop"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAQA,OAAO,MAAMA,oBAAoB,CAC7BC,WACAC,YACAC;IAEA,MAAMC,SAAoB;QACtBH,WAAW,EAAE;QACbI,SAAS,EAAE;QACXH,YAAY,EAAE;QACdI,YAAY,CAAC;IACjB;IAEA,MAAMC,uBAAuB,CACzBC,MACAC;QAEA,OAAOD,KAAKE,MAAM,CAAC,CAACC,kBAAkBC;YAClC,IAAI,CAACD,iBAAiBL,UAAU,CAACM,GAAG,EAAE;gBAClCD,iBAAiBL,UAAU,CAACM,GAAG,GAAG;oBAC9BX,WAAW,EAAE;oBACbI,SAAS,EAAE;oBACXH,YAAY,EAAE;oBACdI,YAAY,CAAC;gBACjB;YACJ;YACA,OAAOK,iBAAiBL,UAAU,CAACM,GAAG;QAC1C,GAAGH;IACP;IAEAR,UAAUY,OAAO,CAAC,CAACC;YAEKX;QADpB,MAAMY,kBAAkBR,qBAAqBO,KAAKR,UAAU,EAAEF;QAC9D,IAAIU,KAAKE,OAAO,MAAIb,uCAAAA,oBAAoB,CAACW,KAAKG,SAAS,CAAC,qBAApCd,qCAAsCe,QAAQ,GAAE;YAChEH,gBAAgBV,OAAO,CAACc,IAAI,CAACL;QACjC,OAAO;YACHC,gBAAgBd,SAAS,CAACkB,IAAI,CAACL;QACnC;IACJ;IAEAZ,WAAWW,OAAO,CAAC,CAACO;QAChB,MAAML,kBAAkBR,qBAAqBa,KAAKd,UAAU,EAAEF;QAC9DW,gBAAgBb,UAAU,CAACiB,IAAI,CAACC;IACpC;IAEA,OAAO;QAAEhB;IAAO;AACpB,EAAE"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const getFunctionTypeOverride: (version: string) => import("../../../types.js").FunctionTypeOverrideMap;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { functionTypeOverrides } from '../../../commands/GenerateTypes/utils/functionTypeOverrides.js';
|
2
|
+
export const getFunctionTypeOverride = (version)=>{
|
3
|
+
var _functionTypeOverrides_version;
|
4
|
+
return (_functionTypeOverrides_version = functionTypeOverrides[version]) != null ? _functionTypeOverrides_version : functionTypeOverrides['defaultVersion'];
|
5
|
+
};
|
6
|
+
|
7
|
+
//# sourceMappingURL=getFunctionTypeOverride.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/GenerateTypes/fn/getFunctionTypeOverride.ts"],"sourcesContent":["import { functionTypeOverrides } from '@/cli/commands/GenerateTypes/utils/functionTypeOverrides.js';\n\nexport const getFunctionTypeOverride = (version: string) => {\n return (\n functionTypeOverrides[version] ??\n functionTypeOverrides['defaultVersion']\n );\n};\n"],"names":["functionTypeOverrides","getFunctionTypeOverride","version"],"rangeMappings":";;;;","mappings":"AAAA,SAASA,qBAAqB,QAAQ,8DAA8D;AAEpG,OAAO,MAAMC,0BAA0B,CAACC;QAEhCF;IADJ,OACIA,CAAAA,iCAAAA,qBAAqB,CAACE,QAAQ,YAA9BF,iCACAA,qBAAqB,CAAC,iBAAiB;AAE/C,EAAE"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { useMemo, useState } from 'react';
|
2
2
|
import { getApiDefinitions } from '../../../commands/GenerateTypes/fn/getApiDefinitions.js';
|
3
3
|
import { getDescriptionsFromHtml } from '../../../commands/GenerateTypes/fn/getDescriptionsFromHtml.js';
|
4
|
+
import { getFunctionTypeOverride } from '../../../commands/GenerateTypes/fn/getFunctionTypeOverride.js';
|
4
5
|
export const useParseDocumentation = (html, version)=>{
|
5
6
|
const [result, setResult] = useState(null);
|
6
7
|
const parseDocumentation = useMemo(()=>{
|
@@ -14,7 +15,7 @@ export const useParseDocumentation = (html, version)=>{
|
|
14
15
|
throw new Error('HTML is not set');
|
15
16
|
}
|
16
17
|
const { functions, properties } = getDescriptionsFromHtml(html, version);
|
17
|
-
return getApiDefinitions(functions, properties);
|
18
|
+
return getApiDefinitions(functions, properties, getFunctionTypeOverride(version));
|
18
19
|
},
|
19
20
|
onFinish: (result)=>{
|
20
21
|
setResult(result);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/GenerateTypes/hooks/useParseDocumentation.ts"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { getApiDefinitions } from '@/cli/commands/GenerateTypes/fn/getApiDefinitions.js';\nimport { getDescriptionsFromHtml } from '@/cli/commands/GenerateTypes/fn/getDescriptionsFromHtml.js';\nimport { CheckListItem, ApiDefinitions } from '@/cli/types.js';\n\nexport const useParseDocumentation = (html: string | null, version: string) => {\n const [result, setResult] = useState<ApiDefinitions | null>(null);\n\n const parseDocumentation = useMemo(() => {\n return {\n waitingDescription: 'Waiting to parse the documentation...',\n errorDescription: 'Failed to parse the documentation',\n finishedDescription: () => 'Documentation parsed',\n runningDescription: 'Parsing the documentation...',\n runner: async () => {\n if (!html) {\n throw new Error('HTML is not set');\n }\n\n const { functions, properties } = getDescriptionsFromHtml(\n html,\n version\n );\n\n return getApiDefinitions(functions
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/GenerateTypes/hooks/useParseDocumentation.ts"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { getApiDefinitions } from '@/cli/commands/GenerateTypes/fn/getApiDefinitions.js';\nimport { getDescriptionsFromHtml } from '@/cli/commands/GenerateTypes/fn/getDescriptionsFromHtml.js';\nimport { getFunctionTypeOverride } from '@/cli/commands/GenerateTypes/fn/getFunctionTypeOverride.js';\nimport { CheckListItem, ApiDefinitions } from '@/cli/types.js';\n\nexport const useParseDocumentation = (html: string | null, version: string) => {\n const [result, setResult] = useState<ApiDefinitions | null>(null);\n\n const parseDocumentation = useMemo(() => {\n return {\n waitingDescription: 'Waiting to parse the documentation...',\n errorDescription: 'Failed to parse the documentation',\n finishedDescription: () => 'Documentation parsed',\n runningDescription: 'Parsing the documentation...',\n runner: async () => {\n if (!html) {\n throw new Error('HTML is not set');\n }\n\n const { functions, properties } = getDescriptionsFromHtml(\n html,\n version\n );\n\n return getApiDefinitions(\n functions,\n properties,\n getFunctionTypeOverride(version)\n );\n },\n onFinish: (result) => {\n setResult(result);\n },\n ready: html !== null,\n } satisfies CheckListItem<ApiDefinitions>;\n }, [html]);\n\n return {\n definitions: result,\n parseDocumentation,\n };\n};\n"],"names":["useMemo","useState","getApiDefinitions","getDescriptionsFromHtml","getFunctionTypeOverride","useParseDocumentation","html","version","result","setResult","parseDocumentation","waitingDescription","errorDescription","finishedDescription","runningDescription","runner","Error","functions","properties","onFinish","ready","definitions"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,OAAO,EAAEC,QAAQ,QAAQ,QAAQ;AAC1C,SAASC,iBAAiB,QAAQ,uDAAuD;AACzF,SAASC,uBAAuB,QAAQ,6DAA6D;AACrG,SAASC,uBAAuB,QAAQ,6DAA6D;AAGrG,OAAO,MAAMC,wBAAwB,CAACC,MAAqBC;IACvD,MAAM,CAACC,QAAQC,UAAU,GAAGR,SAAgC;IAE5D,MAAMS,qBAAqBV,QAAQ;QAC/B,OAAO;YACHW,oBAAoB;YACpBC,kBAAkB;YAClBC,qBAAqB,IAAM;YAC3BC,oBAAoB;YACpBC,QAAQ;gBACJ,IAAI,CAACT,MAAM;oBACP,MAAM,IAAIU,MAAM;gBACpB;gBAEA,MAAM,EAAEC,SAAS,EAAEC,UAAU,EAAE,GAAGf,wBAC9BG,MACAC;gBAGJ,OAAOL,kBACHe,WACAC,YACAd,wBAAwBG;YAEhC;YACAY,UAAU,CAACX;gBACPC,UAAUD;YACd;YACAY,OAAOd,SAAS;QACpB;IACJ,GAAG;QAACA;KAAK;IAET,OAAO;QACHe,aAAab;QACbE;IACJ;AACJ,EAAE"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
export const functionTypeOverrides = {
|
2
|
+
defaultVersion: {
|
3
|
+
'playdate.timer.timerEndedCallback': {
|
4
|
+
isMethod: true
|
5
|
+
},
|
6
|
+
'playdate.timer.updateCallback': {
|
7
|
+
isMethod: true
|
8
|
+
},
|
9
|
+
'playdate.frameTimer.timerEndedCallback': {
|
10
|
+
isMethod: true
|
11
|
+
},
|
12
|
+
'playdate.frameTimer.updateCallback': {
|
13
|
+
isMethod: true
|
14
|
+
}
|
15
|
+
}
|
16
|
+
};
|
17
|
+
|
18
|
+
//# sourceMappingURL=functionTypeOverrides.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/GenerateTypes/utils/functionTypeOverrides.ts"],"sourcesContent":["import { FunctionTypeOverrideMap } from '@/cli/types.js';\n\nexport const functionTypeOverrides: Record<string, FunctionTypeOverrideMap> = {\n defaultVersion: {\n 'playdate.timer.timerEndedCallback': {\n isMethod: true,\n },\n 'playdate.timer.updateCallback': {\n isMethod: true,\n },\n 'playdate.frameTimer.timerEndedCallback': {\n isMethod: true,\n },\n 'playdate.frameTimer.updateCallback': {\n isMethod: true,\n },\n },\n};\n"],"names":["functionTypeOverrides","defaultVersion","isMethod"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AAEA,OAAO,MAAMA,wBAAiE;IAC1EC,gBAAgB;QACZ,qCAAqC;YACjCC,UAAU;QACd;QACA,iCAAiC;YAC7BA,UAAU;QACd;QACA,0CAA0C;YACtCA,UAAU;QACd;QACA,sCAAsC;YAClCA,UAAU;QACd;IACJ;AACJ,EAAE"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { RenderableCommand } from '../../commands/RenderableCommand.js';
|
3
|
+
import { TemplateName } from '../../types.js';
|
4
|
+
export declare class NewCommand extends RenderableCommand {
|
5
|
+
static paths: string[][];
|
6
|
+
static usage: import("clipanion").Usage;
|
7
|
+
name: string;
|
8
|
+
template: TemplateName;
|
9
|
+
render(): React.JSX.Element;
|
10
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { Command, Option } from 'clipanion';
|
2
|
+
import React from 'react';
|
3
|
+
import * as t from 'typanion';
|
4
|
+
import { RenderableCommand } from '../../commands/RenderableCommand.js';
|
5
|
+
import { TemplateName } from '../../types.js';
|
6
|
+
import { New } from './components/New.js';
|
7
|
+
const defaultTemplate = TemplateName.Blank;
|
8
|
+
export class NewCommand extends RenderableCommand {
|
9
|
+
render() {
|
10
|
+
return /*#__PURE__*/ React.createElement(New, {
|
11
|
+
name: this.name,
|
12
|
+
template: this.template
|
13
|
+
});
|
14
|
+
}
|
15
|
+
constructor(...args){
|
16
|
+
super(...args);
|
17
|
+
this.name = Option.String({
|
18
|
+
name: 'name'
|
19
|
+
});
|
20
|
+
this.template = Option.String('-t,--template', defaultTemplate, {
|
21
|
+
description: `The template to use, defaults to "${defaultTemplate}"`,
|
22
|
+
validator: t.isEnum(TemplateName)
|
23
|
+
});
|
24
|
+
}
|
25
|
+
}
|
26
|
+
NewCommand.paths = [
|
27
|
+
[
|
28
|
+
'new'
|
29
|
+
]
|
30
|
+
];
|
31
|
+
NewCommand.usage = Command.Usage({
|
32
|
+
description: 'Create a new crankscript project'
|
33
|
+
});
|
34
|
+
|
35
|
+
//# sourceMappingURL=NewCommand.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/cli/src/commands/NewCommand/NewCommand.tsx"],"sourcesContent":["import { Command, Option } from 'clipanion';\nimport React from 'react';\nimport * as t from 'typanion';\nimport { RenderableCommand } from '@/cli/commands/RenderableCommand.js';\nimport { TemplateName } from '@/cli/types.js';\nimport { New } from './components/New.js';\n\nconst defaultTemplate = TemplateName.Blank;\n\nexport class NewCommand extends RenderableCommand {\n static override paths = [['new']];\n\n static override usage = Command.Usage({\n description: 'Create a new crankscript project',\n });\n\n name = Option.String({\n name: 'name',\n });\n\n template = Option.String('-t,--template', defaultTemplate, {\n description: `The template to use, defaults to \"${defaultTemplate}\"`,\n validator: t.isEnum(TemplateName),\n });\n\n override render() {\n return <New name={this.name} template={this.template} />;\n }\n}\n"],"names":["Command","Option","React","t","RenderableCommand","TemplateName","New","defaultTemplate","Blank","NewCommand","render","name","template","String","description","validator","isEnum","paths","usage","Usage"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,OAAO,EAAEC,MAAM,QAAQ,YAAY;AAC5C,OAAOC,WAAW,QAAQ;AAC1B,YAAYC,OAAO,WAAW;AAC9B,SAASC,iBAAiB,QAAQ,sCAAsC;AACxE,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,GAAG,QAAQ,sBAAsB;AAE1C,MAAMC,kBAAkBF,aAAaG,KAAK;AAE1C,OAAO,MAAMC,mBAAmBL;IAgBnBM,SAAS;QACd,qBAAO,oBAACJ;YAAIK,MAAM,IAAI,CAACA,IAAI;YAAEC,UAAU,IAAI,CAACA,QAAQ;;IACxD;;;aAXAD,OAAOV,OAAOY,MAAM,CAAC;YACjBF,MAAM;QACV;aAEAC,WAAWX,OAAOY,MAAM,CAAC,iBAAiBN,iBAAiB;YACvDO,aAAa,CAAC,kCAAkC,EAAEP,gBAAgB,CAAC,CAAC;YACpEQ,WAAWZ,EAAEa,MAAM,CAACX;QACxB;;AAKJ;AAnBaI,WACOQ,QAAQ;IAAC;QAAC;KAAM;CAAC;AADxBR,WAGOS,QAAQlB,QAAQmB,KAAK,CAAC;IAClCL,aAAa;AACjB"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import React, { useMemo } from 'react';
|
2
|
+
import tiged from 'tiged';
|
3
|
+
import { CheckList } from '../../../components/CheckList/index.js';
|
4
|
+
export const New = ({ name, template })=>{
|
5
|
+
const items = useMemo(()=>{
|
6
|
+
return [
|
7
|
+
{
|
8
|
+
ready: true,
|
9
|
+
runner: async ()=>{
|
10
|
+
const task = tiged(`crankscript/template-${template}`);
|
11
|
+
await task.clone(name);
|
12
|
+
},
|
13
|
+
waitingDescription: `About to create a new project named "${name}" using the "${template}" template`,
|
14
|
+
runningDescription: `Creating a new project named "${name}" using the "${template}" template`,
|
15
|
+
finishedDescription: ()=>`Created a new project named "${name}" using the "${template}" template`,
|
16
|
+
errorDescription: `Failed to create project named "${name}" using the "${template}" template`
|
17
|
+
}
|
18
|
+
];
|
19
|
+
}, []);
|
20
|
+
return /*#__PURE__*/ React.createElement(CheckList, {
|
21
|
+
items: items,
|
22
|
+
onFinish: process.exit
|
23
|
+
});
|
24
|
+
};
|
25
|
+
|
26
|
+
//# sourceMappingURL=New.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/NewCommand/components/New.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport tiged from 'tiged';\nimport { CheckList } from '@/cli/components/CheckList/index.js';\nimport { CheckListItem, TemplateName } from '@/cli/types.js';\n\ninterface Props {\n name: string;\n template: TemplateName;\n}\n\nexport const New = ({ name, template }: Props) => {\n const items = useMemo(() => {\n return [\n {\n ready: true,\n runner: async () => {\n const task = tiged(`crankscript/template-${template}`);\n\n await task.clone(name);\n },\n waitingDescription: `About to create a new project named \"${name}\" using the \"${template}\" template`,\n runningDescription: `Creating a new project named \"${name}\" using the \"${template}\" template`,\n finishedDescription: () =>\n `Created a new project named \"${name}\" using the \"${template}\" template`,\n errorDescription: `Failed to create project named \"${name}\" using the \"${template}\" template`,\n },\n ];\n }, []) satisfies CheckListItem<unknown>[];\n\n return <CheckList items={items} onFinish={process.exit} />;\n};\n"],"names":["React","useMemo","tiged","CheckList","New","name","template","items","ready","runner","task","clone","waitingDescription","runningDescription","finishedDescription","errorDescription","onFinish","process","exit"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,SAASC,OAAO,QAAQ,QAAQ;AACvC,OAAOC,WAAW,QAAQ;AAC1B,SAASC,SAAS,QAAQ,sCAAsC;AAQhE,OAAO,MAAMC,MAAM,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAS;IACzC,MAAMC,QAAQN,QAAQ;QAClB,OAAO;YACH;gBACIO,OAAO;gBACPC,QAAQ;oBACJ,MAAMC,OAAOR,MAAM,CAAC,qBAAqB,EAAEI,SAAS,CAAC;oBAErD,MAAMI,KAAKC,KAAK,CAACN;gBACrB;gBACAO,oBAAoB,CAAC,qCAAqC,EAAEP,KAAK,aAAa,EAAEC,SAAS,UAAU,CAAC;gBACpGO,oBAAoB,CAAC,8BAA8B,EAAER,KAAK,aAAa,EAAEC,SAAS,UAAU,CAAC;gBAC7FQ,qBAAqB,IACjB,CAAC,6BAA6B,EAAET,KAAK,aAAa,EAAEC,SAAS,UAAU,CAAC;gBAC5ES,kBAAkB,CAAC,gCAAgC,EAAEV,KAAK,aAAa,EAAEC,SAAS,UAAU,CAAC;YACjG;SACH;IACL,GAAG,EAAE;IAEL,qBAAO,oBAACH;QAAUI,OAAOA;QAAOS,UAAUC,QAAQC,IAAI;;AAC1D,EAAE"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { EnvironmentAwareCommand } from '../../commands/EnvironmentAwareCommand/index.js';
|
3
|
+
import { Environment } from '../../environment/dto/Environment.js';
|
4
|
+
export declare class SimulatorCommand extends EnvironmentAwareCommand {
|
5
|
+
static paths: string[][];
|
6
|
+
static usage: import("clipanion").Usage;
|
7
|
+
watch: boolean;
|
8
|
+
background: boolean;
|
9
|
+
projectPath: string;
|
10
|
+
renderWithEnvironment(environment: Environment): React.JSX.Element;
|
11
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { Command, Option } from 'clipanion';
|
2
|
+
import React from 'react';
|
3
|
+
import { EnvironmentAwareCommand } from '../../commands/EnvironmentAwareCommand/index.js';
|
4
|
+
import { Simulator } from '../../commands/SimulatorCommand/components/Simulator.js';
|
5
|
+
import { projectPathOption } from '../../commands/TranspileCommand/index.js';
|
6
|
+
export class SimulatorCommand extends EnvironmentAwareCommand {
|
7
|
+
renderWithEnvironment(environment) {
|
8
|
+
return /*#__PURE__*/ React.createElement(Simulator, {
|
9
|
+
environment: environment,
|
10
|
+
path: this.projectPath,
|
11
|
+
watch: this.watch,
|
12
|
+
background: this.background
|
13
|
+
});
|
14
|
+
}
|
15
|
+
constructor(...args){
|
16
|
+
super(...args);
|
17
|
+
this.watch = Option.Boolean('-w,--watch', false, {
|
18
|
+
description: 'Watch for changes'
|
19
|
+
});
|
20
|
+
this.background = Option.Boolean('-b,--background', false, {
|
21
|
+
description: 'Do not bring simulator to foreground'
|
22
|
+
});
|
23
|
+
this.projectPath = projectPathOption;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
SimulatorCommand.paths = [
|
27
|
+
[
|
28
|
+
'simulator'
|
29
|
+
]
|
30
|
+
];
|
31
|
+
SimulatorCommand.usage = Command.Usage({
|
32
|
+
description: 'Transpile, compile, and run the simulator'
|
33
|
+
});
|
34
|
+
|
35
|
+
//# sourceMappingURL=SimulatorCommand.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/cli/src/commands/SimulatorCommand/SimulatorCommand.tsx"],"sourcesContent":["import { Command, Option } from 'clipanion';\nimport React from 'react';\nimport { EnvironmentAwareCommand } from '@/cli/commands/EnvironmentAwareCommand/index.js';\nimport { Simulator } from '@/cli/commands/SimulatorCommand/components/Simulator.js';\nimport { projectPathOption } from '@/cli/commands/TranspileCommand/index.js';\nimport { Environment } from '@/cli/environment/dto/Environment.js';\n\nexport class SimulatorCommand extends EnvironmentAwareCommand {\n static override paths = [['simulator']];\n\n static override usage = Command.Usage({\n description: 'Transpile, compile, and run the simulator',\n });\n\n watch = Option.Boolean('-w,--watch', false, {\n description: 'Watch for changes',\n });\n\n background = Option.Boolean('-b,--background', false, {\n description: 'Do not bring simulator to foreground',\n });\n\n projectPath = projectPathOption;\n\n override renderWithEnvironment(environment: Environment) {\n return (\n <Simulator\n environment={environment}\n path={this.projectPath}\n watch={this.watch}\n background={this.background}\n />\n );\n }\n}\n"],"names":["Command","Option","React","EnvironmentAwareCommand","Simulator","projectPathOption","SimulatorCommand","renderWithEnvironment","environment","path","projectPath","watch","background","Boolean","description","paths","usage","Usage"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,OAAO,EAAEC,MAAM,QAAQ,YAAY;AAC5C,OAAOC,WAAW,QAAQ;AAC1B,SAASC,uBAAuB,QAAQ,kDAAkD;AAC1F,SAASC,SAAS,QAAQ,0DAA0D;AACpF,SAASC,iBAAiB,QAAQ,2CAA2C;AAG7E,OAAO,MAAMC,yBAAyBH;IAiBzBI,sBAAsBC,WAAwB,EAAE;QACrD,qBACI,oBAACJ;YACGI,aAAaA;YACbC,MAAM,IAAI,CAACC,WAAW;YACtBC,OAAO,IAAI,CAACA,KAAK;YACjBC,YAAY,IAAI,CAACA,UAAU;;IAGvC;;;aAnBAD,QAAQV,OAAOY,OAAO,CAAC,cAAc,OAAO;YACxCC,aAAa;QACjB;aAEAF,aAAaX,OAAOY,OAAO,CAAC,mBAAmB,OAAO;YAClDC,aAAa;QACjB;aAEAJ,cAAcL;;AAYlB;AA3BaC,iBACOS,QAAQ;IAAC;QAAC;KAAY;CAAC;AAD9BT,iBAGOU,QAAQhB,QAAQiB,KAAK,CAAC;IAClCH,aAAa;AACjB"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { Environment } from '../../../environment/dto/Environment.js';
|
3
|
+
interface Props {
|
4
|
+
environment: Environment;
|
5
|
+
path: string;
|
6
|
+
watch?: boolean;
|
7
|
+
background?: boolean;
|
8
|
+
}
|
9
|
+
export declare const Simulator: ({ environment, path, watch, background, }: Props) => React.JSX.Element;
|
10
|
+
export {};
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import { exec } from 'node:child_process';
|
2
|
+
import { watch as watchDir } from 'node:fs';
|
3
|
+
import { join } from 'node:path';
|
4
|
+
import { StatusMessage } from '@inkjs/ui';
|
5
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
6
|
+
import { getPdcPathFromEnvironment } from '../../../commands/CompileCommand/fn/getPdcPathFromEnvironment.js';
|
7
|
+
import { useCompileTasks } from '../../../commands/CompileCommand/hooks/useCompileTasks.js';
|
8
|
+
import { useTranspileTasks } from '../../../commands/TranspileCommand/hooks/useTranspileTasks.js';
|
9
|
+
import { CheckList } from '../../../components/CheckList/index.js';
|
10
|
+
export const Simulator = ({ environment, path, watch = false, background = false })=>{
|
11
|
+
const watcher = useRef(null);
|
12
|
+
const [isWatching, setIsWatching] = useState(false);
|
13
|
+
const [hasChanged, setHasChanged] = useState(false);
|
14
|
+
const [hasChangedMessage, setHasChangedMessage] = useState(false);
|
15
|
+
const transpileTasks = useTranspileTasks(path);
|
16
|
+
const compileTasks = useCompileTasks(getPdcPathFromEnvironment(environment));
|
17
|
+
useEffect(()=>{
|
18
|
+
if (hasChanged) {
|
19
|
+
setHasChanged(false);
|
20
|
+
}
|
21
|
+
}, [
|
22
|
+
hasChanged,
|
23
|
+
setHasChanged
|
24
|
+
]);
|
25
|
+
const handleFinish = useCallback(()=>{
|
26
|
+
exec(`open ${background ? '--background' : ''} Source.pdx`);
|
27
|
+
if (!watch) {
|
28
|
+
process.exit();
|
29
|
+
}
|
30
|
+
setHasChangedMessage(false);
|
31
|
+
if (watcher.current) {
|
32
|
+
watcher.current.close();
|
33
|
+
}
|
34
|
+
setIsWatching(true);
|
35
|
+
watcher.current = watchDir(join(path, 'src'), {
|
36
|
+
recursive: true
|
37
|
+
}, ()=>{
|
38
|
+
setHasChanged(true);
|
39
|
+
setHasChangedMessage(true);
|
40
|
+
setIsWatching(false);
|
41
|
+
});
|
42
|
+
}, [
|
43
|
+
watch,
|
44
|
+
setHasChanged,
|
45
|
+
setIsWatching
|
46
|
+
]);
|
47
|
+
const tasks = useMemo(()=>{
|
48
|
+
return [
|
49
|
+
...transpileTasks,
|
50
|
+
...compileTasks
|
51
|
+
];
|
52
|
+
}, [
|
53
|
+
transpileTasks,
|
54
|
+
compileTasks
|
55
|
+
]);
|
56
|
+
return /*#__PURE__*/ React.createElement(React.Fragment, null, !hasChanged && /*#__PURE__*/ React.createElement(CheckList, {
|
57
|
+
items: tasks,
|
58
|
+
onFinish: handleFinish
|
59
|
+
}), isWatching && !hasChangedMessage && /*#__PURE__*/ React.createElement(StatusMessage, {
|
60
|
+
variant: "info"
|
61
|
+
}, "Watching for changes..."), hasChangedMessage && /*#__PURE__*/ React.createElement(StatusMessage, {
|
62
|
+
variant: "info"
|
63
|
+
}, "Change detected"));
|
64
|
+
};
|
65
|
+
|
66
|
+
//# sourceMappingURL=Simulator.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/SimulatorCommand/components/Simulator.tsx"],"sourcesContent":["import { exec } from 'node:child_process';\nimport { FSWatcher, watch as watchDir } from 'node:fs';\nimport { join } from 'node:path';\nimport { StatusMessage } from '@inkjs/ui';\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { getPdcPathFromEnvironment } from '@/cli/commands/CompileCommand/fn/getPdcPathFromEnvironment.js';\nimport { useCompileTasks } from '@/cli/commands/CompileCommand/hooks/useCompileTasks.js';\nimport { useTranspileTasks } from '@/cli/commands/TranspileCommand/hooks/useTranspileTasks.js';\nimport { CheckList } from '@/cli/components/CheckList/index.js';\nimport { Environment } from '@/cli/environment/dto/Environment.js';\n\ninterface Props {\n environment: Environment;\n path: string;\n watch?: boolean;\n background?: boolean;\n}\n\nexport const Simulator = ({\n environment,\n path,\n watch = false,\n background = false,\n}: Props) => {\n const watcher = useRef<FSWatcher | null>(null);\n const [isWatching, setIsWatching] = useState(false);\n const [hasChanged, setHasChanged] = useState(false);\n const [hasChangedMessage, setHasChangedMessage] = useState(false);\n const transpileTasks = useTranspileTasks(path);\n const compileTasks = useCompileTasks(\n getPdcPathFromEnvironment(environment)\n );\n\n useEffect(() => {\n if (hasChanged) {\n setHasChanged(false);\n }\n }, [hasChanged, setHasChanged]);\n\n const handleFinish = useCallback(() => {\n exec(`open ${background ? '--background' : ''} Source.pdx`);\n\n if (!watch) {\n process.exit();\n }\n\n setHasChangedMessage(false);\n\n if (watcher.current) {\n watcher.current.close();\n }\n\n setIsWatching(true);\n\n watcher.current = watchDir(\n join(path, 'src'),\n { recursive: true },\n () => {\n setHasChanged(true);\n setHasChangedMessage(true);\n setIsWatching(false);\n }\n );\n }, [watch, setHasChanged, setIsWatching]);\n\n const tasks = useMemo(() => {\n return [...transpileTasks, ...compileTasks];\n }, [transpileTasks, compileTasks]);\n\n return (\n <>\n {!hasChanged && <CheckList items={tasks} onFinish={handleFinish} />}\n {isWatching && !hasChangedMessage && (\n <StatusMessage variant=\"info\">\n Watching for changes...\n </StatusMessage>\n )}\n {hasChangedMessage && (\n <StatusMessage variant=\"info\">Change detected</StatusMessage>\n )}\n </>\n );\n};\n"],"names":["exec","watch","watchDir","join","StatusMessage","React","useCallback","useEffect","useMemo","useRef","useState","getPdcPathFromEnvironment","useCompileTasks","useTranspileTasks","CheckList","Simulator","environment","path","background","watcher","isWatching","setIsWatching","hasChanged","setHasChanged","hasChangedMessage","setHasChangedMessage","transpileTasks","compileTasks","handleFinish","process","exit","current","close","recursive","tasks","items","onFinish","variant"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,IAAI,QAAQ,qBAAqB;AAC1C,SAAoBC,SAASC,QAAQ,QAAQ,UAAU;AACvD,SAASC,IAAI,QAAQ,YAAY;AACjC,SAASC,aAAa,QAAQ,YAAY;AAC1C,OAAOC,SACHC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACL,QAAQ;AACf,SAASC,yBAAyB,QAAQ,gEAAgE;AAC1G,SAASC,eAAe,QAAQ,yDAAyD;AACzF,SAASC,iBAAiB,QAAQ,6DAA6D;AAC/F,SAASC,SAAS,QAAQ,sCAAsC;AAUhE,OAAO,MAAMC,YAAY,CAAC,EACtBC,WAAW,EACXC,IAAI,EACJhB,QAAQ,KAAK,EACbiB,aAAa,KAAK,EACd;IACJ,MAAMC,UAAUV,OAAyB;IACzC,MAAM,CAACW,YAAYC,cAAc,GAAGX,SAAS;IAC7C,MAAM,CAACY,YAAYC,cAAc,GAAGb,SAAS;IAC7C,MAAM,CAACc,mBAAmBC,qBAAqB,GAAGf,SAAS;IAC3D,MAAMgB,iBAAiBb,kBAAkBI;IACzC,MAAMU,eAAef,gBACjBD,0BAA0BK;IAG9BT,UAAU;QACN,IAAIe,YAAY;YACZC,cAAc;QAClB;IACJ,GAAG;QAACD;QAAYC;KAAc;IAE9B,MAAMK,eAAetB,YAAY;QAC7BN,KAAK,CAAC,KAAK,EAAEkB,aAAa,iBAAiB,GAAG,WAAW,CAAC;QAE1D,IAAI,CAACjB,OAAO;YACR4B,QAAQC,IAAI;QAChB;QAEAL,qBAAqB;QAErB,IAAIN,QAAQY,OAAO,EAAE;YACjBZ,QAAQY,OAAO,CAACC,KAAK;QACzB;QAEAX,cAAc;QAEdF,QAAQY,OAAO,GAAG7B,SACdC,KAAKc,MAAM,QACX;YAAEgB,WAAW;QAAK,GAClB;YACIV,cAAc;YACdE,qBAAqB;YACrBJ,cAAc;QAClB;IAER,GAAG;QAACpB;QAAOsB;QAAeF;KAAc;IAExC,MAAMa,QAAQ1B,QAAQ;QAClB,OAAO;eAAIkB;eAAmBC;SAAa;IAC/C,GAAG;QAACD;QAAgBC;KAAa;IAEjC,qBACI,0CACK,CAACL,4BAAc,oBAACR;QAAUqB,OAAOD;QAAOE,UAAUR;QAClDR,cAAc,CAACI,mCACZ,oBAACpB;QAAciC,SAAQ;OAAO,4BAIjCb,mCACG,oBAACpB;QAAciC,SAAQ;OAAO;AAI9C,EAAE"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from './SimulatorCommand.js';
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/cli/src/commands/SimulatorCommand/index.ts"],"sourcesContent":["export * from './SimulatorCommand.js';\n"],"names":[],"rangeMappings":"","mappings":"AAAA,cAAc,wBAAwB"}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { RenderableCommand } from '../../commands/RenderableCommand.js';
|
3
|
+
export declare const projectPathOption: string;
|
3
4
|
export declare class TranspileCommand extends RenderableCommand {
|
4
5
|
static paths: string[][];
|
5
6
|
projectPath: string;
|
@@ -4,6 +4,10 @@ import React from 'react';
|
|
4
4
|
import * as t from 'typanion';
|
5
5
|
import { RenderableCommand } from '../../commands/RenderableCommand.js';
|
6
6
|
import { Transpile } from '../../commands/TranspileCommand/components/Transpile.js';
|
7
|
+
export const projectPathOption = Option.String('-p,--path', process.cwd(), {
|
8
|
+
description: `Where to find the project. Defaults to the current working directory ("${process.cwd()}")`,
|
9
|
+
validator: t.isString()
|
10
|
+
});
|
7
11
|
export class TranspileCommand extends RenderableCommand {
|
8
12
|
render() {
|
9
13
|
return /*#__PURE__*/ React.createElement(Transpile, {
|
@@ -12,10 +16,7 @@ export class TranspileCommand extends RenderableCommand {
|
|
12
16
|
}
|
13
17
|
constructor(...args){
|
14
18
|
super(...args);
|
15
|
-
this.projectPath =
|
16
|
-
description: `Where to find the project. Defaults to the current working directory ("${process.cwd()}")`,
|
17
|
-
validator: t.isString()
|
18
|
-
});
|
19
|
+
this.projectPath = projectPathOption;
|
19
20
|
}
|
20
21
|
}
|
21
22
|
TranspileCommand.paths = [
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../libs/cli/src/commands/TranspileCommand/TranspileCommand.tsx"],"sourcesContent":["import process from 'node:process';\nimport { Option } from 'clipanion';\nimport React from 'react';\nimport * as t from 'typanion';\nimport { RenderableCommand } from '@/cli/commands/RenderableCommand.js';\nimport { Transpile } from '@/cli/commands/TranspileCommand/components/Transpile.js';\n\nexport
|
1
|
+
{"version":3,"sources":["../../../../../../libs/cli/src/commands/TranspileCommand/TranspileCommand.tsx"],"sourcesContent":["import process from 'node:process';\nimport { Option } from 'clipanion';\nimport React from 'react';\nimport * as t from 'typanion';\nimport { RenderableCommand } from '@/cli/commands/RenderableCommand.js';\nimport { Transpile } from '@/cli/commands/TranspileCommand/components/Transpile.js';\n\nexport const projectPathOption = Option.String('-p,--path', process.cwd(), {\n description: `Where to find the project. Defaults to the current working directory (\"${process.cwd()}\")`,\n validator: t.isString(),\n});\n\nexport class TranspileCommand extends RenderableCommand {\n static override paths = [['transpile']];\n\n projectPath = projectPathOption;\n\n override render() {\n return <Transpile path={this.projectPath} />;\n }\n}\n"],"names":["process","Option","React","t","RenderableCommand","Transpile","projectPathOption","String","cwd","description","validator","isString","TranspileCommand","render","path","projectPath","paths"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,aAAa,eAAe;AACnC,SAASC,MAAM,QAAQ,YAAY;AACnC,OAAOC,WAAW,QAAQ;AAC1B,YAAYC,OAAO,WAAW;AAC9B,SAASC,iBAAiB,QAAQ,sCAAsC;AACxE,SAASC,SAAS,QAAQ,0DAA0D;AAEpF,OAAO,MAAMC,oBAAoBL,OAAOM,MAAM,CAAC,aAAaP,QAAQQ,GAAG,IAAI;IACvEC,aAAa,CAAC,uEAAuE,EAAET,QAAQQ,GAAG,GAAG,EAAE,CAAC;IACxGE,WAAWP,EAAEQ,QAAQ;AACzB,GAAG;AAEH,OAAO,MAAMC,yBAAyBR;IAKzBS,SAAS;QACd,qBAAO,oBAACR;YAAUS,MAAM,IAAI,CAACC,WAAW;;IAC5C;;;aAJAA,cAAcT;;AAKlB;AARaM,iBACOI,QAAQ;IAAC;QAAC;KAAY;CAAC"}
|
@@ -1,36 +1,8 @@
|
|
1
|
-
import { join } from 'node:path';
|
2
1
|
import React from 'react';
|
3
|
-
import {
|
4
|
-
import * as tstl from 'typescript-to-lua';
|
5
|
-
import { LuaTarget } from 'typescript-to-lua';
|
2
|
+
import { useTranspileTasks } from '../../../commands/TranspileCommand/hooks/useTranspileTasks.js';
|
6
3
|
import { CheckList } from '../../../components/CheckList/index.js';
|
7
|
-
import { RootFolder } from '../../../constants.js';
|
8
|
-
const transpile = (path)=>{
|
9
|
-
tstl.transpileProject(join(path, 'tsconfig.json'), {
|
10
|
-
luaTarget: LuaTarget.Lua54,
|
11
|
-
outDir: join(path, 'Source'),
|
12
|
-
luaBundle: 'main.lua',
|
13
|
-
luaBundleEntry: join(path, 'src', 'index.ts'),
|
14
|
-
luaPlugins: [
|
15
|
-
{
|
16
|
-
name: join(RootFolder, 'assets', 'plugin.js')
|
17
|
-
}
|
18
|
-
]
|
19
|
-
});
|
20
|
-
};
|
21
4
|
export const Transpile = ({ path })=>{
|
22
|
-
const items =
|
23
|
-
{
|
24
|
-
waitingDescription: 'Waiting to transpile code...',
|
25
|
-
errorDescription: 'Could not transpile code',
|
26
|
-
runningDescription: 'Transpiling code...',
|
27
|
-
finishedDescription: ()=>'Code transpiled',
|
28
|
-
runner: async ()=>{
|
29
|
-
transpile(path);
|
30
|
-
},
|
31
|
-
ready: true
|
32
|
-
}
|
33
|
-
], []);
|
5
|
+
const items = useTranspileTasks(path);
|
34
6
|
return /*#__PURE__*/ React.createElement(CheckList, {
|
35
7
|
items: items,
|
36
8
|
onFinish: process.exit
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/TranspileCommand/components/Transpile.tsx"],"sourcesContent":["import
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/TranspileCommand/components/Transpile.tsx"],"sourcesContent":["import React from 'react';\nimport { useTranspileTasks } from '@/cli/commands/TranspileCommand/hooks/useTranspileTasks.js';\nimport { CheckList } from '@/cli/components/CheckList/index.js';\n\ninterface Props {\n path: string;\n}\n\nexport const Transpile = ({ path }: Props) => {\n const items = useTranspileTasks(path);\n\n return <CheckList items={items} onFinish={process.exit} />;\n};\n"],"names":["React","useTranspileTasks","CheckList","Transpile","path","items","onFinish","process","exit"],"rangeMappings":";;;;;;;;;","mappings":"AAAA,OAAOA,WAAW,QAAQ;AAC1B,SAASC,iBAAiB,QAAQ,6DAA6D;AAC/F,SAASC,SAAS,QAAQ,sCAAsC;AAMhE,OAAO,MAAMC,YAAY,CAAC,EAAEC,IAAI,EAAS;IACrC,MAAMC,QAAQJ,kBAAkBG;IAEhC,qBAAO,oBAACF;QAAUG,OAAOA;QAAOC,UAAUC,QAAQC,IAAI;;AAC1D,EAAE"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const transpile: (path: string) => void;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { join } from 'node:path';
|
2
|
+
import * as tstl from 'typescript-to-lua';
|
3
|
+
import { LuaTarget } from 'typescript-to-lua';
|
4
|
+
import { RootFolder } from '../../../constants.js';
|
5
|
+
export const transpile = (path)=>{
|
6
|
+
tstl.transpileProject(join(path, 'tsconfig.json'), {
|
7
|
+
luaTarget: LuaTarget.Lua54,
|
8
|
+
outDir: join(path, 'Source'),
|
9
|
+
luaBundle: 'main.lua',
|
10
|
+
luaBundleEntry: join(path, 'src', 'index.ts'),
|
11
|
+
luaPlugins: [
|
12
|
+
{
|
13
|
+
name: join(RootFolder, 'assets', 'plugin.js')
|
14
|
+
}
|
15
|
+
]
|
16
|
+
});
|
17
|
+
};
|
18
|
+
|
19
|
+
//# sourceMappingURL=transpile.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/TranspileCommand/fn/transpile.ts"],"sourcesContent":["import { join } from 'node:path';\nimport * as tstl from 'typescript-to-lua';\nimport { LuaTarget } from 'typescript-to-lua';\nimport { RootFolder } from '@/cli/constants.js';\n\nexport const transpile = (path: string) => {\n tstl.transpileProject(join(path, 'tsconfig.json'), {\n luaTarget: LuaTarget.Lua54,\n outDir: join(path, 'Source'),\n luaBundle: 'main.lua',\n luaBundleEntry: join(path, 'src', 'index.ts'),\n luaPlugins: [\n {\n name: join(RootFolder, 'assets', 'plugin.js'),\n },\n ],\n });\n};\n"],"names":["join","tstl","LuaTarget","RootFolder","transpile","path","transpileProject","luaTarget","Lua54","outDir","luaBundle","luaBundleEntry","luaPlugins","name"],"rangeMappings":";;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,IAAI,QAAQ,YAAY;AACjC,YAAYC,UAAU,oBAAoB;AAC1C,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,UAAU,QAAQ,qBAAqB;AAEhD,OAAO,MAAMC,YAAY,CAACC;IACtBJ,KAAKK,gBAAgB,CAACN,KAAKK,MAAM,kBAAkB;QAC/CE,WAAWL,UAAUM,KAAK;QAC1BC,QAAQT,KAAKK,MAAM;QACnBK,WAAW;QACXC,gBAAgBX,KAAKK,MAAM,OAAO;QAClCO,YAAY;YACR;gBACIC,MAAMb,KAAKG,YAAY,UAAU;YACrC;SACH;IACL;AACJ,EAAE"}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { useMemo } from 'react';
|
2
|
+
import { transpile } from '../../../commands/TranspileCommand/fn/transpile.js';
|
3
|
+
export const useTranspileTasks = (path)=>{
|
4
|
+
return useMemo(()=>[
|
5
|
+
{
|
6
|
+
waitingDescription: 'Waiting to transpile code...',
|
7
|
+
errorDescription: 'Could not transpile code',
|
8
|
+
runningDescription: 'Transpiling code...',
|
9
|
+
finishedDescription: ()=>'Code transpiled',
|
10
|
+
runner: async ()=>{
|
11
|
+
transpile(path);
|
12
|
+
},
|
13
|
+
ready: true
|
14
|
+
}
|
15
|
+
], []);
|
16
|
+
};
|
17
|
+
|
18
|
+
//# sourceMappingURL=useTranspileTasks.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/TranspileCommand/hooks/useTranspileTasks.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { transpile } from '@/cli/commands/TranspileCommand/fn/transpile.js';\nimport { CheckListItem } from '@/cli/types.js';\n\nexport const useTranspileTasks = (path: string) => {\n return useMemo(\n () => [\n {\n waitingDescription: 'Waiting to transpile code...',\n errorDescription: 'Could not transpile code',\n runningDescription: 'Transpiling code...',\n finishedDescription: () => 'Code transpiled',\n runner: async () => {\n transpile(path);\n },\n ready: true,\n },\n ],\n []\n ) as CheckListItem<unknown>[];\n};\n"],"names":["useMemo","transpile","useTranspileTasks","path","waitingDescription","errorDescription","runningDescription","finishedDescription","runner","ready"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,OAAO,QAAQ,QAAQ;AAChC,SAASC,SAAS,QAAQ,kDAAkD;AAG5E,OAAO,MAAMC,oBAAoB,CAACC;IAC9B,OAAOH,QACH,IAAM;YACF;gBACII,oBAAoB;gBACpBC,kBAAkB;gBAClBC,oBAAoB;gBACpBC,qBAAqB,IAAM;gBAC3BC,QAAQ;oBACJP,UAAUE;gBACd;gBACAM,OAAO;YACX;SACH,EACD,EAAE;AAEV,EAAE"}
|
@@ -1,21 +1,7 @@
|
|
1
|
-
import { StatusMessage
|
1
|
+
import { StatusMessage } from '@inkjs/ui';
|
2
2
|
import { Text } from 'ink';
|
3
3
|
import React, { useEffect, useRef, useState } from 'react';
|
4
|
-
|
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
|
-
});
|
4
|
+
import { Spinner } from '../../components/Spinner.js';
|
19
5
|
export const Item = ({ item: { runningDescription, waitingDescription, errorDescription, finishedDescription, runner, onFinish, ready }, start })=>{
|
20
6
|
const executed = useRef(false);
|
21
7
|
const interval = useRef(null);
|
@@ -86,11 +72,9 @@ export const Item = ({ item: { runningDescription, waitingDescription, errorDesc
|
|
86
72
|
variant = 'success';
|
87
73
|
}
|
88
74
|
if (isRunning) {
|
89
|
-
return /*#__PURE__*/ React.createElement(
|
90
|
-
|
91
|
-
}
|
92
|
-
label: ` ${message}`
|
93
|
-
}));
|
75
|
+
return /*#__PURE__*/ React.createElement(Spinner, {
|
76
|
+
label: message
|
77
|
+
});
|
94
78
|
}
|
95
79
|
return /*#__PURE__*/ React.createElement(StatusMessage, {
|
96
80
|
variant: variant
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../libs/cli/src/components/CheckList/Item.tsx"],"sourcesContent":["import {
|
1
|
+
{"version":3,"sources":["../../../../../../libs/cli/src/components/CheckList/Item.tsx"],"sourcesContent":["import { StatusMessage, StatusMessageProps } from '@inkjs/ui';\nimport { Text } from 'ink';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Spinner } from '@/cli/components/Spinner.js';\nimport { CheckListItem } from '@/cli/types.js';\n\nexport interface ItemProps<TResult> {\n item: CheckListItem<TResult>;\n start: boolean;\n}\n\nexport const Item = <TResult,>({\n item: {\n runningDescription,\n waitingDescription,\n errorDescription,\n finishedDescription,\n runner,\n onFinish,\n ready,\n },\n start,\n}: ItemProps<TResult>) => {\n const executed = useRef(false);\n const interval = useRef<NodeJS.Timeout | null>(null);\n const [dotCount, setDotCount] = useState(0);\n const [result, setResult] = useState<TResult | null>(null);\n const [failedReason, setfailedReason] = useState<string | null>(null);\n const hasResult = !failedReason && result !== null;\n const isRunning = !failedReason && !hasResult && start && ready !== false;\n const isWaiting = !failedReason && !hasResult && (!start || !ready);\n const couldStartButNotReady =\n !failedReason && !hasResult && start && ready === false;\n\n useEffect(() => {\n if (failedReason) {\n process.exit();\n }\n }, [failedReason]);\n\n useEffect(() => {\n if (couldStartButNotReady) {\n interval.current = setInterval(() => {\n setDotCount((count) => (count + 1) % 4);\n }, 250);\n } else {\n if (interval.current) {\n clearInterval(interval.current);\n }\n }\n\n return () => {\n if (interval.current) {\n clearInterval(interval.current);\n }\n };\n }, [couldStartButNotReady]);\n\n useEffect(() => {\n if (!start || executed.current || ready === false) {\n return;\n }\n\n runner()\n .then((result) => {\n executed.current = true;\n\n if (result === false) {\n setfailedReason(errorDescription);\n\n return;\n }\n\n setResult(result);\n onFinish?.(result);\n })\n .catch((reason) => {\n console.log(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(result);\n variant = 'success';\n }\n\n if (isRunning) {\n return <Spinner label={message} />;\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 {couldStartButNotReady &&\n `— not ready yet${'.'.repeat(dotCount)}`}\n </Text>\n </StatusMessage>\n );\n};\n"],"names":["StatusMessage","Text","React","useEffect","useRef","useState","Spinner","Item","item","runningDescription","waitingDescription","errorDescription","finishedDescription","runner","onFinish","ready","start","executed","interval","dotCount","setDotCount","result","setResult","failedReason","setfailedReason","hasResult","isRunning","isWaiting","couldStartButNotReady","process","exit","current","setInterval","count","clearInterval","then","catch","reason","console","log","message","variant","label","bold","color","repeat"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,aAAa,QAA4B,YAAY;AAC9D,SAASC,IAAI,QAAQ,MAAM;AAC3B,OAAOC,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AAC3D,SAASC,OAAO,QAAQ,8BAA8B;AAQtD,OAAO,MAAMC,OAAO,CAAW,EAC3BC,MAAM,EACFC,kBAAkB,EAClBC,kBAAkB,EAClBC,gBAAgB,EAChBC,mBAAmB,EACnBC,MAAM,EACNC,QAAQ,EACRC,KAAK,EACR,EACDC,KAAK,EACY;IACjB,MAAMC,WAAWb,OAAO;IACxB,MAAMc,WAAWd,OAA8B;IAC/C,MAAM,CAACe,UAAUC,YAAY,GAAGf,SAAS;IACzC,MAAM,CAACgB,QAAQC,UAAU,GAAGjB,SAAyB;IACrD,MAAM,CAACkB,cAAcC,gBAAgB,GAAGnB,SAAwB;IAChE,MAAMoB,YAAY,CAACF,gBAAgBF,WAAW;IAC9C,MAAMK,YAAY,CAACH,gBAAgB,CAACE,aAAaT,SAASD,UAAU;IACpE,MAAMY,YAAY,CAACJ,gBAAgB,CAACE,aAAc,CAAA,CAACT,SAAS,CAACD,KAAI;IACjE,MAAMa,wBACF,CAACL,gBAAgB,CAACE,aAAaT,SAASD,UAAU;IAEtDZ,UAAU;QACN,IAAIoB,cAAc;YACdM,QAAQC,IAAI;QAChB;IACJ,GAAG;QAACP;KAAa;IAEjBpB,UAAU;QACN,IAAIyB,uBAAuB;YACvBV,SAASa,OAAO,GAAGC,YAAY;gBAC3BZ,YAAY,CAACa,QAAU,AAACA,CAAAA,QAAQ,CAAA,IAAK;YACzC,GAAG;QACP,OAAO;YACH,IAAIf,SAASa,OAAO,EAAE;gBAClBG,cAAchB,SAASa,OAAO;YAClC;QACJ;QAEA,OAAO;YACH,IAAIb,SAASa,OAAO,EAAE;gBAClBG,cAAchB,SAASa,OAAO;YAClC;QACJ;IACJ,GAAG;QAACH;KAAsB;IAE1BzB,UAAU;QACN,IAAI,CAACa,SAASC,SAASc,OAAO,IAAIhB,UAAU,OAAO;YAC/C;QACJ;QAEAF,SACKsB,IAAI,CAAC,CAACd;YACHJ,SAASc,OAAO,GAAG;YAEnB,IAAIV,WAAW,OAAO;gBAClBG,gBAAgBb;gBAEhB;YACJ;YAEAW,UAAUD;YACVP,4BAAAA,SAAWO;QACf,GACCe,KAAK,CAAC,CAACC;YACJC,QAAQC,GAAG,CAACF;YACZb,gBAAgBa,OAAOG,OAAO;QAClC;IACR,GAAG;QAAC7B;QAAkBG;QAAUD;QAAQG;KAAM;IAE9C,IAAIwB,UAAU9B;IACd,IAAI+B,UAAyC;IAE7C,IAAIlB,cAAc;QACdiB,UAAU,CAAC,CAAC,EAAEjB,aAAa,CAAC;QAC5BkB,UAAU;IACd,OAAO,IAAIf,WAAW;QAClBc,UAAU/B;QACVgC,UAAU;IACd,OAAO,IAAIhB,WAAW;QAClBe,UAAU5B,oBAAoBS;QAC9BoB,UAAU;IACd;IAEA,IAAIf,WAAW;QACX,qBAAO,oBAACpB;YAAQoC,OAAOF;;IAC3B;IAEA,qBACI,oBAACxC;QAAcyC,SAASA;qBACpB,oBAACxC;QACG0C,MAAM,CAAChB;QACPiB,OACIlB,YACM,WACAC,YACA,SACAJ,eACA,QACA;OAGTiB,SAAS,KACTZ,yBACG,CAAC,eAAe,EAAE,IAAIiB,MAAM,CAAC1B,UAAU,CAAC;AAI5D,EAAE"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { _ as _extends } from "@swc/helpers/_/_extends";
|
2
|
+
import { Spinner as InkUiSpinner, extendTheme, defaultTheme, ThemeProvider } from '@inkjs/ui';
|
3
|
+
import React from 'react';
|
4
|
+
const SpinnerTheme = extendTheme(defaultTheme, {
|
5
|
+
components: {
|
6
|
+
Spinner: {
|
7
|
+
styles: {
|
8
|
+
frame: ()=>({
|
9
|
+
color: 'yellowBright'
|
10
|
+
}),
|
11
|
+
label: ()=>({
|
12
|
+
color: 'yellowBright'
|
13
|
+
})
|
14
|
+
}
|
15
|
+
}
|
16
|
+
}
|
17
|
+
});
|
18
|
+
export const Spinner = (props)=>{
|
19
|
+
return /*#__PURE__*/ React.createElement(ThemeProvider, {
|
20
|
+
theme: SpinnerTheme
|
21
|
+
}, /*#__PURE__*/ React.createElement(InkUiSpinner, _extends({}, props, {
|
22
|
+
label: ` ${props.label}`
|
23
|
+
})));
|
24
|
+
};
|
25
|
+
|
26
|
+
//# sourceMappingURL=Spinner.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../libs/cli/src/components/Spinner.tsx"],"sourcesContent":["import {\n Spinner as InkUiSpinner,\n SpinnerProps,\n extendTheme,\n defaultTheme,\n ThemeProvider,\n} from '@inkjs/ui';\nimport { TextProps } from 'ink';\nimport React from 'react';\n\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 Spinner = (props: SpinnerProps) => {\n return (\n <ThemeProvider theme={SpinnerTheme}>\n <InkUiSpinner {...props} label={` ${props.label}`} />\n </ThemeProvider>\n );\n};\n"],"names":["Spinner","InkUiSpinner","extendTheme","defaultTheme","ThemeProvider","React","SpinnerTheme","components","styles","frame","color","label","props","theme"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,SACIA,WAAWC,YAAY,EAEvBC,WAAW,EACXC,YAAY,EACZC,aAAa,QACV,YAAY;AAEnB,OAAOC,WAAW,QAAQ;AAE1B,MAAMC,eAAeJ,YAAYC,cAAc;IAC3CI,YAAY;QACRP,SAAS;YACLQ,QAAQ;gBACJC,OAAO,IAAkB,CAAA;wBACrBC,OAAO;oBACX,CAAA;gBACAC,OAAO,IAAkB,CAAA;wBACrBD,OAAO;oBACX,CAAA;YACJ;QACJ;IACJ;AACJ;AAEA,OAAO,MAAMV,UAAU,CAACY;IACpB,qBACI,oBAACR;QAAcS,OAAOP;qBAClB,oBAACL,2BAAiBW;QAAOD,OAAO,CAAC,CAAC,EAAEC,MAAMD,KAAK,CAAC,CAAC;;AAG7D,EAAE"}
|
package/src/index.js
CHANGED
@@ -5,6 +5,8 @@ import { Cli } from 'clipanion';
|
|
5
5
|
import { CompileCommand } from './commands/CompileCommand/index.js';
|
6
6
|
import { DoctorCommand } from './commands/DoctorCommand.js';
|
7
7
|
import { GenerateTypesCommand } from './commands/GenerateTypes/index.js';
|
8
|
+
import { NewCommand } from './commands/NewCommand/NewCommand.js';
|
9
|
+
import { SimulatorCommand } from './commands/SimulatorCommand/index.js';
|
8
10
|
import { TranspileCommand } from './commands/TranspileCommand/index.js';
|
9
11
|
import { RootFolder } from './constants.js';
|
10
12
|
const packageJsonContents = readFileSync(join(RootFolder, 'package.json'), 'utf-8');
|
@@ -15,10 +17,15 @@ const cli = new Cli({
|
|
15
17
|
binaryName: 'crankscript',
|
16
18
|
binaryVersion: packageJson.version
|
17
19
|
});
|
20
|
+
process.on('SIGINT', function() {
|
21
|
+
process.exit();
|
22
|
+
});
|
18
23
|
cli.register(DoctorCommand);
|
24
|
+
cli.register(NewCommand);
|
19
25
|
cli.register(TranspileCommand);
|
20
26
|
cli.register(CompileCommand);
|
21
27
|
cli.register(GenerateTypesCommand);
|
28
|
+
cli.register(SimulatorCommand);
|
22
29
|
cli.runExit(args);
|
23
30
|
|
24
31
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../libs/cli/src/index.ts"],"sourcesContent":["#!/usr/bin/env node --no-warnings=ExperimentalWarning\n\nimport { readFileSync } from 'fs';\nimport { join } from 'node:path';\nimport { Cli } from 'clipanion';\nimport { CompileCommand } from '@/cli/commands/CompileCommand/index.js';\nimport { DoctorCommand } from '@/cli/commands/DoctorCommand.js';\nimport { GenerateTypesCommand } from '@/cli/commands/GenerateTypes/index.js';\nimport { TranspileCommand } from '@/cli/commands/TranspileCommand/index.js';\nimport { RootFolder } from '@/cli/constants.js';\n\nconst packageJsonContents = readFileSync(\n join(RootFolder, 'package.json'),\n 'utf-8'\n);\nconst packageJson = JSON.parse(packageJsonContents);\n\nconst args = process.argv.slice(2);\n\nconst cli = new Cli({\n binaryLabel: 'crankscript',\n binaryName: 'crankscript',\n binaryVersion: packageJson.version,\n});\n\ncli.register(DoctorCommand);\ncli.register(TranspileCommand);\ncli.register(CompileCommand);\ncli.register(GenerateTypesCommand);\ncli.runExit(args);\n"],"names":["readFileSync","join","Cli","CompileCommand","DoctorCommand","GenerateTypesCommand","TranspileCommand","RootFolder","packageJsonContents","packageJson","JSON","parse","args","process","argv","slice","cli","binaryLabel","binaryName","binaryVersion","version","register","runExit"],"rangeMappings":"
|
1
|
+
{"version":3,"sources":["../../../../libs/cli/src/index.ts"],"sourcesContent":["#!/usr/bin/env node --no-warnings=ExperimentalWarning\n\nimport { readFileSync } from 'fs';\nimport { join } from 'node:path';\nimport { Cli } from 'clipanion';\nimport { CompileCommand } from '@/cli/commands/CompileCommand/index.js';\nimport { DoctorCommand } from '@/cli/commands/DoctorCommand.js';\nimport { GenerateTypesCommand } from '@/cli/commands/GenerateTypes/index.js';\nimport { NewCommand } from '@/cli/commands/NewCommand/NewCommand.js';\nimport { SimulatorCommand } from '@/cli/commands/SimulatorCommand/index.js';\nimport { TranspileCommand } from '@/cli/commands/TranspileCommand/index.js';\nimport { RootFolder } from '@/cli/constants.js';\n\nconst packageJsonContents = readFileSync(\n join(RootFolder, 'package.json'),\n 'utf-8'\n);\nconst packageJson = JSON.parse(packageJsonContents);\n\nconst args = process.argv.slice(2);\n\nconst cli = new Cli({\n binaryLabel: 'crankscript',\n binaryName: 'crankscript',\n binaryVersion: packageJson.version,\n});\n\nprocess.on('SIGINT', function () {\n process.exit();\n});\n\ncli.register(DoctorCommand);\ncli.register(NewCommand);\ncli.register(TranspileCommand);\ncli.register(CompileCommand);\ncli.register(GenerateTypesCommand);\ncli.register(SimulatorCommand);\ncli.runExit(args);\n"],"names":["readFileSync","join","Cli","CompileCommand","DoctorCommand","GenerateTypesCommand","NewCommand","SimulatorCommand","TranspileCommand","RootFolder","packageJsonContents","packageJson","JSON","parse","args","process","argv","slice","cli","binaryLabel","binaryName","binaryVersion","version","on","exit","register","runExit"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAEA,SAASA,YAAY,QAAQ,KAAK;AAClC,SAASC,IAAI,QAAQ,YAAY;AACjC,SAASC,GAAG,QAAQ,YAAY;AAChC,SAASC,cAAc,QAAQ,yCAAyC;AACxE,SAASC,aAAa,QAAQ,kCAAkC;AAChE,SAASC,oBAAoB,QAAQ,wCAAwC;AAC7E,SAASC,UAAU,QAAQ,0CAA0C;AACrE,SAASC,gBAAgB,QAAQ,2CAA2C;AAC5E,SAASC,gBAAgB,QAAQ,2CAA2C;AAC5E,SAASC,UAAU,QAAQ,qBAAqB;AAEhD,MAAMC,sBAAsBV,aACxBC,KAAKQ,YAAY,iBACjB;AAEJ,MAAME,cAAcC,KAAKC,KAAK,CAACH;AAE/B,MAAMI,OAAOC,QAAQC,IAAI,CAACC,KAAK,CAAC;AAEhC,MAAMC,MAAM,IAAIhB,IAAI;IAChBiB,aAAa;IACbC,YAAY;IACZC,eAAeV,YAAYW,OAAO;AACtC;AAEAP,QAAQQ,EAAE,CAAC,UAAU;IACjBR,QAAQS,IAAI;AAChB;AAEAN,IAAIO,QAAQ,CAACrB;AACbc,IAAIO,QAAQ,CAACnB;AACbY,IAAIO,QAAQ,CAACjB;AACbU,IAAIO,QAAQ,CAACtB;AACbe,IAAIO,QAAQ,CAACpB;AACba,IAAIO,QAAQ,CAAClB;AACbW,IAAIQ,OAAO,CAACZ"}
|
package/src/types.d.ts
CHANGED
@@ -88,3 +88,9 @@ export type TypeProviderData = {
|
|
88
88
|
properties: Record<string, PropertyDetails>;
|
89
89
|
functions: Record<string, FunctionDetails>;
|
90
90
|
};
|
91
|
+
export type FunctionTypeOverrideMap = Record<string, {
|
92
|
+
isMethod: boolean;
|
93
|
+
}>;
|
94
|
+
export declare enum TemplateName {
|
95
|
+
Blank = "blank"
|
96
|
+
}
|
package/src/types.js
CHANGED
@@ -8,5 +8,9 @@ export var HealthCheckStatusType;
|
|
8
8
|
HealthCheckStatusType["Unhealthy"] = "Unhealthy";
|
9
9
|
HealthCheckStatusType["Unknown"] = "Unknown";
|
10
10
|
})(HealthCheckStatusType || (HealthCheckStatusType = {}));
|
11
|
+
export var TemplateName;
|
12
|
+
(function(TemplateName) {
|
13
|
+
TemplateName["Blank"] = "blank";
|
14
|
+
})(TemplateName || (TemplateName = {}));
|
11
15
|
|
12
16
|
//# sourceMappingURL=types.js.map
|
package/src/types.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../libs/cli/src/types.ts"],"sourcesContent":["import {\n ClassDeclarationStructure,\n FunctionDeclarationStructure,\n MethodDeclarationStructure,\n ParameterDeclarationStructure,\n} from 'ts-morph';\nimport { Environment } from '@/cli/environment/dto/Environment.js';\nimport { PlaydateSdkPath } from '@/cli/environment/path/dto/PlaydateSdkPath.js';\n\nexport enum PlaydateSdkVersionIdentifier {\n Latest = 'latest',\n}\n\nexport type PlaydateSdkVersion = PlaydateSdkVersionIdentifier.Latest | string;\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 HealthCheckStatusType {\n Healthy = 'Healthy',\n Unhealthy = 'Unhealthy',\n Unknown = 'Unknown',\n}\n\nexport type HealthCheckStatus<TArgument> =\n | {\n healthStatus:\n | HealthCheckStatusType.Unknown\n | HealthCheckStatusType.Unhealthy;\n }\n | {\n healthStatus: HealthCheckStatusType.Healthy;\n argument: TArgument;\n };\n\nexport interface EnvironmentHealth {\n sdkPathKnown: HealthCheckStatus<PlaydateSdkPath>;\n}\n\nexport type CheckListItem<TResult> = {\n runningDescription: string;\n waitingDescription: string;\n errorDescription: string;\n finishedDescription: (result: TResult) => string;\n runner: () => Promise<TResult> | Promise<false>;\n onFinish?: (result: TResult) => void;\n ready?: boolean;\n};\n\nexport interface ParameterDescription {\n name: string;\n required: boolean;\n}\n\nexport interface PropertyDescription {\n signature: string;\n name: string;\n namespaces: string[];\n docs: string;\n}\n\nexport interface FunctionDescription {\n signature: string;\n name: string;\n namespaces: string[];\n parameters: ParameterDescription[];\n hasSelf: boolean;\n docs: string;\n}\nexport interface ApiObject {\n functions: FunctionDescription[];\n methods: FunctionDescription[];\n properties: PropertyDescription[];\n namespaces: Record<string, ApiObject>;\n}\n\nexport interface ApiDefinitions {\n global: ApiObject;\n}\n\nexport interface ParameterDetails {\n name: string;\n type: string;\n overrideOptions?: Partial<\n Omit<ParameterDeclarationStructure, 'kind' | 'name' | 'type'>\n >;\n}\n\nexport interface PropertyDetails {\n signature: string;\n type: string;\n isStatic?: boolean;\n isReadOnly?: boolean;\n}\n\nexport interface FunctionDetails {\n signature: string;\n parameters: ParameterDetails[];\n returnType: string;\n overrideParameters?: boolean;\n overrideOptions?: Partial<\n FunctionDeclarationStructure | MethodDeclarationStructure\n >;\n}\n\nexport type TypeProviderData = {\n globalStatements: string[];\n statements: string[];\n classes: Record<string, Partial<ClassDeclarationStructure>>;\n properties: Record<string, PropertyDetails>;\n functions: Record<string, FunctionDetails>;\n};\n"],"names":["PlaydateSdkVersionIdentifier","HealthCheckStatusType"],"rangeMappings":"
|
1
|
+
{"version":3,"sources":["../../../../libs/cli/src/types.ts"],"sourcesContent":["import {\n ClassDeclarationStructure,\n FunctionDeclarationStructure,\n MethodDeclarationStructure,\n ParameterDeclarationStructure,\n} from 'ts-morph';\nimport { Environment } from '@/cli/environment/dto/Environment.js';\nimport { PlaydateSdkPath } from '@/cli/environment/path/dto/PlaydateSdkPath.js';\n\nexport enum PlaydateSdkVersionIdentifier {\n Latest = 'latest',\n}\n\nexport type PlaydateSdkVersion = PlaydateSdkVersionIdentifier.Latest | string;\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 HealthCheckStatusType {\n Healthy = 'Healthy',\n Unhealthy = 'Unhealthy',\n Unknown = 'Unknown',\n}\n\nexport type HealthCheckStatus<TArgument> =\n | {\n healthStatus:\n | HealthCheckStatusType.Unknown\n | HealthCheckStatusType.Unhealthy;\n }\n | {\n healthStatus: HealthCheckStatusType.Healthy;\n argument: TArgument;\n };\n\nexport interface EnvironmentHealth {\n sdkPathKnown: HealthCheckStatus<PlaydateSdkPath>;\n}\n\nexport type CheckListItem<TResult> = {\n runningDescription: string;\n waitingDescription: string;\n errorDescription: string;\n finishedDescription: (result: TResult) => string;\n runner: () => Promise<TResult> | Promise<false>;\n onFinish?: (result: TResult) => void;\n ready?: boolean;\n};\n\nexport interface ParameterDescription {\n name: string;\n required: boolean;\n}\n\nexport interface PropertyDescription {\n signature: string;\n name: string;\n namespaces: string[];\n docs: string;\n}\n\nexport interface FunctionDescription {\n signature: string;\n name: string;\n namespaces: string[];\n parameters: ParameterDescription[];\n hasSelf: boolean;\n docs: string;\n}\n\nexport interface ApiObject {\n functions: FunctionDescription[];\n methods: FunctionDescription[];\n properties: PropertyDescription[];\n namespaces: Record<string, ApiObject>;\n}\n\nexport interface ApiDefinitions {\n global: ApiObject;\n}\n\nexport interface ParameterDetails {\n name: string;\n type: string;\n overrideOptions?: Partial<\n Omit<ParameterDeclarationStructure, 'kind' | 'name' | 'type'>\n >;\n}\n\nexport interface PropertyDetails {\n signature: string;\n type: string;\n isStatic?: boolean;\n isReadOnly?: boolean;\n}\n\nexport interface FunctionDetails {\n signature: string;\n parameters: ParameterDetails[];\n returnType: string;\n overrideParameters?: boolean;\n overrideOptions?: Partial<\n FunctionDeclarationStructure | MethodDeclarationStructure\n >;\n}\n\nexport type TypeProviderData = {\n globalStatements: string[];\n statements: string[];\n classes: Record<string, Partial<ClassDeclarationStructure>>;\n properties: Record<string, PropertyDetails>;\n functions: Record<string, FunctionDetails>;\n};\n\nexport type FunctionTypeOverrideMap = Record<string, { isMethod: boolean }>;\n\nexport enum TemplateName {\n Blank = 'blank',\n}\n"],"names":["PlaydateSdkVersionIdentifier","HealthCheckStatusType","TemplateName"],"rangeMappings":";;;;;;;;;;;;;","mappings":";UASYA;;GAAAA,iCAAAA;;UAiBAC;;;;GAAAA,0BAAAA;;UAkGAC;;GAAAA,iBAAAA"}
|
@@ -1 +0,0 @@
|
|
1
|
-
export declare const useQuitOnCtrlC: () => void;
|
@@ -1 +0,0 @@
|
|
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"}
|