Skip to content

Commit

Permalink
Convert to typescript
Browse files Browse the repository at this point in the history
only this addon's public APIs related modules were touched
  • Loading branch information
Ruslan Hrabovyi committed Mar 15, 2019
1 parent 4490bf2 commit 875a2dc
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 30 deletions.
20 changes: 12 additions & 8 deletions addon/index.js → addon/index.ts
@@ -1,6 +1,7 @@
/* global requirejs:false, require:false */
function resolveInitializer(moduleName) {
var module = require(moduleName, null, null, true);
import Engine from '@ember/engine';

function resolveInitializer(moduleName: string) {
var module = self.require(moduleName, null, null, true);
if (!module) {
throw new Error(moduleName + ' must export an initializer.');
}
Expand All @@ -11,30 +12,33 @@ function resolveInitializer(moduleName) {
return initializer;
}

function registerInitializers(app, moduleNames) {
function registerInitializers(app: typeof Engine, moduleNames: string[]) {
for (var i = 0; i < moduleNames.length; i++) {
app.initializer(resolveInitializer(moduleNames[i]));
}
}

function registerInstanceInitializers(app, moduleNames) {
function registerInstanceInitializers(app: typeof Engine, moduleNames: string[]) {
for (var i = 0; i < moduleNames.length; i++) {
app.instanceInitializer(resolveInitializer(moduleNames[i]));
}
}

function _endsWith(str, suffix) {
function _endsWith(str: string, suffix: string) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}

export default function (app, prefix) {
/**
* Configure your application as it boots
*/
export default function loadInitializers(app: typeof Engine, prefix: string) {
var initializerPrefix = prefix + '/initializers/';
var instanceInitializerPrefix = prefix + '/instance-initializers/';
var initializers = [];
var instanceInitializers = [];
// this is 2 pass because generally the first pass is the problem
// and is reduced, and resolveInitializer has potential to deopt
var moduleNames = Object.keys(requirejs._eak_seen);
var moduleNames = Object.keys(self.requirejs._eak_seen);
for (var i = 0; i < moduleNames.length; i++) {
var moduleName = moduleNames[i];
if (moduleName.lastIndexOf(initializerPrefix, 0) === 0) {
Expand Down
8 changes: 8 additions & 0 deletions tests/dummy/app/app.js → tests/dummy/app/app.ts
Expand Up @@ -3,12 +3,20 @@ import Resolver from './resolver';
import loadInitializers from 'ember-load-initializers';
import config from './config/environment';

declare global {
interface Window {
fooInitializeWasCalled: any;
barInitializeWasCalled: any;
}
}

const App = Application.extend({
modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix,
Resolver,
destroy() {
this._super(...arguments);

delete self.fooInitializeWasCalled;
delete self.barInitializeWasCalled;
}
Expand Down
13 changes: 13 additions & 0 deletions types/loader.js/index.d.ts
@@ -0,0 +1,13 @@
export {}

declare global {
interface Window {
require(moduleName: string, ...args: any[]): any

requirejs: {
_eak_seen: {
[s: string]: any
}
}
}
}
32 changes: 10 additions & 22 deletions yarn.lock
Expand Up @@ -972,12 +972,7 @@ amdefine@>=0.0.4:
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=

ansi-escapes@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==

ansi-escapes@^3.2.0:
ansi-escapes@^3.0.0, ansi-escapes@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
Expand Down Expand Up @@ -2381,12 +2376,7 @@ can-symlink@^1.0.0:
dependencies:
tmp "0.0.28"

caniuse-lite@^1.0.30000844:
version "1.0.30000899"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000899.tgz#6febdbbc388a7982f620ee0e3d09aab0c061389e"
integrity sha512-enC3zKfUCJxxwvUIsBkbHd54CtJw1KtIWvrK0JZxWD/fEN2knHaai45lndJ4xXAkyRAPyk60J3yagkKDWhfeMA==

caniuse-lite@^1.0.30000899:
caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000899:
version "1.0.30000900"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000900.tgz#015cfe37897a3386a3075a914498800c29afe77e"
integrity sha512-xDVs8pBFr6bzq9pXUkLKpGQQnzsF/l6/yX38UnCkTcUcwC0rDl1NGZGildcJVTU+uGBxfsyniK/ZWagPNn1Oqw==
Expand Down Expand Up @@ -3418,7 +3408,12 @@ ember-resolver@^5.1.3:
ember-cli-version-checker "^3.0.0"
resolve "^1.10.0"

ember-rfc176-data@^0.3.5, ember-rfc176-data@^0.3.8:
ember-rfc176-data@^0.3.5:
version "0.3.7"
resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.7.tgz#ecff7d74987d09296d3703343fed934515a4be33"
integrity sha512-AbTlD+q7sfyrD4diZqE7r9Y9/Je+HntVn7TlpHAe+nP5BNXxUXJIfDs5w5e3MxPcMs6Dz/yY90YfW8h1oKEvGg==

ember-rfc176-data@^0.3.8:
version "0.3.8"
resolved "https://registry.yarnpkg.com/ember-rfc176-data/-/ember-rfc176-data-0.3.8.tgz#d46bbef9a0d57c803217b258cfd2e90d8e191848"
integrity sha512-SQup3iG7SDLZNuf7nMMx5BC5truO8AYKRi80gApeQ07NsbuXV4LH75i5eOaxF0i8l9+H1tzv34kGe6rEh0C1NQ==
Expand Down Expand Up @@ -4369,7 +4364,7 @@ glob@^5.0.10:
once "^1.3.0"
path-is-absolute "^1.0.0"

glob@^7.0.3, glob@^7.0.4, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3:
glob@^7.0.3, glob@^7.0.4, glob@^7.1.2, glob@^7.1.3:
version "7.1.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
Expand Down Expand Up @@ -6980,14 +6975,7 @@ retry@^0.10.0:
resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4"
integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=

rimraf@^2.2.8, rimraf@^2.3.2, rimraf@^2.3.4, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
dependencies:
glob "^7.0.5"

rimraf@~2.6.2:
rimraf@^2.2.8, rimraf@^2.3.2, rimraf@^2.3.4, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2:
version "2.6.3"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
Expand Down

0 comments on commit 875a2dc

Please sign in to comment.