diff --git a/README.ar.md b/README.ar.md new file mode 100644 index 0000000..2df32cd --- /dev/null +++ b/README.ar.md @@ -0,0 +1,203 @@ + + + + +
+ + الفنانة: Daryna Mikhailenko + +
+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | **العربية** | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +
+
+
++ ⭐ هل أعجبك المشروع؟ امنحه نجمة على GitHub! +
+ ++ + Umělkyně: Daryna Mikhailenko + +
+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | **Čeština** | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> Tento překlad byl připraven s pomocí AI z [README.md](README.md) pro verzi 1.10.0. Referenční verzí je anglické README. Opravy jsou vítány: viz [CONTRIBUTING.md](CONTRIBUTING.md). + +# Boot Framework for Google Apps Script™ + + + + + +## Úvod + +**Boot.gs** je odlehčený framework pro tvorbu dobře strukturovaných aplikací v Google Apps Script. Přináší do prostředí +Apps Script známé vývojové vzory, jako jsou dekorátory a vkládání závislostí (dependency injection), a pomáhá tak lépe +organizovat kód. + +Vaše controllery nezávisí na prostředí: stejný kód obslouží webové požadavky `doGet`/`doPost`, volání +`google.script.run` z postranních panelů a dialogů i události Google Workspace, jako je `onOpen` nebo `onEdit`. + +## Funkce + +- **Směrování pomocí dekorátorů**: intuitivní mapování událostí HTTP a Apps Script (GET, POST atd.). +- **Vzory ze Spring Boot a NestJS**: známé dekorátory jako `@RequestMapping`, `@RestController`, `@ResponseBody` + a třída `ResponseEntity`. +- **Flexibilní odpovědi**: plná kontrola nad stavovými kódy HTTP, hlavičkami a typy MIME pomocí `ResponseEntity`. +- **Validace**: deklarativní validace parametrů pomocí dekorátorů ve stylu Spring Boot, jako jsou `@Min`, `@Max`, + `@Email` atd. +- **Pipes a validace**: transformace a validace příchozích dat pomocí `@UsePipes` a vestavěných pipes (např. + `ParseNumberPipe`). +- **Globální zpracování chyb**: centralizovaná správa výjimek pomocí `@ControllerAdvice` a `@ExceptionHandler`. +- **Vkládání závislostí**: plnohodnotné DI pro volnější vazby a snazší testování. +- **Typová bezpečnost**: napsáno v TypeScriptu pro spolehlivý vývoj. +- **Moderní architektura**: inspirováno frameworky jako NestJS a Spring Boot. + +## Požadavky + +- Projekt Google Apps Script s běhovým prostředím V8, obvykle spravovaný lokálně pomocí [clasp](https://github.com/google/clasp). +- TypeScript se zapnutými volbami `experimentalDecorators` a `emitDecoratorMetadata` v `tsconfig.json`. +- Node.js `>=22.14.0` a npm pro instalaci a sestavení. + +## Instalace + +Nainstalujte framework přes npm: + +```bash +npm install bootgs +``` + +## Rychlý start + +### 1. Definujte controller + +Vytvořte třídu s logikou vaší aplikace. Dekorátory mapují metody na konkrétní endpointy nebo události. + +```TypeScript +import {Get, RestController} from "bootgs"; + +@RestController("api/sheet") +export class SheetController { + /** + * Handles GET requests to /api/sheet/active-range + */ + @Get("active-range") + getActiveRange(): string { + return "This action returns the active sheet range."; + } +} +``` + +### 2. Inicializujte aplikaci + +Vytvořte instanci `App` a předejte jí standardní vstupní body Apps Script, aby framework mohl zachytávat a směrovat +příchozí události. + +```TypeScript +import {App} from "bootgs"; +import {SheetController} from "./SheetController"; + +/** + * Global entry point for GET requests. + */ +export function doGet(event: GoogleAppsScript.Events.DoGet) { + const app = App.create({ + controllers: [SheetController] + }); + return app.doGet(event); +} +``` + +Kompletní postup včetně `doPost` a asynchronní aplikace `AsyncApp` najdete v +[průvodci Quick Start](docs/guide/quick-start.md) (v angličtině). + +## Dokumentace + +Podrobné průvodce jsou k dispozici v angličtině: + +- [Quick Start](docs/guide/quick-start.md): nastavení synchronní `App` a asynchronní `AsyncApp`. +- [Calling the API (Virtual Transport Layer)](docs/guide/virtual-transport-layer.md): parametry požadavku, typy MIME, + volání přes `google.script.run` a URL webové aplikace, obalování odpovědí. +- [Decorators](docs/guide/decorators.md): dekorátory tříd, metod a parametrů, validace a vestavěné pipes. +- [Controlling the Response](docs/guide/responses.md): `ResponseEntity` a `@ResponseBody`. +- [Advanced Examples](docs/guide/examples.md): pipes a globální zpracování chyb. +- [AI Agent Skills](docs/guide/ai-agent-skills.md): úplný seznam skills a možnosti instalace. +- [Boot.gs vs Spring Boot vs NestJS](docs/comparison.md): srovnání architektur. + +## Skills pro AI agenty + +Pracujete s AI agentem pro programování (Claude Code, Gemini CLI, Cursor atd.)? Repozitář +**[bootgs/skills](https://github.com/bootgs/skills)** nabízí Agent Skills, které ho naučí vytvářet kostru, strukturovat +a validovat aplikace **Boot.gs**, a navíc obecné skills pro vývoj v Google Apps Script. + +```bash +/plugin marketplace add bootgs/skills +/plugin install bootgs@bootgs-skills +``` + +Úplný seznam a instalaci pro Gemini CLI a `npx skills` najdete v [AI Agent Skills](docs/guide/ai-agent-skills.md). + +## Doporučujeme + +> [!TIP] +> Pro pohodlnější vývoj v Google Apps Script doporučujeme [@bootgs/utils](https://github.com/bootgs/utils), +> kolekci pomocných funkcí a tříd, které tento framework doplňují. + +## Přispěvatelé + +
+
+
+## Jak přispět
+
+Příspěvky jsou vítány! Pravidla chování a postup při odesílání pull requestů najdete v
+[pokynech pro přispěvatele](CONTRIBUTING.md). Chcete-li nahlásit zranitelnost, postupujte podle
+[bezpečnostní politiky](SECURITY.md).
+
+## Plán vývoje
+
+V [plánu vývoje](ROADMAP.md) zjistíte, co chystáme v příštích verzích.
+
+## Seznam změn
+
+Podrobný seznam změn a aktualizací najdete v [CHANGELOG](CHANGELOG.md).
+
+## Podpora
+
+Dotazy a hlášení chyb patří do [GitHub Issues](https://github.com/bootgs/boot/issues). Pokud vám projekt pomáhá,
+můžete ho podpořit přes [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov) nebo
+[Buy Me a Coffee](https://buymeacoffee.com/MaksymStoianov).
+
+## Licence
+
+Tento projekt je licencován pod [licencí Apache-2.0](LICENSE).
+
+---
+
++ ⭐ Líbí se vám tento projekt? Dejte mu hvězdičku na GitHubu! +
diff --git a/README.de.md b/README.de.md index 89b6beb..2266366 100644 --- a/README.de.md +++ b/README.de.md @@ -8,7 +8,7 @@ -[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | **Deutsch** | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [日本語](README.ja.md) | [中文](README.zh.md) +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | **Deutsch** | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > Diese Übersetzung wurde mit KI-Unterstützung aus [README.md](README.md) für Version 1.10.0 erstellt. Maßgeblich ist > die englische README. Korrekturen sind willkommen — siehe [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/README.es.md b/README.es.md index c715490..2297f34 100644 --- a/README.es.md +++ b/README.es.md @@ -8,7 +8,7 @@ -[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | **Español** | [Português](README.pt.md) | [日本語](README.ja.md) | [中文](README.zh.md) +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | **Español** | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > Esta traducción se preparó con ayuda de IA a partir de [README.md](README.md) para la versión 1.10.0. La versión en > inglés del README es la de referencia. Las correcciones son bienvenidas: consulta [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/README.fr.md b/README.fr.md index 9edc214..95ba7b9 100644 --- a/README.fr.md +++ b/README.fr.md @@ -8,7 +8,7 @@ -[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | **Français** | [Español](README.es.md) | [Português](README.pt.md) | [日本語](README.ja.md) | [中文](README.zh.md) +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | **Français** | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > Cette traduction a été réalisée avec l'aide de l'IA à partir de [README.md](README.md) pour la version 1.10.0. Le > README anglais fait foi. Les corrections sont les bienvenues — voir [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/README.id.md b/README.id.md new file mode 100644 index 0000000..a4c0c1c --- /dev/null +++ b/README.id.md @@ -0,0 +1,177 @@ + + + + ++ + Seniman: Daryna Mikhailenko + +
+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | **Bahasa Indonesia** | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> Terjemahan ini disiapkan dengan bantuan AI dari [README.md](README.md) untuk versi 1.10.0. README berbahasa Inggris adalah versi acuan. Koreksi sangat kami harapkan: lihat [CONTRIBUTING.md](CONTRIBUTING.md). + +# Boot Framework for Google Apps Script™ + + + + + +## Pendahuluan + +**Boot.gs** adalah framework ringan untuk membangun aplikasi Google Apps Script yang terstruktur. Framework ini +menghadirkan pola pengembangan yang sudah dikenal, seperti dekorator dan dependency injection, ke lingkungan Apps +Script agar kode lebih tertata. + +Controller Anda tidak bergantung pada lingkungan: kode yang sama menangani permintaan web `doGet`/`doPost`, panggilan +`google.script.run` dari sidebar dan dialog, serta event Google Workspace seperti `onOpen` atau `onEdit`. + +## Fitur + +- **Routing berbasis dekorator**: pemetaan intuitif untuk event HTTP dan Apps Script (GET, POST, dan lainnya). +- **Pola Spring Boot dan NestJS**: dekorator yang sudah dikenal seperti `@RequestMapping`, `@RestController`, + `@ResponseBody`, serta kelas `ResponseEntity`. +- **Respons yang fleksibel**: kendali penuh atas kode status HTTP, header, dan tipe MIME dengan `ResponseEntity`. +- **Validasi**: validasi parameter secara deklaratif dengan dekorator bergaya Spring Boot seperti `@Min`, `@Max`, + `@Email`, dan lainnya. +- **Pipe dan validasi**: ubah dan validasi data masuk dengan `@UsePipes` dan pipe bawaan (misalnya `ParseNumberPipe`). +- **Penanganan error global**: pengelolaan exception terpusat dengan `@ControllerAdvice` dan `@ExceptionHandler`. +- **Dependency injection**: DI lengkap untuk decoupling yang lebih baik dan kode yang lebih mudah diuji. +- **Keamanan tipe**: ditulis dengan TypeScript untuk pengalaman pengembangan yang andal. +- **Arsitektur modern**: terinspirasi oleh framework seperti NestJS dan Spring Boot. + +## Persyaratan + +- Proyek Google Apps Script dengan runtime V8, biasanya dikelola secara lokal dengan [clasp](https://github.com/google/clasp). +- TypeScript dengan `experimentalDecorators` dan `emitDecoratorMetadata` diaktifkan di `tsconfig.json`. +- Node.js `>=22.14.0` dan npm untuk instalasi dan build. + +## Instalasi + +Instal framework melalui npm: + +```bash +npm install bootgs +``` + +## Mulai cepat + +### 1. Definisikan controller + +Buat kelas yang menangani logika aplikasi Anda. Dekorator memetakan method ke endpoint atau event tertentu. + +```TypeScript +import {Get, RestController} from "bootgs"; + +@RestController("api/sheet") +export class SheetController { + /** + * Handles GET requests to /api/sheet/active-range + */ + @Get("active-range") + getActiveRange(): string { + return "This action returns the active sheet range."; + } +} +``` + +### 2. Inisialisasi aplikasi + +Buat instance `App` dan teruskan titik masuk standar Apps Script kepadanya, agar framework dapat mencegat dan +merutekan event yang masuk. + +```TypeScript +import {App} from "bootgs"; +import {SheetController} from "./SheetController"; + +/** + * Global entry point for GET requests. + */ +export function doGet(event: GoogleAppsScript.Events.DoGet) { + const app = App.create({ + controllers: [SheetController] + }); + return app.doGet(event); +} +``` + +Panduan lengkapnya, termasuk `doPost` dan aplikasi asinkron `AsyncApp`, ada di +[panduan Quick Start](docs/guide/quick-start.md) (dalam bahasa Inggris). + +## Dokumentasi + +Panduan terperinci tersedia dalam bahasa Inggris: + +- [Quick Start](docs/guide/quick-start.md): penyiapan `App` (sinkron) dan `AsyncApp` (asinkron). +- [Calling the API (Virtual Transport Layer)](docs/guide/virtual-transport-layer.md): parameter permintaan, tipe MIME, + panggilan melalui `google.script.run` dan URL Web App, pembungkusan respons. +- [Decorators](docs/guide/decorators.md): dekorator kelas, method, dan parameter, validasi, serta pipe bawaan. +- [Controlling the Response](docs/guide/responses.md): `ResponseEntity` dan `@ResponseBody`. +- [Advanced Examples](docs/guide/examples.md): pipe dan penanganan error global. +- [AI Agent Skills](docs/guide/ai-agent-skills.md): daftar lengkap skill dan opsi instalasi. +- [Boot.gs vs Spring Boot vs NestJS](docs/comparison.md): perbandingan arsitektur. + +## Skill untuk agen AI + +Bekerja dengan agen pemrograman AI (Claude Code, Gemini CLI, Cursor, dan lainnya)? Repositori +**[bootgs/skills](https://github.com/bootgs/skills)** menyediakan Agent Skills yang mengajarinya cara membuat kerangka, +menyusun, dan memvalidasi aplikasi **Boot.gs**, ditambah skill umum untuk pengembangan Google Apps Script yang tidak +terikat pada framework tertentu. + +```bash +/plugin marketplace add bootgs/skills +/plugin install bootgs@bootgs-skills +``` + +Daftar lengkap serta instalasi untuk Gemini CLI dan `npx skills` ada di [AI Agent Skills](docs/guide/ai-agent-skills.md). + +## Rekomendasi + +> [!TIP] +> Untuk pengembangan Google Apps Script yang lebih nyaman, kami merekomendasikan [@bootgs/utils](https://github.com/bootgs/utils), +> kumpulan fungsi dan kelas utilitas yang melengkapi framework ini. + +## Kontributor + +
+
+
+## Berkontribusi
+
+Kontribusi sangat kami sambut! Lihat [panduan kontribusi](CONTRIBUTING.md) untuk mengetahui kode etik dan proses
+pengajuan pull request. Untuk melaporkan kerentanan, ikuti [kebijakan keamanan](SECURITY.md).
+
+## Peta jalan
+
+Lihat [peta jalan](ROADMAP.md) untuk mengetahui apa yang direncanakan pada rilis mendatang.
+
+## Catatan perubahan
+
+Daftar perubahan dan pembaruan secara terperinci ada di [CHANGELOG](CHANGELOG.md).
+
+## Dukungan
+
+Pertanyaan dan laporan bug dapat diajukan di [GitHub Issues](https://github.com/bootgs/boot/issues). Jika proyek ini
+bermanfaat bagi Anda, Anda dapat mendukungnya melalui [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov)
+atau [Buy Me a Coffee](https://buymeacoffee.com/MaksymStoianov).
+
+## Lisensi
+
+Proyek ini dilisensikan di bawah [lisensi Apache-2.0](LICENSE).
+
+---
+
++ ⭐ Suka dengan proyek ini? Beri bintang di GitHub! +
diff --git a/README.it.md b/README.it.md new file mode 100644 index 0000000..56a56da --- /dev/null +++ b/README.it.md @@ -0,0 +1,182 @@ + + + + ++ + Artista: Daryna Mikhailenko + +
+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | **Italiano** | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> Questa traduzione è stata preparata con l'aiuto dell'IA a partire da [README.md](README.md) per la versione 1.10.0. Il README in inglese è la versione di riferimento. Le correzioni sono benvenute: consulta [CONTRIBUTING.md](CONTRIBUTING.md). + +# Boot Framework for Google Apps Script™ + + + + + +## Introduzione + +**Boot.gs** è un framework leggero pensato per creare applicazioni Google Apps Script ben strutturate. Porta +nell'ambiente Apps Script pattern di sviluppo familiari, come i decoratori e la dependency injection, per organizzare +meglio il codice. + +I tuoi controller restano indipendenti dall'ambiente: lo stesso codice gestisce le richieste web `doGet`/`doPost`, le +chiamate `google.script.run` da barre laterali e finestre di dialogo e gli eventi di Google Workspace come `onOpen` o +`onEdit`. + +## Funzionalità + +- **Routing basato su decoratori**: mappatura intuitiva degli eventi HTTP e di Apps Script (GET, POST, ecc.). +- **Pattern di Spring Boot e NestJS**: decoratori familiari come `@RequestMapping`, `@RestController`, `@ResponseBody` e + la classe `ResponseEntity`. +- **Risposte flessibili**: pieno controllo su codici di stato HTTP, header e tipi MIME tramite `ResponseEntity`. +- **Validazione**: validazione dichiarativa dei parametri con decoratori in stile Spring Boot come `@Min`, `@Max`, + `@Email`, ecc. +- **Pipe e validazione**: trasforma e valida i dati in ingresso con `@UsePipes` e le pipe integrate (ad esempio + `ParseNumberPipe`). +- **Gestione globale degli errori**: gestione centralizzata delle eccezioni con `@ControllerAdvice` e + `@ExceptionHandler`. +- **Dependency injection**: DI completa per un migliore disaccoppiamento e una maggiore testabilità. +- **Sicurezza dei tipi**: scritto in TypeScript per un'esperienza di sviluppo solida. +- **Architettura moderna**: ispirata a framework come NestJS e Spring Boot. + +## Requisiti + +- Un progetto Google Apps Script sul runtime V8, di solito gestito in locale con [clasp](https://github.com/google/clasp). +- TypeScript con `experimentalDecorators` ed `emitDecoratorMetadata` abilitati in `tsconfig.json`. +- Node.js `>=22.14.0` e npm per l'installazione e la build. + +## Installazione + +Installa il framework tramite npm: + +```bash +npm install bootgs +``` + +## Guida rapida + +### 1. Definisci un controller + +Crea una classe che gestisca la logica della tua applicazione. I decoratori associano i metodi a endpoint o eventi +specifici. + +```TypeScript +import {Get, RestController} from "bootgs"; + +@RestController("api/sheet") +export class SheetController { + /** + * Handles GET requests to /api/sheet/active-range + */ + @Get("active-range") + getActiveRange(): string { + return "This action returns the active sheet range."; + } +} +``` + +### 2. Inizializza l'applicazione + +Crea un'istanza di `App` e delega a essa i punti di ingresso standard di Apps Script, così che il framework possa +intercettare e instradare gli eventi in arrivo. + +```TypeScript +import {App} from "bootgs"; +import {SheetController} from "./SheetController"; + +/** + * Global entry point for GET requests. + */ +export function doGet(event: GoogleAppsScript.Events.DoGet) { + const app = App.create({ + controllers: [SheetController] + }); + return app.doGet(event); +} +``` + +La procedura completa, inclusi `doPost` e l'applicazione asincrona `AsyncApp`, è nella +[guida Quick Start](docs/guide/quick-start.md) (in inglese). + +## Documentazione + +Le guide dettagliate sono disponibili in inglese: + +- [Quick Start](docs/guide/quick-start.md): configurazione di `App` (sincrona) e `AsyncApp` (asincrona). +- [Calling the API (Virtual Transport Layer)](docs/guide/virtual-transport-layer.md): parametri della richiesta, tipi + MIME, chiamate tramite `google.script.run` e l'URL della web app, incapsulamento delle risposte. +- [Decorators](docs/guide/decorators.md): decoratori di classe, metodo e parametro, validazione e pipe integrate. +- [Controlling the Response](docs/guide/responses.md): `ResponseEntity` e `@ResponseBody`. +- [Advanced Examples](docs/guide/examples.md): pipe e gestione globale degli errori. +- [AI Agent Skills](docs/guide/ai-agent-skills.md): elenco completo delle skill e opzioni di installazione. +- [Boot.gs vs Spring Boot vs NestJS](docs/comparison.md): confronto tra le architetture. + +## Skill per agenti IA + +Lavori con un agente di programmazione basato sull'IA (Claude Code, Gemini CLI, Cursor, ecc.)? Il repository +**[bootgs/skills](https://github.com/bootgs/skills)** offre Agent Skills che gli insegnano a creare lo scheletro, +strutturare e validare applicazioni **Boot.gs**, oltre a skill generiche per lo sviluppo con Google Apps Script. + +```bash +/plugin marketplace add bootgs/skills +/plugin install bootgs@bootgs-skills +``` + +L'elenco completo e l'installazione per Gemini CLI e `npx skills` sono in +[AI Agent Skills](docs/guide/ai-agent-skills.md). + +## Consigliato + +> [!TIP] +> Per sviluppare con Google Apps Script in modo più comodo, consigliamo [@bootgs/utils](https://github.com/bootgs/utils), +> una raccolta di funzioni e classi di utilità che completano questo framework. + +## Collaboratori + +
+
+
+## Come contribuire
+
+I contributi sono benvenuti! Consulta le [linee guida per i contributi](CONTRIBUTING.md) per il codice di condotta e
+la procedura per inviare pull request. Per segnalare una vulnerabilità, segui la
+[politica di sicurezza](SECURITY.md).
+
+## Roadmap
+
+Consulta la [roadmap](ROADMAP.md) per vedere cosa è previsto nelle prossime versioni.
+
+## Registro delle modifiche
+
+L'elenco dettagliato delle modifiche e degli aggiornamenti è nel [CHANGELOG](CHANGELOG.md).
+
+## Supporto
+
+Domande e segnalazioni di bug vanno su [GitHub Issues](https://github.com/bootgs/boot/issues). Se il progetto ti è
+utile, puoi sostenerlo tramite [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov) o
+[Buy Me a Coffee](https://buymeacoffee.com/MaksymStoianov).
+
+## Licenza
+
+Questo progetto è distribuito con [licenza Apache-2.0](LICENSE).
+
+---
+
++ ⭐ Ti piace il progetto? Lasciagli una stella su GitHub! +
diff --git a/README.ja.md b/README.ja.md index ffb3a0d..c7cbfc0 100644 --- a/README.ja.md +++ b/README.ja.md @@ -8,7 +8,7 @@ -[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | **日本語** | [中文](README.zh.md) +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | **日本語** | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > この翻訳は、バージョン 1.10.0 の [README.md](README.md) をもとに AI の支援を受けて作成されました。正式な内容は英語版の README です。修正の提案を歓迎します。詳しくは [CONTRIBUTING.md](CONTRIBUTING.md) をご覧ください。 diff --git a/README.ko.md b/README.ko.md new file mode 100644 index 0000000..07eea21 --- /dev/null +++ b/README.ko.md @@ -0,0 +1,162 @@ + + + + ++ + 아티스트: Daryna Mikhailenko + +
+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | **한국어** | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> 이 번역은 버전 1.10.0의 [README.md](README.md)를 바탕으로 AI의 도움을 받아 작성되었습니다. 기준이 되는 버전은 영어 README입니다. 수정 제안을 환영합니다. 자세한 내용은 [CONTRIBUTING.md](CONTRIBUTING.md)를 참고하세요. + +# Boot Framework for Google Apps Script™ + + + + + +## 소개 + +**Boot.gs**는 체계적인 구조의 Google Apps Script 애플리케이션을 만들 수 있도록 돕는 경량 프레임워크입니다. 데코레이터와 의존성 주입 같은 익숙한 개발 패턴을 Apps Script 환경에 도입하여 코드를 깔끔하게 정리할 수 있게 해 줍니다. + +컨트롤러는 실행 환경에 의존하지 않습니다. 동일한 코드로 `doGet`/`doPost` 웹 요청, 사이드바와 대화상자에서 보내는 `google.script.run` 호출, `onOpen`이나 `onEdit` 같은 Google Workspace 이벤트를 모두 처리할 수 있습니다. + +## 기능 + +- **데코레이터 기반 라우팅**: HTTP 및 Apps Script 이벤트(GET, POST 등)를 직관적으로 매핑합니다. +- **Spring Boot 및 NestJS 패턴**: `@RequestMapping`, `@RestController`, `@ResponseBody` 같은 익숙한 데코레이터와 `ResponseEntity` 클래스를 제공합니다. +- **유연한 응답**: `ResponseEntity`로 HTTP 상태 코드, 헤더, MIME 타입을 완전히 제어할 수 있습니다. +- **유효성 검사**: `@Min`, `@Max`, `@Email` 등 Spring Boot 스타일의 데코레이터로 매개변수를 선언적으로 검증합니다. +- **파이프와 유효성 검사**: `@UsePipes`와 내장 파이프(예: `ParseNumberPipe`)로 들어오는 데이터를 변환하고 검증합니다. +- **전역 오류 처리**: `@ControllerAdvice`와 `@ExceptionHandler`로 예외를 한곳에서 관리합니다. +- **의존성 주입**: 결합도를 낮추고 테스트하기 쉽게 만들어 주는 완전한 기능의 DI를 제공합니다. +- **타입 안전성**: TypeScript로 작성되어 견고한 개발 경험을 제공합니다. +- **현대적인 아키텍처**: NestJS와 Spring Boot 같은 프레임워크에서 영감을 받았습니다. + +## 요구 사항 + +- V8 런타임을 사용하는 Google Apps Script 프로젝트(보통 [clasp](https://github.com/google/clasp)로 로컬에서 관리). +- `tsconfig.json`에서 `experimentalDecorators`와 `emitDecoratorMetadata`를 활성화한 TypeScript. +- 설치와 빌드를 위한 Node.js `>=22.14.0` 및 npm. + +## 설치 + +npm으로 프레임워크를 설치합니다. + +```bash +npm install bootgs +``` + +## 빠른 시작 + +### 1. 컨트롤러 정의하기 + +애플리케이션의 로직을 처리할 클래스를 만듭니다. 데코레이터가 메서드를 특정 엔드포인트나 이벤트에 연결합니다. + +```TypeScript +import {Get, RestController} from "bootgs"; + +@RestController("api/sheet") +export class SheetController { + /** + * Handles GET requests to /api/sheet/active-range + */ + @Get("active-range") + getActiveRange(): string { + return "This action returns the active sheet range."; + } +} +``` + +### 2. 애플리케이션 초기화하기 + +`App` 인스턴스를 만들고 Apps Script의 표준 진입점을 이 인스턴스에 위임하면, 프레임워크가 들어오는 이벤트를 가로채 라우팅할 수 있습니다. + +```TypeScript +import {App} from "bootgs"; +import {SheetController} from "./SheetController"; + +/** + * Global entry point for GET requests. + */ +export function doGet(event: GoogleAppsScript.Events.DoGet) { + const app = App.create({ + controllers: [SheetController] + }); + return app.doGet(event); +} +``` + +`doPost`와 비동기 `AsyncApp`을 포함한 전체 안내는 [Quick Start 가이드](docs/guide/quick-start.md)(영어)에서 확인할 수 있습니다. + +## 문서 + +자세한 가이드는 영어로 제공됩니다. + +- [Quick Start](docs/guide/quick-start.md): 동기 `App`과 비동기 `AsyncApp` 설정. +- [Calling the API (Virtual Transport Layer)](docs/guide/virtual-transport-layer.md): 요청 매개변수, MIME 타입, `google.script.run` 및 웹 앱 URL을 통한 호출, 응답 래핑. +- [Decorators](docs/guide/decorators.md): 클래스, 메서드, 매개변수 데코레이터, 유효성 검사와 내장 파이프. +- [Controlling the Response](docs/guide/responses.md): `ResponseEntity`와 `@ResponseBody`. +- [Advanced Examples](docs/guide/examples.md): 파이프와 전역 오류 처리. +- [AI Agent Skills](docs/guide/ai-agent-skills.md): 전체 스킬 목록과 설치 방법. +- [Boot.gs vs Spring Boot vs NestJS](docs/comparison.md): 아키텍처 비교. + +## AI 에이전트용 스킬 + +AI 코딩 에이전트(Claude Code, Gemini CLI, Cursor 등)를 사용하고 계신가요? **[bootgs/skills](https://github.com/bootgs/skills)** 저장소는 **Boot.gs** 애플리케이션의 뼈대를 만들고, 구조를 잡고, 검증하는 방법을 에이전트에게 알려 주는 Agent Skills와 함께, 프레임워크와 무관하게 Google Apps Script 개발에 쓸 수 있는 스킬도 제공합니다. + +```bash +/plugin marketplace add bootgs/skills +/plugin install bootgs@bootgs-skills +``` + +전체 목록과 Gemini CLI 및 `npx skills`를 이용한 설치 방법은 [AI Agent Skills](docs/guide/ai-agent-skills.md)를 참고하세요. + +## 추천 + +> [!TIP] +> Google Apps Script 개발을 더욱 편리하게 하려면 이 프레임워크를 보완하는 유틸리티 함수와 클래스 모음인 [@bootgs/utils](https://github.com/bootgs/utils)를 함께 사용하는 것을 권장합니다. + +## 기여자 + +
+
+
+## 기여하기
+
+기여를 환영합니다! 행동 강령과 풀 리퀘스트 제출 절차는 [기여 가이드](CONTRIBUTING.md)를 참고하세요. 취약점을 신고하려면 [보안 정책](SECURITY.md)을 따라 주세요.
+
+## 로드맵
+
+향후 릴리스 계획은 [로드맵](ROADMAP.md)에서 확인하세요.
+
+## 변경 이력
+
+변경 사항과 업데이트의 자세한 목록은 [CHANGELOG](CHANGELOG.md)를 참고하세요.
+
+## 지원
+
+질문과 버그 신고는 [GitHub Issues](https://github.com/bootgs/boot/issues)에 남겨 주세요. 프로젝트가 도움이 되었다면 [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov) 또는 [Buy Me a Coffee](https://buymeacoffee.com/MaksymStoianov)로 후원하실 수 있습니다.
+
+## 라이선스
+
+이 프로젝트는 [Apache-2.0 라이선스](LICENSE)에 따라 배포됩니다.
+
+---
+
++ ⭐ 이 프로젝트가 마음에 드시나요? GitHub에서 스타를 눌러 주세요! +
diff --git a/README.md b/README.md index ce4781c..9276d92 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ -**English** | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [日本語](README.ja.md) | [中文](README.zh.md) +**English** | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) # Boot Framework for Google Apps Script™ diff --git a/README.nl.md b/README.nl.md new file mode 100644 index 0000000..cf39859 --- /dev/null +++ b/README.nl.md @@ -0,0 +1,180 @@ + + + + ++ + Kunstenaar: Daryna Mikhailenko + +
+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | **Nederlands** | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> Deze vertaling is met behulp van AI gemaakt op basis van [README.md](README.md) voor versie 1.10.0. De Engelse README is de referentieversie. Correcties zijn welkom: zie [CONTRIBUTING.md](CONTRIBUTING.md). + +# Boot Framework for Google Apps Script™ + + + + + +## Introductie + +**Boot.gs** is een lichtgewicht framework voor het bouwen van goed gestructureerde Google Apps Script-applicaties. Het +brengt vertrouwde ontwikkelpatronen, zoals decorators en dependency injection, naar de Apps Script-omgeving zodat je je +code beter kunt organiseren. + +Je controllers blijven onafhankelijk van de omgeving: dezelfde code verwerkt `doGet`/`doPost`-webverzoeken, +`google.script.run`-aanroepen vanuit zijbalken en dialoogvensters, en Google Workspace-events zoals `onOpen` of `onEdit`. + +## Functies + +- **Routing met decorators**: intuïtieve koppeling van HTTP- en Apps Script-events (GET, POST, enz.). +- **Patronen uit Spring Boot en NestJS**: vertrouwde decorators zoals `@RequestMapping`, `@RestController`, + `@ResponseBody` en de klasse `ResponseEntity`. +- **Flexibele responses**: volledige controle over HTTP-statuscodes, headers en MIME-typen met `ResponseEntity`. +- **Validatie**: declaratieve validatie van parameters met decorators in Spring Boot-stijl, zoals `@Min`, `@Max`, + `@Email`, enz. +- **Pipes en validatie**: transformeer en valideer binnenkomende gegevens met `@UsePipes` en ingebouwde pipes + (bijvoorbeeld `ParseNumberPipe`). +- **Globale foutafhandeling**: centraal beheer van exceptions met `@ControllerAdvice` en `@ExceptionHandler`. +- **Dependency injection**: volwaardige DI voor betere ontkoppeling en testbaarheid. +- **Typeveiligheid**: geschreven in TypeScript voor een robuuste ontwikkelervaring. +- **Moderne architectuur**: geïnspireerd door frameworks als NestJS en Spring Boot. + +## Vereisten + +- Een Google Apps Script-project op de V8-runtime, meestal lokaal beheerd met [clasp](https://github.com/google/clasp). +- TypeScript met `experimentalDecorators` en `emitDecoratorMetadata` ingeschakeld in `tsconfig.json`. +- Node.js `>=22.14.0` en npm voor installeren en bouwen. + +## Installatie + +Installeer het framework via npm: + +```bash +npm install bootgs +``` + +## Snel aan de slag + +### 1. Definieer een controller + +Maak een klasse die de logica van je applicatie afhandelt. Decorators koppelen methoden aan specifieke endpoints of +events. + +```TypeScript +import {Get, RestController} from "bootgs"; + +@RestController("api/sheet") +export class SheetController { + /** + * Handles GET requests to /api/sheet/active-range + */ + @Get("active-range") + getActiveRange(): string { + return "This action returns the active sheet range."; + } +} +``` + +### 2. Initialiseer de applicatie + +Maak een `App`-instantie aan en delegeer de standaard entrypoints van Apps Script daaraan, zodat het framework +binnenkomende events kan onderscheppen en routeren. + +```TypeScript +import {App} from "bootgs"; +import {SheetController} from "./SheetController"; + +/** + * Global entry point for GET requests. + */ +export function doGet(event: GoogleAppsScript.Events.DoGet) { + const app = App.create({ + controllers: [SheetController] + }); + return app.doGet(event); +} +``` + +De volledige uitleg, inclusief `doPost` en de asynchrone `AsyncApp`, staat in de +[Quick Start-gids](docs/guide/quick-start.md) (in het Engels). + +## Documentatie + +De uitgebreide handleidingen zijn beschikbaar in het Engels: + +- [Quick Start](docs/guide/quick-start.md): opzet van de synchrone `App` en de asynchrone `AsyncApp`. +- [Calling the API (Virtual Transport Layer)](docs/guide/virtual-transport-layer.md): verzoekparameters, MIME-typen, + aanroepen via `google.script.run` en de URL van de web-app, het verpakken van responses. +- [Decorators](docs/guide/decorators.md): decorators voor klassen, methoden en parameters, validatie en ingebouwde pipes. +- [Controlling the Response](docs/guide/responses.md): `ResponseEntity` en `@ResponseBody`. +- [Advanced Examples](docs/guide/examples.md): pipes en globale foutafhandeling. +- [AI Agent Skills](docs/guide/ai-agent-skills.md): de volledige lijst met skills en installatieopties. +- [Boot.gs vs Spring Boot vs NestJS](docs/comparison.md): vergelijking van de architecturen. + +## Skills voor AI-agents + +Werk je met een AI-codeeragent (Claude Code, Gemini CLI, Cursor, enz.)? De repository +**[bootgs/skills](https://github.com/bootgs/skills)** biedt Agent Skills die de agent leren hoe hij **Boot.gs**-applicaties +opzet, structureert en valideert, plus framework-onafhankelijke skills voor ontwikkeling met Google Apps Script. + +```bash +/plugin marketplace add bootgs/skills +/plugin install bootgs@bootgs-skills +``` + +De volledige lijst en de installatie voor Gemini CLI en `npx skills` vind je in +[AI Agent Skills](docs/guide/ai-agent-skills.md). + +## Aanbevolen + +> [!TIP] +> Voor prettiger ontwikkelen met Google Apps Script raden we [@bootgs/utils](https://github.com/bootgs/utils) aan, een +> verzameling hulpfuncties en -klassen die dit framework aanvullen. + +## Bijdragers + +
+
+
+## Bijdragen
+
+Bijdragen zijn van harte welkom! Lees de [richtlijnen voor bijdragers](CONTRIBUTING.md) voor de gedragscode en de
+werkwijze voor het indienen van pull requests. Volg het [beveiligingsbeleid](SECURITY.md) om een kwetsbaarheid te
+melden.
+
+## Roadmap
+
+Bekijk de [roadmap](ROADMAP.md) om te zien wat er voor toekomstige releases gepland staat.
+
+## Changelog
+
+Een gedetailleerde lijst met wijzigingen en updates vind je in de [CHANGELOG](CHANGELOG.md).
+
+## Ondersteuning
+
+Vragen en bugmeldingen horen thuis in [GitHub Issues](https://github.com/bootgs/boot/issues). Heb je iets aan het
+project, dan kun je het steunen via [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov) of
+[Buy Me a Coffee](https://buymeacoffee.com/MaksymStoianov).
+
+## Licentie
+
+Dit project valt onder de [Apache-2.0-licentie](LICENSE).
+
+---
+
++ ⭐ Vind je dit project goed? Geef het een ster op GitHub! +
diff --git a/README.pl.md b/README.pl.md new file mode 100644 index 0000000..df304f9 --- /dev/null +++ b/README.pl.md @@ -0,0 +1,183 @@ + + + + ++ + Artystka: Daryna Mikhailenko + +
+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | **Polski** | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> To tłumaczenie przygotowano z pomocą AI na podstawie [README.md](README.md) dla wersji 1.10.0. Wersją wzorcową jest angielskie README. Poprawki są mile widziane: zajrzyj do [CONTRIBUTING.md](CONTRIBUTING.md). + +# Boot Framework for Google Apps Script™ + + + + + +## Wprowadzenie + +**Boot.gs** to lekki framework, który pomaga tworzyć dobrze ustrukturyzowane aplikacje Google Apps Script. Przenosi do +środowiska Apps Script znane wzorce programistyczne, takie jak dekoratory i wstrzykiwanie zależności, aby ułatwić +organizację kodu. + +Twoje kontrolery nie zależą od środowiska: ten sam kod obsługuje żądania webowe `doGet`/`doPost`, wywołania +`google.script.run` z paneli bocznych i okien dialogowych oraz zdarzenia Google Workspace, takie jak `onOpen` czy +`onEdit`. + +## Funkcje + +- **Routing oparty na dekoratorach**: intuicyjne mapowanie zdarzeń HTTP i Apps Script (GET, POST itd.). +- **Wzorce ze Spring Boot i NestJS**: znane dekoratory, takie jak `@RequestMapping`, `@RestController`, + `@ResponseBody`, oraz klasa `ResponseEntity`. +- **Elastyczne odpowiedzi**: pełna kontrola nad kodami statusu HTTP, nagłówkami i typami MIME dzięki `ResponseEntity`. +- **Walidacja**: deklaratywna walidacja parametrów za pomocą dekoratorów w stylu Spring Boot, takich jak `@Min`, + `@Max`, `@Email` itd. +- **Pipes i walidacja**: przekształcanie i walidacja danych wejściowych za pomocą `@UsePipes` i wbudowanych pipes (np. + `ParseNumberPipe`). +- **Globalna obsługa błędów**: scentralizowane zarządzanie wyjątkami za pomocą `@ControllerAdvice` i + `@ExceptionHandler`. +- **Wstrzykiwanie zależności**: w pełni funkcjonalne DI dla lepszego rozdzielenia komponentów i łatwiejszego + testowania. +- **Bezpieczeństwo typów**: napisany w TypeScript, co zapewnia solidne środowisko programistyczne. +- **Nowoczesna architektura**: inspirowana frameworkami takimi jak NestJS i Spring Boot. + +## Wymagania + +- Projekt Google Apps Script działający w środowisku uruchomieniowym V8, zwykle zarządzany lokalnie za pomocą [clasp](https://github.com/google/clasp). +- TypeScript z włączonymi opcjami `experimentalDecorators` i `emitDecoratorMetadata` w `tsconfig.json`. +- Node.js `>=22.14.0` oraz npm do instalacji i budowania. + +## Instalacja + +Zainstaluj framework przez npm: + +```bash +npm install bootgs +``` + +## Szybki start + +### 1. Zdefiniuj kontroler + +Utwórz klasę obsługującą logikę aplikacji. Dekoratory mapują metody na konkretne endpointy lub zdarzenia. + +```TypeScript +import {Get, RestController} from "bootgs"; + +@RestController("api/sheet") +export class SheetController { + /** + * Handles GET requests to /api/sheet/active-range + */ + @Get("active-range") + getActiveRange(): string { + return "This action returns the active sheet range."; + } +} +``` + +### 2. Zainicjalizuj aplikację + +Utwórz instancję `App` i przekaż do niej standardowe punkty wejścia Apps Script, aby framework mógł przechwytywać +i kierować przychodzące zdarzenia. + +```TypeScript +import {App} from "bootgs"; +import {SheetController} from "./SheetController"; + +/** + * Global entry point for GET requests. + */ +export function doGet(event: GoogleAppsScript.Events.DoGet) { + const app = App.create({ + controllers: [SheetController] + }); + return app.doGet(event); +} +``` + +Pełny przewodnik, obejmujący także `doPost` i asynchroniczną aplikację `AsyncApp`, znajdziesz w +[przewodniku Quick Start](docs/guide/quick-start.md) (po angielsku). + +## Dokumentacja + +Szczegółowe przewodniki są dostępne po angielsku: + +- [Quick Start](docs/guide/quick-start.md): konfiguracja synchronicznej `App` i asynchronicznej `AsyncApp`. +- [Calling the API (Virtual Transport Layer)](docs/guide/virtual-transport-layer.md): parametry żądania, typy MIME, + wywołania przez `google.script.run` i adres URL aplikacji internetowej, opakowywanie odpowiedzi. +- [Decorators](docs/guide/decorators.md): dekoratory klas, metod i parametrów, walidacja i wbudowane pipes. +- [Controlling the Response](docs/guide/responses.md): `ResponseEntity` i `@ResponseBody`. +- [Advanced Examples](docs/guide/examples.md): pipes i globalna obsługa błędów. +- [AI Agent Skills](docs/guide/ai-agent-skills.md): pełna lista skills i opcje instalacji. +- [Boot.gs vs Spring Boot vs NestJS](docs/comparison.md): porównanie architektur. + +## Skills dla agentów AI + +Pracujesz z agentem AI do programowania (Claude Code, Gemini CLI, Cursor itd.)? Repozytorium +**[bootgs/skills](https://github.com/bootgs/skills)** udostępnia Agent Skills, które uczą go generować szkielet +aplikacji **Boot.gs**, nadawać jej strukturę i ją walidować, a także skills niezależne od frameworka do pracy +z Google Apps Script. + +```bash +/plugin marketplace add bootgs/skills +/plugin install bootgs@bootgs-skills +``` + +Pełną listę oraz instalację dla Gemini CLI i `npx skills` znajdziesz w +[AI Agent Skills](docs/guide/ai-agent-skills.md). + +## Polecane + +> [!TIP] +> Aby wygodniej pracować z Google Apps Script, polecamy [@bootgs/utils](https://github.com/bootgs/utils) — zbiór +> funkcji i klas narzędziowych, które uzupełniają ten framework. + +## Współtwórcy + +
+
+
+## Jak pomóc w rozwoju
+
+Zachęcamy do współtworzenia projektu! Zasady postępowania i proces zgłaszania pull requestów opisuje
+[przewodnik dla współtwórców](CONTRIBUTING.md). Aby zgłosić podatność, postępuj zgodnie z
+[polityką bezpieczeństwa](SECURITY.md).
+
+## Plan rozwoju
+
+Zajrzyj do [planu rozwoju](ROADMAP.md), aby zobaczyć, co planujemy w kolejnych wydaniach.
+
+## Historia zmian
+
+Szczegółowa lista zmian i aktualizacji znajduje się w [CHANGELOG](CHANGELOG.md).
+
+## Wsparcie
+
+Pytania i zgłoszenia błędów kieruj do [GitHub Issues](https://github.com/bootgs/boot/issues). Jeśli projekt Ci pomaga,
+możesz go wesprzeć przez [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov) lub
+[Buy Me a Coffee](https://buymeacoffee.com/MaksymStoianov).
+
+## Licencja
+
+Ten projekt jest udostępniany na [licencji Apache-2.0](LICENSE).
+
+---
+
++ ⭐ Podoba Ci się ten projekt? Daj mu gwiazdkę na GitHub! +
diff --git a/README.pt.md b/README.pt.md index 5cfaef3..668b37d 100644 --- a/README.pt.md +++ b/README.pt.md @@ -8,7 +8,7 @@ -[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | **Português** | [日本語](README.ja.md) | [中文](README.zh.md) +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | **Português** | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > Esta tradução foi feita com ajuda de IA a partir do [README.md](README.md) para a versão 1.10.0. O README em inglês é > a versão oficial. Correções são bem-vindas — veja o [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/README.ru.md b/README.ru.md index 66c1146..1ca0fdd 100644 --- a/README.ru.md +++ b/README.ru.md @@ -8,7 +8,7 @@ -[English](README.md) | [Українська](README.uk.md) | **Русский** | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [日本語](README.ja.md) | [中文](README.zh.md) +[English](README.md) | [Українська](README.uk.md) | **Русский** | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > Этот перевод подготовлен с помощью ИИ на основе [README.md](README.md) для версии 1.10.0. Основной считается > английская версия README. Исправления приветствуются — см. [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/README.tr.md b/README.tr.md new file mode 100644 index 0000000..d6215a4 --- /dev/null +++ b/README.tr.md @@ -0,0 +1,181 @@ + + + + ++ + Sanatçı: Daryna Mikhailenko + +
+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | **Türkçe** | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> Bu çeviri, 1.10.0 sürümü için [README.md](README.md) dosyasından yapay zekâ desteğiyle hazırlanmıştır. Referans sürüm İngilizce README'dir. Düzeltmelerinizi bekliyoruz: [CONTRIBUTING.md](CONTRIBUTING.md) dosyasına bakın. + +# Boot Framework for Google Apps Script™ + + + + + +## Giriş + +**Boot.gs**, iyi yapılandırılmış Google Apps Script uygulamaları geliştirmeye yardımcı olmak için tasarlanmış hafif bir +framework'tür. Kodun daha düzenli olması için dekoratörler ve bağımlılık enjeksiyonu gibi tanıdık geliştirme +kalıplarını Apps Script ortamına taşır. + +Controller'larınız ortamdan bağımsız kalır: aynı kod `doGet`/`doPost` web isteklerini, kenar çubukları ve +iletişim kutularından gelen `google.script.run` çağrılarını ve `onOpen` ya da `onEdit` gibi Google Workspace +olaylarını işler. + +## Özellikler + +- **Dekoratör tabanlı yönlendirme**: HTTP ve Apps Script olaylarının (GET, POST vb.) sezgisel eşlenmesi. +- **Spring Boot ve NestJS kalıpları**: `@RequestMapping`, `@RestController`, `@ResponseBody` gibi tanıdık dekoratörler + ve `ResponseEntity` sınıfı. +- **Esnek yanıtlar**: `ResponseEntity` ile HTTP durum kodları, başlıklar ve MIME türleri üzerinde tam denetim. +- **Doğrulama**: `@Min`, `@Max`, `@Email` gibi Spring Boot tarzı dekoratörlerle bildirime dayalı parametre doğrulama. +- **Pipe'lar ve doğrulama**: Gelen verileri `@UsePipes` ve yerleşik pipe'larla (örneğin `ParseNumberPipe`) dönüştürün + ve doğrulayın. +- **Genel hata yönetimi**: `@ControllerAdvice` ve `@ExceptionHandler` ile merkezi istisna yönetimi. +- **Bağımlılık enjeksiyonu**: Daha gevşek bağlılık ve daha kolay test edilebilirlik için tam özellikli DI. +- **Tür güvenliği**: Sağlam bir geliştirme deneyimi için TypeScript ile yazılmıştır. +- **Modern mimari**: NestJS ve Spring Boot gibi framework'lerden esinlenmiştir. + +## Gereksinimler + +- V8 çalışma zamanını kullanan, genellikle [clasp](https://github.com/google/clasp) ile yerelde yönetilen bir Google Apps Script projesi. +- `tsconfig.json` içinde `experimentalDecorators` ve `emitDecoratorMetadata` seçenekleri etkinleştirilmiş TypeScript. +- Kurulum ve derleme için Node.js `>=22.14.0` ve npm. + +## Kurulum + +Framework'ü npm ile kurun: + +```bash +npm install bootgs +``` + +## Hızlı başlangıç + +### 1. Bir controller tanımlayın + +Uygulamanızın mantığını işleyecek bir sınıf oluşturun. Dekoratörler, metotları belirli endpoint'lere veya olaylara +eşler. + +```TypeScript +import {Get, RestController} from "bootgs"; + +@RestController("api/sheet") +export class SheetController { + /** + * Handles GET requests to /api/sheet/active-range + */ + @Get("active-range") + getActiveRange(): string { + return "This action returns the active sheet range."; + } +} +``` + +### 2. Uygulamayı başlatın + +Bir `App` örneği oluşturun ve standart Apps Script giriş noktalarını ona devredin; böylece framework gelen olayları +yakalayıp yönlendirebilir. + +```TypeScript +import {App} from "bootgs"; +import {SheetController} from "./SheetController"; + +/** + * Global entry point for GET requests. + */ +export function doGet(event: GoogleAppsScript.Events.DoGet) { + const app = App.create({ + controllers: [SheetController] + }); + return app.doGet(event); +} +``` + +`doPost` ve asenkron `AsyncApp` dahil olmak üzere adım adım anlatımın tamamı +[Quick Start kılavuzunda](docs/guide/quick-start.md) (İngilizce) yer alır. + +## Dokümantasyon + +Ayrıntılı kılavuzlar İngilizce olarak mevcuttur: + +- [Quick Start](docs/guide/quick-start.md): senkron `App` ve asenkron `AsyncApp` kurulumu. +- [Calling the API (Virtual Transport Layer)](docs/guide/virtual-transport-layer.md): istek parametreleri, MIME + türleri, `google.script.run` ve Web App URL'si üzerinden çağrılar, yanıtların sarmalanması. +- [Decorators](docs/guide/decorators.md): sınıf, metot ve parametre dekoratörleri, doğrulama ve yerleşik pipe'lar. +- [Controlling the Response](docs/guide/responses.md): `ResponseEntity` ve `@ResponseBody`. +- [Advanced Examples](docs/guide/examples.md): pipe'lar ve genel hata yönetimi. +- [AI Agent Skills](docs/guide/ai-agent-skills.md): skill'lerin tam listesi ve kurulum seçenekleri. +- [Boot.gs vs Spring Boot vs NestJS](docs/comparison.md): mimari karşılaştırması. + +## Yapay zekâ ajanları için skill'ler + +Bir yapay zekâ kodlama ajanıyla (Claude Code, Gemini CLI, Cursor vb.) mı çalışıyorsunuz? +**[bootgs/skills](https://github.com/bootgs/skills)** deposu, ajana **Boot.gs** uygulamalarının iskeletini oluşturmayı, +yapılandırmayı ve doğrulamayı öğreten Agent Skills'in yanı sıra Google Apps Script geliştirmesi için framework'ten +bağımsız skill'ler sunar. + +```bash +/plugin marketplace add bootgs/skills +/plugin install bootgs@bootgs-skills +``` + +Tam liste ile Gemini CLI ve `npx skills` üzerinden kurulum için [AI Agent Skills](docs/guide/ai-agent-skills.md) +sayfasına bakın. + +## Önerilenler + +> [!TIP] +> Google Apps Script ile daha rahat geliştirme için bu framework'ü tamamlayan yardımcı fonksiyon ve sınıflardan oluşan +> [@bootgs/utils](https://github.com/bootgs/utils) koleksiyonunu kullanmanızı öneririz. + +## Katkıda bulunanlar + +
+
+
+## Katkıda bulunma
+
+Katkılarınızı memnuniyetle karşılıyoruz! Davranış kuralları ve pull request gönderme süreci hakkında ayrıntılar için
+[katkı kılavuzumuza](CONTRIBUTING.md) bakın. Bir güvenlik açığı bildirmek için [güvenlik politikasını](SECURITY.md)
+izleyin.
+
+## Yol haritası
+
+Gelecek sürümlerde neler planladığımızı görmek için [yol haritamıza](ROADMAP.md) göz atın.
+
+## Değişiklik günlüğü
+
+Değişikliklerin ve güncellemelerin ayrıntılı listesi için [CHANGELOG](CHANGELOG.md) dosyasına bakın.
+
+## Destek
+
+Sorular ve hata bildirimleri için [GitHub Issues](https://github.com/bootgs/boot/issues) kullanılır. Proje işinize
+yarıyorsa onu [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov) veya
+[Buy Me a Coffee](https://buymeacoffee.com/MaksymStoianov) üzerinden destekleyebilirsiniz.
+
+## Lisans
+
+Bu proje [Apache-2.0 lisansı](LICENSE) ile lisanslanmıştır.
+
+---
+
++ ⭐ Projeyi beğendiniz mi? GitHub'da ona bir yıldız verin! +
diff --git a/README.uk.md b/README.uk.md index eff769c..ac1a961 100644 --- a/README.uk.md +++ b/README.uk.md @@ -8,7 +8,7 @@ -[English](README.md) | **Українська** | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [日本語](README.ja.md) | [中文](README.zh.md) +[English](README.md) | **Українська** | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) > Цей переклад підготовлено за допомогою ШІ на основі [README.md](README.md) для версії 1.10.0. Основною є англійська > версія README. Виправлення вітаються — див. [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/README.vi.md b/README.vi.md new file mode 100644 index 0000000..e49bcb6 --- /dev/null +++ b/README.vi.md @@ -0,0 +1,179 @@ + + + + ++ + Nghệ sĩ: Daryna Mikhailenko + +
+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | **Tiếng Việt** | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | [繁體中文](README.zh-TW.md) + +> Bản dịch này được chuẩn bị với sự hỗ trợ của AI từ [README.md](README.md) cho phiên bản 1.10.0. README tiếng Anh là phiên bản tham chiếu. Mọi góp ý chỉnh sửa đều được hoan nghênh: xem [CONTRIBUTING.md](CONTRIBUTING.md). + +# Boot Framework for Google Apps Script™ + + + + + +## Giới thiệu + +**Boot.gs** là một framework gọn nhẹ giúp xây dựng các ứng dụng Google Apps Script có cấu trúc rõ ràng. Framework mang +những mẫu phát triển quen thuộc như decorator và dependency injection vào môi trường Apps Script để giúp tổ chức mã +nguồn tốt hơn. + +Các controller của bạn không phụ thuộc vào môi trường: cùng một đoạn mã xử lý các yêu cầu web `doGet`/`doPost`, các +lệnh gọi `google.script.run` từ thanh bên và hộp thoại, cũng như các sự kiện Google Workspace như `onOpen` hoặc `onEdit`. + +## Tính năng + +- **Định tuyến bằng decorator**: ánh xạ trực quan các sự kiện HTTP và Apps Script (GET, POST, v.v.). +- **Mẫu thiết kế của Spring Boot và NestJS**: các decorator quen thuộc như `@RequestMapping`, `@RestController`, + `@ResponseBody` và lớp `ResponseEntity`. +- **Phản hồi linh hoạt**: toàn quyền kiểm soát mã trạng thái HTTP, header và kiểu MIME bằng `ResponseEntity`. +- **Xác thực dữ liệu**: xác thực tham số theo cách khai báo bằng các decorator kiểu Spring Boot như `@Min`, `@Max`, + `@Email`, v.v. +- **Pipe và xác thực**: chuyển đổi và xác thực dữ liệu đầu vào với `@UsePipes` và các pipe dựng sẵn (ví dụ: + `ParseNumberPipe`). +- **Xử lý lỗi toàn cục**: quản lý ngoại lệ tập trung với `@ControllerAdvice` và `@ExceptionHandler`. +- **Dependency Injection**: DI đầy đủ tính năng giúp giảm phụ thuộc giữa các thành phần và dễ kiểm thử hơn. +- **An toàn kiểu**: được viết bằng TypeScript cho trải nghiệm phát triển vững chắc. +- **Kiến trúc hiện đại**: lấy cảm hứng từ các framework như NestJS và Spring Boot. + +## Yêu cầu + +- Một dự án Google Apps Script chạy trên runtime V8, thường được quản lý cục bộ bằng [clasp](https://github.com/google/clasp). +- TypeScript với `experimentalDecorators` và `emitDecoratorMetadata` được bật trong `tsconfig.json`. +- Node.js `>=22.14.0` và npm để cài đặt và build. + +## Cài đặt + +Cài đặt framework qua npm: + +```bash +npm install bootgs +``` + +## Bắt đầu nhanh + +### 1. Định nghĩa controller + +Tạo một lớp để xử lý logic của ứng dụng. Các decorator ánh xạ phương thức tới các endpoint hoặc sự kiện cụ thể. + +```TypeScript +import {Get, RestController} from "bootgs"; + +@RestController("api/sheet") +export class SheetController { + /** + * Handles GET requests to /api/sheet/active-range + */ + @Get("active-range") + getActiveRange(): string { + return "This action returns the active sheet range."; + } +} +``` + +### 2. Khởi tạo ứng dụng + +Tạo một thể hiện `App` và chuyển giao các điểm vào tiêu chuẩn của Apps Script cho nó, để framework có thể chặn và định +tuyến các sự kiện đến. + +```TypeScript +import {App} from "bootgs"; +import {SheetController} from "./SheetController"; + +/** + * Global entry point for GET requests. + */ +export function doGet(event: GoogleAppsScript.Events.DoGet) { + const app = App.create({ + controllers: [SheetController] + }); + return app.doGet(event); +} +``` + +Hướng dẫn đầy đủ, bao gồm `doPost` và ứng dụng bất đồng bộ `AsyncApp`, có trong +[hướng dẫn Quick Start](docs/guide/quick-start.md) (bằng tiếng Anh). + +## Tài liệu + +Các hướng dẫn chi tiết hiện có bằng tiếng Anh: + +- [Quick Start](docs/guide/quick-start.md): thiết lập `App` (đồng bộ) và `AsyncApp` (bất đồng bộ). +- [Calling the API (Virtual Transport Layer)](docs/guide/virtual-transport-layer.md): tham số yêu cầu, kiểu MIME, lệnh + gọi qua `google.script.run` và URL của Web App, bao gói phản hồi. +- [Decorators](docs/guide/decorators.md): decorator cho lớp, phương thức và tham số, xác thực và các pipe dựng sẵn. +- [Controlling the Response](docs/guide/responses.md): `ResponseEntity` và `@ResponseBody`. +- [Advanced Examples](docs/guide/examples.md): pipe và xử lý lỗi toàn cục. +- [AI Agent Skills](docs/guide/ai-agent-skills.md): danh sách đầy đủ các skill và các cách cài đặt. +- [Boot.gs vs Spring Boot vs NestJS](docs/comparison.md): so sánh kiến trúc. + +## Skill cho tác tử AI + +Bạn đang làm việc với một tác tử lập trình AI (Claude Code, Gemini CLI, Cursor, v.v.)? Kho mã +**[bootgs/skills](https://github.com/bootgs/skills)** cung cấp các Agent Skills hướng dẫn tác tử cách tạo khung, tổ +chức cấu trúc và kiểm tra các ứng dụng **Boot.gs**, cùng với các skill không phụ thuộc framework cho việc phát triển +Google Apps Script. + +```bash +/plugin marketplace add bootgs/skills +/plugin install bootgs@bootgs-skills +``` + +Danh sách đầy đủ và cách cài đặt cho Gemini CLI và `npx skills` có tại +[AI Agent Skills](docs/guide/ai-agent-skills.md). + +## Đề xuất + +> [!TIP] +> Để phát triển với Google Apps Script thuận tiện hơn, chúng tôi khuyên dùng [@bootgs/utils](https://github.com/bootgs/utils), +> một bộ sưu tập các hàm và lớp tiện ích bổ trợ cho framework này. + +## Người đóng góp + +
+
+
+## Đóng góp
+
+Chúng tôi luôn hoan nghênh các đóng góp! Vui lòng xem [hướng dẫn đóng góp](CONTRIBUTING.md) để biết về quy tắc ứng xử
+và quy trình gửi pull request. Để báo cáo lỗ hổng bảo mật, hãy làm theo [chính sách bảo mật](SECURITY.md).
+
+## Lộ trình
+
+Xem [lộ trình](ROADMAP.md) để biết những gì đã được lên kế hoạch cho các phiên bản sắp tới.
+
+## Nhật ký thay đổi
+
+Danh sách chi tiết các thay đổi và cập nhật có trong [CHANGELOG](CHANGELOG.md).
+
+## Hỗ trợ
+
+Câu hỏi và báo cáo lỗi xin gửi tới [GitHub Issues](https://github.com/bootgs/boot/issues). Nếu dự án hữu ích với bạn,
+bạn có thể ủng hộ qua [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov) hoặc
+[Buy Me a Coffee](https://buymeacoffee.com/MaksymStoianov).
+
+## Giấy phép
+
+Dự án này được cấp phép theo [giấy phép Apache-2.0](LICENSE).
+
+---
+
++ ⭐ Bạn thích dự án này? Hãy tặng một ngôi sao trên GitHub! +
diff --git a/README.zh-TW.md b/README.zh-TW.md new file mode 100644 index 0000000..d0aa415 --- /dev/null +++ b/README.zh-TW.md @@ -0,0 +1,162 @@ + + + + ++ + 藝術家:Daryna Mikhailenko + +
+ +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [简体中文](README.zh.md) | **繁體中文** + +> 本翻譯以 AI 輔助,依據版本 1.10.0 的 [README.md](README.md) 製作。英文版 README 為參考版本。歡迎提出修正,詳見 [CONTRIBUTING.md](CONTRIBUTING.md)。 + +# Boot Framework for Google Apps Script™ + + + + + +## 簡介 + +**Boot.gs** 是一個輕量級框架,協助你建立結構清晰的 Google Apps Script 應用程式。它將裝飾器、相依性注入等常見的開發模式帶進 Apps Script 環境,讓程式碼更容易組織。 + +你的控制器不受執行環境限制:同一份程式碼即可處理 `doGet`/`doPost` 網頁請求、側邊欄與對話框發出的 `google.script.run` 呼叫,以及 `onOpen`、`onEdit` 等 Google Workspace 事件。 + +## 功能 + +- **以裝飾器為基礎的路由**:直覺地對應 HTTP 與 Apps Script 事件(GET、POST 等)。 +- **Spring Boot 與 NestJS 模式**:熟悉的裝飾器,例如 `@RequestMapping`、`@RestController`、`@ResponseBody`,以及 `ResponseEntity` 類別。 +- **彈性的回應**:透過 `ResponseEntity` 完整控制 HTTP 狀態碼、標頭與 MIME 類型。 +- **驗證**:使用 `@Min`、`@Max`、`@Email` 等 Spring Boot 風格的裝飾器,以宣告式方式驗證參數。 +- **Pipes 與驗證**:透過 `@UsePipes` 與內建 pipes(例如 `ParseNumberPipe`)轉換並驗證傳入的資料。 +- **全域錯誤處理**:使用 `@ControllerAdvice` 與 `@ExceptionHandler` 集中管理例外。 +- **相依性注入**:功能完整的 DI,降低耦合並提升可測試性。 +- **型別安全**:以 TypeScript 打造,提供穩健的開發體驗。 +- **現代化架構**:設計靈感來自 NestJS 與 Spring Boot 等框架。 + +## 系統需求 + +- 使用 V8 執行階段的 Google Apps Script 專案,通常以 [clasp](https://github.com/google/clasp) 在本機管理。 +- 在 `tsconfig.json` 中啟用 `experimentalDecorators` 與 `emitDecoratorMetadata` 的 TypeScript。 +- 用於安裝與建置的 Node.js `>=22.14.0` 及 npm。 + +## 安裝 + +透過 npm 安裝框架: + +```bash +npm install bootgs +``` + +## 快速入門 + +### 1. 定義控制器 + +建立一個類別來處理應用程式的邏輯。裝飾器會將方法對應到特定的端點或事件。 + +```TypeScript +import {Get, RestController} from "bootgs"; + +@RestController("api/sheet") +export class SheetController { + /** + * Handles GET requests to /api/sheet/active-range + */ + @Get("active-range") + getActiveRange(): string { + return "This action returns the active sheet range."; + } +} +``` + +### 2. 初始化應用程式 + +建立 `App` 實例,並將 Apps Script 的標準進入點委派給它,讓框架能攔截並路由傳入的事件。 + +```TypeScript +import {App} from "bootgs"; +import {SheetController} from "./SheetController"; + +/** + * Global entry point for GET requests. + */ +export function doGet(event: GoogleAppsScript.Events.DoGet) { + const app = App.create({ + controllers: [SheetController] + }); + return app.doGet(event); +} +``` + +包含 `doPost` 與非同步 `AsyncApp` 的完整說明,請參閱 [Quick Start 指南](docs/guide/quick-start.md)(英文)。 + +## 文件 + +詳細指南僅提供英文版: + +- [Quick Start](docs/guide/quick-start.md):同步 `App` 與非同步 `AsyncApp` 的設定。 +- [Calling the API (Virtual Transport Layer)](docs/guide/virtual-transport-layer.md):請求參數、MIME 類型、透過 `google.script.run` 與 Web 應用程式 URL 呼叫、回應包裝。 +- [Decorators](docs/guide/decorators.md):類別、方法與參數裝飾器、驗證及內建 pipes。 +- [Controlling the Response](docs/guide/responses.md):`ResponseEntity` 與 `@ResponseBody`。 +- [Advanced Examples](docs/guide/examples.md):pipes 與全域錯誤處理。 +- [AI Agent Skills](docs/guide/ai-agent-skills.md):完整的技能清單與安裝方式。 +- [Boot.gs vs Spring Boot vs NestJS](docs/comparison.md):架構比較。 + +## AI 代理技能 + +正在使用 AI 程式設計代理(Claude Code、Gemini CLI、Cursor 等)嗎?**[bootgs/skills](https://github.com/bootgs/skills)** 儲存庫提供 Agent Skills,教導代理如何建立 **Boot.gs** 應用程式的骨架、規劃結構並加以驗證,另外也提供不限框架、適用於 Google Apps Script 開發的通用技能。 + +```bash +/plugin marketplace add bootgs/skills +/plugin install bootgs@bootgs-skills +``` + +完整清單以及透過 Gemini CLI 與 `npx skills` 安裝的方式,請參閱 [AI Agent Skills](docs/guide/ai-agent-skills.md)。 + +## 推薦 + +> [!TIP] +> 為了讓 Google Apps Script 開發更順手,我們推薦使用 [@bootgs/utils](https://github.com/bootgs/utils),這是一組可搭配本框架使用的工具函式與類別。 + +## 貢獻者 + +
+
+
+## 參與貢獻
+
+歡迎各種貢獻!關於行為準則與提交 pull request 的流程,請參閱[貢獻指南](CONTRIBUTING.md)。如需回報安全漏洞,請依照[安全政策](SECURITY.md)辦理。
+
+## 路線圖
+
+請查看[路線圖](ROADMAP.md),了解未來版本的規劃。
+
+## 變更紀錄
+
+詳細的變更與更新清單,請參閱 [CHANGELOG](CHANGELOG.md)。
+
+## 支持
+
+問題與錯誤回報請提交至 [GitHub Issues](https://github.com/bootgs/boot/issues)。如果本專案對你有幫助,歡迎透過 [GitHub Sponsors](https://github.com/sponsors/MaksymStoianov) 或 [Buy Me a Coffee](https://buymeacoffee.com/MaksymStoianov) 支持我們。
+
+## 授權條款
+
+本專案採用 [Apache-2.0 授權條款](LICENSE)。
+
+---
+
++ ⭐ 喜歡這個專案嗎?歡迎到 GitHub 給我們一顆星! +
diff --git a/README.zh.md b/README.zh.md index 598a7bb..b8d09ff 100644 --- a/README.zh.md +++ b/README.zh.md @@ -8,7 +8,7 @@ -[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [日本語](README.ja.md) | **中文** +[English](README.md) | [Українська](README.uk.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Français](README.fr.md) | [Español](README.es.md) | [Português](README.pt.md) | [Italiano](README.it.md) | [Nederlands](README.nl.md) | [Polski](README.pl.md) | [Čeština](README.cs.md) | [Türkçe](README.tr.md) | [العربية](README.ar.md) | [Bahasa Indonesia](README.id.md) | [Tiếng Việt](README.vi.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | **简体中文** | [繁體中文](README.zh-TW.md) > 本译文在 AI 辅助下根据 1.10.0 版本的 [README.md](README.md) 翻译而成,内容以英文版 README 为准。欢迎提出修改建议,详见 [CONTRIBUTING.md](CONTRIBUTING.md)。 diff --git a/scripts/check-readme-translations.mjs b/scripts/check-readme-translations.mjs index d7899ac..68505b3 100644 --- a/scripts/check-readme-translations.mjs +++ b/scripts/check-readme-translations.mjs @@ -7,6 +7,10 @@ * `###` headings as README.md, and that its translation note names the * current package.json version. README.md itself must carry the switcher too. * + * A right-to-left translation wraps its prose in `