Socket
Socket
Sign inDemoInstall

grunt-ts

Package Overview
Dependencies
Maintainers
1
Versions
149
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

grunt-ts - npm Package Compare versions

Comparing version 1.2.6 to 1.2.7

1

Gruntfile.js

@@ -59,2 +59,3 @@ module.exports = function (grunt) {

src: ['test/amdloader/**/*.ts'],
html: ['test/amdloader/**/*.tpl.html'],
reference: 'test/amdloader/ts/reference.ts',

@@ -61,0 +62,0 @@ outDir: 'test/amdloader/js',

2

package.json

@@ -5,3 +5,3 @@ {

"description": "Compile and manage your TypeScript project",
"version": "1.2.6",
"version": "1.2.7",
"homepage": "https://github.com/basarat/grunt-ts",

@@ -8,0 +8,0 @@ "repository": {

@@ -16,2 +16,4 @@ grunt-ts

*If you know Grunt. Here is a quickstart full featured [Gruntfile](https://github.com/basarat/grunt-ts/blob/master/sample/Gruntfile.js)*
Following are some key features:

@@ -29,3 +31,5 @@ ======================

Can also do js *file concatenation* using `--out`. For file ordering look at Javascript Generation below.
Can also do js *file concatenation* using `--out`. Additionally supports an output directory for the generated
javascript using `--outDir` flag.
For file ordering look at Javascript Generation below.

@@ -55,3 +59,2 @@

// You can even put comments here and they are preserved
var orEvenCode = 123; // That you want to come before or after all your files

@@ -67,2 +70,64 @@ //grunt-start

####Javscript generation Redirect
If you specify `outDir` all output javascript are redirectied to this folder.
This helps keep your source folder clean.
####AMD / RequireJS support
If you specify both `outDir` and `amdloader` option a Javascript requireJS loader file is created using the information
available from `reference.ts`. The file consists of three sections.
* The initial ordered section.
* A middle order independent section loaded asynchronously.
* And a final ordered section.
e.g the following `reference` file
```typescript
/// <reference path="classa.ts" />
//grunt-start
/// <reference path="deep/classb.ts" />
/// <reference path="deep/classc.ts" />
//grunt-end
/// <reference path="deep/deeper/classd.ts" />
/// <reference path="app.ts" />
```
Corresponds to an `amdloader`:
```typescript
define(function (require) {
require(["./classa"],function (){ // initial ordered files
require(["./deep/classb", // grunt-ts start / end unordered async loaded files
"./deep/classc"],function (){
require(["./deep/deeper/classd"],function (){ // final ordered files
require(["./app"],function (){ // another final ordered file
});
});
});
});
});
```
#####Advantage of using amdloader option
The following combination of circumstances are why you would use it instead of Compiler supported AMD.
* You want to use RequireJS since you prefer to debug "js" files instead of "ts" files.
This is useful in some cases and the most common way is using AMD
* However, File order doesn't matter to you, even when you have inter file depenendency (e.g. AngularJS runtime Dependency injection)
In such a case you can either create a `loader.js` manually or have grunt create it for you.
**Further Explanation** If you use `export class Foo{}` at the root level of your file the only
way to use the type information
of Foo in another file is via an import statement `import foo = require('./potentially/long/path/to/Foo');`
The ordering implied by this isn't necessary when using a runtime Dependency injection framework like AngularJS.
Having a loader gives you the js debugging (+ async) advantages
of RequireJS without the overhead of constantly requesting via `import` to get the TypeScript type inference and
worrying about file paths when they are not relevant.
PS: your individual file SourceMaps will continue to work. So now you can debug individual "JS" or "TS" files :)
###Html 2 TypeScript support

@@ -134,3 +199,3 @@ Can reencode html files into typescript and makes them available as a variable. e.g.

out: 'test/out.js', // If specified, generate an out.js file which is the merged js file
outDir: 'test/outputdirectory', // If specified, the generate javascript files are placed here. Only works if out is not specified
outDir: 'test/outputdirectory', // If specified, the generate javascript files are placed here. Only works if out is not specified
watch: 'test', // If specified, watches this directory for changes, and re-runs the current target

@@ -137,0 +202,0 @@ options: { // use to override the default options, http://gruntjs.com/configuring-tasks#options

@@ -113,2 +113,3 @@ /// <reference path="../defs/node/node.d.ts"/>

var ourSignatureEnd = '//grunt-end';
var generatedSignature = "// generated";

@@ -157,9 +158,9 @@ var origFileLines = [];

// the generated files:
// Put in the generated files
generatedFiles = _.map(generatedFiles, function (file) {
return referenceIntro + makeReferencePath(referencePath, file) + referenceEnd;
return referenceIntro + makeReferencePath(referencePath, file) + referenceEnd + generatedSignature;
});
var contents = insertArrayAt([ourSignatureStart], 1, generatedFiles);
// the new / observed missing files:
var contents = insertArrayAt([ourSignatureStart], 1, generatedFiles);
// Put in the new / observed missing files:
files.forEach(function (filename) {

@@ -192,2 +193,3 @@ // The file we are about to add

before: [],
generated: [],
unordered: [],

@@ -208,2 +210,5 @@ after: []

// The generated files. These must go on top
var generatedSignature = "// generated";
var lines = fs.readFileSync(referenceFile).toString().split('\n');

@@ -233,3 +238,7 @@

case referenceFileLoopState.unordered:
toreturn.unordered.push(filename);
if (endsWith(line, generatedSignature)) {
toreturn.generated.push(filename);
} else {
toreturn.unordered.push(filename);
}
break;

@@ -247,2 +256,5 @@ case referenceFileLoopState.after:

});
toreturn.generated = _.map(toreturn.generated, function (relativepath) {
return path.resolve(referencePath, relativepath);
});
toreturn.unordered = _.map(toreturn.unordered, function (relativepath) {

@@ -283,9 +295,18 @@ return path.resolve(referencePath, relativepath);

// Filter.d.ts,
files.before = _.filter(files.before, function (file) {
return !endsWith(file, '.d.ts');
});
files.generated = _.filter(files.generated, function (file) {
return !endsWith(file, '.d.ts');
});
files.unordered = _.filter(files.unordered, function (file) {
return !endsWith(file, '.d.ts');
});
files.after = _.filter(files.after, function (file) {
return !endsWith(file, '.d.ts');
});
if (outDir) {
// Find common path
var commonPath = findCommonPath(files.before.concat(files.unordered.concat(files.after)));
var commonPath = findCommonPath(files.before.concat(files.generated.concat(files.unordered.concat(files.after))));

@@ -314,2 +335,3 @@ // Make sure outDir is absolute:

files.before = makeRelativeToOutDir(files.before);
files.generated = makeRelativeToOutDir(files.generated);
files.unordered = makeRelativeToOutDir(files.unordered);

@@ -329,2 +351,5 @@ files.after = makeRelativeToOutDir(files.after);

//
// Notice that we build inside out in the below sections:
//
// Generate fileTemplate from inside out

@@ -343,2 +368,7 @@ // Start with after

// Next the generated files
// For these we will use just one require call
var generatedFileNames = files.generated.join('",' + eol + '\t\t "');
subitem = singleRequireTemplate({ filename: '"' + generatedFileNames + '"', subitem: subitem });
// Build the subitem for ordered before items

@@ -345,0 +375,0 @@ files.before = files.before.reverse();

@@ -142,2 +142,3 @@ /// <reference path="../defs/node/node.d.ts"/>

var ourSignatureEnd = '//grunt-end';
var generatedSignature = "// generated";

@@ -189,7 +190,7 @@ var origFileLines = []; // The lines we do not modify and send out as is. Lines will we reach grunt-ts generated

// the generated files:
generatedFiles = _.map(generatedFiles, (file) => referenceIntro + makeReferencePath(referencePath, file) + referenceEnd);
// Put in the generated files
generatedFiles = _.map(generatedFiles, (file) => referenceIntro + makeReferencePath(referencePath, file) + referenceEnd + generatedSignature);
var contents = insertArrayAt([ourSignatureStart], 1, generatedFiles);
// the new / observed missing files:
var contents = insertArrayAt([ourSignatureStart], 1, generatedFiles);
// Put in the new / observed missing files:
files.forEach((filename: string) => {

@@ -222,5 +223,6 @@ // The file we are about to add

function getReferencesInOrder(referenceFile: string, referencePath: string): { before: string[]; unordered: string[]; after: string[]; } {
function getReferencesInOrder(referenceFile: string, referencePath: string): { before: string[]; generated: string[]; unordered: string[]; after: string[]; } {
var toreturn = {
before: [],
generated: [],
unordered: [],

@@ -241,2 +243,5 @@ after: []

// The generated files. These must go on top
var generatedSignature = "// generated";
var lines = fs.readFileSync(referenceFile).toString().split('\n');

@@ -269,3 +274,8 @@

case referenceFileLoopState.unordered:
toreturn.unordered.push(filename);
if(endsWith(line, generatedSignature)) {
toreturn.generated.push(filename);
}
else {
toreturn.unordered.push(filename);
}
break;

@@ -281,2 +291,3 @@ case referenceFileLoopState.after:

toreturn.before = _.map(toreturn.before, (relativepath) => { return path.resolve(referencePath, relativepath); });
toreturn.generated = _.map(toreturn.generated, (relativepath) => { return path.resolve(referencePath, relativepath); });
toreturn.unordered = _.map(toreturn.unordered, (relativepath) => { return path.resolve(referencePath, relativepath); });

@@ -316,3 +327,6 @@ toreturn.after = _.map(toreturn.after, (relativepath) => { return path.resolve(referencePath, relativepath); });

// Filter.d.ts,
files.before = _.filter(files.before, (file) => { return !endsWith(file, '.d.ts'); });
files.generated = _.filter(files.generated, (file) => { return !endsWith(file, '.d.ts'); });
files.unordered = _.filter(files.unordered, (file) => { return !endsWith(file, '.d.ts'); });
files.after = _.filter(files.after, (file) => { return !endsWith(file, '.d.ts'); });

@@ -326,3 +340,3 @@ // If target has outDir we need to make adjust the path

// Find common path
var commonPath = findCommonPath(files.before.concat(files.unordered.concat(files.after)));
var commonPath = findCommonPath(files.before.concat(files.generated.concat(files.unordered.concat(files.after))));

@@ -351,14 +365,14 @@ // Make sure outDir is absolute:

files.before = makeRelativeToOutDir(files.before);
files.generated = makeRelativeToOutDir(files.generated);
files.unordered = makeRelativeToOutDir(files.unordered);
files.after = makeRelativeToOutDir(files.after);
var mainTemplate = _.template('define(function (require) { '
+ eol + '<%= body %>'
+ eol + '});');
// The order in the before and after files is important
var singleRequireTemplate = _.template('\t require([<%= filename %>],function (){'
+ eol + '<%= subitem %>'
+ eol + '\t });');
+ eol + '\t });');

@@ -368,6 +382,10 @@

var body = '';
// initial sub item
var subitem = '';
var subitem = '';
//
// Notice that we build inside out in the below sections:
//
// Generate fileTemplate from inside out

@@ -378,3 +396,3 @@ // Start with after

_.forEach(files.after, (file) => {
subitem = singleRequireTemplate({ filename: '"'+file+'"', subitem: subitem});
subitem = singleRequireTemplate({ filename: '"' + file + '"', subitem: subitem });
});

@@ -384,4 +402,9 @@

// For these we will use just one require call
var unorderFileNames = files.unordered.join('",'+eol+'\t\t "');
subitem = singleRequireTemplate({filename:'"'+unorderFileNames+'"',subitem:subitem});
var unorderFileNames = files.unordered.join('",' + eol + '\t\t "');
subitem = singleRequireTemplate({ filename: '"' + unorderFileNames + '"', subitem: subitem });
// Next the generated files
// For these we will use just one require call
var generatedFileNames = files.generated.join('",' + eol + '\t\t "');
subitem = singleRequireTemplate({ filename: '"' + generatedFileNames + '"', subitem: subitem });

@@ -548,3 +571,3 @@ // Build the subitem for ordered before items

// Create the loader if specified & compiliation succeeded
if (!!amdloaderPath && result.code==0) {
if (!!amdloaderPath && result.code == 0) {
updateAmdLoader(referenceFile, referencePath, amdloaderFile, amdloaderPath, target.outDir);

@@ -551,0 +574,0 @@ }

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc