crankscript 0.0.6 → 0.1.5-beta

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.
Files changed (156) hide show
  1. package/README.md +1 -11
  2. package/assets/package.json +4 -0
  3. package/assets/plugin.js +260 -0
  4. package/assets/plugin.ts +372 -0
  5. package/assets/tsconfig.json +10 -0
  6. package/package.json +30 -17
  7. package/src/commands/CompileCommand/CompileCommand.d.ts +8 -0
  8. package/src/commands/CompileCommand/CompileCommand.js +21 -0
  9. package/src/commands/CompileCommand/CompileCommand.js.map +1 -0
  10. package/src/commands/CompileCommand/components/Compile.d.ts +7 -0
  11. package/src/commands/CompileCommand/components/Compile.js +14 -0
  12. package/src/commands/CompileCommand/components/Compile.js.map +1 -0
  13. package/src/commands/CompileCommand/fn/getPdcPathFromEnvironment.d.ts +2 -0
  14. package/src/commands/CompileCommand/fn/getPdcPathFromEnvironment.js +6 -0
  15. package/src/commands/CompileCommand/fn/getPdcPathFromEnvironment.js.map +1 -0
  16. package/src/commands/CompileCommand/fn/getSimulatorPathFromEnvironment.d.ts +2 -0
  17. package/src/commands/CompileCommand/fn/getSimulatorPathFromEnvironment.js +6 -0
  18. package/src/commands/CompileCommand/fn/getSimulatorPathFromEnvironment.js.map +1 -0
  19. package/src/commands/CompileCommand/hooks/useCompileTasks.d.ts +2 -0
  20. package/src/commands/CompileCommand/hooks/useCompileTasks.js +60 -0
  21. package/src/commands/CompileCommand/hooks/useCompileTasks.js.map +1 -0
  22. package/src/commands/CompileCommand/index.d.ts +1 -0
  23. package/src/commands/CompileCommand/index.js +3 -0
  24. package/src/commands/CompileCommand/index.js.map +1 -0
  25. package/src/commands/DoctorCommand.d.ts +7 -0
  26. package/src/commands/DoctorCommand.js +26 -0
  27. package/src/commands/DoctorCommand.js.map +1 -0
  28. package/src/commands/EnvironmentAwareCommand/EnvironmentAwareCommand.d.ts +9 -0
  29. package/src/commands/EnvironmentAwareCommand/EnvironmentAwareCommand.js +25 -0
  30. package/src/commands/EnvironmentAwareCommand/EnvironmentAwareCommand.js.map +1 -0
  31. package/src/commands/EnvironmentAwareCommand/components/HealthReport.d.ts +7 -0
  32. package/src/commands/EnvironmentAwareCommand/components/HealthReport.js +41 -0
  33. package/src/commands/EnvironmentAwareCommand/components/HealthReport.js.map +1 -0
  34. package/src/commands/EnvironmentAwareCommand/index.d.ts +1 -0
  35. package/src/commands/EnvironmentAwareCommand/index.js +3 -0
  36. package/src/commands/EnvironmentAwareCommand/index.js.map +1 -0
  37. package/src/commands/GenerateTypes/GenerateTypesCommand.d.ts +10 -0
  38. package/src/commands/GenerateTypes/GenerateTypesCommand.js +45 -0
  39. package/src/commands/GenerateTypes/GenerateTypesCommand.js.map +1 -0
  40. package/src/commands/GenerateTypes/components/GenerateTypes.d.ts +9 -0
  41. package/src/commands/GenerateTypes/components/GenerateTypes.js +36 -0
  42. package/src/commands/GenerateTypes/components/GenerateTypes.js.map +1 -0
  43. package/src/commands/GenerateTypes/constants.d.ts +1 -0
  44. package/src/commands/GenerateTypes/constants.js +3 -0
  45. package/src/commands/GenerateTypes/constants.js.map +1 -0
  46. package/src/commands/GenerateTypes/fn/getApiDefinitions.d.ts +2 -0
  47. package/src/commands/GenerateTypes/fn/getApiDefinitions.js +39 -0
  48. package/src/commands/GenerateTypes/fn/getApiDefinitions.js.map +1 -0
  49. package/src/commands/GenerateTypes/fn/getDescriptionsFromHtml.d.ts +5 -0
  50. package/src/commands/GenerateTypes/fn/getDescriptionsFromHtml.js +78 -0
  51. package/src/commands/GenerateTypes/fn/getDescriptionsFromHtml.js.map +1 -0
  52. package/src/commands/GenerateTypes/fn/getFunctionTypeOverride.d.ts +1 -0
  53. package/src/commands/GenerateTypes/fn/getFunctionTypeOverride.js +7 -0
  54. package/src/commands/GenerateTypes/fn/getFunctionTypeOverride.js.map +1 -0
  55. package/src/commands/GenerateTypes/fn/getHtmlForVersion.d.ts +1 -0
  56. package/src/commands/GenerateTypes/fn/getHtmlForVersion.js +21 -0
  57. package/src/commands/GenerateTypes/fn/getHtmlForVersion.js.map +1 -0
  58. package/src/commands/GenerateTypes/fn/parseFunctionSignature.d.ts +10 -0
  59. package/src/commands/GenerateTypes/fn/parseFunctionSignature.js +22 -0
  60. package/src/commands/GenerateTypes/fn/parseFunctionSignature.js.map +1 -0
  61. package/src/commands/GenerateTypes/hooks/useFetchHtml.d.ts +12 -0
  62. package/src/commands/GenerateTypes/hooks/useFetchHtml.js +31 -0
  63. package/src/commands/GenerateTypes/hooks/useFetchHtml.js.map +1 -0
  64. package/src/commands/GenerateTypes/hooks/useGenerateTypeFile.d.ts +12 -0
  65. package/src/commands/GenerateTypes/hooks/useGenerateTypeFile.js +126 -0
  66. package/src/commands/GenerateTypes/hooks/useGenerateTypeFile.js.map +1 -0
  67. package/src/commands/GenerateTypes/hooks/useGetVersion.d.ts +53 -0
  68. package/src/commands/GenerateTypes/hooks/useGetVersion.js +52 -0
  69. package/src/commands/GenerateTypes/hooks/useGetVersion.js.map +1 -0
  70. package/src/commands/GenerateTypes/hooks/useParseDocumentation.d.ts +13 -0
  71. package/src/commands/GenerateTypes/hooks/useParseDocumentation.js +34 -0
  72. package/src/commands/GenerateTypes/hooks/useParseDocumentation.js.map +1 -0
  73. package/src/commands/GenerateTypes/index.d.ts +1 -0
  74. package/src/commands/GenerateTypes/index.js +3 -0
  75. package/src/commands/GenerateTypes/index.js.map +1 -0
  76. package/src/commands/GenerateTypes/utils/createTypeProvider.d.ts +43 -0
  77. package/src/commands/GenerateTypes/utils/createTypeProvider.js +156 -0
  78. package/src/commands/GenerateTypes/utils/createTypeProvider.js.map +1 -0
  79. package/src/commands/GenerateTypes/utils/functionTypeOverrides.d.ts +2 -0
  80. package/src/commands/GenerateTypes/utils/functionTypeOverrides.js +18 -0
  81. package/src/commands/GenerateTypes/utils/functionTypeOverrides.js.map +1 -0
  82. package/src/commands/NewCommand/NewCommand.d.ts +10 -0
  83. package/src/commands/NewCommand/NewCommand.js +35 -0
  84. package/src/commands/NewCommand/NewCommand.js.map +1 -0
  85. package/src/commands/NewCommand/components/New.d.ts +8 -0
  86. package/src/commands/NewCommand/components/New.js +26 -0
  87. package/src/commands/NewCommand/components/New.js.map +1 -0
  88. package/src/commands/RenderableCommand.d.ts +7 -0
  89. package/src/commands/RenderableCommand.js +12 -0
  90. package/src/commands/RenderableCommand.js.map +1 -0
  91. package/src/commands/SimulatorCommand/SimulatorCommand.d.ts +12 -0
  92. package/src/commands/SimulatorCommand/SimulatorCommand.js +39 -0
  93. package/src/commands/SimulatorCommand/SimulatorCommand.js.map +1 -0
  94. package/src/commands/SimulatorCommand/components/Simulator.d.ts +11 -0
  95. package/src/commands/SimulatorCommand/components/Simulator.js +80 -0
  96. package/src/commands/SimulatorCommand/components/Simulator.js.map +1 -0
  97. package/src/commands/SimulatorCommand/index.d.ts +1 -0
  98. package/src/commands/SimulatorCommand/index.js +3 -0
  99. package/src/commands/SimulatorCommand/index.js.map +1 -0
  100. package/src/commands/TranspileCommand/TranspileCommand.d.ts +9 -0
  101. package/src/commands/TranspileCommand/TranspileCommand.js +31 -0
  102. package/src/commands/TranspileCommand/TranspileCommand.js.map +1 -0
  103. package/src/commands/TranspileCommand/components/Transpile.d.ts +6 -0
  104. package/src/commands/TranspileCommand/components/Transpile.js +12 -0
  105. package/src/commands/TranspileCommand/components/Transpile.js.map +1 -0
  106. package/src/commands/TranspileCommand/fn/transpile.d.ts +1 -0
  107. package/src/commands/TranspileCommand/fn/transpile.js +19 -0
  108. package/src/commands/TranspileCommand/fn/transpile.js.map +1 -0
  109. package/src/commands/TranspileCommand/hooks/useTranspileTasks.d.ts +2 -0
  110. package/src/commands/TranspileCommand/hooks/useTranspileTasks.js +18 -0
  111. package/src/commands/TranspileCommand/hooks/useTranspileTasks.js.map +1 -0
  112. package/src/commands/TranspileCommand/index.d.ts +1 -0
  113. package/src/commands/TranspileCommand/index.js +3 -0
  114. package/src/commands/TranspileCommand/index.js.map +1 -0
  115. package/src/components/CheckList/CheckList.d.ts +8 -0
  116. package/src/components/CheckList/CheckList.js +34 -0
  117. package/src/components/CheckList/CheckList.js.map +1 -0
  118. package/src/components/CheckList/Item.d.ts +7 -0
  119. package/src/components/CheckList/Item.js +87 -0
  120. package/src/components/CheckList/Item.js.map +1 -0
  121. package/src/components/CheckList/index.d.ts +1 -0
  122. package/src/components/CheckList/index.js +3 -0
  123. package/src/components/CheckList/index.js.map +1 -0
  124. package/src/components/Spinner.d.ts +3 -0
  125. package/src/components/Spinner.js +26 -0
  126. package/src/components/Spinner.js.map +1 -0
  127. package/src/constants.d.ts +3 -0
  128. package/src/constants.js +11 -0
  129. package/src/constants.js.map +1 -0
  130. package/src/environment/createEnvironment.d.ts +12 -0
  131. package/src/environment/createEnvironment.js +37 -0
  132. package/src/environment/createEnvironment.js.map +1 -0
  133. package/src/environment/dto/Environment.d.ts +7 -0
  134. package/src/environment/dto/Environment.js +7 -0
  135. package/src/environment/dto/Environment.js.map +1 -0
  136. package/src/environment/error/EnvironmentError.d.ts +2 -0
  137. package/src/environment/error/EnvironmentError.js +4 -0
  138. package/src/environment/error/EnvironmentError.js.map +1 -0
  139. package/src/environment/path/dto/PlaydateSdkPath.d.ts +5 -0
  140. package/src/environment/path/dto/PlaydateSdkPath.js +10 -0
  141. package/src/environment/path/dto/PlaydateSdkPath.js.map +1 -0
  142. package/src/environment/path/error/PlaydateSdkPathVariableNotSetError.d.ts +4 -0
  143. package/src/environment/path/error/PlaydateSdkPathVariableNotSetError.js +8 -0
  144. package/src/environment/path/error/PlaydateSdkPathVariableNotSetError.js.map +1 -0
  145. package/src/environment/path/getPlaydateSdkPath.d.ts +14 -0
  146. package/src/environment/path/getPlaydateSdkPath.js +16 -0
  147. package/src/environment/path/getPlaydateSdkPath.js.map +1 -0
  148. package/src/index.d.ts +1 -1
  149. package/src/index.js +30 -11
  150. package/src/index.js.map +1 -1
  151. package/src/types.d.ts +96 -0
  152. package/src/types.js +16 -0
  153. package/src/types.js.map +1 -0
  154. package/src/utils/dirname.d.ts +1 -0
  155. package/src/utils/dirname.js +5 -0
  156. package/src/utils/dirname.js.map +1 -0
