CLOVER🍀

That was when it all began.

TypeScript

npmパッケージにTypeScriptの型定義が存在するかどうかは、npmjs.comを見るとわかるという話

全然知らなかったので。 npmパッケージを探したり、パッケージを公開するのにはnpmjs.comというサイトを使います。 npm | Home このパッケージの表示に、npmパッケージ自身にTypeScriptの型定義が含まれているのか、それともDefinitelyTypedによって提供され…

RabbitMQのJavaScriptチュートリアルの「RPC」をTypeScriptで試す

これは、なにをしたくて書いたもの? RabbitMQのチュートリアルをJavaScriptクライアント+TypeScriptでやっていこう、ということで。 今回は「RPC」を扱います。 RabbitMQ tutorial - Remote procedure call (RPC) — RabbitMQ 今回で、この一連のお題は最後…

TypeScriptファイルをJavaScriptファイルに変換したい

これは、なにをしたくて書いたもの? ひとつ前に、こんなエントリーを書きました。 TypeScriptコードを直接実行したい(ts-node、esbuild-register、tsx) - CLOVER じゃあ、こういう用途で作成したTypeScriptファイルを、人が読めるようなJavaScriptファイ…

TypeScriptコードを直接実行したい(ts-node、esbuild-register、tsx)

これは、なにをしたくて書いたもの? Node.jsでソースコードを書く時は基本的にTypeScriptにしたいのですが、時々ちょっとしたスクリプトを書きたい時もあったりします。 そういう時は、ちゃんとした設定などは特に用意せず、さっと書いてそのまま実行したい…

AWS Lambda Powertools for TypeScript(Logger、Parameters)を試す

これは、なにをしたくて書いたもの? AWS Lambda Powertoolsというものを、ちょっと調べておきたいなということで。 AWS Lambda Powertools AWS Lambda Powertoolsというのは、サーバーレスのベストプラクティスに添えるように提供されている、ユーティリテ…

RabbitMQのJavaScriptチュートリアルの「Topics」をTypeScriptで試す

これは、なにをしたくて書いたもの? RabbitMQのチュートリアルをJavaScriptクライアント+TypeScriptでやっていこう、ということで。 今回は「Topics」を扱います。こちらですね。 RabbitMQ tutorial - Topics — RabbitMQ Topics Fanout Exchangeでブロード…

OpenTelemetryのFaaS向けの機能とAWS Distro for OpenTelemetryの違い

これは、なにをしたくて書いたもの? OpenTelemetryのInstrumentationを見ていると、言語によってはServerless Function(FaaS)をサポートしているようです。 これをLocalStack上で試してみようと思ったのですが、うまく動かなかったので…そこに至るまでに…

Node.jsのデータベースマイグレーションツール、Umzugを試す

これは、なにをしたくて書いたもの? Node.jsのデータベースマイグレーションツールとしてUmzugというものがあるようなので、試してみようかなと。 Node.jsのデータベースマイグレーションツール Node.jsにおけるデータベースマイグレーションツールとしては…

Jestでテストが並列に動作していることを確認してみる

これは、なにをしたくて書いたもの? Jestはデフォルトでテストを並列に実行するというので、動作を確認しておきたいなと思いまして。 JestのCLIのオプションを確認する JestのCLIのオプションを見てみます。 Jest CLI Options · Jest 以下の2つの項目が関連…

AWS SAMのTypeScriptサポートが、いつの間にかGAになっていたという話

これは、なにをしたくて書いたもの? 前に、プレビュー版のAWS SAMのTypeScriptサポートを試してみました。 AWS SAMのTypeScriptサポート(プレビュー)をLocalStackで試す - CLOVER そして、ふとAWS SAMのTypeScriptに関するページを見ると、「プレビュー」…

RabbitMQのJavaScriptチュートリアルの「Routing」をTypeScriptで試す

これは、なにをしたくて書いたもの? RabbitMQのチュートリアルをJavaScriptクライアント+TypeScriptでやっていこう、ということで。 今回は「Routing」を扱います。こちらですね。 RabbitMQ tutorial - Routing — RabbitMQ Routing 「Routing」では、メッ…

OpenTelemetryのNode.jsライブラリーをauto-instrumentations-nodeを使わずに組み込む(トレースのみ)

これは、なにをしたくて書いたもの? 前にNode.jsでOpenTelemetry(トレースのみ)を試してみました。 Node.jsでOpenTelemetryのトレースを試す - CLOVER この時、OpenTelemetryをアプリケーションに組み込むためのメタパッケージとしてauto-instrumentation…

Node.jsでOpenTelemetryのトレースを試す

これは、なにをしたくて書いたもの? 前にJavaでOpenTelemetryのトレースを試してみました。 https://kazuhira-r.hatenablog.com/entry/2022/02/11/005344 OpenTelemetryに慣れていきたいなと思うのですが、他の言語でも試してみようかなということで。 今回…

ESLintのコードスタイルルールとPrettierを合わせて使う時には、eslint-config-prettierを使う

これは、なにをしたくて書いたもの? JavaScriptでのリンターといえばESLint、フォーマッターといえばPrettierだと思います。 ESLintにはコードスタイルに関するルールも含まれており、これがPrettierと競合することがあります。これをなんとかする場合は es…

ioredisを使って、Node.jsからRedisへアクセスしてみる

これは、なにをしたくて書いたもの? Node.jsからRedisにアクセスする際に、以前node-redisを使ってみました。 Node.jsからRedisにアクセスしてみる - CLOVER これもだいぶ前の話ですが、今回はioredisを試してみたいと思います。 ioredis ioredisのGitHubリ…

LocalStack内のAWS Lambda関数から、LocalStackで動作している別のAWSリソースにアクセスするにはLOCALSTACK_HOSTNAME環境変数を使う

