discourse/patches/ember-this-fallback@0.4.0.patch

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

247 lines
9.3 KiB
Diff
Raw Permalink Normal View History

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"