Skip to content

Commit

Permalink
[FEATURE] Add remaining Ember modules
Browse files Browse the repository at this point in the history
Adds all of the remaining Ember modules so that we can remove the
API polyfill. Also updates the tests for re-exporting modules so they
are organized by exported module and also test re-exporting the external
module and not any internal one.
  • Loading branch information
Chris Garrett committed Mar 16, 2021
1 parent d414901 commit 62dabfa
Show file tree
Hide file tree
Showing 55 changed files with 558 additions and 220 deletions.
10 changes: 9 additions & 1 deletion packages/@ember/-internals/bootstrap/index.js
@@ -1,5 +1,6 @@
import require from 'require';
import { context } from '@ember/-internals/environment';
import { context, ENV } from '@ember/-internals/environment';
import { jQuery } from '@ember/-internals/views';

(function () {
let Ember;
Expand Down Expand Up @@ -28,4 +29,11 @@ import { context } from '@ember/-internals/environment';
// eslint-disable-next-line no-undef
module.exports = Ember = require('ember').default;
}

if (ENV._JQUERY_INTEGRATION) {
// eslint-disable-next-line no-undef
define('jquery', [], () => {
return jQuery;
});
}
})();
2 changes: 1 addition & 1 deletion packages/@ember/-internals/glimmer/lib/utils/string.ts
Expand Up @@ -75,7 +75,7 @@ export function escapeExpression(string: any): string {
@return {SafeString} A string that will not be HTML escaped by Handlebars.
@public
*/
export function htmlSafe(str: string) {
export function htmlSafe(str: string): SafeString {
if (str === null || str === undefined) {
str = '';
} else if (typeof str !== 'string') {
Expand Down
8 changes: 1 addition & 7 deletions packages/@ember/-internals/metal/index.ts
@@ -1,10 +1,4 @@
export {
default as computed,
autoComputed,
isComputed,
_globalsComputed,
ComputedProperty,
} from './lib/computed';
export { default as computed, autoComputed, isComputed, ComputedProperty } from './lib/computed';
export { getCachedValueFor } from './lib/computed_cache';
export { default as alias } from './lib/alias';
export { deprecateProperty } from './lib/deprecate_property';
Expand Down
2 changes: 0 additions & 2 deletions packages/@ember/-internals/metal/lib/computed.ts
Expand Up @@ -1079,6 +1079,4 @@ export function isComputed(obj: object, key: string): boolean {
return Boolean(descriptorForProperty(obj, key));
}

export const _globalsComputed = computed.bind(null);

export default computed;
1 change: 1 addition & 0 deletions packages/@ember/application/deprecations.ts
@@ -0,0 +1 @@
export { deprecate, deprecateFunc } from '@ember/debug';
1 change: 1 addition & 0 deletions packages/@ember/application/namespace.js
@@ -0,0 +1 @@
export { Namespace as default } from '@ember/-internals/runtime';
1 change: 1 addition & 0 deletions packages/@ember/application/resolver.js
@@ -0,0 +1 @@
export { default } from './globals-resolver';
2 changes: 2 additions & 0 deletions packages/@ember/array/index.js
@@ -0,0 +1,2 @@
export { Array as default, isArray, A } from '@ember/-internals/runtime';
export { makeArray } from '@ember/-internals/utils';
1 change: 1 addition & 0 deletions packages/@ember/array/mutable.js
@@ -0,0 +1 @@
export { MutableArray as default } from '@ember/-internals/runtime';
1 change: 1 addition & 0 deletions packages/@ember/array/proxy.js
@@ -0,0 +1 @@
export { ArrayProxy as default } from '@ember/-internals/runtime';
21 changes: 21 additions & 0 deletions packages/@ember/component/checkbox.ts
@@ -0,0 +1,21 @@
import { EMBER_MODERNIZED_BUILT_IN_COMPONENTS } from '@ember/canary-features';
import { deprecate } from '@ember/debug';

if (EMBER_MODERNIZED_BUILT_IN_COMPONENTS) {
deprecate(
`Using Ember.Checkbox or importing from 'Checkbox' has been deprecated, install the ` +
`\`ember-legacy-built-in-components\` addon and use \`import { Checkbox } from ` +
`'ember-legacy-built-in-components';\` instead`,
false,
{
id: 'ember.legacy-built-in-components',
until: '4.0.0',
for: 'ember-source',
since: {
// TODO: update this when enabling the feature
},
}
);
}

export { Checkbox as default } from '@ember/-internals/glimmer';
1 change: 1 addition & 0 deletions packages/@ember/component/helper.ts
@@ -0,0 +1 @@
export { Helper as default, helper } from '@ember/-internals/glimmer';
7 changes: 6 additions & 1 deletion packages/@ember/component/index.ts
@@ -1 +1,6 @@
export { Component } from '@ember/-internals/glimmer';
export { setComponentTemplate, getComponentTemplate } from '@glimmer/manager';
export { Component as default, Input } from '@ember/-internals/glimmer';
export {
componentCapabilities as capabilities,
setComponentManager,
} from '@ember/-internals/glimmer';
21 changes: 21 additions & 0 deletions packages/@ember/component/text-area.ts
@@ -0,0 +1,21 @@
import { EMBER_MODERNIZED_BUILT_IN_COMPONENTS } from '@ember/canary-features';
import { deprecate } from '@ember/debug';

if (EMBER_MODERNIZED_BUILT_IN_COMPONENTS) {
deprecate(
`Using Ember.TextArea or importing from 'TextArea' has been deprecated, install the ` +
`\`ember-legacy-built-in-components\` addon and use \`import { TextArea } from ` +
`'ember-legacy-built-in-components';\` instead`,
false,
{
id: 'ember.legacy-built-in-components',
until: '4.0.0',
for: 'ember-source',
since: {
// TODO: update this when enabling the feature
},
}
);
}

export { TextArea as default } from '@ember/-internals/glimmer';
21 changes: 21 additions & 0 deletions packages/@ember/component/text-field.ts
@@ -0,0 +1,21 @@
import { EMBER_MODERNIZED_BUILT_IN_COMPONENTS } from '@ember/canary-features';
import { deprecate } from '@ember/debug';

if (EMBER_MODERNIZED_BUILT_IN_COMPONENTS) {
deprecate(
`Using Ember.TextField or importing from 'TextField' has been deprecated, install the ` +
`\`ember-legacy-built-in-components\` addon and use \`import { TextField } from ` +
`'ember-legacy-built-in-components';\` instead`,
false,
{
id: 'ember.legacy-built-in-components',
until: '4.0.0',
for: 'ember-source',
since: {
// TODO: update this when enabling the feature
},
}
);
}

export { TextField as default } from '@ember/-internals/glimmer';
1 change: 1 addition & 0 deletions packages/@ember/debug/container-debug-adapter.js
@@ -0,0 +1 @@
export { ContainerDebugAdapter as default } from '@ember/-internals/extension-support';
1 change: 1 addition & 0 deletions packages/@ember/debug/data-adapter.js
@@ -0,0 +1 @@
export { DataAdapter as default } from '@ember/-internals/extension-support';
1 change: 1 addition & 0 deletions packages/@ember/debug/index.ts
Expand Up @@ -5,6 +5,7 @@ import _deprecate, { DeprecateFunc, DeprecationOptions } from './lib/deprecate';
import { isTesting } from './lib/testing';
import _warn, { WarnFunc } from './lib/warn';

export { inspect } from '@ember/-internals/utils';
export { registerHandler as registerWarnHandler } from './lib/warn';
export { registerHandler as registerDeprecationHandler } from './lib/deprecate';
export { isTesting, setTesting } from './lib/testing';
Expand Down
1 change: 1 addition & 0 deletions packages/@ember/enumerable/index.js
@@ -0,0 +1 @@
export { Enumerable as default } from '@ember/-internals/runtime';
4 changes: 2 additions & 2 deletions packages/@ember/helper/index.ts
Expand Up @@ -304,5 +304,5 @@
@public
*/

export { setHelperManager, helperCapabilities as capabilties } from '@glimmer/manager';
export { invokeHelper } from '@glimmer/runtime';
export { setHelperManager, helperCapabilities as capabilities } from '@glimmer/manager';
export { invokeHelper, hash, array, concat, get, on, fn } from '@glimmer/runtime';
3 changes: 2 additions & 1 deletion packages/@ember/modifier/index.ts
@@ -1 +1,2 @@
export { setModifierManager, modifierCapabilities as capabilties } from '@glimmer/manager';
export { setModifierManager } from '@glimmer/manager';
export { modifierCapabilities as capabilities } from '@ember/-internals/glimmer';
3 changes: 3 additions & 0 deletions packages/@ember/object/computed.js
@@ -1,3 +1,5 @@
export { ComputedProperty as default, expandProperties, alias } from '@ember/-internals/metal';

export {
empty,
notEmpty,
Expand All @@ -11,6 +13,7 @@ export {
lt,
lte,
oneWay,
oneWay as reads,
readOnly,
deprecatingAlias,
and,
Expand Down
1 change: 1 addition & 0 deletions packages/@ember/object/core.js
@@ -0,0 +1 @@
export { CoreObject as default } from '@ember/-internals/runtime';
2 changes: 2 additions & 0 deletions packages/@ember/object/evented.js
@@ -0,0 +1,2 @@
export { Evented as default } from '@ember/-internals/runtime';
export { on } from '@ember/-internals/metal';
1 change: 1 addition & 0 deletions packages/@ember/object/events.js
@@ -0,0 +1 @@
export { addListener, removeListener, sendEvent } from '@ember/-internals/metal';
16 changes: 16 additions & 0 deletions packages/@ember/object/index.js
Expand Up @@ -2,6 +2,22 @@ import { assert } from '@ember/debug';
import { assign } from '@ember/polyfills';
import { isElementDescriptor, setClassicDecorator } from '@ember/-internals/metal';

export { Object as default } from '@ember/-internals/runtime';

export {
notifyPropertyChange,
defineProperty,
get,
set,
getProperties,
setProperties,
getWithDefault,
observer,
computed,
trySet,
aliasMethod,
} from '@ember/-internals/metal';

/**
Decorator that turns the target function into an Action which can be accessed
directly by reference.
Expand Down
3 changes: 3 additions & 0 deletions packages/@ember/object/internals.js
@@ -0,0 +1,3 @@
export { getCachedValueFor as cacheFor } from '@ember/-internals/metal';
export { copy } from '@ember/-internals/runtime';
export { guidFor } from '@ember/-internals/utils';
1 change: 1 addition & 0 deletions packages/@ember/object/mixin.js
@@ -0,0 +1 @@
export { Mixin as default } from '@ember/-internals/metal';
1 change: 1 addition & 0 deletions packages/@ember/object/observable.js
@@ -0,0 +1 @@
export { Observable as default } from '@ember/-internals/runtime';
1 change: 1 addition & 0 deletions packages/@ember/object/observers.js
@@ -0,0 +1 @@
export { addObserver, removeObserver } from '@ember/-internals/metal';
1 change: 1 addition & 0 deletions packages/@ember/object/promise-proxy-mixin.js
@@ -0,0 +1 @@
export { PromiseProxyMixin as default } from '@ember/-internals/runtime';
1 change: 1 addition & 0 deletions packages/@ember/object/proxy.js
@@ -0,0 +1 @@
export { ObjectProxy as default } from '@ember/-internals/runtime';
2 changes: 2 additions & 0 deletions packages/@ember/polyfills/index.ts
Expand Up @@ -6,3 +6,5 @@ let merge = MERGE ? deprecatedMerge : undefined;
// Export `assignPolyfill` for testing
export { default as assign, assign as assignPolyfill } from './lib/assign';
export { merge };

export const hasPropertyAccessors = true;
1 change: 1 addition & 0 deletions packages/@ember/routing/auto-location.js
@@ -0,0 +1 @@
export { AutoLocation as default } from '@ember/-internals/routing';
1 change: 1 addition & 0 deletions packages/@ember/routing/hash-location.js
@@ -0,0 +1 @@
export { HashLocation as default } from '@ember/-internals/routing';
1 change: 1 addition & 0 deletions packages/@ember/routing/history-location.js
@@ -0,0 +1 @@
export { HistoryLocation as default } from '@ember/-internals/routing';
1 change: 1 addition & 0 deletions packages/@ember/routing/index.ts
@@ -0,0 +1 @@
export { LinkComponent as LinkTo } from '@ember/-internals/glimmer';
21 changes: 21 additions & 0 deletions packages/@ember/routing/link-component.ts
@@ -0,0 +1,21 @@
import { EMBER_MODERNIZED_BUILT_IN_COMPONENTS } from '@ember/canary-features';
import { deprecate } from '@ember/debug';

if (EMBER_MODERNIZED_BUILT_IN_COMPONENTS) {
deprecate(
`Using Ember.LinkComponent or importing from 'LinkComponent' has been deprecated, install the ` +
`\`ember-legacy-built-in-components\` addon and use \`import { LinkComponent } from ` +
`'ember-legacy-built-in-components';\` instead`,
false,
{
id: 'ember.legacy-built-in-components',
until: '4.0.0',
for: 'ember-source',
since: {
// TODO: update this when enabling the feature
},
}
);
}

export { LinkComponent as default } from '@ember/-internals/glimmer';
1 change: 1 addition & 0 deletions packages/@ember/routing/location.js
@@ -0,0 +1 @@
export { Location as default } from '@ember/-internals/routing';
1 change: 1 addition & 0 deletions packages/@ember/routing/none-location.js
@@ -0,0 +1 @@
export { NoneLocation as default } from '@ember/-internals/routing';
1 change: 1 addition & 0 deletions packages/@ember/routing/route.js
@@ -0,0 +1 @@
export { Route as default } from '@ember/-internals/routing';
1 change: 1 addition & 0 deletions packages/@ember/routing/router.js
@@ -0,0 +1 @@
export { Router as default } from '@ember/-internals/routing';
3 changes: 0 additions & 3 deletions packages/@ember/runloop/index.js
Expand Up @@ -103,9 +103,6 @@ export function run() {
return backburner.run(...arguments);
}

// used for the Ember.run global only
export const _globalsRun = run.bind(null);

/**
If no run-loop is present, it creates a new one. If a run loop is
present it will queue itself to run on the existing run-loops action
Expand Down
35 changes: 35 additions & 0 deletions packages/@ember/string/index.ts
Expand Up @@ -9,6 +9,12 @@ import { Cache } from '@ember/-internals/utils';
import { deprecate } from '@ember/debug';
import { getString } from './lib/string_registry';

import {
htmlSafe as internalHtmlSafe,
isHTMLSafe as internalIsHtmlSafe,
SafeString,
} from '@ember/-internals/glimmer';

const STRING_DASHERIZE_REGEXP = /[ _]/g;

const STRING_DASHERIZE_CACHE = new Cache<string, string>(1000, (key) =>
Expand Down Expand Up @@ -294,6 +300,35 @@ export function capitalize(str: string): string {
return CAPITALIZE_CACHE.get(str);
}

function deprecateImportFromString(
name: string,
message = `Importing ${name} from '@ember/string' is deprecated. Please import ${name} from '@ember/template' instead.`
) {
// Disabling this deprecation due to unintended errors in 3.25
// See https://github.com/emberjs/ember.js/issues/19393 fo more information.
deprecate(message, true, {
id: 'ember-string.htmlsafe-ishtmlsafe',
for: 'ember-source',
since: {
enabled: '3.25',
},
until: '4.0.0',
url: 'https://deprecations.emberjs.com/v3.x/#toc_ember-string-htmlsafe-ishtmlsafe',
});
}

export function htmlSafe(str: string): SafeString {
deprecateImportFromString('htmlSafe');

return internalHtmlSafe(str);
}

export function isHTMLSafe(str: any | null | undefined): str is SafeString {
deprecateImportFromString('isHTMLSafe');

return internalIsHtmlSafe(str);
}

if (ENV.EXTEND_PROTOTYPES.String) {
let deprecateEmberStringPrototypeExtension = function (
name: string,
Expand Down
13 changes: 13 additions & 0 deletions packages/@ember/template-compilation/index.js
@@ -0,0 +1,13 @@
import { DEBUG } from '@glimmer/env';

export { compile as compileTemplate } from 'ember-template-compiler';

export let precompileTemplate;

if (DEBUG) {
precompileTemplate = () => {
throw new Error(
'Attempted to call `precompileTemplate` at runtime, but this API is meant to be used at compile time. You should use `compileTemplate` instead.'
);
};
}
1 change: 1 addition & 0 deletions packages/@ember/template-factory/index.js
@@ -0,0 +1 @@
export { templateFactory as createTemplateFactory } from '@glimmer/opcode-compiler';
1 change: 1 addition & 0 deletions packages/@ember/template/index.ts
@@ -0,0 +1 @@
export { htmlSafe, isHTMLSafe } from '@ember/-internals/glimmer';
3 changes: 3 additions & 0 deletions packages/@ember/test/adapter.js
@@ -0,0 +1,3 @@
import { Test } from 'ember-testing';

export default Test.Adapter;
11 changes: 11 additions & 0 deletions packages/@ember/test/index.js
@@ -0,0 +1,11 @@
import { Test } from 'ember-testing';

const {
registerAsyncHelper,
registerHelper,
registerWaiter,
unregisterHelper,
unregisterWaiter,
} = Test;

export { registerAsyncHelper, registerHelper, registerWaiter, unregisterHelper, unregisterWaiter };
3 changes: 3 additions & 0 deletions packages/@ember/utils/index.js
@@ -0,0 +1,3 @@
export { isNone, isBlank, isEmpty, isPresent } from '@ember/-internals/metal';
export { tryInvoke } from '@ember/-internals/utils';
export { compare, isEqual, typeOf } from '@ember/-internals/runtime';
1 change: 1 addition & 0 deletions packages/@ember/version/index.js
@@ -0,0 +1 @@
export { default as VERSION } from 'ember/version';
1 change: 1 addition & 0 deletions packages/@glimmer/tracking/index.ts
@@ -0,0 +1 @@
export { tracked } from '@ember/-internals/metal';
1 change: 1 addition & 0 deletions packages/@glimmer/tracking/primitives/cache.ts
@@ -0,0 +1 @@
export { createCache, getValue, isConst } from '@ember/-internals/metal';
8 changes: 2 additions & 6 deletions packages/ember/index.js
Expand Up @@ -311,9 +311,7 @@ Ember.Instrumentation = {

// ****@ember/runloop****

// Using _globalsRun here so that mutating the function (adding
// `next`, `later`, etc to it) is only available in globals builds
Ember.run = runloop._globalsRun;
Ember.run = runloop.run;
Ember.run.backburner = runloop.backburner;
Ember.run.begin = runloop.begin;
Ember.run.bind = runloop.bind;
Expand All @@ -336,9 +334,7 @@ Object.defineProperty(Ember.run, 'currentRunLoop', {

// ****@ember/-internals/metal****

// Using _globalsComputed here so that mutating the function is only available
// in globals builds
const computed = metal._globalsComputed;
const computed = metal.computed;
Ember.computed = computed;
Ember._descriptor = metal.nativeDescDecorator;
Ember._tracked = metal.tracked;
Expand Down

0 comments on commit 62dabfa

Please sign in to comment.