discourse/app/assets/javascripts/discourse-loader.js

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

433 lines
11 KiB
JavaScript
Raw Normal View History

2017-07-05 14:14:30 -04:00
var define, requirejs;
(function () {
var JS_MODULES = {};
var ALIASES = {
"ember-addons/ember-computed-decorators":
"discourse-common/utils/decorators",
"discourse/lib/raw-templates": "discourse-common/lib/raw-templates",
"preload-store": "discourse/lib/preload-store",
"fixtures/user_fixtures": "discourse/tests/fixtures/user-fixtures",
};
var ALIAS_PREPEND = {
fixtures: "discourse/tests/",
helpers: "discourse/tests/",
};
// In future versions of ember we don't need this
if (typeof Ember !== "undefined") {
JS_MODULES = {
jquery: { default: $ },
2020-02-21 08:27:04 -05:00
"@ember/array": {
default: Ember.Array,
A: Ember.A,
isArray: Ember.isArray,
2020-02-21 08:27:04 -05:00
},
"@ember/array/proxy": {
default: Ember.ArrayProxy,
},
"@ember/component": {
default: Ember.Component,
2020-02-21 08:27:04 -05:00
},
"@ember/controller": {
default: Ember.Controller,
inject: Ember.inject.controller,
},
2020-02-21 08:27:04 -05:00
"@ember/debug": {
assert: Ember.assert,
runInDebug: Ember.runInDebug,
2020-02-21 08:27:04 -05:00
warn: Ember.warn,
},
2019-10-31 16:28:10 -04:00
"@ember/object": {
action: Ember._action,
2019-10-31 16:28:10 -04:00
default: Ember.Object,
get: Ember.get,
getProperties: Ember.getProperties,
set: Ember.set,
setProperties: Ember.setProperties,
computed: Ember.computed,
defineProperty: Ember.defineProperty,
observer: Ember.observer,
2019-10-31 16:28:10 -04:00
},
"@ember/object/computed": {
alias: Ember.computed.alias,
and: Ember.computed.and,
bool: Ember.computed.bool,
collect: Ember.computed.collect,
deprecatingAlias: Ember.computed.deprecatingAlias,
empty: Ember.computed.empty,
equal: Ember.computed.equal,
filter: Ember.computed.filter,
filterBy: Ember.computed.filterBy,
gt: Ember.computed.gt,
gte: Ember.computed.gte,
intersect: Ember.computed.intersect,
lt: Ember.computed.lt,
lte: Ember.computed.lte,
map: Ember.computed.map,
mapBy: Ember.computed.mapBy,
match: Ember.computed.match,
max: Ember.computed.max,
min: Ember.computed.min,
none: Ember.computed.none,
not: Ember.computed.not,
notEmpty: Ember.computed.notEmpty,
oneWay: Ember.computed.oneWay,
or: Ember.computed.or,
readOnly: Ember.computed.readOnly,
reads: Ember.computed.reads,
setDiff: Ember.computed.setDiff,
sort: Ember.computed.sort,
sum: Ember.computed.sum,
union: Ember.computed.union,
uniq: Ember.computed.uniq,
uniqBy: Ember.computed.uniqBy,
},
"@ember/object/mixin": { default: Ember.Mixin },
"@ember/object/proxy": { default: Ember.ObjectProxy },
"@ember/object/promise-proxy-mixin": { default: Ember.PromiseProxyMixin },
2020-02-21 08:27:04 -05:00
"@ember/object/evented": {
default: Ember.Evented,
on: Ember.on,
},
"@ember/routing/route": { default: Ember.Route },
2020-02-21 08:27:04 -05:00
"@ember/routing/router": { default: Ember.Router },
"@ember/runloop": {
bind: Ember.run.bind,
cancel: Ember.run.cancel,
debounce: Ember.testing ? Ember.run : Ember.run.debounce,
later: Ember.run.later,
next: Ember.run.next,
once: Ember.run.once,
run: Ember.run,
schedule: Ember.run.schedule,
scheduleOnce: Ember.run.scheduleOnce,
throttle: Ember.run.throttle,
},
"@ember/service": {
default: Ember.Service,
inject: Ember.inject.service,
},
"@ember/utils": {
2020-02-21 08:27:04 -05:00
isBlank: Ember.isBlank,
isEmpty: Ember.isEmpty,
isNone: Ember.isNone,
isPresent: Ember.isPresent,
2019-11-05 11:37:32 -05:00
},
rsvp: {
asap: Ember.RSVP.asap,
all: Ember.RSVP.all,
allSettled: Ember.RSVP.allSettled,
race: Ember.RSVP.race,
hash: Ember.RSVP.hash,
hashSettled: Ember.RSVP.hashSettled,
rethrow: Ember.RSVP.rethrow,
defer: Ember.RSVP.defer,
denodeify: Ember.RSVP.denodeify,
resolve: Ember.RSVP.resolve,
reject: Ember.RSVP.reject,
map: Ember.RSVP.map,
filter: Ember.RSVP.filter,
default: Ember.RSVP,
2019-11-05 11:37:32 -05:00
Promise: Ember.RSVP.Promise,
EventTarget: Ember.RSVP.EventTarget,
},
"@ember/string": {
w: Ember.String.w,
dasherize: Ember.String.dasherize,
decamelize: Ember.String.decamelize,
camelize: Ember.String.camelize,
classify: Ember.String.classify,
underscore: Ember.String.underscore,
capitalize: Ember.String.capitalize,
},
"@ember/template": {
htmlSafe: Ember.String.htmlSafe,
},
"@ember/application": {
2020-02-21 08:27:04 -05:00
default: Ember.Application,
setOwner: Ember.setOwner,
getOwner: Ember.getOwner,
},
"@ember/component/helper": {
default: Ember.Helper,
},
"@ember/component/text-field": {
default: Ember.TextField,
},
"@ember/component/text-area": {
default: Ember.TextArea,
},
"@ember/error": {
default: Ember.error,
},
"@ember/object/internals": {
guidFor: Ember.guidFor,
},
"@ember/test": {
registerWaiter: Ember.Test && Ember.Test.registerWaiter,
unregisterWaiter: Ember.Test && Ember.Test.unregisterWaiter,
},
I18n: {
// eslint-disable-next-line
default: I18n,
},
};
}
2015-05-11 13:16:44 -04:00
var _isArray;
if (!Array.isArray) {
2019-10-21 11:56:15 -04:00
_isArray = function (x) {
2015-05-11 13:16:44 -04:00
return Object.prototype.toString.call(x) === "[object Array]";
};
} else {
_isArray = Array.isArray;
}
var registry = {};
var seen = {};
var FAILED = false;
2015-05-11 13:16:44 -04:00
var uuid = 0;
function tryFinally(tryable, finalizer) {
try {
return tryable();
} finally {
finalizer();
}
}
function unsupportedModule(length) {
2019-10-21 11:56:15 -04:00
throw new Error(
"an unsupported module was defined, expected `define(name, deps, module)` instead got: `" +
length +
"` arguments to define`"
);
2015-05-11 13:16:44 -04:00
}
function deprecatedModule(depricated, useInstead) {
var warning = "[DEPRECATION] `" + depricated + "` is deprecated.";
if (useInstead) {
warning += " Please use `" + useInstead + "` instead.";
}
// eslint-disable-next-line no-console
console.warn(warning);
}
2019-10-21 11:56:15 -04:00
var defaultDeps = ["require", "exports", "module"];
2015-05-11 13:16:44 -04:00
function Module(name, deps, callback, exports) {
2019-10-21 11:56:15 -04:00
this.id = uuid++;
this.name = name;
this.deps = !deps.length && callback.length ? defaultDeps : deps;
this.exports = exports || {};
2015-05-11 13:16:44 -04:00
this.callback = callback;
2019-10-21 11:56:15 -04:00
this.state = undefined;
this._require = undefined;
2015-05-11 13:16:44 -04:00
}
Module.prototype.makeRequire = function () {
var name = transformForAliases(this.name);
2015-05-11 13:16:44 -04:00
2019-10-21 11:56:15 -04:00
return (
this._require ||
(this._require = function (dep) {
return requirejs(resolve(dep, name));
})
);
};
2015-05-11 13:16:44 -04:00
define = function (name, deps, callback) {
2015-05-11 13:16:44 -04:00
if (arguments.length < 2) {
unsupportedModule(arguments.length);
}
if (!_isArray(deps)) {
callback = deps;
2019-10-21 11:56:15 -04:00
deps = [];
2015-05-11 13:16:44 -04:00
}
registry[name] = new Module(name, deps, callback);
};
// we don't support all of AMD
// define.amd = {};
// we will support petals...
2019-10-21 11:56:15 -04:00
define.petal = {};
2015-05-11 13:16:44 -04:00
function Alias(path) {
this.name = path;
}
define.alias = function (path) {
return new Alias(path);
};
function reify(mod, name, rseen) {
2015-05-11 13:16:44 -04:00
var deps = mod.deps;
var length = deps.length;
var reified = new Array(length);
var dep;
2015-05-11 13:16:44 -04:00
// TODO: new Module
// TODO: seen refactor
2019-10-21 11:56:15 -04:00
var module = {};
for (var i = 0, l = length; i < l; i++) {
dep = deps[i];
2019-10-21 11:56:15 -04:00
if (dep === "exports") {
module.exports = reified[i] = rseen;
2019-10-21 11:56:15 -04:00
} else if (dep === "require") {
2015-05-11 13:16:44 -04:00
reified[i] = mod.makeRequire();
2019-10-21 11:56:15 -04:00
} else if (dep === "module") {
mod.exports = rseen;
2015-05-11 13:16:44 -04:00
module = reified[i] = mod;
} else {
2015-05-11 13:16:44 -04:00
reified[i] = requireFrom(resolve(dep, name), name);
}
}
return {
deps: reified,
2015-05-11 13:16:44 -04:00
module: module,
};
}
2015-05-11 13:16:44 -04:00
function requireFrom(name, origin) {
name = transformForAliases(name);
if (name === "discourse") {
// eslint-disable-next-line no-console
console.log(
"discourse has been moved to `discourse/app` - please update your code"
);
name = "discourse/app";
}
if (name === "discourse/models/input-validation") {
// eslint-disable-next-line no-console
console.log(
"input-validation has been removed and should be replaced with `@ember/object`"
);
name = "@ember/object";
}
var mod = JS_MODULES[name] || registry[name];
2015-05-11 13:16:44 -04:00
if (!mod) {
2019-10-21 11:56:15 -04:00
throw new Error(
"Could not find module `" + name + "` imported from `" + origin + "`"
);
2015-05-11 13:16:44 -04:00
}
2017-07-05 14:14:30 -04:00
return requirejs(name);
2015-05-11 13:16:44 -04:00
}
2015-05-11 13:16:44 -04:00
function missingModule(name) {
2019-10-21 11:56:15 -04:00
throw new Error("Could not find module " + name);
2015-05-11 13:16:44 -04:00
}
function transformForAliases(name) {
var alias = ALIASES[name];
if (!alias) {
var segment = name.split("/")[0];
var prepend = ALIAS_PREPEND[segment];
2019-10-21 11:56:15 -04:00
if (!prepend) {
return name;
}
2015-05-11 13:16:44 -04:00
alias = prepend + name;
}
deprecatedModule(name, alias);
return alias;
}
2016-11-15 12:10:18 -05:00
requirejs = require = function (name) {
name = transformForAliases(name);
if (JS_MODULES[name]) {
return JS_MODULES[name];
}
var mod = registry[name];
2015-05-11 13:16:44 -04:00
if (mod && mod.callback instanceof Alias) {
mod = registry[mod.callback.name];
}
2019-10-21 11:56:15 -04:00
if (!mod) {
missingModule(name);
}
2015-05-11 13:16:44 -04:00
2019-10-21 11:56:15 -04:00
if (mod.state !== FAILED && seen.hasOwnProperty(name)) {
2015-05-11 13:16:44 -04:00
return seen[name];
}
var reified;
var module;
var loaded = false;
2019-10-21 11:56:15 -04:00
seen[name] = {}; // placeholder for run-time cycles
tryFinally(
function () {
reified = reify(mod, name, seen[name]);
module = mod.callback.apply(this, reified.deps);
loaded = true;
},
function () {
if (!loaded) {
mod.state = FAILED;
}
}
2019-10-21 11:56:15 -04:00
);
2015-05-11 13:16:44 -04:00
var obj;
if (module === undefined && reified.module.exports) {
obj = reified.module.exports;
} else {
obj = seen[name] = module;
}
2019-10-21 11:56:15 -04:00
if (
obj !== null &&
(typeof obj === "object" || typeof obj === "function") &&
obj["default"] === undefined
) {
obj["default"] = obj;
}
2015-05-11 13:16:44 -04:00
return (seen[name] = obj);
};
2016-11-15 12:10:18 -05:00
window.requireModule = requirejs;
function resolve(child, name) {
2019-10-21 11:56:15 -04:00
if (child.charAt(0) !== ".") {
return child;
}
2019-10-21 11:56:15 -04:00
var parts = child.split("/");
var nameParts = name.split("/");
2015-05-11 13:16:44 -04:00
var parentBase = nameParts.slice(0, -1);
for (var i = 0, l = parts.length; i < l; i++) {
var part = parts[i];
2019-10-21 11:56:15 -04:00
if (part === "..") {
2015-05-11 13:16:44 -04:00
if (parentBase.length === 0) {
2019-10-21 11:56:15 -04:00
throw new Error("Cannot access parent module of root");
2015-05-11 13:16:44 -04:00
}
parentBase.pop();
2019-10-21 11:56:15 -04:00
} else if (part === ".") {
2015-05-11 13:16:44 -04:00
continue;
2019-10-21 11:56:15 -04:00
} else {
parentBase.push(part);
}
}
2019-10-21 11:56:15 -04:00
return parentBase.join("/");
}
requirejs.entries = requirejs._eak_seen = registry;
2015-05-11 13:16:44 -04:00
requirejs.clear = function () {
requirejs.entries = requirejs._eak_seen = registry = {};
seen = {};
};
})();