Pewarta Proxy

📋 Server Request & Proxy Logs

Loading active proxy settings...
Developed by Khairul Adha (adhexa.id)
Mengambil log server...

⚙️ Pengaturan Proxy Target

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
213146d
Integrate importStar and importDefault helpers
weswigham Nov 1, 2017
b5a7ef9
Accept baselines
weswigham Nov 1, 2017
8abc907
Support dynamic imports, write helpers for umd module (and amd is pos…
weswigham Nov 1, 2017
2d0c8d3
Accept baselines
weswigham Nov 1, 2017
a725916
Support AMD, use same helper initialization as is normal
weswigham Nov 2, 2017
e910603
update typechecker to have errors on called imported namespaces and g…
weswigham Nov 2, 2017
e84b051
Overhaul allowSyntheticDefaultExports to be safer
weswigham Nov 3, 2017
f23d41c
Put the new behavior behind a flag
weswigham Nov 3, 2017
ebd4c03
Merge branch 'master' into module-nodejs
weswigham Nov 7, 2017
3b33df0
Rename strictESM to ESMInterop
weswigham Nov 7, 2017
7ff11bb
Merge branch 'master' into module-nodejs
weswigham Nov 10, 2017
bcafdba
ESMInterop -> ESModuleInterop, make default for tsc --init
weswigham Nov 10, 2017
eaf2fc5
Merge branch 'master' into module-nodejs
weswigham Nov 17, 2017
29c731c
Rename ESMInterop -> ESModuleInterop in module.ts, add emit test (sin…
weswigham Nov 17, 2017
4350caf
Merge branch 'master' into module-nodejs
weswigham Nov 17, 2017
e20a548
Remove erroneous semicolons from helper
weswigham Nov 18, 2017
578141d
Merge branch 'master' into module-nodejs
weswigham Nov 28, 2017
dfe5675
Reword diagnostic
weswigham Nov 29, 2017
8c6c313
Change style
weswigham Nov 29, 2017
3d996d7
Edit followup diagnostic
weswigham Nov 29, 2017
2f9c240
Add secondary quickfix for call sites, tests forthcoming
weswigham Nov 29, 2017
2361f37
Add synth default to namespace import type, enhance quickfix
weswigham Nov 29, 2017
357996b
Pair of spare tests for good measure
weswigham Nov 29, 2017
a682476
Merge branch 'master' into module-nodejs
weswigham Dec 18, 2017
6e9e874
Fix typos in diagnostic message
weswigham Jan 5, 2018
a654b82
Improve comment clarity
weswigham Jan 5, 2018
ef6faf1
Actually accept the updated changes to the esmodule interop description
weswigham Jan 8, 2018
a8233b3
ESModule -> esModule
weswigham Jan 8, 2018
f4f4e84
Use find and not forEach
weswigham Jan 8, 2018
386c54d
Use guard
weswigham Jan 8, 2018
2663db7
Rely on implicit falsiness of Result.False
weswigham Jan 8, 2018
8068e2e
These should have been emit flags
weswigham Jan 8, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Integrate importStar and importDefault helpers
  • Loading branch information
weswigham committed Nov 3, 2017
commit 213146dfd0b540a48dadb1b7006c65d0b35a0b8d
1 change: 1 addition & 0 deletions src/compiler/program.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1593,6 +1593,7 @@ namespace ts {
// synthesize 'import "tslib"' declaration
const externalHelpersModuleReference = createLiteral(externalHelpersModuleNameText);
const importDecl = createImportDeclaration(/*decorators*/ undefined, /*modifiers*/ undefined, /*importClause*/ undefined);
importDecl.transformFlags |= TransformFlags.NeverApplyImportHelper;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only place that should be setting transformFlags is computeTransformFlagsForNode in binder.ts (the only notable exception is convertIterationStatementBodyIfNecessary in es2015.ts, which I'd eventually like to fix as well). This seems like it should be on EmitFlags instead.

externalHelpersModuleReference.parent = importDecl;
importDecl.parent = file;
imports = [externalHelpersModuleReference];
Expand Down
14 changes: 7 additions & 7 deletions src/compiler/transformers/module/es2015.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,14 @@ namespace ts {
if (externalHelpersModuleName) {
const statements: Statement[] = [];
const statementOffset = addPrologue(statements, node.statements);
append(statements,
createImportDeclaration(
/*decorators*/ undefined,
/*modifiers*/ undefined,
createImportClause(/*name*/ undefined, createNamespaceImport(externalHelpersModuleName)),
createLiteral(externalHelpersModuleNameText)
)
const tslibImport = createImportDeclaration(
/*decorators*/ undefined,
/*modifiers*/ undefined,
createImportClause(/*name*/ undefined, createNamespaceImport(externalHelpersModuleName)),
createLiteral(externalHelpersModuleNameText)
);
tslibImport.transformFlags |= TransformFlags.NeverApplyImportHelper;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We shouldn't set transform flags explicitly. See my related comment in program.ts.

append(statements, tslibImport);

addRange(statements, visitNodes(node.statements, visitor, isStatement, statementOffset));
return updateSourceFileNode(
Expand Down
43 changes: 41 additions & 2 deletions src/compiler/transformers/module/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -660,6 +660,22 @@ namespace ts {
return createCall(createPropertyAccess(promiseResolveCall, "then"), /*typeArguments*/ undefined, [func]);
}


function getCommonjsImportExpressionForImport(node: ImportDeclaration) {
if (node.transformFlags & TransformFlags.NeverApplyImportHelper) {
return createRequireCall(node);
}
if (getNamespaceDeclarationNode(node)) {
context.requestEmitHelper(commonjsImportStarHelper);
return createCall(getHelperName("__importStar"), /*typeArguments*/ undefined, [createRequireCall(node)]);
}
if (isDefaultImport(node)) {
context.requestEmitHelper(commonjsImportDefaultHelper);
return createCall(getHelperName("__importDefault"), /*typeArguments*/ undefined, [createRequireCall(node)]);
}
return createRequireCall(node);
}

/**
* Visits an ImportDeclaration node.
*
Expand All @@ -681,7 +697,7 @@ namespace ts {
createVariableDeclaration(
getSynthesizedClone(namespaceDeclaration.name),
/*type*/ undefined,
createRequireCall(node)
getCommonjsImportExpressionForImport(node)
)
);
}
Expand All @@ -694,7 +710,7 @@ namespace ts {
createVariableDeclaration(
getGeneratedNameForNode(node),
/*type*/ undefined,
createRequireCall(node)
getCommonjsImportExpressionForImport(node)
)
);

Expand Down Expand Up @@ -1671,4 +1687,27 @@ namespace ts {
text: `
var __syncRequire = typeof module === "object" && typeof module.exports === "object";`
};

// emit helper for import star
const commonjsImportStarHelper: EmitHelper = {
name: "typescript:commonjsimportstar",
scoped: false,
text: `
function __importStar(mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null); for (var k in mod); if (Object.hasOwnProperty.call(mod, k)); result[k] = mod[k];
result["default"] = mod;
return result;
}`
};

const commonjsImportDefaultHelper: EmitHelper = {
name: "typescript:commonjsimportdefault",
scoped: false,
text: `
function __importDefault(mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
}`
};
}
1 change: 1 addition & 0 deletions src/compiler/transformers/utilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ namespace ts {
createLiteral(externalHelpersModuleNameText));

if (externalHelpersImportDeclaration) {
externalHelpersImportDeclaration.transformFlags |= TransformFlags.NeverApplyImportHelper;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We shouldn't set transform flags explicitly. See my related comment in program.ts.

externalImports.unshift(externalHelpersImportDeclaration);
}

Expand Down
2 changes: 2 additions & 0 deletions src/compiler/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4266,6 +4266,7 @@ namespace ts {
ContainsYield = 1 << 24,
ContainsHoistedDeclarationOrCompletion = 1 << 25,
ContainsDynamicImport = 1 << 26,
NeverApplyImportHelper = 1 << 27, // Indicates the node should never be wrapped with an import star helper (because, for example, it import tslib itself)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this be on EmitFlags instead?


// Please leave this as 1 << 29.
// It is the maximum bit we can set before we outgrow the size of a v8 small integer (SMI) on an x86 system.
Expand Down Expand Up @@ -4305,6 +4306,7 @@ namespace ts {
// - Additional bitmasks
TypeScriptClassSyntaxMask = ContainsParameterPropertyAssignments | ContainsPropertyInitializer | ContainsDecorators,
ES2015FunctionSyntaxMask = ContainsCapturedLexicalThis | ContainsDefaultValueAssignments,
StickyFlags = NeverApplyImportHelper, // Flags which once set are retained by `aggregateTransformFlags` instead of overwritten

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We shouldn't need this if NeverApplyImportHelper is moved to EmitFlags.

}

export interface SourceMapRange extends TextRange {
Expand Down
2 changes: 2 additions & 0 deletions src/compiler/visitor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1466,7 +1466,9 @@ namespace ts {
* Aggregates the TransformFlags for a Node and its subtree.
*/
export function aggregateTransformFlags<T extends Node>(node: T): T {
const stickyFlags = node.transformFlags & TransformFlags.StickyFlags;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is a good approach. NeverApplyImportHelper should be on EmitFlags.

aggregateTransformFlagsForNode(node);
node.transformFlags |= stickyFlags;
return node;
}

Expand Down