package/package.json CHANGED
@@ -1,19 +1,32 @@
1
1
  {
2
- "name": "crankscript",
3
- "version": "0.0.6",
4
- "scripts": {
5
- "dev": "tsx src/index.ts"
6
- },
7
- "bin": {
8
- "crankscript": "./src/index.js"
9
- },
10
- "dependencies": {
11
- "@swc/helpers": "~0.5.11",
12
- "yargs": "^17.7.2"
13
- },
14
- "type": "module",
15
- "main": "./src/index.js",
16
- "typings": "./src/index.d.ts",
17
- "module": "./src/index.js",
18
- "types": "./src/index.d.ts"
2
+ "name": "crankscript",
3
+ "version": "0.1.5-beta",
4
+ "scripts": {
5
+ "dev": "tsx src/index.ts",
6
+ "post-build": "tsc-alias --project tsconfig.json",
7
+ "prepare-assets": "npx tsc -p assets/tsconfig.json"
8
+ },
9
+ "bin": {
10
+ "crankscript": "./src/index.js"
11
+ },
12
+ "license": "MIT",
13
+ "dependencies": {
14
+ "@inkjs/ui": "^2.0.0",
15
+ "@swc/helpers": "~0.5.11",
16
+ "cheerio": "^1.0.0",
17
+ "clipanion": "^4.0.0-rc.4",
18
+ "ink": "^5.0.1",
19
+ "open": "^10.1.0",
20
+ "react": "^18.3.1",
21
+ "tiged": "^3.0.0-rc.0",
22
+ "ts-morph": "^23.0.0",
23
+ "turndown": "^7.2.0",
24
+ "typanion": "^3.14.0",
25
+ "typescript-to-lua": "^1.27.0"
26
+ },
27
+ "type": "module",
28
+ "main": "./src/index.js",
29
+ "typings": "./src/index.d.ts",
30
+ "module": "./src/index.js",
31
+ "types": "./src/index.d.ts"
19
32
  }
