From cd12c8b63ba9b23e78b36177f22877b208f39aad Mon Sep 17 00:00:00 2001 From: Armando Aguirre Date: Tue, 30 Jan 2018 10:22:29 -0800 Subject: [PATCH 1/6] Added datatables library to safelist --- src/harness/unittests/tsserverProjectSystem.ts | 17 +++++++++++++++-- src/server/editorServices.ts | 5 +++++ src/server/typesMap.json | 4 ++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/harness/unittests/tsserverProjectSystem.ts b/src/harness/unittests/tsserverProjectSystem.ts index fee21fcdb2d..6834a598512 100644 --- a/src/harness/unittests/tsserverProjectSystem.ts +++ b/src/harness/unittests/tsserverProjectSystem.ts @@ -1541,14 +1541,27 @@ namespace ts.projectSystem { path: "/scripts/Office/1/powerpoint.js", content: "unspecified" }; - const files = [file1, minFile, kendoFile1, kendoFile2, kendoFile3, officeFile1, officeFile2]; + const datatablesFile1 = { + path: "/js/jquery.datatables.js", + content: "unspecified" + }; + const datatablesFile2 = { + path: "/js/datatables.js", + content: "unspecified" + }; + const datatablesFile3 = { + path: "/js/datatables.all.min.js", + content: "unspecified" + }; + + const files = [file1, minFile, kendoFile1, kendoFile2, kendoFile3, officeFile1, officeFile2, datatablesFile1, datatablesFile2, datatablesFile3]; const host = createServerHost(files); const projectService = createProjectService(host); try { projectService.openExternalProject({ projectFileName: "project", options: {}, rootFiles: toExternalFiles(files.map(f => f.path)) }); const proj = projectService.externalProjects[0]; assert.deepEqual(proj.getFileNames(/*excludeFilesFromExternalLibraries*/ true), [file1.path]); - assert.deepEqual(proj.getTypeAcquisition().include, ["kendo-ui", "office"]); + assert.deepEqual(proj.getTypeAcquisition().include, ["kendo-ui", "office", "datatables.net"]); } finally { projectService.resetSafeList(); } diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 5d71ff4c2d3..6bdbb68e704 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -158,6 +158,11 @@ namespace ts.server { "References": { match: /^(.*\/_references\.js)$/i, exclude: [["^", 1, "$"]] + }, + "Datatables.net": { + // e.g. /wwwroot/lib/datatables.all.min.js + match: /(jquery\.)*dataTables(\.all)*(\.min)*\.js$/i, + types: ["datatables.net"] } }; diff --git a/src/server/typesMap.json b/src/server/typesMap.json index 93e9c2502f8..06b907be513 100644 --- a/src/server/typesMap.json +++ b/src/server/typesMap.json @@ -22,6 +22,10 @@ "References": { "match": "^(.*\\/_references\\.js)$", "exclude": [["^", 1, "$"]] + }, + "Datatables.net": { + "match": "(jquery\\.)*dataTables(\\.all)*(\\.min)*\\.js$", + "types": ["datatables.net"] } }, "simpleMap": { From 8a561e72a89bfe972f1ab5d1a201f6d91336e88c Mon Sep 17 00:00:00 2001 From: Armando Aguirre Date: Tue, 30 Jan 2018 10:46:17 -0800 Subject: [PATCH 2/6] Improved datatables regex --- src/server/editorServices.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 6bdbb68e704..2337cc1d2db 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -161,7 +161,7 @@ namespace ts.server { }, "Datatables.net": { // e.g. /wwwroot/lib/datatables.all.min.js - match: /(jquery\.)*dataTables(\.all)*(\.min)*\.js$/i, + match: /(jquery\.)?dataTables(\.all)?(\.min)?\.js$/i, types: ["datatables.net"] } }; From cd994964e3edd9506c796de9ee951a3a49654d6a Mon Sep 17 00:00:00 2001 From: Armando Aguirre Date: Tue, 30 Jan 2018 10:48:56 -0800 Subject: [PATCH 3/6] Improved datatables regex --- src/server/typesMap.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/typesMap.json b/src/server/typesMap.json index 06b907be513..c632ea1135c 100644 --- a/src/server/typesMap.json +++ b/src/server/typesMap.json @@ -24,7 +24,7 @@ "exclude": [["^", 1, "$"]] }, "Datatables.net": { - "match": "(jquery\\.)*dataTables(\\.all)*(\\.min)*\\.js$", + "match": "(jquery\\.)?dataTables(\\.all)?(\\.min)?\\.js$", "types": ["datatables.net"] } }, From e99fe781723bef575a0155e18f1b64d367eb3ee3 Mon Sep 17 00:00:00 2001 From: Armando Aguirre Date: Tue, 30 Jan 2018 15:22:34 -0800 Subject: [PATCH 4/6] Addressed PR comments --- src/server/editorServices.ts | 5 ----- src/server/typesMap.json | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 2337cc1d2db..5d71ff4c2d3 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -158,11 +158,6 @@ namespace ts.server { "References": { match: /^(.*\/_references\.js)$/i, exclude: [["^", 1, "$"]] - }, - "Datatables.net": { - // e.g. /wwwroot/lib/datatables.all.min.js - match: /(jquery\.)?dataTables(\.all)?(\.min)?\.js$/i, - types: ["datatables.net"] } }; diff --git a/src/server/typesMap.json b/src/server/typesMap.json index c632ea1135c..7da4f57af70 100644 --- a/src/server/typesMap.json +++ b/src/server/typesMap.json @@ -24,7 +24,7 @@ "exclude": [["^", 1, "$"]] }, "Datatables.net": { - "match": "(jquery\\.)?dataTables(\\.all)?(\\.min)?\\.js$", + "match": "^.*\\/(jquery\\.)?dataTables(\\.all)?(\\.min)?\\.js$", "types": ["datatables.net"] } }, From 25f20da200a4050b90fbf5b0517055ab8376e007 Mon Sep 17 00:00:00 2001 From: Armando Aguirre Date: Tue, 30 Jan 2018 17:03:54 -0800 Subject: [PATCH 5/6] Added Ace and PDFKit to typesMap --- src/harness/unittests/tsserverProjectSystem.ts | 16 ++-------------- src/server/typesMap.json | 6 ++++++ 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/harness/unittests/tsserverProjectSystem.ts b/src/harness/unittests/tsserverProjectSystem.ts index 6834a598512..49f063ee604 100644 --- a/src/harness/unittests/tsserverProjectSystem.ts +++ b/src/harness/unittests/tsserverProjectSystem.ts @@ -1541,27 +1541,15 @@ namespace ts.projectSystem { path: "/scripts/Office/1/powerpoint.js", content: "unspecified" }; - const datatablesFile1 = { - path: "/js/jquery.datatables.js", - content: "unspecified" - }; - const datatablesFile2 = { - path: "/js/datatables.js", - content: "unspecified" - }; - const datatablesFile3 = { - path: "/js/datatables.all.min.js", - content: "unspecified" - }; - const files = [file1, minFile, kendoFile1, kendoFile2, kendoFile3, officeFile1, officeFile2, datatablesFile1, datatablesFile2, datatablesFile3]; + const files = [file1, minFile, kendoFile1, kendoFile2, kendoFile3, officeFile1, officeFile2]; const host = createServerHost(files); const projectService = createProjectService(host); try { projectService.openExternalProject({ projectFileName: "project", options: {}, rootFiles: toExternalFiles(files.map(f => f.path)) }); const proj = projectService.externalProjects[0]; assert.deepEqual(proj.getFileNames(/*excludeFilesFromExternalLibraries*/ true), [file1.path]); - assert.deepEqual(proj.getTypeAcquisition().include, ["kendo-ui", "office", "datatables.net"]); + assert.deepEqual(proj.getTypeAcquisition().include, ["kendo-ui", "office"]); } finally { projectService.resetSafeList(); } diff --git a/src/server/typesMap.json b/src/server/typesMap.json index 7da4f57af70..cfe7f6483c4 100644 --- a/src/server/typesMap.json +++ b/src/server/typesMap.json @@ -26,6 +26,11 @@ "Datatables.net": { "match": "^.*\\/(jquery\\.)?dataTables(\\.all)?(\\.min)?\\.js$", "types": ["datatables.net"] + }, + "Ace": { + "match": "^(.*)\\/ace.js", + "exclude": [["^", 1, "/.*"]], + "types": ["ace"] } }, "simpleMap": { @@ -356,6 +361,7 @@ "passport": "passport", "passport-local": "passport-local", "path": "pathjs", + "pdfkit":"pdfkit", "peer": "peerjs", "peg": "pegjs", "photoswipe": "photoswipe", From 559531cd8b034ea10a450d423e55af7a9abf2bef Mon Sep 17 00:00:00 2001 From: Armando Aguirre Date: Tue, 30 Jan 2018 17:05:44 -0800 Subject: [PATCH 6/6] Minor fixes --- src/harness/unittests/tsserverProjectSystem.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/harness/unittests/tsserverProjectSystem.ts b/src/harness/unittests/tsserverProjectSystem.ts index 49f063ee604..fee21fcdb2d 100644 --- a/src/harness/unittests/tsserverProjectSystem.ts +++ b/src/harness/unittests/tsserverProjectSystem.ts @@ -1541,7 +1541,6 @@ namespace ts.projectSystem { path: "/scripts/Office/1/powerpoint.js", content: "unspecified" }; - const files = [file1, minFile, kendoFile1, kendoFile2, kendoFile3, officeFile1, officeFile2]; const host = createServerHost(files); const projectService = createProjectService(host);