diff --git a/types/ember-data/tsconfig.json b/types/ember-data/tsconfig.json
index f476362aaf..aadbbe7f5f 100644
--- a/types/ember-data/tsconfig.json
+++ b/types/ember-data/tsconfig.json
@@ -35,6 +35,7 @@
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
+ "@ember/string/*": ["ember__string/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
diff --git a/types/ember-feature-flags/tsconfig.json b/types/ember-feature-flags/tsconfig.json
index 957a7a00f8..dc3260af3a 100644
--- a/types/ember-feature-flags/tsconfig.json
+++ b/types/ember-feature-flags/tsconfig.json
@@ -35,6 +35,7 @@
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
+ "@ember/string/*": ["ember__string/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
diff --git a/types/ember-mocha/tsconfig.json b/types/ember-mocha/tsconfig.json
index 4e9b406e2e..c6c6a09f65 100644
--- a/types/ember-mocha/tsconfig.json
+++ b/types/ember-mocha/tsconfig.json
@@ -35,6 +35,7 @@
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
+ "@ember/string/*": ["ember__string/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
diff --git a/types/ember-modal-dialog/tsconfig.json b/types/ember-modal-dialog/tsconfig.json
index 0b0b6f91fb..8fc7a37808 100644
--- a/types/ember-modal-dialog/tsconfig.json
+++ b/types/ember-modal-dialog/tsconfig.json
@@ -35,6 +35,7 @@
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
+ "@ember/string/*": ["ember__string/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
diff --git a/types/ember-qunit/tsconfig.json b/types/ember-qunit/tsconfig.json
index df4899b37c..92a555a59f 100644
--- a/types/ember-qunit/tsconfig.json
+++ b/types/ember-qunit/tsconfig.json
@@ -35,6 +35,7 @@
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
+ "@ember/string/*": ["ember__string/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
diff --git a/types/ember-resolver/tsconfig.json b/types/ember-resolver/tsconfig.json
index bc476c5723..7263220f71 100644
--- a/types/ember-resolver/tsconfig.json
+++ b/types/ember-resolver/tsconfig.json
@@ -35,6 +35,7 @@
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
+ "@ember/string/*": ["ember__string/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
diff --git a/types/ember-test-helpers/tsconfig.json b/types/ember-test-helpers/tsconfig.json
index 2e0ddf49b1..ca139535f3 100644
--- a/types/ember-test-helpers/tsconfig.json
+++ b/types/ember-test-helpers/tsconfig.json
@@ -35,6 +35,7 @@
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
+ "@ember/string/*": ["ember__string/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
diff --git a/types/ember/index.d.ts b/types/ember/index.d.ts
index fbe058a643..d0f9896eb9 100755
--- a/types/ember/index.d.ts
+++ b/types/ember/index.d.ts
@@ -38,15 +38,17 @@ import {
ComputedPropertyCallback,
ObserverMethod
} from '@ember/object/-private/types';
-import * as HandlebarsNamespace from 'handlebars';
+
// Capitalization is intentional: this makes it much easier to re-export RSVP on
// the Ember namespace.
import Rsvp from 'rsvp';
+
import { TemplateFactory } from 'htmlbars-inline-precompile';
import { Registry as ServiceRegistry } from '@ember/service';
import { Registry as ControllerRegistry } from '@ember/controller';
import * as EmberStringNs from '@ember/string';
+import * as EmberStringHandlebarsNs from '@ember/string/-private/handlebars';
// tslint:disable-next-line:no-duplicate-imports
import * as EmberServiceNs from '@ember/service';
import * as EmberPolyfillsNs from '@ember/polyfills';
@@ -424,11 +426,12 @@ export namespace Ember {
function K(): any;
function createFrame(objec: any): any;
function Exception(message: string): void;
- const SafeString: typeof HandlebarsNamespace.SafeString;
+ class SafeString extends EmberStringHandlebarsNs.SafeString {}
function parse(string: string): any;
function print(ast: any): void;
const logger: typeof Logger;
function log(level: string, str: string): void;
+ function registerHelper(name: string, helper: any): void;
}
namespace String {
const camelize: typeof EmberStringNs.camelize;
diff --git a/types/ember/test/ember-tests.ts b/types/ember/test/ember-tests.ts
index 01aaab7452..eb317c3ab1 100755
--- a/types/ember/test/ember-tests.ts
+++ b/types/ember/test/ember-tests.ts
@@ -92,10 +92,10 @@ App.userController = Ember.Object.create({
}),
});
-Handlebars.registerHelper(
+Ember.Handlebars.registerHelper(
'highlight',
(property: string, options: any) =>
- new Handlebars.SafeString('' + 'some value' + '')
+ new Ember.Handlebars.SafeString('' + 'some value' + '')
);
const coolView = App.CoolView.create();
diff --git a/types/ember/test/string.ts b/types/ember/test/string.ts
index 4363b375f3..d812a52dd5 100644
--- a/types/ember/test/string.ts
+++ b/types/ember/test/string.ts
@@ -1,5 +1,5 @@
import Ember from 'ember';
-import { SafeString } from 'handlebars';
+import { SafeString } from '@ember/string/-private/handlebars';
const { dasherize, camelize, capitalize, classify, decamelize, htmlSafe, loc, underscore, w } = Ember.String;
diff --git a/types/ember/tsconfig.json b/types/ember/tsconfig.json
index be47225e72..6e494f5a03 100755
--- a/types/ember/tsconfig.json
+++ b/types/ember/tsconfig.json
@@ -36,6 +36,7 @@
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
+ "@ember/string/*": ["ember__string/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
diff --git a/types/ember__string/-private/handlebars.d.ts b/types/ember__string/-private/handlebars.d.ts
new file mode 100644
index 0000000000..8d8dce118c
--- /dev/null
+++ b/types/ember__string/-private/handlebars.d.ts
@@ -0,0 +1,5 @@
+export class SafeString {
+ constructor(str: string);
+ toString(): string;
+ toHTML(): string;
+}
diff --git a/types/ember__string/ember__string-tests.ts b/types/ember__string/ember__string-tests.ts
index 500c67546e..c6474cd266 100644
--- a/types/ember__string/ember__string-tests.ts
+++ b/types/ember__string/ember__string-tests.ts
@@ -1,5 +1,5 @@
import { dasherize, camelize, capitalize, classify, decamelize, htmlSafe, loc, underscore, w, isHTMLSafe } from '@ember/string';
-import { SafeString } from 'handlebars';
+import { SafeString } from '@ember/string/-private/handlebars';
dasherize(); // $ExpectError
dasherize('blue man group'); // $ExpectType string
@@ -37,7 +37,7 @@ const handlebarsSafeString: SafeString = htmlSafe('lorem ipsum...');
htmlSafe('lorem ipsum...'); // $ExpectType SafeString
const regularString: string = htmlSafe('lorem ipsum...'); // $ExpectError
-function isSafeTest(a: string|Handlebars.SafeString) {
+function isSafeTest(a: string | SafeString) {
if (isHTMLSafe(a)) {
a = a.toString();
}
diff --git a/types/ember__string/index.d.ts b/types/ember__string/index.d.ts
index c25da1f823..2a65c9b5df 100644
--- a/types/ember__string/index.d.ts
+++ b/types/ember__string/index.d.ts
@@ -4,7 +4,7 @@
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.8
-import { SafeString } from 'handlebars';
+import { SafeString } from "./-private/handlebars";
export function camelize(str: string): string;
export function capitalize(str: string): string;
diff --git a/types/ember__string/tsconfig.json b/types/ember__string/tsconfig.json
index 100fad10f5..a5a7ecc944 100644
--- a/types/ember__string/tsconfig.json
+++ b/types/ember__string/tsconfig.json
@@ -15,13 +15,15 @@
"../"
],
"paths": {
- "@ember/string": ["ember__string"]
+ "@ember/string": ["ember__string"],
+ "@ember/string/*": ["ember__string/*"]
},
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
+ "-private/handlebars.d.ts",
"index.d.ts",
"ember__string-tests.ts"
]
diff --git a/types/ember__test-helpers/tsconfig.json b/types/ember__test-helpers/tsconfig.json
index 7b167f14d5..35638865d8 100644
--- a/types/ember__test-helpers/tsconfig.json
+++ b/types/ember__test-helpers/tsconfig.json
@@ -38,6 +38,7 @@
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
+ "@ember/string/*": ["ember__string/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],
diff --git a/types/ember__test/tsconfig.json b/types/ember__test/tsconfig.json
index da00f05337..bb95710392 100644
--- a/types/ember__test/tsconfig.json
+++ b/types/ember__test/tsconfig.json
@@ -36,6 +36,7 @@
"@ember/runloop/*": ["ember__runloop/*"],
"@ember/service": ["ember__service"],
"@ember/string": ["ember__string"],
+ "@ember/string/*": ["ember__string/*"],
"@ember/test": ["ember__test"],
"@ember/test/*": ["ember__test/*"],
"@ember/utils": ["ember__utils"],