mirror of
https://github.com/discourse/discourse.git
synced 2024-12-30 06:53:58 +08:00
247 lines
9.3 KiB
Diff
247 lines
9.3 KiB
Diff
|
diff --git a/index.js b/index.js
|
||
|
index afa73eb078e35af27adee52a6784f405d94a7de8..21e941140ef8ed04e5e8a21e555fb2c7bf478658 100644
|
||
|
--- a/index.js
|
||
|
+++ b/index.js
|
||
|
@@ -8,7 +8,7 @@ module.exports = {
|
||
|
|
||
|
setupPreprocessorRegistry(type, registry) {
|
||
|
if (type === 'parent') {
|
||
|
- const options = getOptions(findHost(this));
|
||
|
+ const options = getOptions(this.parent); // findHost doesn't work for us - not sure why
|
||
|
registry.add('htmlbars-ast-plugin', this._buildPlugin(options));
|
||
|
}
|
||
|
},
|
||
|
@@ -17,15 +17,20 @@ module.exports = {
|
||
|
ThisFallbackPlugin.baseDir = () => __dirname;
|
||
|
ThisFallbackPlugin.cacheKey = () => 'ember-this-fallback';
|
||
|
|
||
|
- return {
|
||
|
+ let plugin = {
|
||
|
name: 'ember-this-fallback',
|
||
|
- parallelBabel: {
|
||
|
+ plugin: ThisFallbackPlugin(options),
|
||
|
+ };
|
||
|
+
|
||
|
+ if (!options.isTheme) {
|
||
|
+ plugin.parallelBabel = {
|
||
|
requireFile: __filename,
|
||
|
buildUsing: '_buildPlugin',
|
||
|
params: options,
|
||
|
- },
|
||
|
- plugin: ThisFallbackPlugin(options),
|
||
|
- };
|
||
|
+ };
|
||
|
+ }
|
||
|
+
|
||
|
+ return plugin;
|
||
|
},
|
||
|
};
|
||
|
|
||
|
diff --git a/lib/helpers/deprecations.js b/lib/helpers/deprecations.js
|
||
|
index 5a00c44dc77ee3a4083e51f13e5d28dc07c343f9..7fc09ada1d6eb8376519cbc88cfc838dab64b4b0 100644
|
||
|
--- a/lib/helpers/deprecations.js
|
||
|
+++ b/lib/helpers/deprecations.js
|
||
|
@@ -6,8 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.deprecationOptionsFor = void 0;
|
||
|
const assert_1 = __importDefault(require("../types/assert"));
|
||
|
const CURRENT_DEPRECATIONS = [
|
||
|
+ [
|
||
|
+ 'this-property-fallback',
|
||
|
{
|
||
|
- id: 'this-property-fallback',
|
||
|
+ id: 'ember-this-fallback.this-property-fallback', // Updating deprecation id so we can distinguish it from Ember's
|
||
|
until: 'n/a',
|
||
|
for: 'ember-this-fallback',
|
||
|
url: 'https://deprecations.emberjs.com/v3.x#toc_this-property-fallback',
|
||
|
@@ -15,8 +17,9 @@ const CURRENT_DEPRECATIONS = [
|
||
|
available: '0.2.0',
|
||
|
},
|
||
|
},
|
||
|
+ ]
|
||
|
];
|
||
|
-const DEPRECATION_OPTIONS_MAP = new Map(CURRENT_DEPRECATIONS.map((options) => [options.id, options]));
|
||
|
+const DEPRECATION_OPTIONS_MAP = new Map(CURRENT_DEPRECATIONS);
|
||
|
function deprecationOptionsFor(id) {
|
||
|
const options = DEPRECATION_OPTIONS_MAP.get(id);
|
||
|
(0, assert_1.default)(`expected to find DeprecationOptions for id=${id}`, options);
|
||
|
diff --git a/lib/helpers/logger.js b/lib/helpers/logger.js
|
||
|
index b856edc0327902bbae4eb9875ed9034a50d2b3a2..afb059ac4925711ba1b70079f4f45c4c4f8fe027 100644
|
||
|
--- a/lib/helpers/logger.js
|
||
|
+++ b/lib/helpers/logger.js
|
||
|
@@ -1,12 +1,6 @@
|
||
|
"use strict";
|
||
|
-var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
|
- return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
|
-};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.noopLogger = void 0;
|
||
|
-const debug_1 = __importDefault(require("debug"));
|
||
|
-const winston_1 = require("winston");
|
||
|
-const winston_transport_1 = __importDefault(require("winston-transport"));
|
||
|
function noopLogger() {
|
||
|
return {
|
||
|
debug: noop,
|
||
|
@@ -15,53 +9,4 @@ function noopLogger() {
|
||
|
};
|
||
|
}
|
||
|
exports.noopLogger = noopLogger;
|
||
|
-function createLogger(namespace, label) {
|
||
|
- const debug = (0, debug_1.default)(namespace);
|
||
|
- class DebugTransport extends winston_transport_1.default {
|
||
|
- log(info, next) {
|
||
|
- debug(info[Symbol.for('message')]);
|
||
|
- next();
|
||
|
- }
|
||
|
- }
|
||
|
- return (0, winston_1.createLogger)({
|
||
|
- level: 'debug',
|
||
|
- transports: [
|
||
|
- new winston_1.transports.File({
|
||
|
- level: 'info',
|
||
|
- filename: `${namespace}.log`,
|
||
|
- format: winston_1.format.combine(joinLines(), winston_1.format.label({ label }), winston_1.format.timestamp(), winston_1.format.splat(), logFormatter),
|
||
|
- }),
|
||
|
- new DebugTransport({
|
||
|
- level: 'debug',
|
||
|
- format: winston_1.format.combine(joinLines(), winston_1.format.label({ label }), winston_1.format.timestamp(), winston_1.format.splat(), debugFormatter),
|
||
|
- }),
|
||
|
- ],
|
||
|
- });
|
||
|
-}
|
||
|
-exports.default = createLogger;
|
||
|
-const joinLines = (0, winston_1.format)((info) => {
|
||
|
- if (Array.isArray(info.message) &&
|
||
|
- info.message.every((m) => typeof m === 'string')) {
|
||
|
- info.message = joinLogLines(info.message);
|
||
|
- }
|
||
|
- return info;
|
||
|
-});
|
||
|
-const logFormatter = winston_1.format.printf((info) => {
|
||
|
- const { level, label, timestamp, message, loc } = info;
|
||
|
- return `${timestamp} [${level}] ${concatMessage(label, message, loc)}`;
|
||
|
-});
|
||
|
-const debugFormatter = winston_1.format.printf((info) => {
|
||
|
- const { label, message } = info;
|
||
|
- return concatMessage(label, message);
|
||
|
-});
|
||
|
-function concatMessage(label, message, loc) {
|
||
|
- if (loc) {
|
||
|
- const start = loc.startPosition;
|
||
|
- label += `:${start.line}:${start.column + 1}`;
|
||
|
- }
|
||
|
- return joinLogLines([label, message]);
|
||
|
-}
|
||
|
-function joinLogLines(lines) {
|
||
|
- return lines.join('\n\t');
|
||
|
-}
|
||
|
function noop() { }
|
||
|
diff --git a/lib/this-fallback-plugin.js b/lib/this-fallback-plugin.js
|
||
|
index be4a78543644b3810520773aa7b996a2f631888d..9b144de8f22935dd6440a0db6b52a52535064212 100644
|
||
|
--- a/lib/this-fallback-plugin.js
|
||
|
+++ b/lib/this-fallback-plugin.js
|
||
|
@@ -29,7 +29,7 @@ const syntax_1 = require("@glimmer/syntax");
|
||
|
const ast_1 = require("./helpers/ast");
|
||
|
const deprecations_1 = require("./helpers/deprecations");
|
||
|
const fallback_1 = require("./helpers/fallback");
|
||
|
-const logger_1 = __importStar(require("./helpers/logger"));
|
||
|
+const logger_1 = require("./helpers/logger");
|
||
|
const scope_stack_1 = __importStar(require("./helpers/scope-stack"));
|
||
|
const string_1 = require("./helpers/string");
|
||
|
const assert_1 = __importDefault(require("./types/assert"));
|
||
|
@@ -60,9 +60,15 @@ class ThisFallbackPlugin {
|
||
|
handleBlock() {
|
||
|
return {
|
||
|
enter: (node) => {
|
||
|
+ if (this.env.strictMode) {
|
||
|
+ return;
|
||
|
+ }
|
||
|
this.scopeStack.push(node.blockParams);
|
||
|
},
|
||
|
exit: () => {
|
||
|
+ if (this.env.strictMode) {
|
||
|
+ return;
|
||
|
+ }
|
||
|
this.scopeStack.pop();
|
||
|
},
|
||
|
};
|
||
|
@@ -70,6 +76,9 @@ class ThisFallbackPlugin {
|
||
|
handleAttrNodes() {
|
||
|
return {
|
||
|
enter: (elementNode, elementPath) => {
|
||
|
+ if (this.env.strictMode) {
|
||
|
+ return;
|
||
|
+ }
|
||
|
const ambiguousHeads = new Map();
|
||
|
const blockParamName = (0, scope_stack_1.unusedNameLike)('maybeHelpers', this.scopeStack);
|
||
|
for (const attrNode of elementNode.attributes) {
|
||
|
@@ -119,6 +128,9 @@ class ThisFallbackPlugin {
|
||
|
return {
|
||
|
keys: {
|
||
|
params: (node) => {
|
||
|
+ if (this.env.strictMode) {
|
||
|
+ return;
|
||
|
+ }
|
||
|
const { scopeStack } = this;
|
||
|
node.params = node.params.map((expr) => {
|
||
|
if ((0, fallback_1.needsFallback)(expr, scopeStack)) {
|
||
|
@@ -131,6 +143,9 @@ class ThisFallbackPlugin {
|
||
|
});
|
||
|
},
|
||
|
hash: (node) => {
|
||
|
+ if (this.env.strictMode) {
|
||
|
+ return;
|
||
|
+ }
|
||
|
const { scopeStack } = this;
|
||
|
node.hash.pairs = node.hash.pairs.map((pair) => {
|
||
|
const { key, value: expr, loc } = pair;
|
||
|
@@ -149,6 +164,9 @@ class ThisFallbackPlugin {
|
||
|
handleMustache() {
|
||
|
return {
|
||
|
enter: (node, path) => {
|
||
|
+ if (this.env.strictMode) {
|
||
|
+ return;
|
||
|
+ }
|
||
|
// Alias node to n so that the type of `node` doesn't get narrowed,
|
||
|
// which prevents mutation
|
||
|
const n = node;
|
||
|
@@ -174,9 +192,15 @@ class ThisFallbackPlugin {
|
||
|
handleTemplate() {
|
||
|
return {
|
||
|
enter: (node) => {
|
||
|
+ if (this.env.strictMode) {
|
||
|
+ return;
|
||
|
+ }
|
||
|
this.logger.debug("before: '%s'", (0, string_1.squish)((0, syntax_1.print)(node)));
|
||
|
},
|
||
|
exit: (node, path) => {
|
||
|
+ if (this.env.strictMode) {
|
||
|
+ return;
|
||
|
+ }
|
||
|
this.logger.debug("after_: '%s'", (0, string_1.squish)((0, syntax_1.print)(node)));
|
||
|
if (this.scopeStack.size !== 1) {
|
||
|
throw new Error(`unbalanced ScopeStack push and pop, ScopeStack size is ${this.scopeStack.size}`);
|
||
|
@@ -214,9 +238,7 @@ class NoopPlugin {
|
||
|
function buildThisFallbackPlugin({ enableLogging, }) {
|
||
|
return (env) => {
|
||
|
const name = 'ember-this-fallback';
|
||
|
- const logger = enableLogging
|
||
|
- ? (0, logger_1.default)(`${name}-plugin`, env.moduleName)
|
||
|
- : (0, logger_1.noopLogger)();
|
||
|
+ const logger = (0, logger_1.noopLogger)();
|
||
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||
|
if (env.meta.jsutils) {
|
||
|
return new ThisFallbackPlugin(name, env, logger);
|
||
|
diff --git a/package.json b/package.json
|
||
|
index ef220e46d232cc90d6b90607e4e99f32d5679cf4..8c140dabda2cb2ef25b22a86bffb640df9124ec8 100644
|
||
|
--- a/package.json
|
||
|
+++ b/package.json
|
||
|
@@ -108,7 +108,7 @@
|
||
|
},
|
||
|
"peerDependencies": {
|
||
|
"ember-cli-htmlbars": "^6.2.0",
|
||
|
- "ember-source": "^3.28.11 || ^4.0.0"
|
||
|
+ "ember-source": "^3.28.11 || ^4.0.0 || ^5.0.0"
|
||
|
},
|
||
|
"engines": {
|
||
|
"node": "16.* || >= 18"
|