これは、なにをしたくて書いたもの? AWS Lambda関数を試す時にLocalStackをよく使うのですが、LocalStack内で動作するAWS Lambda関数内から、同じLocalStack上の リソースにアクセスする際の方法をよく忘れるのでメモしておくことにしました。 localhostで…

Serverless Frameworkの設定にAWS Systems Manager Parameter Storeを使ってみる(LocalStack利用)

これは、なにをしたくて書いたもの? Severless Frameworkのserverless.ymlでAWS Systems Manager Parameter Storeの値を参照できるみたいなので、試してみることに しました。 合わせて、AWS Lambda関数内からAWS Systems Manager Parameter Storeを参照す…

TypeScriptを使ってNode.jsの環境変数を型定義する仕組みを見て、名前空間と宣言のマージを確認する

これは、なにをしたくて書いたもの? TypeScriptを使ってNode.jsで環境変数を型定義する方法を調べると、だいたい以下のような記述が見つかるように思います。 declare namespace NodeJS { interface ProcessEnv { readonly MY_ENV: string; } } ここでMY_EN…

RabbitMQのJavaScriptチュートリアルの「Publish/Subscribe」をTypeScriptで試す

これは、なにをしたくて書いたもの? RabbitMQのチュートリアルをJavaScriptクライアント+TypeScriptでやっていこう、ということで。 今回は「Publish/Subscribe」を扱います。こちらですね。 RabbitMQ tutorial - Publish/Subscribe — RabbitMQ Publish/…

JavaScriptのMapやSetをJSONやObjectあたりと相互変換したいという話

これは、なにをしたくて書いたもの? JavaScriptのMapやSetをJSON#stringifyでJSON文字列にすると、思わぬ結果になったのでこのあたりをちょっとメモしておこうかなと。 こんな感じですね。 // Map test('apply JSON.stringify to Map', () => { const map =…

Node.jsでマルチプロセス(cluster、child_process)、マルチスレッド(worker_threads)を使ってみる

これは、なにをしたくて書いたもの? Node.jsでマルチプロセス、それからNode.js 10.5.0以降であればマルチスレッドが使えるようなので、興味がてら試してみることに しました。 Node.jsでマルチプロセス、マルチスレッド Node.jsでマルチプロセスを扱うには…

RabbitMQのJavaScriptチュートリアルの「Work Queues」をTypeScriptで試す

これは、なにをしたくて書いたもの? RabbitMQのチュートリアルをJavaScriptクライアント+TypeScriptでやっていこう、ということで。 今回は「Work Queues」を扱います。こちらですね。 RabbitMQ tutorial - Work Queues — RabbitMQ Work Queues 最初のチュ…

Node.jsでPromise版setTimeout/setInterval(Timers Promises API)ってスリープや一定時間での繰り返し呼び出しを行う

これは、なにをしたくて書いたもの? Node.js v15からPromise版のsetTimeout、setIntervalが導入されているのですが、どこのモジュールなのかよく忘れるのでメモ。 Timers Promises API Promise版のsetTimeout、setInterval(とsetImmediate)は、timersモジ…

RabbitMQのJavaScriptチュートリアルの「Hello World!」をTypeScriptで試す

これは、なにをしたくて書いたもの? この前、Ubuntu Linux 22.04 LTSにRabbitMQをインストールしてみました。 Ubuntu Linux 22.04 LTSにRabbitMQをインストールする - CLOVER RabbitMQを見直すのとTypeScriptの学習も兼ねて、JavaScriptクライアントを使っ…

AWS SDK v3 Client mockでAWS SDK for JavaScript v3をモックする

これは、なにをしたくて書いたもの? AWS SDK for JavaScript v2の時には、モックライブラリとしてaws-sdk-mockがありました。 そういえば、AWS SDK for JavaScript v3の場合はどうなのかというと、AWS SDK v3 Client mockというものが存在しているようです…

Node.js+TypeScriptでSQLite 3を使う

これは、なにをしたくて書いたもの? 以前に、SQLite 3をPythonから使ってみました。 SQLiteをPythonから使う - CLOVER 今度はNode.js(とTypeScript)から使ってみようと思います。 SQLite 3 SQLiteとはなんだかった?というところから。 SQLite Home Page …

Serverless FrameworkでAWS Lambda関数をローカル環境でエミュレーションで動かす

これは、なにをしたくて書いたもの? これまでServerless Frameworkを使って作成したサービスをLocalStackにデプロイして動かしていましたが、デプロイせずとも動作確認する パターンも試しておきたいなと思いまして。 invoke localとgenerate-event 使うの…

Serverless Framework+LocalStackで、Amazon SNSのトピックをサブスクライブするAWS Lambda関数を作る

これは、なにをしたくて書いたもの? 今まで試してきたServerless Frameworkを使った例では、ずっとAmazon API Gatewayを使ったものだったのですが、別のものでも試して みようかなと思いまして。 今回は、Amazon SNSを使ってみたいと思います。 Amazon SNS …

Serverless Esbuildを使って、TypeScriptのServerless Frameworkサービスを作る

これは、なにをしたくて書いたもの? 前に、Serverless FrameworkをTypeScript(とLocalStack)で使ってみました。 Serverless FrameworkをLocalStack+TypeScriptで使ってみる(Amazon API Gateway+AWS Lambda) - CLOVER この時、テンプレートにaws-nodej…

JavaScriptのArray.prototype.forEachにasyncな関数を渡しても、awaitで終了を待てないという話

これは、なにをしたくて書いたもの? Array.prototype.forEachをなにも考えずに使っていて、ちょっとハマったので。 Array.prototype.forEachはawaitと組み合わせて使えないようです。 Array.prototype.forEachとasync/await MDNリファレンスでのArray.prot…