crankscript 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +25 -25
- package/src/commands/DoctorCommand.js +1 -1
- package/src/commands/EnvironmentAwareCommand/EnvironmentAwareCommand.d.ts +2 -2
- package/src/commands/EnvironmentAwareCommand/EnvironmentAwareCommand.js +3 -3
- package/src/commands/EnvironmentAwareCommand/components/HealthReport.d.ts +1 -1
- package/src/commands/EnvironmentAwareCommand/components/HealthReport.js +1 -1
- package/src/commands/GenerateTypes/GenerateTypesCommand.d.ts +2 -1
- package/src/commands/GenerateTypes/GenerateTypesCommand.js +7 -3
- package/src/commands/GenerateTypes/GenerateTypesCommand.js.map +1 -1
- package/src/commands/GenerateTypes/components/GenerateTypes.d.ts +3 -2
- package/src/commands/GenerateTypes/components/GenerateTypes.js +17 -11
- package/src/commands/GenerateTypes/components/GenerateTypes.js.map +1 -1
- package/src/commands/GenerateTypes/fn/generateFunction.d.ts +4 -0
- package/src/commands/GenerateTypes/fn/generateFunction.js +28 -0
- package/src/commands/GenerateTypes/fn/generateFunction.js.map +1 -0
- package/src/commands/GenerateTypes/fn/generateNamespace.d.ts +4 -3
- package/src/commands/GenerateTypes/fn/generateNamespace.js +68 -21
- package/src/commands/GenerateTypes/fn/generateNamespace.js.map +1 -1
- package/src/commands/GenerateTypes/fn/getApiDefinitions.d.ts +2 -11
- package/src/commands/GenerateTypes/fn/getApiDefinitions.js +26 -9
- package/src/commands/GenerateTypes/fn/getApiDefinitions.js.map +1 -1
- package/src/commands/GenerateTypes/fn/getDescriptionsFromHtml.d.ts +5 -0
- package/src/commands/GenerateTypes/fn/getDescriptionsFromHtml.js +75 -0
- package/src/commands/GenerateTypes/fn/getDescriptionsFromHtml.js.map +1 -0
- package/src/commands/GenerateTypes/fn/parseFunctionSignature.d.ts +1 -1
- package/src/commands/GenerateTypes/fn/parseFunctionSignature.js +4 -6
- package/src/commands/GenerateTypes/fn/parseFunctionSignature.js.map +1 -1
- package/src/commands/GenerateTypes/hooks/useFetchHtml.js +1 -1
- package/src/commands/GenerateTypes/hooks/useGenerateTypeFile.d.ts +3 -2
- package/src/commands/GenerateTypes/hooks/useGenerateTypeFile.js +15 -24
- package/src/commands/GenerateTypes/hooks/useGenerateTypeFile.js.map +1 -1
- package/src/commands/GenerateTypes/hooks/useGetVersion.d.ts +11 -1
- package/src/commands/GenerateTypes/hooks/useGetVersion.js +7 -3
- package/src/commands/GenerateTypes/hooks/useGetVersion.js.map +1 -1
- package/src/commands/GenerateTypes/hooks/useParseDocumentation.d.ts +3 -12
- package/src/commands/GenerateTypes/hooks/useParseDocumentation.js +4 -4
- package/src/commands/GenerateTypes/hooks/useParseDocumentation.js.map +1 -1
- package/src/commands/GenerateTypes/utils/createTypeProvider.d.ts +12 -0
- package/src/commands/GenerateTypes/utils/createTypeProvider.js +141 -0
- package/src/commands/GenerateTypes/utils/createTypeProvider.js.map +1 -0
- package/src/components/CheckList/CheckList.d.ts +1 -1
- package/src/components/CheckList/CheckList.js +1 -2
- package/src/components/CheckList/CheckList.js.map +1 -1
- package/src/components/CheckList/Item.d.ts +1 -1
- package/src/components/CheckList/Item.js +1 -0
- package/src/components/CheckList/Item.js.map +1 -1
- package/src/constants.d.ts +2 -0
- package/src/constants.js +4 -0
- package/src/constants.js.map +1 -1
- package/src/index.js +3 -3
- package/src/index.js.map +1 -1
- package/src/types.d.ts +36 -5
- package/src/types.js.map +1 -1
- package/src/utils/dirname.d.ts +1 -1
- package/src/utils/dirname.js +2 -3
- package/src/utils/dirname.js.map +1 -1
- package/src/commands/GenerateTypes/fn/getFunctionDescriptionsFromHtml.d.ts +0 -2
- package/src/commands/GenerateTypes/fn/getFunctionDescriptionsFromHtml.js +0 -37
- package/src/commands/GenerateTypes/fn/getFunctionDescriptionsFromHtml.js.map +0 -1
- package/src/commands/GenerateTypes/utils/playdateConstants.d.ts +0 -9
- package/src/commands/GenerateTypes/utils/playdateConstants.js +0 -134
- package/src/commands/GenerateTypes/utils/playdateConstants.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../libs/cli/src/components/CheckList/Item.tsx"],"sourcesContent":["import {\n StatusMessage,\n StatusMessageProps,\n Spinner,\n extendTheme,\n defaultTheme,\n ThemeProvider,\n} from '@inkjs/ui';\nimport { Text, TextProps } from 'ink';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { CheckListItem } from '@/cli/types.js';\n\nexport interface ItemProps<TResult> {\n item: CheckListItem<TResult>;\n start: boolean;\n}\n\n// todo: possibly extract this\nconst SpinnerTheme = extendTheme(defaultTheme, {\n components: {\n Spinner: {\n styles: {\n frame: (): TextProps => ({\n color: 'yellowBright',\n }),\n label: (): TextProps => ({\n color: 'yellowBright',\n }),\n },\n },\n },\n});\n\nexport const Item = <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 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 (\n <ThemeProvider theme={SpinnerTheme}>\n <Spinner label={` ${message}`} />\n </ThemeProvider>\n );\n }\n\n return (\n <StatusMessage variant={variant}>\n <Text\n bold={!isWaiting}\n color={\n isRunning\n ? 'yellow'\n : isWaiting\n ? 'gray'\n : failedReason\n ? 'red'\n : 'green'\n }\n >\n {message}{' '}\n {couldStartButNotReady &&\n `— not ready yet${'.'.repeat(dotCount)}`}\n </Text>\n </StatusMessage>\n );\n};\n"],"names":["StatusMessage","Spinner","extendTheme","defaultTheme","ThemeProvider","Text","React","useEffect","useRef","useState","SpinnerTheme","components","styles","frame","color","label","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","message","variant","theme","bold","repeat"],"rangeMappings":"
|
1
|
+
{"version":3,"sources":["../../../../../../libs/cli/src/components/CheckList/Item.tsx"],"sourcesContent":["import {\n StatusMessage,\n StatusMessageProps,\n Spinner,\n extendTheme,\n defaultTheme,\n ThemeProvider,\n} from '@inkjs/ui';\nimport { Text, TextProps } from 'ink';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { CheckListItem } from '@/cli/types.js';\n\nexport interface ItemProps<TResult> {\n item: CheckListItem<TResult>;\n start: boolean;\n}\n\n// todo: possibly extract this\nconst SpinnerTheme = extendTheme(defaultTheme, {\n components: {\n Spinner: {\n styles: {\n frame: (): TextProps => ({\n color: 'yellowBright',\n }),\n label: (): TextProps => ({\n color: 'yellowBright',\n }),\n },\n },\n },\n});\n\nexport const Item = <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 (\n <ThemeProvider theme={SpinnerTheme}>\n <Spinner label={` ${message}`} />\n </ThemeProvider>\n );\n }\n\n return (\n <StatusMessage variant={variant}>\n <Text\n bold={!isWaiting}\n color={\n isRunning\n ? 'yellow'\n : isWaiting\n ? 'gray'\n : failedReason\n ? 'red'\n : 'green'\n }\n >\n {message}{' '}\n {couldStartButNotReady &&\n `— not ready yet${'.'.repeat(dotCount)}`}\n </Text>\n </StatusMessage>\n );\n};\n"],"names":["StatusMessage","Spinner","extendTheme","defaultTheme","ThemeProvider","Text","React","useEffect","useRef","useState","SpinnerTheme","components","styles","frame","color","label","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","theme","bold","repeat"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
package/src/constants.d.ts
CHANGED
package/src/constants.js
CHANGED
@@ -1,8 +1,12 @@
|
|
1
|
+
import { join } from 'node:path';
|
2
|
+
import { __dirname } from './utils/dirname.js';
|
1
3
|
export const CrankscriptConfigurationFileName = 'crankscript.json';
|
2
4
|
export const TypescriptReservedNamed = [
|
3
5
|
'delete',
|
4
6
|
'new',
|
5
7
|
'function'
|
6
8
|
];
|
9
|
+
export const RootFolder = join(__dirname, '..', '..');
|
10
|
+
export const DataFolder = join(RootFolder, 'src', 'data');
|
7
11
|
|
8
12
|
//# sourceMappingURL=constants.js.map
|
package/src/constants.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../libs/cli/src/constants.ts"],"sourcesContent":["
|
1
|
+
{"version":3,"sources":["../../../../libs/cli/src/constants.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { __dirname } from './utils/dirname.js';\n\nexport const CrankscriptConfigurationFileName = 'crankscript.json';\nexport const TypescriptReservedNamed = ['delete', 'new', 'function'];\nexport const RootFolder = join(__dirname, '..', '..');\nexport const DataFolder = join(RootFolder, 'src', 'data');\n"],"names":["join","__dirname","CrankscriptConfigurationFileName","TypescriptReservedNamed","RootFolder","DataFolder"],"rangeMappings":";;;;;;;;;","mappings":"AAAA,SAASA,IAAI,QAAQ,YAAY;AACjC,SAASC,SAAS,QAAQ,qBAAqB;AAE/C,OAAO,MAAMC,mCAAmC,mBAAmB;AACnE,OAAO,MAAMC,0BAA0B;IAAC;IAAU;IAAO;CAAW,CAAC;AACrE,OAAO,MAAMC,aAAaJ,KAAKC,WAAW,MAAM,MAAM;AACtD,OAAO,MAAMI,aAAaL,KAAKI,YAAY,OAAO,QAAQ"}
|
package/src/index.js
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
import { readFileSync } from 'fs';
|
3
3
|
import { join } from 'node:path';
|
4
4
|
import { Cli } from 'clipanion';
|
5
|
-
import { DoctorCommand } from '
|
6
|
-
import { GenerateTypesCommand } from '
|
7
|
-
import { RootFolder } from '
|
5
|
+
import { DoctorCommand } from './commands/DoctorCommand.js';
|
6
|
+
import { GenerateTypesCommand } from './commands/GenerateTypes/GenerateTypesCommand.js';
|
7
|
+
import { RootFolder } from './constants.js';
|
8
8
|
const packageJsonContents = readFileSync(join(RootFolder, 'package.json'), 'utf-8');
|
9
9
|
const packageJson = JSON.parse(packageJsonContents);
|
10
10
|
const args = process.argv.slice(2);
|
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 { DoctorCommand } from '@/cli/commands/DoctorCommand.js';\nimport { GenerateTypesCommand } from '@/cli/commands/GenerateTypes/GenerateTypesCommand.js';\nimport { RootFolder } from '@/cli/
|
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 { DoctorCommand } from '@/cli/commands/DoctorCommand.js';\nimport { GenerateTypesCommand } from '@/cli/commands/GenerateTypes/GenerateTypesCommand.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(GenerateTypesCommand);\ncli.runExit(args);\n"],"names":["readFileSync","join","Cli","DoctorCommand","GenerateTypesCommand","RootFolder","packageJsonContents","packageJson","JSON","parse","args","process","argv","slice","cli","binaryLabel","binaryName","binaryVersion","version","register","runExit"],"rangeMappings":";;;;;;;;;;;;;;;;;","mappings":";AAEA,SAASA,YAAY,QAAQ,KAAK;AAClC,SAASC,IAAI,QAAQ,YAAY;AACjC,SAASC,GAAG,QAAQ,YAAY;AAChC,SAASC,aAAa,QAAQ,kCAAkC;AAChE,SAASC,oBAAoB,QAAQ,uDAAuD;AAC5F,SAASC,UAAU,QAAQ,qBAAqB;AAEhD,MAAMC,sBAAsBN,aACxBC,KAAKI,YAAY,iBACjB;AAEJ,MAAME,cAAcC,KAAKC,KAAK,CAACH;AAE/B,MAAMI,OAAOC,QAAQC,IAAI,CAACC,KAAK,CAAC;AAEhC,MAAMC,MAAM,IAAIZ,IAAI;IAChBa,aAAa;IACbC,YAAY;IACZC,eAAeV,YAAYW,OAAO;AACtC;AAEAJ,IAAIK,QAAQ,CAAChB;AACbW,IAAIK,QAAQ,CAACf;AACbU,IAAIM,OAAO,CAACV"}
|
package/src/types.d.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
1
|
+
import { FunctionDeclarationStructure, MethodSignatureStructure, ParameterDeclarationStructure } from 'ts-morph';
|
2
|
+
import { Environment } from './environment/dto/Environment.js';
|
3
|
+
import { PlaydateSdkPath } from './environment/path/dto/PlaydateSdkPath.js';
|
3
4
|
export declare enum PlaydateSdkVersionIdentifier {
|
4
5
|
Latest = "latest"
|
5
6
|
}
|
@@ -38,9 +39,15 @@ export type CheckListItem<TResult> = {
|
|
38
39
|
export interface ParameterDescription {
|
39
40
|
name: string;
|
40
41
|
required: boolean;
|
41
|
-
|
42
|
+
}
|
43
|
+
export interface PropertyDescription {
|
44
|
+
signature: string;
|
45
|
+
name: string;
|
46
|
+
namespaces: string[];
|
47
|
+
docs: string;
|
42
48
|
}
|
43
49
|
export interface FunctionDescription {
|
50
|
+
signature: string;
|
44
51
|
name: string;
|
45
52
|
namespaces: string[];
|
46
53
|
parameters: ParameterDescription[];
|
@@ -58,7 +65,8 @@ export interface ConstantDescription {
|
|
58
65
|
}
|
59
66
|
export interface PlaydateNamespace {
|
60
67
|
functions: FunctionDescription[];
|
61
|
-
|
68
|
+
methods: FunctionDescription[];
|
69
|
+
properties: PropertyDescription[];
|
62
70
|
}
|
63
71
|
export interface PlaydateType {
|
64
72
|
methods: FunctionDescription[];
|
@@ -66,5 +74,28 @@ export interface PlaydateType {
|
|
66
74
|
export interface ApiDefinitions {
|
67
75
|
namespaces: Record<string, PlaydateNamespace>;
|
68
76
|
types: Record<string, PlaydateType>;
|
69
|
-
constants: ConstantDescription[];
|
70
77
|
}
|
78
|
+
export interface ParameterDetails {
|
79
|
+
name: string;
|
80
|
+
type: string;
|
81
|
+
overrideOptions?: Partial<Omit<ParameterDeclarationStructure, 'kind' | 'name' | 'type'>>;
|
82
|
+
}
|
83
|
+
export interface PropertyDetails {
|
84
|
+
signature: string;
|
85
|
+
type: string;
|
86
|
+
isStatic?: boolean;
|
87
|
+
isReadOnly?: boolean;
|
88
|
+
}
|
89
|
+
export interface FunctionDetails {
|
90
|
+
signature: string;
|
91
|
+
parameters: ParameterDetails[];
|
92
|
+
returnType: string;
|
93
|
+
overrideParameters?: boolean;
|
94
|
+
overrideOptions?: Partial<FunctionDeclarationStructure | MethodSignatureStructure>;
|
95
|
+
}
|
96
|
+
export type TypeProviderData = {
|
97
|
+
globalStatements: string[];
|
98
|
+
statements: string[];
|
99
|
+
properties: Record<string, PropertyDetails>;
|
100
|
+
functions: Record<string, FunctionDetails>;
|
101
|
+
};
|
package/src/types.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../libs/cli/src/types.ts"],"sourcesContent":["import { Environment } from '@/cli/environment/dto/Environment.js';\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
|
1
|
+
{"version":3,"sources":["../../../../libs/cli/src/types.ts"],"sourcesContent":["import {\n FunctionDeclarationStructure,\n MethodSignatureStructure,\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 ConstantDescription {\n name: string;\n docs: string;\n values: {\n name: string;\n value: number;\n docs: string;\n }[];\n}\n\nexport interface PlaydateNamespace {\n functions: FunctionDescription[];\n methods: FunctionDescription[];\n properties: PropertyDescription[];\n}\n\nexport interface PlaydateType {\n methods: FunctionDescription[];\n}\n\nexport interface ApiDefinitions {\n namespaces: Record<string, PlaydateNamespace>;\n types: Record<string, PlaydateType>;\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 | MethodSignatureStructure\n >;\n}\n\nexport type TypeProviderData = {\n globalStatements: string[];\n statements: string[];\n properties: Record<string, PropertyDetails>;\n functions: Record<string, FunctionDetails>;\n};\n"],"names":["PlaydateSdkVersionIdentifier","HealthCheckStatusType"],"rangeMappings":";;;;;;;;;","mappings":";UAQYA;;GAAAA,iCAAAA;;UAiBAC;;;;GAAAA,0BAAAA"}
|
package/src/utils/dirname.d.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export declare const
|
1
|
+
export declare const __dirname: string;
|
package/src/utils/dirname.js
CHANGED
@@ -1,6 +1,5 @@
|
|
1
|
-
import { dirname
|
1
|
+
import { dirname } from 'node:path';
|
2
2
|
import { fileURLToPath } from 'node:url';
|
3
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
4
|
-
export const RootFolder = join(__dirname, '..', '..');
|
3
|
+
export const __dirname = dirname(fileURLToPath(import.meta.url));
|
5
4
|
|
6
5
|
//# sourceMappingURL=dirname.js.map
|
package/src/utils/dirname.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../libs/cli/src/utils/dirname.ts"],"sourcesContent":["import { dirname
|
1
|
+
{"version":3,"sources":["../../../../../libs/cli/src/utils/dirname.ts"],"sourcesContent":["import { dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nexport const __dirname = dirname(fileURLToPath(import.meta.url));\n"],"names":["dirname","fileURLToPath","__dirname","url"],"rangeMappings":";;","mappings":"AAAA,SAASA,OAAO,QAAQ,YAAY;AACpC,SAASC,aAAa,QAAQ,WAAW;AAEzC,OAAO,MAAMC,YAAYF,QAAQC,cAAc,YAAYE,GAAG,GAAG"}
|
@@ -1,37 +0,0 @@
|
|
1
|
-
import { _ as _extends } from "@swc/helpers/_/_extends";
|
2
|
-
import { load } from 'cheerio';
|
3
|
-
import { PlaydateSdkUrl } from '@/cli/commands/GenerateTypes/constants.js';
|
4
|
-
import { parseFunctionSignature } from '@/cli/commands/GenerateTypes/fn/parseFunctionSignature.js';
|
5
|
-
export const getFunctionDescriptionsFromHtml = (html, version)=>{
|
6
|
-
const $ = load(html);
|
7
|
-
const allSignatures = $('[id^="m-"], [id^="f-"], [id^="c-"]').toArray();
|
8
|
-
const result = [];
|
9
|
-
for (const element of allSignatures){
|
10
|
-
var _$_attr;
|
11
|
-
const id = (_$_attr = $(element).attr('id')) != null ? _$_attr : '';
|
12
|
-
var _$_find_text;
|
13
|
-
const titles = ((_$_find_text = $(element).find('.title').text()) != null ? _$_find_text : '').split(' ');
|
14
|
-
var _$_find_html;
|
15
|
-
let docsString = ((_$_find_html = $(element).find('.content').html()) != null ? _$_find_html : '').trim();
|
16
|
-
if (docsString.startsWith('<div class="paragraph">')) {
|
17
|
-
docsString = docsString.slice('<div class="paragraph">'.length);
|
18
|
-
}
|
19
|
-
if (docsString.endsWith('</div>')) {
|
20
|
-
docsString = docsString.slice(0, docsString.length - '</div>'.length);
|
21
|
-
}
|
22
|
-
docsString = docsString.replace(/<a href="#/g, '<a href="' + PlaydateSdkUrl + version + '#');
|
23
|
-
const docs = id ? `${docsString}\n[Read more](${PlaydateSdkUrl}${version}#${id})` : docsString;
|
24
|
-
for (const title of titles){
|
25
|
-
try {
|
26
|
-
result.push(_extends({}, parseFunctionSignature(title), {
|
27
|
-
docs
|
28
|
-
}));
|
29
|
-
} catch (e) {
|
30
|
-
// skip
|
31
|
-
}
|
32
|
-
}
|
33
|
-
}
|
34
|
-
return result;
|
35
|
-
};
|
36
|
-
|
37
|
-
//# sourceMappingURL=getFunctionDescriptionsFromHtml.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/GenerateTypes/fn/getFunctionDescriptionsFromHtml.ts"],"sourcesContent":["import { load } from 'cheerio';\nimport { PlaydateSdkUrl } from '@/cli/commands/GenerateTypes/constants.js';\nimport { parseFunctionSignature } from '@/cli/commands/GenerateTypes/fn/parseFunctionSignature.js';\nimport { FunctionDescription } from '@/cli/types.js';\n\nexport const getFunctionDescriptionsFromHtml = (\n html: string,\n version: string\n) => {\n const $ = load(html);\n\n const allSignatures = $('[id^=\"m-\"], [id^=\"f-\"], [id^=\"c-\"]').toArray();\n const result: FunctionDescription[] = [];\n\n for (const element of allSignatures) {\n const id = $(element).attr('id') ?? '';\n const titles = ($(element).find('.title').text() ?? '').split(' ');\n let docsString = ($(element).find('.content').html() ?? '').trim();\n\n if (docsString.startsWith('<div class=\"paragraph\">')) {\n docsString = docsString.slice('<div class=\"paragraph\">'.length);\n }\n\n if (docsString.endsWith('</div>')) {\n docsString = docsString.slice(\n 0,\n docsString.length - '</div>'.length\n );\n }\n\n docsString = docsString.replace(\n /<a href=\"#/g,\n '<a href=\"' + PlaydateSdkUrl + version + '#'\n );\n\n const docs = id\n ? `${docsString}\\n[Read more](${PlaydateSdkUrl}${version}#${id})`\n : docsString;\n\n for (const title of titles) {\n try {\n result.push({ ...parseFunctionSignature(title), docs });\n } catch (e) {\n // skip\n }\n }\n }\n\n return result;\n};\n"],"names":["load","PlaydateSdkUrl","parseFunctionSignature","getFunctionDescriptionsFromHtml","html","version","$","allSignatures","toArray","result","element","id","attr","titles","find","text","split","docsString","trim","startsWith","slice","length","endsWith","replace","docs","title","push","e"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";AAAA,SAASA,IAAI,QAAQ,UAAU;AAC/B,SAASC,cAAc,QAAQ,4CAA4C;AAC3E,SAASC,sBAAsB,QAAQ,4DAA4D;AAGnG,OAAO,MAAMC,kCAAkC,CAC3CC,MACAC;IAEA,MAAMC,IAAIN,KAAKI;IAEf,MAAMG,gBAAgBD,EAAE,sCAAsCE,OAAO;IACrE,MAAMC,SAAgC,EAAE;IAExC,KAAK,MAAMC,WAAWH,cAAe;YACtBD;QAAX,MAAMK,KAAKL,CAAAA,UAAAA,EAAEI,SAASE,IAAI,CAAC,iBAAhBN,UAAyB;YACpBA;QAAhB,MAAMO,SAAS,AAACP,CAAAA,CAAAA,eAAAA,EAAEI,SAASI,IAAI,CAAC,UAAUC,IAAI,cAA9BT,eAAoC,EAAC,EAAGU,KAAK,CAAC;YAC5CV;QAAlB,IAAIW,aAAa,AAACX,CAAAA,CAAAA,eAAAA,EAAEI,SAASI,IAAI,CAAC,YAAYV,IAAI,cAAhCE,eAAsC,EAAC,EAAGY,IAAI;QAEhE,IAAID,WAAWE,UAAU,CAAC,4BAA4B;YAClDF,aAAaA,WAAWG,KAAK,CAAC,0BAA0BC,MAAM;QAClE;QAEA,IAAIJ,WAAWK,QAAQ,CAAC,WAAW;YAC/BL,aAAaA,WAAWG,KAAK,CACzB,GACAH,WAAWI,MAAM,GAAG,SAASA,MAAM;QAE3C;QAEAJ,aAAaA,WAAWM,OAAO,CAC3B,eACA,cAActB,iBAAiBI,UAAU;QAG7C,MAAMmB,OAAOb,KACP,CAAC,EAAEM,WAAW,cAAc,EAAEhB,eAAe,EAAEI,QAAQ,CAAC,EAAEM,GAAG,CAAC,CAAC,GAC/DM;QAEN,KAAK,MAAMQ,SAASZ,OAAQ;YACxB,IAAI;gBACAJ,OAAOiB,IAAI,CAAC,aAAKxB,uBAAuBuB;oBAAQD;;YACpD,EAAE,OAAOG,GAAG;YACR,OAAO;YACX;QACJ;IACJ;IAEA,OAAOlB;AACX,EAAE"}
|
@@ -1,134 +0,0 @@
|
|
1
|
-
export const playdateConstants = [
|
2
|
-
{
|
3
|
-
name: 'PlaydateColor',
|
4
|
-
values: [
|
5
|
-
{
|
6
|
-
name: 'Black',
|
7
|
-
value: 0,
|
8
|
-
docs: ''
|
9
|
-
},
|
10
|
-
{
|
11
|
-
name: 'White',
|
12
|
-
value: 1,
|
13
|
-
docs: ''
|
14
|
-
},
|
15
|
-
{
|
16
|
-
name: 'Clear',
|
17
|
-
value: 2,
|
18
|
-
docs: ''
|
19
|
-
},
|
20
|
-
{
|
21
|
-
name: 'XOR',
|
22
|
-
value: 4,
|
23
|
-
docs: ''
|
24
|
-
}
|
25
|
-
],
|
26
|
-
docs: ''
|
27
|
-
},
|
28
|
-
{
|
29
|
-
name: 'PlaydateImageFlip',
|
30
|
-
values: [
|
31
|
-
{
|
32
|
-
name: 'Unflipped',
|
33
|
-
value: 0,
|
34
|
-
docs: ''
|
35
|
-
},
|
36
|
-
{
|
37
|
-
name: 'FlippedX',
|
38
|
-
value: 1,
|
39
|
-
docs: ''
|
40
|
-
},
|
41
|
-
{
|
42
|
-
name: 'FlippedY',
|
43
|
-
value: 2,
|
44
|
-
docs: ''
|
45
|
-
},
|
46
|
-
{
|
47
|
-
name: 'FlippedXY',
|
48
|
-
value: 4,
|
49
|
-
docs: ''
|
50
|
-
}
|
51
|
-
],
|
52
|
-
docs: ''
|
53
|
-
},
|
54
|
-
{
|
55
|
-
name: 'PlaydatePolygonFill',
|
56
|
-
values: [
|
57
|
-
{
|
58
|
-
name: 'NonZero',
|
59
|
-
value: 1,
|
60
|
-
docs: ''
|
61
|
-
},
|
62
|
-
{
|
63
|
-
name: 'EvenOdd',
|
64
|
-
value: 2,
|
65
|
-
docs: ''
|
66
|
-
}
|
67
|
-
],
|
68
|
-
docs: ''
|
69
|
-
},
|
70
|
-
{
|
71
|
-
name: 'PlaydateButton',
|
72
|
-
values: [
|
73
|
-
{
|
74
|
-
name: 'Left',
|
75
|
-
value: 1,
|
76
|
-
docs: ''
|
77
|
-
},
|
78
|
-
{
|
79
|
-
name: 'Right',
|
80
|
-
value: 2,
|
81
|
-
docs: ''
|
82
|
-
},
|
83
|
-
{
|
84
|
-
name: 'Up',
|
85
|
-
value: 4,
|
86
|
-
docs: ''
|
87
|
-
},
|
88
|
-
{
|
89
|
-
name: 'Down',
|
90
|
-
value: 8,
|
91
|
-
docs: ''
|
92
|
-
},
|
93
|
-
{
|
94
|
-
name: 'B',
|
95
|
-
value: 16,
|
96
|
-
docs: ''
|
97
|
-
},
|
98
|
-
{
|
99
|
-
name: 'A',
|
100
|
-
value: 32,
|
101
|
-
docs: ''
|
102
|
-
},
|
103
|
-
{
|
104
|
-
name: 'Menu',
|
105
|
-
value: 64,
|
106
|
-
docs: ''
|
107
|
-
},
|
108
|
-
{
|
109
|
-
name: 'Lock',
|
110
|
-
value: 124,
|
111
|
-
docs: ''
|
112
|
-
}
|
113
|
-
],
|
114
|
-
docs: ''
|
115
|
-
},
|
116
|
-
{
|
117
|
-
name: 'PlaydateLanguage',
|
118
|
-
values: [
|
119
|
-
{
|
120
|
-
name: 'English',
|
121
|
-
value: 1,
|
122
|
-
docs: ''
|
123
|
-
},
|
124
|
-
{
|
125
|
-
name: 'Japanese',
|
126
|
-
value: 2,
|
127
|
-
docs: ''
|
128
|
-
}
|
129
|
-
],
|
130
|
-
docs: ''
|
131
|
-
}
|
132
|
-
];
|
133
|
-
|
134
|
-
//# sourceMappingURL=playdateConstants.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../../libs/cli/src/commands/GenerateTypes/utils/playdateConstants.ts"],"sourcesContent":["import { ConstantDescription } from '@/cli/types.js';\n\nexport const playdateConstants = [\n {\n name: 'PlaydateColor',\n values: [\n { name: 'Black', value: 0, docs: '' },\n { name: 'White', value: 1, docs: '' },\n { name: 'Clear', value: 2, docs: '' },\n { name: 'XOR', value: 4, docs: '' },\n ],\n docs: '',\n },\n {\n name: 'PlaydateImageFlip',\n values: [\n { name: 'Unflipped', value: 0, docs: '' },\n { name: 'FlippedX', value: 1, docs: '' },\n { name: 'FlippedY', value: 2, docs: '' },\n { name: 'FlippedXY', value: 4, docs: '' },\n ],\n docs: '',\n },\n {\n name: 'PlaydatePolygonFill',\n values: [\n { name: 'NonZero', value: 1, docs: '' },\n { name: 'EvenOdd', value: 2, docs: '' },\n ],\n docs: '',\n },\n {\n name: 'PlaydateButton',\n values: [\n { name: 'Left', value: 1, docs: '' },\n { name: 'Right', value: 2, docs: '' },\n { name: 'Up', value: 4, docs: '' },\n { name: 'Down', value: 8, docs: '' },\n { name: 'B', value: 16, docs: '' },\n { name: 'A', value: 32, docs: '' },\n { name: 'Menu', value: 64, docs: '' },\n { name: 'Lock', value: 124, docs: '' },\n ],\n docs: '',\n },\n {\n name: 'PlaydateLanguage',\n values: [\n { name: 'English', value: 1, docs: '' },\n { name: 'Japanese', value: 2, docs: '' },\n ],\n docs: '',\n },\n] satisfies ConstantDescription[];\n"],"names":["playdateConstants","name","values","value","docs"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAO,MAAMA,oBAAoB;IAC7B;QACIC,MAAM;QACNC,QAAQ;YACJ;gBAAED,MAAM;gBAASE,OAAO;gBAAGC,MAAM;YAAG;YACpC;gBAAEH,MAAM;gBAASE,OAAO;gBAAGC,MAAM;YAAG;YACpC;gBAAEH,MAAM;gBAASE,OAAO;gBAAGC,MAAM;YAAG;YACpC;gBAAEH,MAAM;gBAAOE,OAAO;gBAAGC,MAAM;YAAG;SACrC;QACDA,MAAM;IACV;IACA;QACIH,MAAM;QACNC,QAAQ;YACJ;gBAAED,MAAM;gBAAaE,OAAO;gBAAGC,MAAM;YAAG;YACxC;gBAAEH,MAAM;gBAAYE,OAAO;gBAAGC,MAAM;YAAG;YACvC;gBAAEH,MAAM;gBAAYE,OAAO;gBAAGC,MAAM;YAAG;YACvC;gBAAEH,MAAM;gBAAaE,OAAO;gBAAGC,MAAM;YAAG;SAC3C;QACDA,MAAM;IACV;IACA;QACIH,MAAM;QACNC,QAAQ;YACJ;gBAAED,MAAM;gBAAWE,OAAO;gBAAGC,MAAM;YAAG;YACtC;gBAAEH,MAAM;gBAAWE,OAAO;gBAAGC,MAAM;YAAG;SACzC;QACDA,MAAM;IACV;IACA;QACIH,MAAM;QACNC,QAAQ;YACJ;gBAAED,MAAM;gBAAQE,OAAO;gBAAGC,MAAM;YAAG;YACnC;gBAAEH,MAAM;gBAASE,OAAO;gBAAGC,MAAM;YAAG;YACpC;gBAAEH,MAAM;gBAAME,OAAO;gBAAGC,MAAM;YAAG;YACjC;gBAAEH,MAAM;gBAAQE,OAAO;gBAAGC,MAAM;YAAG;YACnC;gBAAEH,MAAM;gBAAKE,OAAO;gBAAIC,MAAM;YAAG;YACjC;gBAAEH,MAAM;gBAAKE,OAAO;gBAAIC,MAAM;YAAG;YACjC;gBAAEH,MAAM;gBAAQE,OAAO;gBAAIC,MAAM;YAAG;YACpC;gBAAEH,MAAM;gBAAQE,OAAO;gBAAKC,MAAM;YAAG;SACxC;QACDA,MAAM;IACV;IACA;QACIH,MAAM;QACNC,QAAQ;YACJ;gBAAED,MAAM;gBAAWE,OAAO;gBAAGC,MAAM;YAAG;YACtC;gBAAEH,MAAM;gBAAYE,OAAO;gBAAGC,MAAM;YAAG;SAC1C;QACDA,MAAM;IACV;CACH,CAAiC"}
|