Skip to content

Commit c26ca75

Browse files
committed
application rebuild publish
1 parent 8beb683 commit c26ca75

File tree

8 files changed

+43
-26
lines changed

8 files changed

+43
-26
lines changed

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "typescript-bundle",
3-
"version": "1.0.1",
3+
"version": "1.0.2",
44
"description": " A zero configuration bundling tool for TypeScript.",
55
"scripts": {
66
"clean": "node tasks clean",

src/bundler/resources/resources.ts

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ interface AMDResult {
6868
}
6969
class AMDReader {
7070
public static read(code: string): AMDResult {
71-
const document: AMDResult = { defines: [], remaps: {} }
71+
const result: AMDResult = { defines: [], remaps: {} }
7272
const resource_names: {[name: string]: null} = {}
7373
const pattern = /define\s*\("(.*)",\s*\[(.*)],\s*function/gm
7474
while(true) {
@@ -90,27 +90,44 @@ class AMDReader {
9090
const directive = split[0]
9191
const absoluteName = join(module_root, split[1])
9292
const resource = `${directive}!${absoluteName}`
93-
document.remaps[resource] = document.remaps[resource] || []
94-
document.remaps[resource].push(dependency)
93+
result.remaps[resource] = result.remaps[resource] || []
94+
result.remaps[resource].push(dependency)
9595
resource_names[resource] = null
9696
return resource
9797
}
9898
}
9999
return dependency
100100
})
101101
const define = { type, name, dependencies: dependencies }
102-
document.defines.push(define as Define)
102+
result.defines.push(define as Define)
103+
}
104+
105+
// Resolve the resource path prefix. This is resolved from the
106+
// 'last' definition in the bundle. We are looking for multi
107+
// component paths (i.e 'parent/index'). This indicates that
108+
// TypeScript has re-orientated the module paths due to a
109+
// module inside the 'projectRoot' importing outside the project
110+
// root. In these cases, we prefix the resourcePath with ../.
111+
// for as many path components found - 1.
112+
let resourcePathPrefix = './'
113+
if(result.defines.length > 0) {
114+
const entry = result.defines[result.defines.length - 1] as Module
115+
const split = entry.name.split('/')
116+
if(split.length > 1) {
117+
resourcePathPrefix = split.slice(1).map(n => '../').join('')
118+
}
103119
}
104120

105121
// Construct Resources from 'resource_names' accumulator.
106122
const resources = Object.keys(resource_names).map(name => {
107-
const [directive, path] = name.split('!')
123+
const [directive, moduleName] = name.split('!')
108124
const dependencies = ["exports"]
109125
const type = 'resource'
126+
const path = `${resourcePathPrefix}${moduleName}`
110127
return { type, name, path, directive, dependencies } as Resource
111128
})
112-
document.defines.unshift(...resources)
113-
return document
129+
result.defines.unshift(...resources)
130+
return result
114131
}
115132
}
116133

src/bundler/resources/templates/base64.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,16 @@ THE SOFTWARE.
2929
import { readFileSync } from 'fs'
3030
import { render } from './render'
3131

32-
function get(fileName: string): string {
32+
function get(filePath: string): string {
3333
try {
34-
const buffer = readFileSync(fileName)
34+
const buffer = readFileSync(filePath)
3535
return `"${buffer.toString('base64')}"`
3636
} catch {
3737
const buffer = Buffer.from([])
3838
return `"${buffer.toString('base64')}"`
3939
}
4040
}
4141

42-
export function asBase64(moduleName: string, fileName: string) {
43-
return render(moduleName, get(fileName))
42+
export function asBase64(moduleName: string, filePath: string) {
43+
return render(moduleName, get(filePath))
4444
}

src/bundler/resources/templates/buffer.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,16 @@ THE SOFTWARE.
2929
import { readFileSync } from 'fs'
3030
import { render } from './render'
3131

32-
function get(fileName: string): string {
32+
function get(filePath: string): string {
3333
try {
34-
const content = readFileSync(fileName) as Uint8Array
34+
const content = readFileSync(filePath) as Uint8Array
3535
const buffer = [...content]
3636
return `new Uint8Array([${buffer.join(',')}])`
3737
} catch {
3838
return `new Uint8Array([])`
3939
}
4040
}
4141

42-
export function asBuffer(moduleName: string, fileName: string) {
43-
return render(moduleName, get(fileName))
42+
export function asBuffer(moduleName: string, filePath: string) {
43+
return render(moduleName, get(filePath))
4444
}

src/bundler/resources/templates/json.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ function formatJson(data: any): string {
3434
return JSON.stringify(data, null, 2).split('\n').map((n, i) => (i > 0) ? ` ${n}`: n).join("\n")
3535
}
3636

37-
function get(fileName: string): string {
37+
function get(filePath: string): string {
3838
let content = ''
3939
try {
40-
content = readFileSync(fileName, 'utf8')
40+
content = readFileSync(filePath, 'utf8')
4141
} catch(error) {
4242
return formatJson({ error: 'unable to load resource'})
4343
}
@@ -49,6 +49,6 @@ function get(fileName: string): string {
4949
}
5050
}
5151

52-
export function asJson(moduleName: string, fileName: string) {
53-
return render(moduleName, get(fileName))
52+
export function asJson(moduleName: string, filePath: string) {
53+
return render(moduleName, get(filePath))
5454
}

src/bundler/resources/templates/text.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ THE SOFTWARE.
2929
import { render } from './render'
3030
import { readFileSync } from 'fs'
3131

32-
function get(fileName: string): string {
32+
function get(filePath: string): string {
3333
try {
34-
const content = readFileSync(fileName, 'utf8')
34+
const content = readFileSync(filePath, 'utf8')
3535
const lines = content.split('\n').map(line => {
3636
const text = line
3737
.replace(/\\/g, '\\\\"')
@@ -44,6 +44,6 @@ function get(fileName: string): string {
4444
}
4545
}
4646

47-
export function asText(moduleName: string, fileName: string) {
48-
return render(moduleName, get(fileName))
47+
export function asText(moduleName: string, filePath: string) {
48+
return render(moduleName, get(filePath))
4949
}

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import { writeFileSync } from 'fs'
3535
/** Writes usage information */
3636
async function info() {
3737

38-
console.log(`Version 1.0.1
38+
console.log(`Version 1.0.2
3939
4040
Examples: tsc-bundle index.ts
4141
tsc-bundle tsconfig.json

0 commit comments

Comments
 (0)