We’re building the future of JavaScript packagesDevelop, Run, Distribute, Discover, and Secure your Javascript Packages
We’re building the future of JavaScript packagesDevelop, Run, Distribute, Discover, and Secure your Javascript Packages
Getting JavaScript running fast is key for a responsive web app. Even with V8's advanced optimizations, parsing and compiling critical JavaScript during startup can still create performance bottlenecks. Knowing which JavaScript functions to compile during the initial script compilation can speed up web page loading. When processing a script loaded from the network, V8 has to choose for each functi
ESLint コアルールの TypeScript 対応について ESLint v9.23.0 で ESLint のコアルールの TypeScript 対応が開始しました。 その後の ESLint のアップデートでもコアルールの TS 対応が進んでいます。ESLint コアの責務を増やすような機能追加は少し意外だと感じたので、その背景について調べてみました。 背景: 従来のコアルールの拡張方法の課題 ESLint のコアルールは JavaScript を想定して書かれたものであるが、TypeScript に対してもほぼ期待通り動作するルールが多い。TypeScript は JS のほぼ上位互換な言語であるため、TypeScript 用のパーサー (@typescript-eslint/parser) が吐き出す AST もほぼ上位互換であり、パーサーさえ TS 用のものを使えば多くの ESL
pagefindは静的サイトでも手軽にサイト内検索を実現できる全文検索ライブラリーです。先日、pagefindの脆弱性が修正されましたが、DOMの古い仕組みを悪用したものでした。その内容を興味深く感じたため、この記事で紹介します。なお、紹介する攻撃手法はDOM Clobberingと呼ばれています(DOM上書きという意味です)。 この記事で紹介する脆弱性はpagefind 1.1.1で修正されています。pagefind 1.1.1未満をご利用のかたは1.1.1に更新することをおすすめします。 CVE-2024-45389: DOM clobbering could escalate to XSS 概要 修正前のpagefindを利用しているサイトでは、サイトにHTMLを書き込める場合、外部のJavaScriptを読み込まれてしまう脆弱性がありました。書き込まれたHTMLにJavaScrip
皆さん、Python3とJavascript、使ってますよね! ただ、こう思ったことはないですか? 「言語にかかわらずコードがコードが動けばいいのに」って。 ないです そこでPythonとJavascriptどっちでも動くコードを作ろうと思い立ちました。 (第3回FizzBuzz回です) 今のところFizzBuzzの記事はJavascriptとPythonでしかやってないけど書きかけの記事にマルコフアルゴリズムあるんだよね() どうせならやってる人いなさそうなやつがいいなってなった結果こうなった 問題点と解決策 まあ最初からわかりきっていた問題点ですが ・あまりにも記法が違いすぎる 完全にコードを共有できる場所が限りなく少ないんですよね〜、、、 そこで、「同じ記法で別の意味を持つ演算子や構文を探す」 ということをしました。 すると1つ、あったんですよ。 ↓ ↓ ↓ ↓ ↓ ↓
こんにちは、mehm8128 です。 最近、Roadmap 2025 and Biome 2.0 | Biomeが公開されました。 その中でも一番気になっているのはやはりプラグイン機能です。そこで、RFC を簡単にまとめて寄り道などしながら、Biome のプラグインについて理解している範囲で紹介します。 間違いなどありましたらコメント欄にて教えていただけると助かります。 Biome のプラグイン そもそも Biome のプラグインとは、ESLint のプラグイン機能のように、Biome 自体が提供している lint ルール以外にもユーザーが独自のルールを作成できるようにするものです(format に関してもサポートされる可能性があります)。 RFC は以下の discussion で提案されています。 issue はこちら。 Biome のプラグインには主に GritQL というクエリ言語
こんにちは、フロントエンドエンジニアのやなぎ(@apple_yagi)です。 PR TIMESではフロントエンドのReactリプレイス当初より Barrel file を作成するルールがありました。しかし、先日そのルールを廃止することに決めたため、その経緯についてご紹介します。 Barrel filesとは Barrel filesとは複数のモジュールを1つのファイル(Barrel file)にまとめてexportすることを指します。以下の例ではutils/test.ts 、utils/fuga.ts 、utils/hoge.ts で export されている定数を utils/index.ts で再exportしています。 // utils/test.ts export const test = 1; // utils/fuga.ts export const fuga = 2; //
こんにちは、booost technologiesバックエンドエンジニアのma_meです。 直近の業務でフロントエンドのタイムゾーンで苦しめられていた中、JSの日付処理を劇的に改善するTemporalの明るい進捗ニュースが飛び込んできて、大変喜んでいます。 今回はそんなTemporalの明るいニュースをお伝えしたいと思います。 記事の概要まとめ Temporalの包括的なドキュメントがMDNに追加された Firefox Nightlyにも実装されはじめた 嬉しいニュース JavaScript Temporal is coming | MDN Blog Temporal って何? そもそもTemporalについての説明です。 JSの日付APIは選択肢が殆ど無いうえ、あまり機能が充実しておらず、フロントエンドで日付を扱う際にはライブラリが必須な状況でした。 ライブラリも一筋縄ではなかなかいかず
ES2025 / ES2024 / ES2023 / ES2022 JavaScriptの仕様は、TC39というところで決められています。 ブラウザベンダや関係者が定期的に会合を行い、様々な新機能について話し合って今後のJavaScriptの方向性を決めていきます。 ここでは2024年にFinishedになった、すなわち仕様が確定して複数のブラウザで実装がなされたproposalについて紹介してみます。 主要ブラウザでは既にほとんどの機能を使用可能です。 ちなみに、2024年2月から2025年1月までにStage4になったproposalがES2025と呼ばれます。 ややこしいですね。 Finished Proposals Promise.try 同期かもしれないし非同期かもしれない、Promiseを返すかもしれないしそうでないかもしれない、そんな関数があります。 その関数を使う際に、いち
LavaMoat is a set of tools for securing JavaScript projects against a category of attacks called software supply chain attacks. This genre of attack occurs when a malicious dependency makes its way into a developer's application. An attacker could use the dependency to then steal important secrets (like credit card numbers, private keys, or data) or make the application vulnerable to a range of ot
正規表現の Well-known Symbols メソッドをプリミティブに対して実行しない 文字列のメソッドで呼ばれる正規表現の Well-known Symbols メソッドですが、渡ってくる引数がオブジェクトかどうかの判定をしておらず、プリミティブに対しても実行されてしまうことを見つけてしまいました。 つまり各プリミティブに対してプロトタイプ汚染することによって、想定されていないコードを実行させることが出来てしまいます(Node.js REPL で試すと内部コードから呼び出されてクラッシュします)。 // プロトタイプ汚染 String.prototype[Symbol.split] = () => { throw new Error("bang!"); }; // throws Error "foo bar".split(" "); これは問題があるだろうということで ECMA-26
IsRegExp とは ECMAScript の仕様に IsRegExp が定義されています。これは文字列のメソッド内で、渡された引数が正規表現オブジェクトかどうかを判定する際に用いられます。使われている箇所について見てみると以下の2つのパターンに分類できます。 引数として文字列のみを許容するため、正規表現オブジェクトが渡ってきたら TypeError を投げたい場合 String.prototype.includes String.prototype.startsWith String.prototype.endsWith 引数に正規表現オブジェクトが渡ってきたら g フラグを持っているかチェックしたい場合 String.prototype.matchAll String.prototype.replaceAll IsRegExp の挙動変更(リジェクト) IsRegExp は以下のよう
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く