@@ -0,0 +1,8 @@
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 CompileCommand extends EnvironmentAwareCommand {
5
+ static paths: string[][];
6
+ static usage: import("clipanion").Usage;
7
+ renderWithEnvironment(environment: Environment): React.JSX.Element;
8
+ }
@@ -0,0 +1,21 @@
1
+ import { Command } from 'clipanion';
2
+ import React from 'react';
3
+ import { Compile } from '../../commands/CompileCommand/components/Compile.js';
4
+ import { EnvironmentAwareCommand } from '../../commands/EnvironmentAwareCommand/index.js';
5
+ export class CompileCommand extends EnvironmentAwareCommand {
6
+ renderWithEnvironment(environment) {
7
+ return /*#__PURE__*/ React.createElement(Compile, {
8
+ environment: environment
9
+ });
10
+ }
11
+ }
12
+ CompileCommand.paths = [
13
+ [
14
+ 'compile'
15
+ ]
16
+ ];
17
+ CompileCommand.usage = Command.Usage({
18
+ description: 'Compiles the code and runs the simulator'
19
+ });
20
+
21
+ //# sourceMappingURL=CompileCommand.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { Environment } from '../../../environment/dto/Environment.js';
3
+ interface Props {
4
+ environment: Environment;
5
+ }
6
+ export declare const Compile: ({ environment }: Props) => React.JSX.Element;
7
+ export {};
@@ -0,0 +1,14 @@
1
+ import process from 'node:process';
2
+ import React from 'react';
3
+ import { getPdcPathFromEnvironment } from '../../../commands/CompileCommand/fn/getPdcPathFromEnvironment.js';
4
+ import { useCompileTasks } from '../../../commands/CompileCommand/hooks/useCompileTasks.js';
5
+ import { CheckList } from '../../../components/CheckList/index.js';
6
+ export const Compile = ({ environment })=>{
7
+ const items = useCompileTasks(getPdcPathFromEnvironment(environment));
8
+ return /*#__PURE__*/ React.createElement(CheckList, {
9
+ items: items,
10
+ onFinish: process.exit
11
+ });
12
+ };
13
+
14
+ //# sourceMappingURL=Compile.js.map
@@ -0,0 +1 @@
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,2 @@
1
+ import { Environment } from '../../../environment/dto/Environment.js';
2
+ export declare const getPdcPathFromEnvironment: (environment: Environment) => string;
@@ -0,0 +1,6 @@
1
+ import { join } from 'node:path';
2
+ export const getPdcPathFromEnvironment = (environment)=>{
3
+ return join(environment.sdkPath.path, 'bin', 'pdc');
4
+ };
5
+
6
+ //# sourceMappingURL=getPdcPathFromEnvironment.js.map
@@ -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,2 @@
1
+ import { Environment } from '../../../environment/dto/Environment.js';
2
+ export declare const getSimulatorPathFromEnvironment: (environment: Environment) => string;
@@ -0,0 +1,6 @@
1
+ import { join } from 'node:path';
2
+ export const getSimulatorPathFromEnvironment = (environment)=>{
3
+ return join(environment.sdkPath.path, 'bin', 'PlaydateSimulator');
4
+ };
5
+
6
+ //# sourceMappingURL=getSimulatorPathFromEnvironment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/cli/src/commands/CompileCommand/fn/getSimulatorPathFromEnvironment.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { Environment } from '@/cli/environment/dto/Environment.js';\n\nexport const getSimulatorPathFromEnvironment = (environment: Environment) => {\n return join(environment.sdkPath.path, 'bin', 'PlaydateSimulator');\n};\n"],"names":["join","getSimulatorPathFromEnvironment","environment","sdkPath","path"],"rangeMappings":";;;","mappings":"AAAA,SAASA,IAAI,QAAQ,YAAY;AAGjC,OAAO,MAAMC,kCAAkC,CAACC;IAC5C,OAAOF,KAAKE,YAAYC,OAAO,CAACC,IAAI,EAAE,OAAO;AACjD,EAAE"}
@@ -0,0 +1,2 @@
1
+ import { CheckListItem } from '../../../types.js';
2
+ export declare const useCompileTasks: (pdcPath: string) => CheckListItem<unknown>[];
@@ -0,0 +1,60 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { existsSync } from 'node:fs';
3
+ import { useMemo } from 'react';
4
+ export const useCompileTasks = (pdcPath)=>{
5
+ return useMemo(()=>[
6
+ {
7
+ waitingDescription: 'Waiting to check for pdc binary...',
8
+ errorDescription: 'Could not find pdc binary',
9
+ runningDescription: 'Checking for pdc binary...',
10
+ finishedDescription: (result)=>`Found pdc binary at "${result}"`,
11
+ runner: async ()=>{
12
+ if (!existsSync(pdcPath)) {
13
+ throw new Error('Could not find pdc binary');
14
+ }
15
+ return pdcPath;
16
+ },
17
+ ready: true
18
+ },
19
+ {
20
+ waitingDescription: 'Waiting for pdc binary path...',
21
+ errorDescription: 'Could not compile lua code',
22
+ runningDescription: 'Compiling lua code...',
23
+ finishedDescription: ()=>'Lua code compiled',
24
+ runner: async ()=>{
25
+ return new Promise((resolve, reject)=>{
26
+ const pdc = spawn(pdcPath, [
27
+ 'Source',
28
+ 'Game.pdx'
29
+ ]);
30
+ // Collect any standard output or errors
31
+ let stdout = '';
32
+ let stderr = '';
33
+ // Handle stdout (standard output)
34
+ pdc.stdout.on('data', (data)=>{
35
+ stdout += data.toString();
36
+ });
37
+ // Handle stderr (standard error)
38
+ pdc.stderr.on('data', (data)=>{
39
+ stderr += data.toString();
40
+ });
41
+ // Handle the process closing
42
+ pdc.on('close', (code)=>{
43
+ if (code === 0) {
44
+ resolve(stdout); // Resolve the promise with the output
45
+ } else {
46
+ reject(new Error(`pdc exited with code ${code}: ${stderr}`));
47
+ }
48
+ });
49
+ // Handle any errors that occur while starting the process
50
+ pdc.on('error', (err)=>{
51
+ reject(new Error(`Failed to start pdc process: ${err.message}`));
52
+ });
53
+ });
54
+ },
55
+ ready: true
56
+ }
57
+ ], []);
58
+ };
59
+
60
+ //# sourceMappingURL=useCompileTasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/cli/src/commands/CompileCommand/hooks/useCompileTasks.ts"],"sourcesContent":["import { spawn } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { useMemo } from 'react';\nimport { CheckListItem } from '@/cli/types.js';\n\nexport const useCompileTasks = (pdcPath: 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(pdcPath)) {\n throw new Error('Could not find pdc binary');\n }\n\n return pdcPath;\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 new Promise((resolve, reject) => {\n const pdc = spawn(pdcPath, ['Source', 'Game.pdx']);\n\n // Collect any standard output or errors\n let stdout = '';\n let stderr = '';\n\n // Handle stdout (standard output)\n pdc.stdout.on('data', (data) => {\n stdout += data.toString();\n });\n\n // Handle stderr (standard error)\n pdc.stderr.on('data', (data) => {\n stderr += data.toString();\n });\n\n // Handle the process closing\n pdc.on('close', (code) => {\n if (code === 0) {\n resolve(stdout); // Resolve the promise with the output\n } else {\n reject(\n new Error(\n `pdc exited with code ${code}: ${stderr}`\n )\n );\n }\n });\n\n // Handle any errors that occur while starting the process\n pdc.on('error', (err) => {\n reject(\n new Error(\n `Failed to start pdc process: ${err.message}`\n )\n );\n });\n });\n },\n ready: true,\n },\n ],\n []\n ) as CheckListItem<unknown>[];\n};\n"],"names":["spawn","existsSync","useMemo","useCompileTasks","pdcPath","waitingDescription","errorDescription","runningDescription","finishedDescription","result","runner","Error","ready","Promise","resolve","reject","pdc","stdout","stderr","on","data","toString","code","err","message"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,KAAK,QAAQ,qBAAqB;AAC3C,SAASC,UAAU,QAAQ,UAAU;AACrC,SAASC,OAAO,QAAQ,QAAQ;AAGhC,OAAO,MAAMC,kBAAkB,CAACC;IAC5B,OAAOF,QACH,IAAM;YACF;gBACIG,oBAAoB;gBACpBC,kBAAkB;gBAClBC,oBAAoB;gBACpBC,qBAAqB,CAACC,SAClB,CAAC,qBAAqB,EAAEA,OAAO,CAAC,CAAC;gBACrCC,QAAQ;oBACJ,IAAI,CAACT,WAAWG,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,OAAO,IAAIG,QAAQ,CAACC,SAASC;wBACzB,MAAMC,MAAMhB,MAAMI,SAAS;4BAAC;4BAAU;yBAAW;wBAEjD,wCAAwC;wBACxC,IAAIa,SAAS;wBACb,IAAIC,SAAS;wBAEb,kCAAkC;wBAClCF,IAAIC,MAAM,CAACE,EAAE,CAAC,QAAQ,CAACC;4BACnBH,UAAUG,KAAKC,QAAQ;wBAC3B;wBAEA,iCAAiC;wBACjCL,IAAIE,MAAM,CAACC,EAAE,CAAC,QAAQ,CAACC;4BACnBF,UAAUE,KAAKC,QAAQ;wBAC3B;wBAEA,6BAA6B;wBAC7BL,IAAIG,EAAE,CAAC,SAAS,CAACG;4BACb,IAAIA,SAAS,GAAG;gCACZR,QAAQG,SAAS,sCAAsC;4BAC3D,OAAO;gCACHF,OACI,IAAIJ,MACA,CAAC,qBAAqB,EAAEW,KAAK,EAAE,EAAEJ,OAAO,CAAC;4BAGrD;wBACJ;wBAEA,0DAA0D;wBAC1DF,IAAIG,EAAE,CAAC,SAAS,CAACI;4BACbR,OACI,IAAIJ,MACA,CAAC,6BAA6B,EAAEY,IAAIC,OAAO,CAAC,CAAC;wBAGzD;oBACJ;gBACJ;gBACAZ,OAAO;YACX;SACH,EACD,EAAE;AAEV,EAAE"}
@@ -0,0 +1 @@
1
+ export * from './CompileCommand.js';
@@ -0,0 +1,3 @@
1
+ export * from './CompileCommand.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/cli/src/commands/CompileCommand/index.ts"],"sourcesContent":["export * from './CompileCommand.js';\n"],"names":[],"rangeMappings":"","mappings":"AAAA,cAAc,sBAAsB"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { RenderableCommand } from './RenderableCommand.js';
3
+ export declare class DoctorCommand extends RenderableCommand {
4
+ static paths: string[][];
5
+ static usage: import("clipanion").Usage;
6
+ render(): React.JSX.Element;
7
+ }
@@ -0,0 +1,26 @@
1
+ import { Command } from 'clipanion';
2
+ import { Text } from 'ink';
3
+ import React from 'react';
4
+ import { createEnvironment } from '../environment/createEnvironment.js';
5
+ import { HealthReport } from './EnvironmentAwareCommand/components/HealthReport.js';
6
+ import { RenderableCommand } from './RenderableCommand.js';
7
+ export class DoctorCommand extends RenderableCommand {
8
+ render() {
9
+ const environment = createEnvironment();
10
+ return /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(Text, {
11
+ color: "gray"
12
+ }, "Checking the environment..."), /*#__PURE__*/ React.createElement(HealthReport, {
13
+ environment: environment
14
+ }));
15
+ }
16
+ }
17
+ DoctorCommand.paths = [
18
+ [
19
+ 'doctor'
20
+ ]
21
+ ];
22
+ DoctorCommand.usage = Command.Usage({
23
+ description: 'Check the health of the environment'
24
+ });
25
+
26
+ //# sourceMappingURL=DoctorCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../libs/cli/src/commands/DoctorCommand.tsx"],"sourcesContent":["import { Command } from 'clipanion';\nimport { Text } from 'ink';\nimport React from 'react';\nimport { createEnvironment } from '@/cli/environment/createEnvironment.js';\nimport { HealthReport } from './EnvironmentAwareCommand/components/HealthReport.js';\nimport { RenderableCommand } from './RenderableCommand.js';\n\nexport class DoctorCommand extends RenderableCommand {\n static override paths = [['doctor']];\n\n static override usage = Command.Usage({\n description: 'Check the health of the environment',\n });\n\n override render() {\n const environment = createEnvironment();\n\n return (\n <>\n <Text color=\"gray\">Checking the environment...</Text>\n <HealthReport environment={environment} />\n </>\n );\n }\n}\n"],"names":["Command","Text","React","createEnvironment","HealthReport","RenderableCommand","DoctorCommand","render","environment","color","paths","usage","Usage","description"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,OAAO,QAAQ,YAAY;AACpC,SAASC,IAAI,QAAQ,MAAM;AAC3B,OAAOC,WAAW,QAAQ;AAC1B,SAASC,iBAAiB,QAAQ,yCAAyC;AAC3E,SAASC,YAAY,QAAQ,uDAAuD;AACpF,SAASC,iBAAiB,QAAQ,yBAAyB;AAE3D,OAAO,MAAMC,sBAAsBD;IAOtBE,SAAS;QACd,MAAMC,cAAcL;QAEpB,qBACI,wDACI,oBAACF;YAAKQ,OAAM;WAAO,8CACnB,oBAACL;YAAaI,aAAaA;;IAGvC;AACJ;AAjBaF,cACOI,QAAQ;IAAC;QAAC;KAAS;CAAC;AAD3BJ,cAGOK,QAAQX,QAAQY,KAAK,CAAC;IAClCC,aAAa;AACjB"}
@@ -0,0 +1,9 @@
1
+ import { JSX } from 'react';
2
+ import { RenderableCommand } from '../../commands/RenderableCommand.js';
3
+ import { Environment } from '../../environment/dto/Environment.js';
4
+ export declare abstract class EnvironmentAwareCommand extends RenderableCommand {
5
+ private environment;
6
+ protected abstract renderWithEnvironment(environment: Environment): JSX.Element;
7
+ render(): JSX.Element;
8
+ execute(): Promise<void>;
9
+ }
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { HealthReport } from '../../commands/EnvironmentAwareCommand/components/HealthReport.js';
3
+ import { RenderableCommand } from '../../commands/RenderableCommand.js';
4
+ import { createEnvironment } from '../../environment/createEnvironment.js';
5
+ export class EnvironmentAwareCommand extends RenderableCommand {
6
+ render() {
7
+ if (!this.environment) {
8
+ throw new Error('Environment is not set');
9
+ }
10
+ return this.renderWithEnvironment(this.environment);
11
+ }
12
+ async execute() {
13
+ const environmentHealth = createEnvironment();
14
+ if (!environmentHealth.isHealthy) {
15
+ this.renderElement(/*#__PURE__*/ React.createElement(HealthReport, {
16
+ environment: environmentHealth
17
+ }));
18
+ return;
19
+ }
20
+ this.environment = environmentHealth.environment;
21
+ this.renderElement(this.render());
22
+ }
23
+ }
24
+
25
+ //# sourceMappingURL=EnvironmentAwareCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/cli/src/commands/EnvironmentAwareCommand/EnvironmentAwareCommand.tsx"],"sourcesContent":["import React, { JSX } from 'react';\nimport { HealthReport } from '@/cli/commands/EnvironmentAwareCommand/components/HealthReport.js';\nimport { RenderableCommand } from '@/cli/commands/RenderableCommand.js';\nimport { createEnvironment } from '@/cli/environment/createEnvironment.js';\nimport { Environment } from '@/cli/environment/dto/Environment.js';\n\nexport abstract class EnvironmentAwareCommand extends RenderableCommand {\n private environment: Environment | undefined;\n\n protected abstract renderWithEnvironment(\n environment: Environment\n ): JSX.Element;\n\n override render() {\n if (!this.environment) {\n throw new Error('Environment is not set');\n }\n\n return this.renderWithEnvironment(this.environment);\n }\n\n override async execute() {\n const environmentHealth = createEnvironment();\n\n if (!environmentHealth.isHealthy) {\n this.renderElement(\n <HealthReport environment={environmentHealth} />\n );\n\n return;\n }\n\n this.environment = environmentHealth.environment;\n\n this.renderElement(this.render());\n }\n}\n"],"names":["React","HealthReport","RenderableCommand","createEnvironment","EnvironmentAwareCommand","render","environment","Error","renderWithEnvironment","execute","environmentHealth","isHealthy","renderElement"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,WAAoB,QAAQ;AACnC,SAASC,YAAY,QAAQ,oEAAoE;AACjG,SAASC,iBAAiB,QAAQ,sCAAsC;AACxE,SAASC,iBAAiB,QAAQ,yCAAyC;AAG3E,OAAO,MAAeC,gCAAgCF;IAOzCG,SAAS;QACd,IAAI,CAAC,IAAI,CAACC,WAAW,EAAE;YACnB,MAAM,IAAIC,MAAM;QACpB;QAEA,OAAO,IAAI,CAACC,qBAAqB,CAAC,IAAI,CAACF,WAAW;IACtD;IAEA,MAAeG,UAAU;QACrB,MAAMC,oBAAoBP;QAE1B,IAAI,CAACO,kBAAkBC,SAAS,EAAE;YAC9B,IAAI,CAACC,aAAa,eACd,oBAACX;gBAAaK,aAAaI;;YAG/B;QACJ;QAEA,IAAI,CAACJ,WAAW,GAAGI,kBAAkBJ,WAAW;QAEhD,IAAI,CAACM,aAAa,CAAC,IAAI,CAACP,MAAM;IAClC;AACJ"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { EnvironmentHealthResult } from '../../../types.js';
3
+ interface Props {
4
+ environment: EnvironmentHealthResult;
5
+ }
6
+ export declare const HealthReport: ({ environment }: Props) => React.JSX.Element[];
7
+ export {};
@@ -0,0 +1,41 @@
1
+ import { StatusMessage } from '@inkjs/ui';
2
+ import { Text } from 'ink';
3
+ import React from 'react';
4
+ import { HealthCheckStatusType } from '../../../types.js';
5
+ const SuccessMessages = {
6
+ sdkPathKnown: {
7
+ [HealthCheckStatusType.Unknown]: 'SDK path status unknown',
8
+ [HealthCheckStatusType.Healthy]: (sdkPath)=>`SDK path found ("${sdkPath.path}")`,
9
+ [HealthCheckStatusType.Unhealthy]: 'SDK path not found'
10
+ }
11
+ };
12
+ const ColorMap = {
13
+ [HealthCheckStatusType.Healthy]: 'green',
14
+ [HealthCheckStatusType.Unhealthy]: 'red',
15
+ [HealthCheckStatusType.Unknown]: 'gray'
16
+ };
17
+ export const HealthReport = ({ environment })=>{
18
+ const { health } = environment;
19
+ return Object.keys(health).map((eachKey)=>{
20
+ const healthKey = eachKey;
21
+ const keyHealth = health[healthKey];
22
+ let variant = 'info';
23
+ let message = SuccessMessages[healthKey][HealthCheckStatusType.Unknown];
24
+ if (health[healthKey].healthStatus === HealthCheckStatusType.Unhealthy) {
25
+ message = SuccessMessages[healthKey][HealthCheckStatusType.Unhealthy];
26
+ variant = 'error';
27
+ }
28
+ if (health[healthKey].healthStatus === HealthCheckStatusType.Healthy) {
29
+ message = SuccessMessages[healthKey][HealthCheckStatusType.Healthy](health[healthKey].argument);
30
+ variant = 'success';
31
+ }
32
+ return /*#__PURE__*/ React.createElement(StatusMessage, {
33
+ key: healthKey,
34
+ variant: variant
35
+ }, /*#__PURE__*/ React.createElement(Text, {
36
+ color: ColorMap[keyHealth.healthStatus]
37
+ }, keyHealth.healthStatus === HealthCheckStatusType.Unhealthy && ' ', message));
38
+ });
39
+ };
40
+
41
+ //# sourceMappingURL=HealthReport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/cli/src/commands/EnvironmentAwareCommand/components/HealthReport.tsx"],"sourcesContent":["import { StatusMessage, StatusMessageProps } from '@inkjs/ui';\nimport { Text, TextProps } from 'ink';\nimport React from 'react';\nimport { PlaydateSdkPath } from '@/cli/environment/path/dto/PlaydateSdkPath.js';\nimport {\n EnvironmentHealth,\n EnvironmentHealthResult,\n HealthCheckStatusType,\n} from '@/cli/types.js';\n\ninterface Props {\n environment: EnvironmentHealthResult;\n}\n\nconst SuccessMessages = {\n sdkPathKnown: {\n [HealthCheckStatusType.Unknown]: 'SDK path status unknown',\n [HealthCheckStatusType.Healthy]: (sdkPath: PlaydateSdkPath) =>\n `SDK path found (\"${sdkPath.path}\")`,\n [HealthCheckStatusType.Unhealthy]: 'SDK path not found',\n },\n} as const;\n\nconst ColorMap = {\n [HealthCheckStatusType.Healthy]: 'green',\n [HealthCheckStatusType.Unhealthy]: 'red',\n [HealthCheckStatusType.Unknown]: 'gray',\n} satisfies {\n [key in HealthCheckStatusType]: TextProps['color'];\n};\n\nexport const HealthReport = ({ environment }: Props) => {\n const { health } = environment;\n return Object.keys(health).map((eachKey) => {\n const healthKey = eachKey as keyof EnvironmentHealth;\n const keyHealth = health[healthKey];\n\n let variant: StatusMessageProps['variant'] = 'info';\n let message: string =\n SuccessMessages[healthKey][HealthCheckStatusType.Unknown];\n\n if (\n health[healthKey].healthStatus === HealthCheckStatusType.Unhealthy\n ) {\n message =\n SuccessMessages[healthKey][HealthCheckStatusType.Unhealthy];\n variant = 'error';\n }\n\n if (health[healthKey].healthStatus === HealthCheckStatusType.Healthy) {\n message = SuccessMessages[healthKey][HealthCheckStatusType.Healthy](\n health[healthKey].argument\n );\n variant = 'success';\n }\n\n return (\n <StatusMessage key={healthKey} variant={variant}>\n <Text color={ColorMap[keyHealth.healthStatus]}>\n {keyHealth.healthStatus ===\n HealthCheckStatusType.Unhealthy && ' '}\n {message}\n </Text>\n </StatusMessage>\n );\n });\n};\n"],"names":["StatusMessage","Text","React","HealthCheckStatusType","SuccessMessages","sdkPathKnown","Unknown","Healthy","sdkPath","path","Unhealthy","ColorMap","HealthReport","environment","health","Object","keys","map","eachKey","healthKey","keyHealth","variant","message","healthStatus","argument","key","color"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,aAAa,QAA4B,YAAY;AAC9D,SAASC,IAAI,QAAmB,MAAM;AACtC,OAAOC,WAAW,QAAQ;AAE1B,SAGIC,qBAAqB,QAClB,iBAAiB;AAMxB,MAAMC,kBAAkB;IACpBC,cAAc;QACV,CAACF,sBAAsBG,OAAO,CAAC,EAAE;QACjC,CAACH,sBAAsBI,OAAO,CAAC,EAAE,CAACC,UAC9B,CAAC,iBAAiB,EAAEA,QAAQC,IAAI,CAAC,EAAE,CAAC;QACxC,CAACN,sBAAsBO,SAAS,CAAC,EAAE;IACvC;AACJ;AAEA,MAAMC,WAAW;IACb,CAACR,sBAAsBI,OAAO,CAAC,EAAE;IACjC,CAACJ,sBAAsBO,SAAS,CAAC,EAAE;IACnC,CAACP,sBAAsBG,OAAO,CAAC,EAAE;AACrC;AAIA,OAAO,MAAMM,eAAe,CAAC,EAAEC,WAAW,EAAS;IAC/C,MAAM,EAAEC,MAAM,EAAE,GAAGD;IACnB,OAAOE,OAAOC,IAAI,CAACF,QAAQG,GAAG,CAAC,CAACC;QAC5B,MAAMC,YAAYD;QAClB,MAAME,YAAYN,MAAM,CAACK,UAAU;QAEnC,IAAIE,UAAyC;QAC7C,IAAIC,UACAlB,eAAe,CAACe,UAAU,CAAChB,sBAAsBG,OAAO,CAAC;QAE7D,IACIQ,MAAM,CAACK,UAAU,CAACI,YAAY,KAAKpB,sBAAsBO,SAAS,EACpE;YACEY,UACIlB,eAAe,CAACe,UAAU,CAAChB,sBAAsBO,SAAS,CAAC;YAC/DW,UAAU;QACd;QAEA,IAAIP,MAAM,CAACK,UAAU,CAACI,YAAY,KAAKpB,sBAAsBI,OAAO,EAAE;YAClEe,UAAUlB,eAAe,CAACe,UAAU,CAAChB,sBAAsBI,OAAO,CAAC,CAC/DO,MAAM,CAACK,UAAU,CAACK,QAAQ;YAE9BH,UAAU;QACd;QAEA,qBACI,oBAACrB;YAAcyB,KAAKN;YAAWE,SAASA;yBACpC,oBAACpB;YAAKyB,OAAOf,QAAQ,CAACS,UAAUG,YAAY,CAAC;WACxCH,UAAUG,YAAY,KACnBpB,sBAAsBO,SAAS,IAAI,KACtCY;IAIjB;AACJ,EAAE"}
@@ -0,0 +1 @@
1
+ export * from './EnvironmentAwareCommand.js';
@@ -0,0 +1,3 @@
1
+ export * from './EnvironmentAwareCommand.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/cli/src/commands/EnvironmentAwareCommand/index.ts"],"sourcesContent":["export * from './EnvironmentAwareCommand.js';\n"],"names":[],"rangeMappings":"","mappings":"AAAA,cAAc,+BAA+B"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { RenderableCommand } from '../../commands/RenderableCommand.js';
3
+ export declare class GenerateTypesCommand extends RenderableCommand {
4
+ static paths: string[][];
5
+ static usage: import("clipanion").Usage;
6
+ output: string;
7
+ overwriteJson: boolean;
8
+ version: any;
9
+ render(): React.JSX.Element;
10
+ }
@@ -0,0 +1,45 @@
1
+ import { join } from 'node:path';
2
+ import * as process from 'node:process';
3
+ import { Command, Option } from 'clipanion';
4
+ import React from 'react';
5
+ import * as t from 'typanion';
6
+ import { RenderableCommand } from '../../commands/RenderableCommand.js';
7
+ import { PlaydateSdkVersionIdentifier } from '../../types.js';
8
+ import { GenerateTypes } from './components/GenerateTypes.js';
9
+ export class GenerateTypesCommand extends RenderableCommand {
10
+ render() {
11
+ const output = this.output.endsWith('.d.ts') ? this.output : join(this.output, 'playdate.d.ts');
12
+ return /*#__PURE__*/ React.createElement(GenerateTypes, {
13
+ output: output,
14
+ version: this.version,
15
+ overwriteJson: this.overwriteJson
16
+ });
17
+ }
18
+ constructor(...args){
19
+ super(...args);
20
+ this.output = Option.String('-o,--output', process.cwd(), {
21
+ description: `Where to generate the playdate.d.ts file. Defaults to the current working directory ("${process.cwd()}")`,
22
+ validator: t.isString()
23
+ });
24
+ this.overwriteJson = Option.Boolean('-j,--overwrite-json', false, {
25
+ description: 'Overwrite the JSON data file with the new data'
26
+ });
27
+ this.version = Option.String({
28
+ name: 'version',
29
+ validator: t.isOneOf([
30
+ t.isLiteral(PlaydateSdkVersionIdentifier.Latest),
31
+ t.matchesRegExp(/^[0-9]+\.[0-9]+\.[0-9]+$/)
32
+ ])
33
+ });
34
+ }
35
+ }
36
+ GenerateTypesCommand.paths = [
37
+ [
38
+ 'generate-types'
39
+ ]
40
+ ];
41
+ GenerateTypesCommand.usage = Command.Usage({
42
+ description: 'Generate types from the Playdate SDK documentation'
43
+ });
44
+
45
+ //# sourceMappingURL=GenerateTypesCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/cli/src/commands/GenerateTypes/GenerateTypesCommand.tsx"],"sourcesContent":["import { join } from 'node:path';\nimport * as process from 'node:process';\nimport { Command, Option } from 'clipanion';\nimport React from 'react';\nimport * as t from 'typanion';\nimport { AnyStrictValidator } from 'typanion';\nimport { RenderableCommand } from '@/cli/commands/RenderableCommand.js';\nimport { PlaydateSdkVersionIdentifier } from '@/cli/types.js';\nimport { GenerateTypes } from './components/GenerateTypes.js';\n\nexport class GenerateTypesCommand extends RenderableCommand {\n static override paths = [['generate-types']];\n static override usage = Command.Usage({\n description: 'Generate types from the Playdate SDK documentation',\n });\n\n output = Option.String('-o,--output', process.cwd(), {\n description: `Where to generate the playdate.d.ts file. Defaults to the current working directory (\"${process.cwd()}\")`,\n validator: t.isString(),\n });\n\n overwriteJson = Option.Boolean('-j,--overwrite-json', false, {\n description: 'Overwrite the JSON data file with the new data',\n });\n\n version = Option.String({\n name: 'version',\n validator: t.isOneOf([\n t.isLiteral(PlaydateSdkVersionIdentifier.Latest),\n t.matchesRegExp(/^[0-9]+\\.[0-9]+\\.[0-9]+$/) as AnyStrictValidator,\n ]),\n });\n\n override render() {\n const output = this.output.endsWith('.d.ts')\n ? this.output\n : join(this.output, 'playdate.d.ts');\n\n return (\n <GenerateTypes\n output={output}\n version={this.version}\n overwriteJson={this.overwriteJson}\n />\n );\n }\n}\n"],"names":["join","process","Command","Option","React","t","RenderableCommand","PlaydateSdkVersionIdentifier","GenerateTypes","GenerateTypesCommand","render","output","endsWith","version","overwriteJson","String","cwd","description","validator","isString","Boolean","name","isOneOf","isLiteral","Latest","matchesRegExp","paths","usage","Usage"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,IAAI,QAAQ,YAAY;AACjC,YAAYC,aAAa,eAAe;AACxC,SAASC,OAAO,EAAEC,MAAM,QAAQ,YAAY;AAC5C,OAAOC,WAAW,QAAQ;AAC1B,YAAYC,OAAO,WAAW;AAE9B,SAASC,iBAAiB,QAAQ,sCAAsC;AACxE,SAASC,4BAA4B,QAAQ,iBAAiB;AAC9D,SAASC,aAAa,QAAQ,gCAAgC;AAE9D,OAAO,MAAMC,6BAA6BH;IAuB7BI,SAAS;QACd,MAAMC,SAAS,IAAI,CAACA,MAAM,CAACC,QAAQ,CAAC,WAC9B,IAAI,CAACD,MAAM,GACXX,KAAK,IAAI,CAACW,MAAM,EAAE;QAExB,qBACI,oBAACH;YACGG,QAAQA;YACRE,SAAS,IAAI,CAACA,OAAO;YACrBC,eAAe,IAAI,CAACA,aAAa;;IAG7C;;;aA7BAH,SAASR,OAAOY,MAAM,CAAC,eAAed,QAAQe,GAAG,IAAI;YACjDC,aAAa,CAAC,sFAAsF,EAAEhB,QAAQe,GAAG,GAAG,EAAE,CAAC;YACvHE,WAAWb,EAAEc,QAAQ;QACzB;aAEAL,gBAAgBX,OAAOiB,OAAO,CAAC,uBAAuB,OAAO;YACzDH,aAAa;QACjB;aAEAJ,UAAUV,OAAOY,MAAM,CAAC;YACpBM,MAAM;YACNH,WAAWb,EAAEiB,OAAO,CAAC;gBACjBjB,EAAEkB,SAAS,CAAChB,6BAA6BiB,MAAM;gBAC/CnB,EAAEoB,aAAa,CAAC;aACnB;QACL;;AAeJ;AApCahB,qBACOiB,QAAQ;IAAC;QAAC;KAAiB;CAAC;AADnCjB,qBAEOkB,QAAQzB,QAAQ0B,KAAK,CAAC;IAClCX,aAAa;AACjB"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { PlaydateSdkVersion } from '../../../types.js';
3
+ interface Props {
4
+ output: string;
5
+ version: PlaydateSdkVersion;
6
+ overwriteJson: boolean;
7
+ }
8
+ export declare const GenerateTypes: ({ output, version, overwriteJson }: Props) => React.JSX.Element;
9
+ export {};
@@ -0,0 +1,36 @@
1
+ import React, { useMemo } from 'react';
2
+ import { useFetchHtml } from '../../../commands/GenerateTypes/hooks/useFetchHtml.js';
3
+ import { useGenerateTypeFile } from '../../../commands/GenerateTypes/hooks/useGenerateTypeFile.js';
4
+ import { useGetVersion } from '../../../commands/GenerateTypes/hooks/useGetVersion.js';
5
+ import { useParseDocumentation } from '../../../commands/GenerateTypes/hooks/useParseDocumentation.js';
6
+ import { CheckList } from '../../../components/CheckList/index.js';
7
+ export const GenerateTypes = ({ output, version, overwriteJson })=>{
8
+ const { typeProvider, fetchedVersion, getVersion } = useGetVersion(version);
9
+ const { html, fetchHtml } = useFetchHtml(fetchedVersion);
10
+ const { definitions, parseDocumentation } = useParseDocumentation(html, version);
11
+ const { generateTypeFile } = useGenerateTypeFile(output, definitions, typeProvider);
12
+ const items = useMemo(()=>{
13
+ return [
14
+ getVersion,
15
+ fetchHtml,
16
+ parseDocumentation,
17
+ generateTypeFile
18
+ ];
19
+ }, [
20
+ fetchedVersion,
21
+ html,
22
+ definitions,
23
+ typeProvider
24
+ ]);
25
+ return /*#__PURE__*/ React.createElement(CheckList, {
26
+ items: items,
27
+ onFinish: ()=>{
28
+ if (overwriteJson) {
29
+ typeProvider == null ? void 0 : typeProvider.save();
30
+ }
31
+ process.exit();
32
+ }
33
+ });
34
+ };
35
+
36
+ //# sourceMappingURL=GenerateTypes.js.map
@@ -0,0 +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 { 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"}
@@ -0,0 +1 @@
1
+ export declare const PlaydateSdkUrl = "https://sdk.play.date/";
@@ -0,0 +1,3 @@
1
+ export const PlaydateSdkUrl = 'https://sdk.play.date/';
2
+
3
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/cli/src/commands/GenerateTypes/constants.ts"],"sourcesContent":["export const PlaydateSdkUrl = 'https://sdk.play.date/';\n"],"names":["PlaydateSdkUrl"],"rangeMappings":"","mappings":"AAAA,OAAO,MAAMA,iBAAiB,yBAAyB"}
@@ -0,0 +1,2 @@
1
+ import { ApiDefinitions, FunctionDescription, PropertyDescription, FunctionTypeOverrideMap } from '../../../types.js';
2
+ export declare const getApiDefinitions: (functions: FunctionDescription[], properties: PropertyDescription[], functionTypeOverride: FunctionTypeOverrideMap) => ApiDefinitions;
@@ -0,0 +1,39 @@
1
+ export const getApiDefinitions = (functions, properties, functionTypeOverride)=>{
2
+ const global = {
3
+ functions: [],
4
+ methods: [],
5
+ properties: [],
6
+ namespaces: {}
7
+ };
8
+ const getOrCreateNamespace = (path, root)=>{
9
+ return path.reduce((currentNamespace, ns)=>{
10
+ if (!currentNamespace.namespaces[ns]) {
11
+ currentNamespace.namespaces[ns] = {
12
+ functions: [],
13
+ methods: [],
14
+ properties: [],
15
+ namespaces: {}
16
+ };
17
+ }
18
+ return currentNamespace.namespaces[ns];
19
+ }, root);
20
+ };
21
+ functions.forEach((func)=>{
22
+ var _functionTypeOverride_func_signature;
23
+ const targetNamespace = getOrCreateNamespace(func.namespaces, global);
24
+ if (func.hasSelf || ((_functionTypeOverride_func_signature = functionTypeOverride[func.signature]) == null ? void 0 : _functionTypeOverride_func_signature.isMethod)) {
25
+ targetNamespace.methods.push(func);
26
+ } else {
27
+ targetNamespace.functions.push(func);
28
+ }
29
+ });
30
+ properties.forEach((prop)=>{
31
+ const targetNamespace = getOrCreateNamespace(prop.namespaces, global);
32
+ targetNamespace.properties.push(prop);
33
+ });
34
+ return {
35
+ global
36
+ };
37
+ };
38
+
39
+ //# sourceMappingURL=getApiDefinitions.js.map
@@ -0,0 +1 @@
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,5 @@
1
+ import { FunctionDescription, PropertyDescription } from '../../../types.js';
2
+ export declare const getDescriptionsFromHtml: (html: string, version: string) => {
3
+ functions: FunctionDescription[];
4
+ properties: PropertyDescription[];
5
+ };