pxt-core-own
Version:
Microsoft MakeCode, also known as Programming Experience Toolkit (PXT), provides Blocks / JavaScript tools and editors
779 lines (711 loc) • 32.1 kB
TypeScript
/// <reference path="pxtpackage.d.ts" />
/// <reference path="pxtparts.d.ts" />
/// <reference path="pxtblockly.d.ts" />
/// <reference path="pxtelectron.d.ts" />
declare namespace pxt {
// targetconfig.json
interface TargetConfig {
packages?: PackagesConfig;
// common galleries
galleries?: pxt.Map<string>;
// localized galleries
localizedGalleries?: pxt.Map<pxt.Map<string>>;
windowsStoreLink?: string;
// link to the latest firmware urls (boardid -> url)
firmwareUrls?: pxt.Map<string>;
// release manifest for the electron app
electronManifest?: pxt.electron.ElectronManifest;
}
interface PackagesConfig {
approvedOrgs?: string[];
approvedRepos?: string[]; // list of company/project
releases?: pxt.Map<string[]>; // per major version list of approved company/project#tag
bannedOrgs?: string[];
bannedRepos?: string[];
allowUnapproved?: boolean;
preferredRepos?: string[]; // list of company/project(#tag) of packages to show by default in search
}
interface AppTarget {
id: string; // has to match ^[a-z]+$; used in URLs and domain names
platformid?: string; // eg "codal"; used when search for gh packages ("for PXT/codal"); defaults to id
nickname?: string; // friendly id used when generating files, folders, etc... id is used instead if missing
name: string; // long name
description?: string; // description
thumbnailName?: string; // name imprited on thumbnails when using saveAsPNG
corepkg: string;
title?: string;
cloud?: AppCloud;
simulator?: AppSimulator;
blocksprj: ProjectTemplate;
tsprj: ProjectTemplate;
runtime?: RuntimeOptions;
compile: ts.pxtc.CompileTarget;
serial?: AppSerial;
appTheme: AppTheme;
compileService?: TargetCompileService;
ignoreDocsErrors?: boolean;
variants?: Map<AppTarget>; // patches on top of the current AppTarget for different chip variants
queryVariants?: Map<AppTarget>; // patches on top of the current AppTarget using query url regex
}
interface ProjectTemplate {
id: string;
config: PackageConfig;
files: pxt.Map<string>;
}
interface BlockToolboxDefinition {
namespace: string;
type: string;
gap?: number;
weight?: number;
fields?: pxt.Map<string>;
}
interface BlockOptions {
category?: string; // category in toolbox where the block should appear (defaults to "Loops")
group?: string; // group in toolbox category where the block should appear (defaults to none)
color?: string; // defaults to the color of the "Loops" category
weight?: number; // defaults to 0
namespace?: string; // namespace where the block's function lives (defaults to none)
callName?: string; // name of the block's function if changed in target
}
interface FunctionEditorTypeInfo {
typeName?: string; // The actual type that gets emitted to ts
label?: string; // A user-friendly label for the type, e.g. "text" for the string type
icon?: string; // The className of a semantic icon, e.g. "calculator", "text width", etc
defaultName?: string; // The default argument name to use in the function declaration for this type
}
interface RuntimeOptions {
mathBlocks?: boolean;
textBlocks?: boolean;
listsBlocks?: boolean;
variablesBlocks?: boolean;
functionBlocks?: boolean;
functionsOptions?: {
extraFunctionEditorTypes?: FunctionEditorTypeInfo[];
};
logicBlocks?: boolean;
loopsBlocks?: boolean;
onStartNamespace?: string; // default = loops
onStartColor?: string;
onStartWeight?: number;
onStartUnDeletable?: boolean;
pauseUntilBlock?: BlockOptions;
extraBlocks?: BlockToolboxDefinition[]; // deprecated
assetExtensions?: string[];
palette?: string[];
screenSize?: Size;
bannedCategories?: string[]; // a list of categories to exclude blocks from
}
interface AppSerial {
useHF2?: boolean;
noDeploy?: boolean;
useEditor?: boolean;
vendorId?: string; // used by node-serial
productId?: string; // used by node-serial
nameFilter?: string; // regex to match devices
rawHID?: boolean;
log?: boolean; // pipe messages to log
editorTheme?: SerialTheme;
}
interface SerialTheme {
graphBackground?: string;
gridFillStyle?: string;
gridStrokeStyle?: string;
strokeColor?: string;
lineColors?: string[];
}
interface AppCloud {
workspaces?: boolean;
packages?: boolean;
sharing?: boolean; // uses cloud-based anonymous sharing
thumbnails?: boolean; // attach screenshots/thumbnail to published scripts
importing?: boolean; // import url dialog
embedding?: boolean;
githubPackages?: boolean; // allow searching github for packages
noGithubProxy?: boolean;
cloudProviders?: pxt.Map<{}>;
}
interface AppSimulator {
autoRun?: boolean; // enable autoRun in regular mode, not light mode
autoRunLight?: boolean; // force autorun in light mode
stopOnChange?: boolean;
emptyRunCode?: string; // when non-empty and autoRun is disabled, this code is run upon simulator first start
hideRestart?: boolean;
// moved to theme
// enableTrace?: boolean;
// moved to theme
// debugger?: boolean;
hideFullscreen?: boolean;
streams?: boolean;
aspectRatio?: number; // width / height
boardDefinition?: pxsim.BoardDefinition;
dynamicBoardDefinition?: boolean; // if true, boardDefinition comes from board package
parts?: boolean; // parts enabled?
// moved to theme
// instructions?: boolean;
partsAspectRatio?: number; // aspect ratio of the simulator when parts are displayed
headless?: boolean; // whether simulator should still run while collapsed
trustedUrls?: string[]; // URLs that are allowed in simulator modal messages
invalidatedClass?: string; // CSS class to be applied to the sim iFrame when it needs to be updated (defaults to sepia filter)
stoppedClass?: string; // CSS class to be applied to the sim iFrame when it isn't running (defaults to grayscale filter)
}
interface TargetCompileService {
yottaTarget?: string; // bbc-microbit-classic-gcc
yottaBinary?: string; // defaults to "pxt-microbit-app-combined.hex"
yottaCorePackage?: string; // pxt-microbit-core
yottaConfig?: any; // additional config
platformioIni?: string[];
codalTarget?: string | {
name: string; // "codal-arduino-uno"
url: string; // "https://github.com/lancaster-university/codal-arduino-uno"
branch: string; // "master"
type: string; // "git"
branches?: pxt.Map<string>; // overrides repo url -> commit sha
};
codalBinary?: string;
codalDefinitions?: any;
dockerImage?: string;
githubCorePackage?: string; // microsoft/pxt-microbit-core
gittag: string;
serviceId: string;
buildEngine?: string; // default is yotta, set to platformio
}
interface AppTheme {
id?: string;
name?: string;
title?: string;
description?: string;
twitter?: string;
defaultLocale?: string;
logoWide?: boolean; // the portrait logo is not square, but wide
logoUrl?: string;
logo?: string;
hideMenubarLogo?: boolean; // if true, partner logo won't be shown in the top-left corner (menu bar)
portraitLogo?: string;
highContrastLogo?: string;
highContrastPortraitLogo?: string;
rightLogo?: string;
docsLogo?: string;
organization?: string;
organizationUrl?: string;
organizationLogo?: string;
organizationWideLogo?: string;
homeUrl?: string;
shareUrl?: string;
embedUrl?: string;
betaUrl?: string;
docMenu?: DocMenuEntry[];
TOC?: TOCMenuEntry[];
hideSideDocs?: boolean;
homeScreenHero?: string; // home screen hero image
sideDoc?: string; // deprecated
hasReferenceDocs?: boolean; // if true: the monaco editor will add an option in the context menu to load the reference docs
feedbackUrl?: string; // is set: a feedback link will show in the settings menu
boardName?: string; // official branded name for the board or product
boardNickname?: string; // common nickname to use for the board or product
driveDisplayName?: string; // name of the drive as it shows in the explorer
privacyUrl?: string;
termsOfUseUrl?: string;
contactUrl?: string;
accentColor?: string; // used in PWA manifest as theme color
backgroundColor?: string; // use in PWA manifest as background color
cardLogo?: string;
appLogo?: string;
htmlDocIncludes?: Map<string>;
htmlTemplates?: Map<string>;
githubUrl?: string;
usbDocs?: string;
invertedMenu?: boolean; // if true: apply the inverted class to the menu
coloredToolbox?: boolean; // if true: color the blockly toolbox categories
invertedToolbox?: boolean; // if true: use the blockly inverted toolbox
invertedMonaco?: boolean; // if true: use the vs-dark monaco theme
lightToc?: boolean; // if true: do NOT use inverted style in docs toc
blocklyOptions?: Blockly.WorkspaceOptions; // Blockly options, see Configuration: https://developers.google.com/blockly/guides/get-started/web
hideFlyoutHeadings?: boolean; // Hide the flyout headings at the top of the flyout when on a mobile device.
monacoColors?: pxt.Map<string>; // Monaco theme colors, see https://code.visualstudio.com/docs/getstarted/theme-color-reference
simAnimationEnter?: string; // Simulator enter animation
simAnimationExit?: string; // Simulator exit animation
hasAudio?: boolean; // target uses the Audio manager. if true: a mute button is added to the simulator toolbar.
crowdinProject?: string;
crowdinBranch?: string; // optional branch specification for localization files
monacoToolbox?: boolean; // if true: show the monaco toolbox when in the monaco editor
blockHats?: boolean; // if true, event blocks have hats
allowParentController?: boolean; // allow parent iframe to control editor
allowPackageExtensions?: boolean; // allow packages that include editor extensions
allowSimulatorTelemetry?: boolean; // allow the simulator to send telemetry messages
hideEmbedEdit?: boolean; // hide the edit button in the embedded view
blocksOnly?: boolean; // blocks only workspace
python?: boolean; // enable Python?
hideDocsSimulator?: boolean; // do not show simulator button in docs
hideDocsEdit?: boolean; // do not show edit button in docs
hideMenuBar?: boolean; // Hides the main menu bar
hideEditorToolbar?: boolean; // Hides the bottom editor toolbar
appStoreID?: string; // Apple iTune Store ID if any
mobileSafariDownloadProtocol?: string; // custom protocol to be used on iOS
sounds?: {
tutorialStep?: string;
tutorialNext?: string;
dialogClick?: string;
},
disableLiveTranslations?: boolean; // don't load translations from crowdin
extendEditor?: boolean; // whether a target specific editor.js is loaded
extendFieldEditors?: boolean; // wether a target specific fieldeditors.js is loaded
highContrast?: boolean; // simulator has a high contrast mode
print?: boolean; //Print blocks and text feature
greenScreen?: boolean; // display webcam stream in background
instructions?: boolean; // display make instructions
enableTrace?: boolean; // Slow-Mo button
debugger?: boolean; // debugger button
selectLanguage?: boolean; // add language picker to settings menu
availableLocales?: string[]; // the list of enabled language codes
useUploadMessage?: boolean; // change "Download" text to "Upload"
downloadIcon?: string; // which icon io use for download
blockColors?: Map<string>; // block namespace colors, used for build in categories
blockIcons?: Map<string>;
blocklyColors?: Blockly.Colours; // Blockly workspace, flyout and other colors
socialOptions?: SocialOptions; // show social icons in share dialog, options like twitter handle and org handle
noReloadOnUpdate?: boolean; // do not notify the user or reload the page when a new app cache is downloaded
appPathNames?: string[]; // Authorized URL paths in UWP, all other paths will display a warning banner
defaultBlockGap?: number; // For targets to override block gap
hideShareEmbed?: boolean; // don't show advanced embedding options in share dialog
hideNewProjectButton?: boolean; // do not show the "new project" button in home page
saveInMenu?: boolean; // move save icon under gearwheel menu
fileNameExclusiveFilter?: string; // anything that does not match this regex is removed from the filename,
copyrightText?: string; // footer text for any copyright text to be included at the bottom of the home screen and about page
appFlashingTroubleshoot?: string; // Path to the doc about troubleshooting UWP app flashing failures, e.g. /device/windows-app/troubleshoot
browserDbPrefixes?: { [majorVersion: number]: string }; // Prefix used when storing projects in the DB to allow side-by-side projects of different major versions
editorVersionPaths?: { [majorVersion: number]: string }; // A map of major editor versions to their corresponding paths (alpha, v1, etc.)
experiments?: string[]; // list of experiment ids, also enables this feature
chooseBoardOnNewProject?: boolean; // when multiple boards are support, show board dialog on "new project"
bluetoothUartConsole?: boolean; // pair with BLE UART services and pipe console output
bluetoothUartFilters?: { name?: string; namePrefix?: string; }[]; // device name prefix -- required
bluetoothPartialFlashing?: boolean; // enable partial flashing over BLE
topBlocks?: boolean; // show a top blocks category in the editor
pairingButton?: boolean; // display a pairing button
tagColors?: pxt.Map<string>; // optional colors for tags
dontSuspendOnVisibility?: boolean; // we're inside an app, don't suspend the editor
disableFileAccessinMaciOs?: boolean; //Disable save & import of files in Mac and iOS, mainly used as embed webkit doesn't support these
baseTheme?: string; // Use this to determine whether to show a light or dark theme, default is 'light', options are 'light', 'dark', or 'hc'
scriptManager?: boolean; // Whether or not to enable the script manager. default: false
monacoFieldEditors?: string[]; // A list of field editors to show in monaco. Currently only "image-editor" is supported
/**
* Internal and temporary flags:
* These flags may be removed without notice, please don't take a dependency on them
*/
simCollapseInMenu?: boolean; // don't show any of the collapse / uncollapse buttons down the bottom, instead show it in the menu
bigRunButton?: boolean; // show the run button as a big button on the right
transparentEditorToolbar?: boolean; // make the editor toolbar float with a transparent background
hideProjectRename?: boolean; // Temporary flag until we figure out a better way to show the name
addNewTypeScriptFile?: boolean; // when enabled, the [+] explorer button asks for file name, instead of using "custom.ts"
simScreenshot?: boolean; // allows to download a screenshot of the simulator
simScreenshotKey?: string; // keyboard key name
simScreenshotMaxUriLength?: number; // maximum base64 encoded length to be uploaded
simGif?: boolean; // record gif of the simulator
simGifKey?: boolean; // shortcut to start stop
simGifTransparent?: string; // specify the gif transparency color
simGifQuality?: number; // generated gif quality (pixel sampling size) - 30 (poor) - 1 (best), default 16
simGifMaxFrames?: number; // maximum number of frames, default 64
simGifWidth?: number; // with in pixels for gif frames
autoWebUSBDownload?: boolean; // automatically prompt user for webusb download
qrCode?: boolean; // generate QR code for shared urls
importExtensionFiles?: boolean; // import extensions from files
debugExtensionCode?: boolean; // debug extension and libs code in the Monaco debugger
}
interface SocialOptions {
twitterHandle?: string;
orgTwitterHandle?: string;
hashtags?: string;
related?: string;
discourse?: string; // URL to the discourse powered forum
discourseCategory?: string;
}
interface DocMenuEntry {
name: string;
// needs to have one of `path` or `subitems`
path?: string;
// force opening in separate window
popout?: boolean;
tutorial?: boolean;
subitems?: DocMenuEntry[];
}
interface TOCMenuEntry {
name: string;
path?: string;
subitems?: TOCMenuEntry[];
markdown?: string;
}
interface TargetBundle extends AppTarget {
bundledpkgs: Map<Map<string>>; // @internal use only (cache)
bundleddirs: string[];
versions: TargetVersions; // @derived
}
}
declare namespace pxt.editor {
const enum FileType {
Text = "text",
TypeScript = "typescript",
JavaScript = "javascript",
Markdown = "markdown",
Python = "python",
CPP = "cpp",
JSON = "json",
XML = "xml",
Asm = "asm"
}
}
declare namespace ts.pxtc {
namespace ir {
const enum CallingConvention {
Plain,
Async,
Promise,
}
}
interface CompileSwitches {
profile?: boolean;
gcDebug?: boolean;
boxDebug?: boolean;
slowMethods?: boolean;
slowFields?: boolean;
skipClassCheck?: boolean;
noThisCheckOpt?: boolean;
numFloat?: boolean;
noTreeShake?: boolean;
inlineConversions?: boolean;
noPeepHole?: boolean;
time?: boolean;
}
interface CompileTarget {
isNative: boolean; // false -> JavaScript for simulator
preferredEditor?: string; // used to indicate which way to run any source-level conversions (TS/Py/Blocks)
nativeType?: string; // currently only "thumb"
runtimeIsARM?: boolean; // when nativeType is "thumb" but runtime is compiled in ARM mode
hasHex: boolean;
useUF2?: boolean;
useMkcd?: boolean;
useELF?: boolean;
saveAsPNG?: boolean;
noSourceInFlash?: boolean;
useModulator?: boolean;
webUSB?: boolean; // use WebUSB when supported
hexMimeType?: string;
driveName?: string;
jsRefCounting?: boolean;
gc?: boolean;
utf8?: boolean;
switches: CompileSwitches;
deployDrives?: string; // partial name of drives where the .hex file should be copied
deployFileMarker?: string;
shortPointers?: boolean; // set to true for 16 bit pointers
flashCodeAlign?: number; // defaults to 1k
flashEnd?: number;
flashUsableEnd?: number;
flashChecksumAddr?: number;
ramSize?: number;
patches?: pxt.Map<UpgradePolicy[]>; // semver range -> upgrade policies
openocdScript?: string;
uf2Family?: string;
onStartText?: boolean;
stackAlign?: number; // 1 word (default), or 2
hidSelectors?: HidSelector[];
emptyEventHandlerComments?: boolean; // true adds a comment for empty event handlers
vmOpCodes?: pxt.Map<number>;
vtableShift?: number; // defaults to 2, i.e., (1<<2) == 4 byte alignment of vtables, and thus 256k max program size; increase for chips with more flash!
postProcessSymbols?: boolean;
imageRefTag?: number;
}
type BlockContentPart = BlockLabel | BlockParameter | BlockImage;
type BlockPart = BlockContentPart | BlockBreak;
interface BlockLabel {
kind: "label";
text: string;
style?: string[];
cssClass?: string;
}
interface BlockParameter {
kind: "param";
ref: boolean;
name: string;
shadowBlockId?: string;
varName?: string;
}
interface BlockBreak {
kind: "break";
}
interface BlockImage {
kind: "image";
uri: string;
}
interface ParsedBlockDef {
parts: ReadonlyArray<(BlockPart)>;
parameters: ReadonlyArray<BlockParameter>;
}
interface CommentAttrs {
debug?: boolean; // requires ?dbg=1
shim?: string;
shimArgument?: string;
enumval?: string;
helper?: string;
help?: string;
async?: boolean;
promise?: boolean;
hidden?: boolean;
undeletable?: boolean;
callingConvention: ir.CallingConvention;
block?: string; // format of the block, used at namespace level for category name
blockId?: string; // unique id of the block
blockGap?: string; // pixels in toolbox after the block is inserted
blockExternalInputs?: boolean; // force external inputs. Deprecated; see inlineInputMode.
blockImportId?: string;
blockBuiltin?: boolean;
blockNamespace?: string;
blockIdentity?: string;
blockAllowMultiple?: boolean; // override single block behavior for events
blockHidden?: boolean; // not available directly in toolbox
blockImage?: boolean; // for enum variable, specifies that it should use an image from a predefined location
blockCombine?: boolean;
blockCombineShadow?: string;
blockSetVariable?: string; // show block with variable assigment in toolbox. Set equal to a name to control the var name
fixedInstances?: boolean;
fixedInstance?: boolean;
decompileIndirectFixedInstances?: boolean; // Attribute on TYPEs with fixedInstances set to indicate that expressions with that type may be decompiled even if not a fixed instance
constantShim?: boolean;
indexedInstanceNS?: string;
indexedInstanceShim?: string;
defaultInstance?: string;
autoCreate?: string;
noRefCounting?: boolean;
color?: string;
colorSecondary?: string;
colorTertiary?: string;
icon?: string;
jresURL?: string;
iconURL?: string;
imageLiteral?: number;
weight?: number;
parts?: string;
trackArgs?: number[];
advanced?: boolean;
deprecated?: boolean;
useEnumVal?: boolean; // for conversion from typescript to blocks with enumVal
callInDebugger?: boolean; // for getters, they will be invoked by the debugger.
// on class
snippet?: string; // value used to generate TS snippet
pySnippet?: string; // value used to generate python snippet
// On block
subcategory?: string;
group?: string;
whenUsed?: boolean;
jres?: string;
useLoc?: string; // The qName of another API whose localization will be used if this API is not translated and if both block definitions are identical
topblock?: boolean;
topblockWeight?: number;
// On namepspace
subcategories?: string[];
groups?: string[];
groupIcons?: string[];
groupHelp?: string[];
labelLineWidth?: string;
handlerStatement?: boolean; // indicates a block with a callback that can be used as a statement
blockHandlerKey?: string; // optional field for explicitly declaring the handler key to use to compare duplicate events
afterOnStart?: boolean; // indicates an event that should be compiled after on start when converting to typescript
// on interfaces
indexerGet?: string;
indexerSet?: string;
mutate?: string;
mutateText?: string;
mutatePrefix?: string;
mutateDefaults?: string;
mutatePropertyEnum?: string;
inlineInputMode?: string; // can be inline, external, or auto
expandableArgumentMode?: string; // can be disabled, enabled, or toggle
draggableParameters?: string; // can be reporter or variable; defaults to variable
/* start enum-only attributes (i.e. a block with shim=ENUM_GET) */
enumName?: string; // The name of the enum as it will appear in the code
enumMemberName?: string; // If the name of the enum was "Colors", this would be "color"
enumStartValue?: number; // The lowest value to emit when going from blocks to TS
enumIsBitMask?: boolean; // If true then values will be emitted in the form "1 << n"
enumIsHash?: boolean; // if true, the name of the enum is normalized, then hashed to generate the value
enumPromptHint?: string; // The hint that will be displayed in the member creation prompt
enumInitialMembers?: string[]; // The initial enum values which will be given the lowest values available
/* end enum-only attributes */
optionalVariableArgs?: boolean;
toolboxVariableArgs?: string;
_name?: string;
_source?: string;
_def?: ParsedBlockDef;
_expandedDef?: ParsedBlockDef;
_untranslatedBlock?: string; // The block definition before it was translated
_shadowOverrides?: pxt.Map<string>;
jsDoc?: string;
paramHelp?: pxt.Map<string>;
// foo.defl=12 -> paramDefl: { foo: "12" }; eg.: 12 in arg description will also go here
paramDefl: pxt.Map<string>;
// this lists arguments that have .defl as opposed to just eg.: stuff
explicitDefaults?: string[];
paramMin?: pxt.Map<string>; // min range
paramMax?: pxt.Map<string>; // max range
// Map for custom field editor parameters
paramFieldEditor?: pxt.Map<string>; //.fieldEditor
paramShadowOptions?: pxt.Map<pxt.Map<string>>; //.shadowOptions.
paramFieldEditorOptions?: pxt.Map<pxt.Map<string>>; //.fieldOptions.
duplicateShadowOnDrag?: boolean; // if true, duplicate the block when its shadow is dragged out (like function arguments)
}
interface ParameterDesc {
name: string;
description: string;
type: string;
initializer?: string;
default?: string;
properties?: PropertyDesc[];
handlerParameters?: PropertyDesc[];
options?: pxt.Map<PropertyOption>;
isEnum?: boolean;
}
interface PropertyDesc {
name: string;
type: string;
}
interface PropertyOption {
value: any;
}
const enum SymbolKind {
None,
Method,
Property,
Function,
Variable,
Module,
Enum,
EnumMember,
Class,
Interface,
}
interface SymbolInfo {
attributes: CommentAttrs;
name: string;
namespace: string;
fileName: string;
kind: SymbolKind;
parameters: ParameterDesc[];
retType: string;
extendsTypes?: string[]; // for classes and interfaces
isInstance?: boolean;
isContextual?: boolean;
qName?: string;
pkg?: string;
snippet?: string;
snippetName?: string;
pySnippet?: string;
pySnippetName?: string;
blockFields?: ParsedBlockDef;
isReadOnly?: boolean;
combinedProperties?: string[];
pyName?: string;
pyQName?: string;
}
interface ApisInfo {
byQName: pxt.Map<SymbolInfo>;
jres?: pxt.Map<pxt.JRes>;
}
type InfoType = "memberCompletion" | "identifierCompletion" | "signature" | "symbol"
interface SyntaxInfo {
type: InfoType;
position: number;
symbols?: SymbolInfo[];
beginPos?: number;
endPos?: number;
auxResult?: any;
}
interface CompileOptions {
fileSystem: pxt.Map<string>;
target: CompileTarget;
testMode?: boolean;
sourceFiles?: string[];
generatedFiles?: string[];
jres?: pxt.Map<pxt.JRes>;
hexinfo: HexInfo;
extinfo?: ExtensionInfo;
noEmit?: boolean;
forceEmit?: boolean;
ast?: boolean;
breakpoints?: boolean;
trace?: boolean;
justMyCode?: boolean;
computeUsedSymbols?: boolean;
name?: string;
warnDiv?: boolean; // warn when emitting division operator
apisInfo?: ApisInfo;
syntaxInfo?: SyntaxInfo;
alwaysDecompileOnStart?: boolean; // decompiler only
allowedArgumentTypes?: string[]; // decompiler-only; the types allowed for user-defined function arguments in blocks (unlisted types will cause grey blocks)
embedMeta?: string;
embedBlob?: string; // base64
/* @internal */
ignoreFileResolutionErrors?: boolean; // ignores triple-slash directive errors; debug only
}
interface UpgradePolicy {
type: "api" | "blockId" | "missingPackage" | "package" | "blockValue";
map?: pxt.Map<string>;
}
interface FuncInfo {
name: string;
argsFmt: string[];
value: number;
}
interface ExtensionInfo {
functions: FuncInfo[];
generatedFiles: pxt.Map<string>;
extensionFiles: pxt.Map<string>;
yotta?: pxt.YottaConfig;
platformio?: pxt.PlatformIOConfig;
npmDependencies?: pxt.Map<string>;
sha: string;
compileData: string;
shimsDTS: string;
enumsDTS: string;
onlyPublic: boolean;
commBase?: number;
}
interface HexInfo {
hex: string[];
}
// HEX values as strings, e.g. "0xFF97"
interface HidSelector {
vid: string;
pid: string;
usagePage: string;
usageId: string;
}
}
declare namespace pxt.tutorial {
interface TutorialInfo {
editor: string; // preferred editor or blocks by default
steps: TutorialStepInfo[];
code: string; // all code
}
interface TutorialStepInfo {
fullscreen?: boolean;
// no coding
unplugged?: boolean;
hasHint?: boolean;
contentMd?: string;
headerContentMd?: string;
}
interface TutorialOptions {
tutorial?: string; // tutorial
tutorialName?: string; // tutorial title
tutorialReportId?: string; // if this tutorial was user generated, the report abuse id
tutorialStepInfo?: pxt.tutorial.TutorialStepInfo[];
tutorialStep?: number; // current tutorial page
tutorialReady?: boolean; // current tutorial page
tutorialStepExpanded?: boolean; // display full step in dialog
tutorialMd?: string; // full tutorial markdown
tutorialCode?: string; // all tutorial code bundled
}
interface TutorialCompletionInfo {
// id of the tutorial
id: string;
// number of steps completed
steps: number;
}
}