🚀 Big News:Socket Has Acquired Secure Annex.Learn More
Socket
Book a DemoSign in
Socket

decaffeinate-coffeescript

Package Overview
Dependencies
Maintainers
2
Versions
31
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

decaffeinate-coffeescript - npm Package Compare versions

Comparing version
1.10.0-patch1
to
1.10.0-patch10
.idea/coffeescript.iml

Sorry, the diff of this file is not supported yet

+6
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="PROJECT" charset="UTF-8" />
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectInspectionProfilesVisibleTreeState">
<entry key="Project Default">
<profile-state>
<expanded-state>
<State>
<id />
</State>
<State>
<id>File Watchers</id>
</State>
<State>
<id>GeneralJavaScript</id>
</State>
<State>
<id>HTML</id>
</State>
<State>
<id>JavaScript</id>
</State>
<State>
<id>Node.jsJavaScript</id>
</State>
<State>
<id>XML</id>
</State>
</expanded-state>
<selected-state>
<State>
<id>AngularJS</id>
</State>
</selected-state>
</profile-state>
</entry>
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/coffeescript.iml" filepath="$PROJECT_DIR$/.idea/coffeescript.iml" />
</modules>
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="e9da7dcf-d780-4805-a89f-29c8f50c8101" name="Default" comment="" />
<ignored path="$PROJECT_DIR$/.tmp/" />
<ignored path="$PROJECT_DIR$/temp/" />
<ignored path="$PROJECT_DIR$/tmp/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="CreatePatchCommitExecutor">
<option name="PATCH_PATH" value="" />
</component>
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="nodes.d.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/lib/coffee-script/nodes.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="480">
<caret line="495" column="16" lean-forward="false" selection-start-line="495" selection-start-column="16" selection-end-line="495" selection-end-column="16" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="nodes.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/lib/coffee-script/nodes.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="390">
<caret line="2097" column="31" lean-forward="false" selection-start-line="2097" selection-start-column="31" selection-end-line="2097" selection-end-column="31" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="package.json" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="10" column="27" lean-forward="false" selection-start-line="10" selection-start-column="27" selection-end-line="10" selection-end-column="27" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>./Scope</find>
<find>locationData</find>
<find>expressions</find>
<find>Parens</find>
<find>Bool</find>
<find>Access</find>
<find>Param</find>
<find>Param =</find>
<find>new Param</find>
</findStrings>
<dirStrings>
<dir>$PROJECT_DIR$</dir>
</dirStrings>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/lib/coffee-script/nodes.d.ts" />
<option value="$PROJECT_DIR$/package.json" />
</list>
</option>
</component>
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER">
<package-json value="$PROJECT_DIR$/package.json" />
</component>
<component name="JsGulpfileManager">
<detection-done>true</detection-done>
<sorting>DEFINITION_ORDER</sorting>
</component>
<component name="NodeModulesDirectoryManager">
<handled-path value="$PROJECT_DIR$/node_modules" />
</component>
<component name="ProjectFrameBounds">
<option name="y" value="23" />
<option name="width" value="1440" />
<option name="height" value="872" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents />
<hideEmptyPackages />
<abbreviatePackageNames />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
<manualOrder />
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="coffeescript" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="coffeescript" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="coffeescript" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="coffeescript" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="lib" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="coffee-script" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="settings.editor.selected.configurable" value="configurable.group.language" />
<property name="settings.editor.splitter.proportion" value="0.2" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="HbShouldOpenHtmlAsHb" value="" />
<property name="nodejs_interpreter_path" value="/usr/local/opt/nvm/versions/node/v5.1.0/bin/node" />
<property name="js.eslint.eslintPackage" value="/usr/local/opt/nvm/versions/node/v5.1.0/lib/node_modules/eslint" />
<property name="js-jscs-nodeInterpreter" value="/usr/local/opt/nvm/versions/node/v5.1.0/bin/node" />
</component>
<component name="RunManager">
<configuration default="true" type="BashConfigurationType" factoryName="Bash">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="INTERPRETER_PATH" value="/bin/bash" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PARENT_ENVS" value="true" />
<option name="SCRIPT_NAME" value="" />
<option name="PARAMETERS" value="" />
<module name="" />
<envs />
<method />
</configuration>
<configuration default="true" type="DartCommandLineRunConfigurationType" factoryName="Dart Command Line Application">
<method />
</configuration>
<configuration default="true" type="DartTestRunConfigurationType" factoryName="Dart Test">
<method />
</configuration>
<configuration default="true" type="JavaScriptTestRunnerKarma" factoryName="Karma">
<config-file value="" />
<node-interpreter value="project" />
<envs />
<method />
</configuration>
<configuration default="true" type="JavaScriptTestRunnerProtractor" factoryName="Protractor">
<config-file value="" />
<node-interpreter value="project" />
<envs />
<method />
</configuration>
<configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
<method />
</configuration>
<configuration default="true" type="NodeJSConfigurationType" factoryName="Node.js" path-to-node="project" working-dir="">
<method />
</configuration>
<configuration default="true" type="cucumber.js" factoryName="Cucumber.js">
<option name="cucumberJsArguments" value="" />
<option name="executablePath" />
<option name="filePath" />
<method />
</configuration>
<configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
<node-interpreter>project</node-interpreter>
<node-options />
<gulpfile />
<tasks />
<arguments />
<envs />
<method />
</configuration>
<configuration default="true" type="js.build_tools.npm" factoryName="npm">
<command value="run" />
<scripts />
<node-interpreter value="project" />
<envs />
<method />
</configuration>
<configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha">
<node-interpreter>project</node-interpreter>
<node-options />
<working-directory />
<pass-parent-env>true</pass-parent-env>
<envs />
<ui />
<extra-mocha-options />
<test-kind>DIRECTORY</test-kind>
<test-directory />
<recursive>false</recursive>
<method />
</configuration>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="e9da7dcf-d780-4805-a89f-29c8f50c8101" name="Default" comment="" />
<created>1482167577504</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1482167577504</updated>
<workItem from="1482167578703" duration="2408000" />
<workItem from="1482261465795" duration="4403000" />
<workItem from="1482750151744" duration="119000" />
<workItem from="1482788563064" duration="2698000" />
<workItem from="1483031688816" duration="6573000" />
<workItem from="1483220154365" duration="850000" />
</task>
<task id="LOCAL-00001" summary="fix: add missing `Base#locationData` property">
<created>1482261684169</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1482261684169</updated>
</task>
<task id="LOCAL-00002" summary="fix: `Literal#value` is a string, not another node">
<created>1482266733176</created>
<option name="number" value="00002" />
<option name="presentableId" value="LOCAL-00002" />
<option name="project" value="LOCAL" />
<updated>1482266733176</updated>
</task>
<task id="LOCAL-00003" summary="fix: add missing `Block#expressions` property">
<created>1482267766136</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1482267766136</updated>
</task>
<task id="LOCAL-00004" summary="fix: `Parens#body` is a block">
<created>1482267976756</created>
<option name="number" value="00004" />
<option name="presentableId" value="LOCAL-00004" />
<option name="project" value="LOCAL" />
<updated>1482267976756</updated>
</task>
<task id="LOCAL-00005" summary="fix: `Bool#val` is a string">
<created>1482278933027</created>
<option name="number" value="00005" />
<option name="presentableId" value="LOCAL-00005" />
<option name="project" value="LOCAL" />
<updated>1482278933027</updated>
</task>
<task id="LOCAL-00006" summary="fix: `Return#expression` may not be present">
<created>1482788591071</created>
<option name="number" value="00006" />
<option name="presentableId" value="LOCAL-00006" />
<option name="project" value="LOCAL" />
<updated>1482788591071</updated>
</task>
<task id="LOCAL-00007" summary="chore: bump version to 1.10.0-patch9">
<created>1483030590392</created>
<option name="number" value="00007" />
<option name="presentableId" value="LOCAL-00007" />
<option name="project" value="LOCAL" />
<updated>1483030590392</updated>
</task>
<task id="LOCAL-00008" summary="chore: bump version to 1.10.0-patch10">
<created>1483222465299</created>
<option name="number" value="00008" />
<option name="presentableId" value="LOCAL-00008" />
<option name="project" value="LOCAL" />
<updated>1483222465299</updated>
</task>
<option name="localTasksCounter" value="9" />
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="17051000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="23" width="1440" height="872" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="TypeScript" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32810616" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32891566" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="processedProjectFiles" value="true" />
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="fix: add missing `Base#locationData` property" />
<MESSAGE value="fix: `Literal#value` is a string, not another node" />
<MESSAGE value="fix: add missing `Block#expressions` property" />
<MESSAGE value="fix: `Parens#body` is a block" />
<MESSAGE value="fix: `Bool#val` is a string" />
<MESSAGE value="fix: `Return#expression` may not be present" />
<MESSAGE value="chore: bump version to 1.10.0-patch9" />
<MESSAGE value="chore: bump version to 1.10.0-patch10" />
<option name="LAST_COMMIT_MESSAGE" value="chore: bump version to 1.10.0-patch10" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/lib/coffee-script/nodes.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="10" column="26" lean-forward="false" selection-start-line="10" selection-start-column="26" selection-end-line="10" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/coffee-script/nodes.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3390">
<caret line="227" column="0" lean-forward="false" selection-start-line="227" selection-start-column="0" selection-end-line="227" selection-end-column="0" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/coffee-script/nodes.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="10" column="26" lean-forward="false" selection-start-line="10" selection-start-column="26" selection-end-line="10" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/coffee-script/nodes.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="22" lean-forward="false" selection-start-line="0" selection-start-column="22" selection-end-line="0" selection-end-column="22" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/coffee-script/nodes.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="390">
<caret line="2097" column="31" lean-forward="false" selection-start-line="2097" selection-start-column="31" selection-end-line="2097" selection-end-column="31" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/lib/coffee-script/nodes.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="480">
<caret line="495" column="16" lean-forward="false" selection-start-line="495" selection-start-column="16" selection-end-line="495" selection-end-column="16" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="10" column="27" lean-forward="false" selection-start-line="10" selection-start-column="27" selection-end-line="10" selection-end-column="27" />
<folding />
</state>
</provider>
</entry>
</component>
</project>
language: node_js
cache:
directories:
- node_modules
node_js:
- '6'
- '4'
before_script:
- npm prune
import SourceMap, { V3SourceMap } from './sourcemap';
import { Token, LexerOptions } from './lexer';
import { Block } from './nodes';
export const VERSION: string;
export const FILE_EXTENSIONS: Array<string>;
interface CompileOptions {
header?: boolean;
shiftLine?: boolean;
// Source map options.
sourceMap?: boolean;
generatedFile?: string;
sourceRoot?: string;
sourceFiles?: Array<string>;
inline?: boolean;
}
type CompileResult = string | {
js: string,
sourceMap: SourceMap,
v3SourceMap: V3SourceMap,
};
interface RunOptions extends CompileOptions {
filename?: string;
}
/**
* Compile CoffeeScript code to JavaScript, using the Coffee/Jison compiler.
*
* If `options.sourceMap` is specified, then `options.filename` must also be specified. All
* options that can be passed to `SourceMap#generate` may also be passed here.
*
* This returns a javascript string, unless `options.sourceMap` is passed,
* in which case this returns a `{js, v3SourceMap, sourceMap}`
* object, where sourceMap is a sourcemap.coffee#SourceMap object, handy for doing programatic
* lookups.
*/
export function compile(code: string, options?: CompileOptions): CompileResult;
/**
* Tokenize a string of CoffeeScript code, and return the array of tokens.
*/
export function tokens(code: string, options?: LexerOptions): Array<Token>;
/**
* Parse a string of CoffeeScript code or an array of lexed tokens, and
* return the AST. You can then compile it by calling `.compile()` on the root,
* or traverse it by using `.traverseChildren()` with a callback.
*/
export function nodes(source: string | Array<Token>, options?: LexerOptions): Block;
/**
* Compile and execute a string of CoffeeScript (on the server), correctly
* setting `__filename`, `__dirname`, and relative `require()`.
*/
export function run(code: string, options?: RunOptions);
import { LocationData } from './nodes';
export type TokenType =
'BIN?' |
'BOOL' |
'CALL_END' |
'CALL_START' |
'COMPARE' |
'COMPOUND_ASSIGN' |
'COMPOUND_ASSIGN' |
'FOR' |
'FORINSTANCEOF' |
'FUNC_EXIST' |
'HERESTRING' |
'IDENTIFIER' |
'IF' |
'INDENT' |
'INDEX_END' |
'INDEX_SOAK' |
'INDEX_START' |
'INSTANCEOF' |
'LEADING_WHEN' |
'MATH' |
'NEOSTRING' |
'OUTDENT' |
'OUTDENT' |
'OWN' |
'PARAM_END' |
'PARAM_START' |
'REGEX' |
'REGEX_END' |
'REGEX_START' |
'RELATION' |
'SHIFT' |
'STATEMENT' |
'STRING' |
'STRING_END' |
'STRING_START' |
'TERMINATOR' |
'TOKENS' |
'UNARY' |
'UNARY_MATH' |
'UNLESS' |
'WHEN' |
'YIELD';
export type Token = [
TokenType,
// code
string,
LocationData
];
export interface LexerOptions {
literate?: boolean;
line?: number;
column?: number;
untilBalanced?: boolean;
rewrite?: boolean;
}
export class Lexer {
/**
* **tokenize** is the Lexer's main method. Scan by attempting to match tokens
* one at a time, using a regular expression anchored at the start of the
* remaining code, or a custom recursive token-matching method
* (for interpolations). When the next token has been recorded, we move forward
* within the code past the token, and begin again.
*
* Each tokenizing method is responsible for returning the number of characters
* it has consumed.
*
* Before returning the token stream, run it through the [Rewriter](rewriter.html).
*/
tokenize(code: string, opts?: LexerOptions): Array<Token>;
/**
* Preprocess the code to remove leading and trailing whitespace, carriage
* returns, etc. If we're lexing literate CoffeeScript, strip external Markdown
* by removing all lines that aren't indented by at least four spaces or a tab.
*/
clean(code: string): string;
}
import Scope from './scope';
import { Token } from './lexer';
export type LocationData = {
first_line: number,
first_column: number,
last_line: number,
last_column: number,
};
export type CompileContext = {
level?: number,
indent?: string,
scope?: Scope,
sharedScope?: boolean,
};
/**
* The various nodes defined below all compile to a collection of **CodeFragment** objects.
* A CodeFragments is a block of generated code, and the location in the source file where the code
* came from. CodeFragments can be assembled together into working code just by catting together
* all the CodeFragments' `code` snippets, in order.
*/
export class CodeFragment {
code: string;
locationData: LocationData;
type: string;
constructor(parent: Base, code: string);
}
/**
* The **Base** is the abstract base class for all nodes in the syntax tree.
* Each subclass implements the `compileNode` method, which performs the
* code generation for that node. To compile a node to JavaScript,
* call `compile` on it, which wraps `compileNode` in some generic extra smarts,
* to know when the generated code needs to be wrapped up in a closure.
* An options hash is passed and cloned throughout, containing information about
* the environment from higher in the tree (such as if a returned value is
* being requested by the surrounding function), information about the current
* scope, and indentation level.
*/
export class Base {
locationData: LocationData;
compile(o: CompileContext, lvl: number): string;
/**
* Common logic for determining whether to wrap this node in a closure before
* compiling it, or to compile directly. We need to wrap if this node is a
* *statement*, and it's not a *pureStatement*, and we're not at
* the top level of a block (which would be unnecessary), and we haven't
* already been asked to return the result (because statements know how to
* return results).
*/
compileToFragments(o: CompileContext, lvl: number): Array<CodeFragment>;
/**
* Statements converted into expressions via closure-wrapping share a scope
* object with their parent closure, to preserve the expected lexical scope.
*/
compileClosure(o: CompileContext): Array<CodeFragment>;
/**
* If the code generation wishes to use the result of a complex expression
* in multiple places, ensure that the expression is only ever evaluated once,
* by assigning it to a temporary variable. Pass a level to precompile.
*
* If `level` is passed, then returns `[val, ref]`, where `val` is the compiled value, and `ref`
* is the compiled reference. If `level` is not passed, this returns `[val, ref]` where
* the two values are raw nodes which have not been compiled.
*/
cache(o: CompileContext, lvl: number, isComplex: boolean): [Base, Base] | [Array<CodeFragment>, Base];
cacheToCodeFragments(cachedValues: [CodeFragment, CodeFragment]): Array<CodeFragment>;
/**
* Construct a node that returns the current node's result.
* Note that this is overridden for smarter behavior for
* many statement nodes (e.g. If, For)...
*/
makeReturn(): Return;
makeReturn(res: string): Call;
/**
* Does this node, or any of its children, contain a node of a certain kind?
* Recursively traverses down the *children* nodes and returns the first one
* that verifies `pred`. Otherwise return undefined. `contains` does not cross
* scope boundaries.
*/
contains(pred: (node: Base) => boolean): Base | undefined;
/**
* Pull out the last non-comment node of a node list.
*/
lastNonComment<T extends Base>(list: Array<T>): T | null;
/**
* `toString` representation of the node, for inspecting the parse tree.
* This is what `coffee --nodes` prints out.
*/
toString(idt?: string, name?: string): string;
/**
* Passes each child to a function, breaking when the function returns `false`.
*/
eachChild(func: (child: Base) => boolean | undefined);
traverseChildren(crossScope: boolean, func: (child: Base) => boolean | undefined);
invert(): Base;
unwrapAll(): Base;
/**
* Default implementations of the common node properties and methods. Nodes
* will override these with custom logic, if needed.
*/
children: Array<string>;
isStatement(o?: CompileContext): boolean;
jumps(o?: CompileContext): boolean;
isComplex(): boolean;
isChainable(): boolean;
isAssignable(): boolean;
unwrap(): Base;
unfoldSoak(): Base | null;
/**
* Is this node used to assign a certain variable?
*/
assigns(name: string): boolean;
/**
* For this node and all descendents, set the location data to `locationData`
* if the location data is not already set.
*/
updateLocationDataIfMissing(locationData: LocationData);
/**
* Throw a SyntaxError associated with this node's location.
*/
error(message: string);
makeCode(code: string): CodeFragment;
wrapInBraces(fragments: Array<CodeFragment>): Array<CodeFragment>;
/**
* `fragmentsList` is an array of arrays of fragments. Each array in fragmentsList will be
* concatonated together, with `joinStr` added in between each, to produce a final flat array
* of fragments.
*/
joinFragmentArrays(fragmentsList: Array<Array<CodeFragment>>, joinStr: string): Array<CodeFragment>;
}
/**
* The block is the list of expressions that forms the body of an
* indented block of code -- the implementation of a function, a clause in an
* `if`, `switch`, or `try`, and so on...
*/
export class Block extends Base {
expressions: Array<Base>;
classBody?: boolean;
children: ['expressions']
/**
* Tack an expression on to the end of this expression list.
*/
push(node: Base): this;
/**
* Remove and return the last expression of this expression list.
*/
pop(): Base | null;
/**
* Add an expression at the beginning of this expression list.
*/
unshift(node: Base): this;
/**
* If this Block consists of just a single node, unwrap it by pulling
* it back out.
*/
unwrap(): Base;
/**
* Is this an empty block of code?
*/
isEmpty(): boolean;
/**
* A Block node does not return its entire body, rather it
* ensures that the final expression is returned.
*/
// makeReturn(res: string): Return
/**
* If we happen to be the top-level **Block**, wrap everything in
* a safety closure, unless requested not to.
* It would be better not to generate them in the first place, but for now,
* clean up obvious double-parentheses.
*/
compileRoot(o: CompileContext): Array<CodeFragment>;
/**
* Compile the expressions body for the contents of a function, with
* declarations of all inner variables pushed up to the top.
*/
compileWithDeclarations(o: CompileContext): Array<CodeFragment>;
/**
* Wrap up the given nodes as a **Block**, unless it already happens
* to be one.
*/
static wrap(nodes: Array<Base>): Block;
constructor(nodes?: Array<Base>);
}
export class Literal extends Base {
value: string;
constructor(value: string);
}
export class Undefined extends Base {}
export class Null extends Base {}
export class Bool extends Base {
val: string;
constructor(val: string);
}
export class Return extends Base {
expression?: Base;
constructor(expression?: Base);
}
export class Value extends Base {
base: Base;
properties: Array<Access>;
constructor(base: Base, props: Array<Access>, tag: string);
/**
* Add a property (or *properties* ) `Access` to the list.
*/
add(props: Array<Access>): this;
hasProperties(): boolean;
bareLiteral(type: typeof Base): boolean;
/**
* Some boolean checks for the benefit of other nodes.
*/
isArray(): boolean;
isRange(): boolean;
isComplex(): boolean;
isAssignable(): boolean;
isSimpleNumber(): boolean;
isString(): boolean;
isRegex(): boolean;
isAtomic(): boolean
isNotCallable(): boolean
isStatement(): boolean;
assigns(): boolean;
jumps(): boolean;
isObject(onlyGenerated: boolean): boolean;
isSplice(): boolean;
looksStatic(className: string): boolean;
/**
* A reference has base part (`this` value) and name part.
* We cache them separately for compiling complex expressions.
* `a()[b()] ?= c` -> `(_base = a())[_name = b()] ? _base[_name] = c`
*/
cacheReference(o: CompileContext): [Base, Base];
}
export class Comment extends Base {
comment: string;
constructor(comment: string);
}
/**
* Node for a function invocation. Takes care of converting `super()` calls into
* calls against the prototype's function of the same name.
*/
export class Call extends Base {
isNew: boolean;
isSuper: boolean;
variable: Base;
/**
* Tag this invocation as creating a new instance.
*/
newInstance(): Base;
/**
* Grab the reference to the superclass's implementation of the current
* method.
*/
superReference(o: CompileContext);
/**
* The appropriate `this` value for a `super` call.
*/
superThis(o: CompileContext);
/**
* If you call a function with a splat, it's converted into a JavaScript
* `.apply()` call to allow an array of arguments to be passed.
* If it's a constructor, then things get real tricky. We have to inject an
* inner constructor in order to be able to pass the varargs.
*
* splatArgs is an array of CodeFragments to put into the 'apply'.
*/
compileSplat(o: CompileContext, splatArgs: Array<CodeFragment>);
}
/**
* Node to extend an object's prototype with an ancestor object.
* After `goog.inherits` from the
* [Closure Library](http://closure-library.googlecode.com/svn/docs/closureGoogBase.js.html).
*/
export class Extends extends Base {
child: Base;
parent: Base;
constructor(child: Base, parent: Base);
}
/**
* A `.` access into a property of a value, or the `::` shorthand for
* an access into the object's prototype.
*/
export class Access extends Base {
name: Base;
soak: boolean;
// TODO
}
/**
* A `[ ... ]` indexed access into an array or object.
*/
export class Index extends Base {
index: Base;
constructor(index: Base);
}
/**
* A range literal. Ranges can be used to extract portions (slices) of arrays,
* to specify a range for comprehensions, or as a value, to be expanded into the
* corresponding array of integers at runtime.
*/
export class Range extends Base {
from: Base;
to: Base;
exclusive: boolean;
equals: boolean;
/**
* Compiles the range's source variables -- where it starts and where it ends.
* But only if they need to be cached to avoid double evaluation.
*/
compileVariables(o: CompileContext);
}
/**
* An array slice literal. Unlike JavaScript's `Array#slice`, the second parameter
* specifies the index of the end of the slice, just as the first parameter
* is the index of the beginning.
*/
export class Slice extends Base {
range: Range;
constructor(range: Range);
}
/**
* An object literal, nothing fancy.
*/
export class Obj extends Base {
objects: Array<Base>;
properties: Array<Base>;
generated: boolean;
}
/**
* An array literal.
*/
export class Arr extends Base {
objects: Array<Base>;
constructor(objs: Array<Base>);
}
/**
* The CoffeeScript class definition.
* Initialize a **Class** with its name, an optional superclass, and a
* list of prototype property assignments.
*/
export class Class extends Base {
variable: Base;
parent: Base | null;
body: Block;
boundFuncs: Array<Code>;
directives?: Array<Base>;
ctor?: Code;
/**
* Figure out the appropriate name for the constructor function of this class.
*/
determineName(): string;
/**
* For all `this`-references and bound functions in the class definition,
* `this` is the Class being constructed.
*/
setContext(name: string);
/**
* Ensure that all functions bound to the instance are proxied in the
* constructor.
*/
addBoundFunctions(o: CompileContext);
/**
* Merge the properties from a top-level object as prototypal properties
* on the class.
*/
addProperties(node: Base, name: string, o: CompileContext): Array<Base>;
/**
* Walk the body of the class, looking for prototype properties to be converted
* and tagging static assignments.
*/
walkBody(name: string, o: CompileContext);
/**
* `use strict` (and other directives) must be the first expression statement(s)
* of a function body. This method ensures the prologue is correctly positioned
* above the `constructor`.
*/
hoistDirectivePrologue();
/**
* Make sure that a constructor is defined for the class, and properly
* configured.
*/
ensureConstructor(name: string);
}
type AssignOptions = {
param?: boolean;
subpattern?: boolean;
operatorToken?: Token;
};
/**
* The **Assign** is used to assign a local variable to value, or to set the
* property of an object -- including within object literals.
*/
export class Assign extends Base {
constructor(variable: Base, value: Base, context: string | Array<string>, options: AssignOptions);
}
/**
* A function definition. This is the only node that creates a new Scope.
* When for the purposes of walking the contents of a function body, the Code
* has no *children* -- they're within the inner scope.
*/
export class Code extends Base {
params: Array<Base>;
body: Block;
bound: boolean;
isGenerator: boolean;
constructor(params?: Array<Base>, body?: Block, tag?: string);
makeScope(parentScope?: Scope): Scope;
}
/**
* A parameter in a function definition. Beyond a typical Javascript parameter,
* these parameters can also attach themselves to the context of the function,
* as well as be a splat, gathering up a group of parameters into an array.
*/
export class Param extends Base {
name: Base;
value: Base | null;
splat: boolean;
constructor(name: Base, value: Base, splat: boolean);
asReference(o: CompileContext);
}
/**
* A splat, either as a parameter to a function, an argument to a call,
* or as part of a destructuring assignment.
*/
export class Splat extends Base {
constructor(name: Base | string);
/**
* Utility function that converts an arbitrary number of elements, mixed with
* splats, to a proper array.
*/
static compileSplattedArray(o: CompileContext, list: Array<Base>, apply: boolean);
}
/**
* Used to skip values inside an array destructuring (pattern matching) or
* parameter list.
*/
export class Expansion extends Base {
asReference(o: CompileContext): this;
}
/**
* A while loop, the only sort of low-level loop exposed by CoffeeScript. From
* it, all other loops can be manufactured. Useful in cases where you need more
* flexibility or more speed than a comprehension can provide.
*/
export class While extends Base {
condition: Base;
guard: boolean;
body?: Base;
constructor(condition: Base, options?: { invert?: boolean, guard?: boolean });
addBody(body: Base): this;
}
/**
* Simple Arithmetic and logical operations. Performs some conversion from
* CoffeeScript operations into their JavaScript equivalents.
*/
export class Op extends Base {
operator: string;
first: Base;
second: Base;
flip: boolean;
constructor(op: string, first: Base, second: Base, flip: boolean);
isSimpleNumber(): boolean;
isYield(): boolean;
isYieldReturn(): boolean;
isUnary(): boolean;
isChainable(): boolean;
/**
* Mimic Python's chained comparisons when multiple comparison operators are
* used sequentially. For example:
*
* bin/coffee -e 'console.log 50 < 65 > 10'
* true
*/
compileChain(o: CompileContext): Array<CodeFragment>;
/**
* Keep reference to the left expression, unless this an existential assignment
*/
compileExistence(o: CompileContext): Array<CodeFragment>;
/**
* Compile a unary **Op**.
*/
compileUnary(o: CompileContext): Array<CodeFragment>;
compileYield(o: CompileContext): Array<CodeFragment>;
compilePower(o: CompileContext): Array<CodeFragment>;
compileFloorDivision(o: CompileContext): Array<CodeFragment>;
compileModulo(o: CompileContext): Array<CodeFragment>;
}
export class In extends Base {
constructor(object: Base, array: Base);
compileOrTest(o: CompileContext): Array<CodeFragment>;
compileLoopTes(o: CompileContext): Array<CodeFragment>;t
}
/**
* A classic *try/catch/finally* block.
*/
export class Try extends Base {
attempt: Base;
errorVariable?: Base;
recovery?: Base;
ensure?: Base;
constructor(attempt: Base, errorVariable?: Base, recovery?: Base, ensure?: Base);
}
/**
* Simple node to throw an exception.
*/
export class Throw extends Base {
expression: Base;
constructor(expression: Base);
}
/**
* Checks a variable for existence -- not *null* and not *undefined*. This is
* similar to `.nil?` in Ruby, and avoids having to consult a JavaScript truth
* table.
*/
export class Existence extends Base {
expression: Base;
constructor(expression: Base);
}
/**An extra set of parentheses, specified explicitly in the source. At one time
* we tried to clean up the results by detecting and removing redundant
* parentheses, but no longer -- you can put in as many as you please.
*
* Parentheses are a good way to force any statement to become an expression.
*/
export class Parens extends Base {
body: Block;
constructor(body: Block);
}
type ForOptions = {
source: Base,
guard?: Base,
step?: Base,
name?: Base,
index?: Base,
};
/**
* CoffeeScript's replacement for the *for* loop is our array and object
* comprehensions, that compile into *for* loops here. They also act as an
* expression, able to return the result of each filtered iteration.
*
* Unlike Python array comprehensions, they can be multi-line, and you can pass
* the current index of the loop as a second parameter. Unlike Ruby blocks,
* you can map and filter in a single pass.
*/
export class For extends While {
range: boolean;
body: Base;
own: boolean;
object: boolean;
returns: boolean;
name: Base;
index: Base;
pattern: boolean;
constructor(body: Base, source: ForOptions);
}
/**
* A JavaScript *switch* statement. Converts into a returnable expression on-demand.
*/
export class Switch extends Base {
subject: Base;
cases: Array<[ Base, Block ]>;
otherwise: Base;
constructor(subject: Base | null, cases: Array<[ Base, Block ]>, otherwise: Base);
}
/**
* *If/else* statements. Acts as an expression by pushing down requested returns
* to the last line of each clause.
*
* Single-expression **Ifs** are compiled into conditional operators if possible,
* because ternaries are already proper expressions, and don't need conversion.
*/
export class If extends Base {
condition: Base;
body?: Base;
elseBody?: Base;
isChain: boolean;
soak: boolean;
constructor(condition: Base, body: Base, options?: { soak: boolean });
/**
* Rewrite a chain of **Ifs** to add a default case as the final *else*.
*/
addElse(elseBody: Base): this;
/**
* Compile the `If` as a regular *if-else* statement. Flattened chains
* force inner *else* bodies into statement form.
*/
compileStatement(o: CompileContext): Array<CodeFragment>;
/**
* Compile the `If` as a conditional operator.
*/
compileExpression(o: CompileContext): Array<CodeFragment>;
}
export default class Scope {
freeVariable(name: string, options?: { single?: boolean });
}
export default class SourceMap {
sourceLocation(arg: [number, number]): [number, number] | null;
}
export interface V3SourceMap {
version: 3;
file: string;
sourceRoot: string;
sources: Array<string>;
sourcesContent: Array<string | null>;
names: Array<string>;
mappings: string;
}
+12
-2

@@ -611,4 +611,14 @@ // Generated by CoffeeScript 1.10.0

return new Op($2, $1, $3);
}), o('Expression LOGIC Expression', function() {
}), o('Expression & Expression', function() {
return new Op($2, $1, $3);
}), o('Expression ^ Expression', function() {
return new Op($2, $1, $3);
}), o('Expression | Expression', function() {
return new Op($2, $1, $3);
}), o('Expression && Expression', function() {
return new Op($2, $1, $3);
}), o('Expression || Expression', function() {
return new Op($2, $1, $3);
}), o('Expression BIN? Expression', function() {
return new Op($2, $1, $3);
}), o('Expression RELATION Expression', function() {

@@ -632,3 +642,3 @@ if ($2.charAt(0) === '!') {

operators = [['left', '.', '?.', '::', '?::'], ['left', 'CALL_START', 'CALL_END'], ['nonassoc', '++', '--'], ['left', '?'], ['right', 'UNARY'], ['right', '**'], ['right', 'UNARY_MATH'], ['left', 'MATH'], ['left', '+', '-'], ['left', 'SHIFT'], ['left', 'RELATION'], ['left', 'COMPARE'], ['left', 'LOGIC'], ['nonassoc', 'INDENT', 'OUTDENT'], ['right', 'YIELD'], ['right', '=', ':', 'COMPOUND_ASSIGN', 'RETURN', 'THROW', 'EXTENDS'], ['right', 'FORIN', 'FOROF', 'BY', 'WHEN'], ['right', 'IF', 'ELSE', 'FOR', 'WHILE', 'UNTIL', 'LOOP', 'SUPER', 'CLASS'], ['left', 'POST_IF']];
operators = [['left', '.', '?.', '::', '?::'], ['left', 'CALL_START', 'CALL_END'], ['nonassoc', '++', '--'], ['left', '?'], ['right', 'UNARY'], ['right', '**'], ['right', 'UNARY_MATH'], ['left', 'MATH'], ['left', '+', '-'], ['left', 'SHIFT'], ['left', 'RELATION'], ['left', 'COMPARE'], ['left', '&'], ['left', '^'], ['left', '|'], ['left', '&&'], ['left', '||'], ['left', 'BIN?'], ['nonassoc', 'INDENT', 'OUTDENT'], ['right', 'YIELD'], ['right', '=', ':', 'COMPOUND_ASSIGN', 'RETURN', 'THROW', 'EXTENDS'], ['right', 'FORIN', 'FOROF', 'BY', 'WHEN'], ['right', 'IF', 'ELSE', 'FOR', 'WHILE', 'UNTIL', 'LOOP', 'SUPER', 'CLASS'], ['left', 'POST_IF']];

@@ -635,0 +645,0 @@ tokens = [];

+13
-10
// Generated by CoffeeScript 1.10.0
(function() {
var BOM, BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARE, COMPOUND_ASSIGN, HERECOMMENT_ILLEGAL, HEREDOC_DOUBLE, HEREDOC_INDENT, HEREDOC_SINGLE, HEREGEX, HEREGEX_OMIT, IDENTIFIER, INDENTABLE_CLOSERS, INDEXABLE, INVALID_ESCAPE, INVERSES, JSTOKEN, JS_FORBIDDEN, JS_KEYWORDS, LEADING_BLANK_LINE, LINE_BREAK, LINE_CONTINUER, LOGIC, Lexer, MATH, MULTI_DENT, NOT_REGEX, NUMBER, OPERATOR, POSSIBLY_DIVISION, REGEX, REGEX_FLAGS, REGEX_ILLEGAL, RELATION, RESERVED, Rewriter, SHIFT, SIMPLE_STRING_OMIT, STRICT_PROSCRIBED, STRING_DOUBLE, STRING_OMIT, STRING_SINGLE, STRING_START, TRAILING_BLANK_LINE, TRAILING_SPACES, UNARY, UNARY_MATH, VALID_FLAGS, WHITESPACE, compact, count, invertLiterate, key, locationDataToString, ref, ref1, repeat, starts, throwSyntaxError,
var BOM, BOOL, CALLABLE, CODE, COFFEE_ALIASES, COFFEE_ALIAS_MAP, COFFEE_KEYWORDS, COMMENT, COMPARE, COMPOUND_ASSIGN, HERECOMMENT_ILLEGAL, HEREDOC_DOUBLE, HEREDOC_INDENT, HEREDOC_SINGLE, HEREGEX, HEREGEX_OMIT, IDENTIFIER, INDENTABLE_CLOSERS, INDEXABLE, INVALID_ESCAPE, INVERSES, JSTOKEN, JS_FORBIDDEN, JS_KEYWORDS, LEADING_BLANK_LINE, LINE_BREAK, LINE_CONTINUER, Lexer, MATH, MULTI_DENT, NOT_REGEX, NUMBER, OPERATOR, POSSIBLY_DIVISION, REGEX, REGEX_FLAGS, REGEX_ILLEGAL, RELATION, RESERVED, Rewriter, SHIFT, SIMPLE_STRING_OMIT, STRICT_PROSCRIBED, STRING_DOUBLE, STRING_OMIT, STRING_SINGLE, STRING_START, TRAILING_BLANK_LINE, TRAILING_SPACES, UNARY, UNARY_MATH, VALID_FLAGS, WHITESPACE, compact, count, invertLiterate, key, locationDataToString, ref, ref1, repeat, starts, throwSyntaxError,
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };

@@ -132,5 +132,2 @@

return 'COMPARE';
case '&&':
case '||':
return 'LOGIC';
case 'true':

@@ -142,2 +139,5 @@ case 'false':

return 'STATEMENT';
case '&&':
case '||':
return id;
default:

@@ -536,4 +536,4 @@ return tag;

tag = 'SHIFT';
} else if (indexOf.call(LOGIC, value) >= 0 || value === '?' && (prev != null ? prev.spaced : void 0)) {
tag = 'LOGIC';
} else if (value === '?' && (prev != null ? prev.spaced : void 0)) {
tag = 'BIN?';
} else if (prev && !prev.spaced) {

@@ -650,3 +650,8 @@ if (value === '(' && (ref5 = prev[0], indexOf.call(CALLABLE, ref5) >= 0)) {

firstToken[2].first_column -= delimiter.length;
lastToken[2].last_column += delimiter.length;
if (lastToken[1].substr(-1) === '\n') {
lastToken[2].last_line += 1;
lastToken[2].last_column = delimiter.length - 1;
} else {
lastToken[2].last_column += delimiter.length;
}
if (lastToken[1].length === 0) {

@@ -801,3 +806,3 @@ lastToken[2].last_column -= 1;

var ref2;
return LINE_CONTINUER.test(this.chunk) || ((ref2 = this.tag()) === '\\' || ref2 === '.' || ref2 === '?.' || ref2 === '?::' || ref2 === 'UNARY' || ref2 === 'MATH' || ref2 === 'UNARY_MATH' || ref2 === '+' || ref2 === '-' || ref2 === 'YIELD' || ref2 === '**' || ref2 === 'SHIFT' || ref2 === 'RELATION' || ref2 === 'COMPARE' || ref2 === 'LOGIC' || ref2 === 'THROW' || ref2 === 'EXTENDS');
return LINE_CONTINUER.test(this.chunk) || ((ref2 = this.tag()) === '\\' || ref2 === '.' || ref2 === '?.' || ref2 === '?::' || ref2 === 'UNARY' || ref2 === 'MATH' || ref2 === 'UNARY_MATH' || ref2 === '+' || ref2 === '-' || ref2 === 'YIELD' || ref2 === '**' || ref2 === 'SHIFT' || ref2 === 'RELATION' || ref2 === 'COMPARE' || ref2 === '&' || ref2 === '^' || ref2 === '|' || ref2 === '&&' || ref2 === '||' || ref2 === 'BIN?' || ref2 === 'THROW' || ref2 === 'EXTENDS');
};

@@ -994,4 +999,2 @@

LOGIC = ['&&', '||', '&', '|', '^'];
SHIFT = ['<<', '>>', '>>>'];

@@ -998,0 +1001,0 @@

@@ -29,2 +29,3 @@ // Generated by CoffeeScript 1.10.0

this.addLocationDataToGeneratedTokens();
this.fixOutdentLocationData();
return this.tokens;

@@ -376,2 +377,19 @@ };

Rewriter.prototype.fixOutdentLocationData = function() {
return this.scanTokens(function(token, i, tokens) {
var prevLocationData;
if (!(token[0] === 'OUTDENT' || (token.generated && token[0] === 'CALL_END') || (token.generated && token[0] === '}'))) {
return 1;
}
prevLocationData = tokens[i - 1][2];
token[2] = {
first_line: prevLocationData.last_line,
first_column: prevLocationData.last_column,
last_line: prevLocationData.last_line,
last_column: prevLocationData.last_column
};
return 1;
});
};
Rewriter.prototype.normalizeLines = function() {

@@ -378,0 +396,0 @@ var action, condition, indent, outdent, starter;

@@ -11,3 +11,3 @@ {

"author": "Jeremy Ashkenas",
"version": "1.10.0-patch1",
"version": "1.10.0-patch10",
"license": "MIT",

@@ -21,2 +21,3 @@ "engines": {

"main": "./lib/coffee-script/coffee-script",
"types": "./lib/coffee-script/coffee-script.d.ts",
"bin": {

@@ -23,0 +24,0 @@ "coffee": "./bin/coffee",

Sorry, the diff of this file is too big to display