`:
+
+ Accepts a single parameter which can be a DOM element or a CSS selector and renders the JSON object as HTML `table`(s) in that element. If no element is specified, it renders the table(s) in `document.body`.
+
+ Example:
+
+ ```html title="HTML"
+
+
+ ```
+
+:::info Note
+
+Helper methods for DuckDB are identical to those for [SQL using SQLite](./sql.mdx) and [PostgreSQL](./postgresql.mdx). So the same code can be used for all engines.
+
+:::
+
+### Limitations
+
+Currently parameters are not supported.
+
+### Example Usage
+
+import LiveCodes from '../../src/components/LiveCodes.tsx';
+
+
+
+### Custom Settings
+
+[Custom settings](../advanced/custom-settings.mdx) added to the property `duckdb` are used during running the SQL code. It is a JSON object with the following properties:
+
+- `scriptURLs`: An array of URLs to SQL scripts that should be loaded before running the SQL code.
+
+Please note that custom settings should be valid JSON (i.e. functions are not allowed).
+
+**Example:**
+
+```json title="Custom Settings"
+{
+ "duckdb": {
+ "scriptURLs": ["https://myserver.com/sql.sql"]
+ }
+}
+```
+
+## Language Info
+
+### Name
+
+`duckdb`
+
+### Aliases/Extensions
+
+`duckdb.sql`, `duckdb`
+
+### Editor
+
+`script`
+
+## Compiler
+
+[DuckDB-Wasm](https://github.com/duckdb/duckdb-wasm)
+
+### Version
+
+`@duckdb/duckdb-wasm`: v1.32.0
+
+## Code Formatting
+
+using [`sql-formatter`](https://github.com/sql-formatter-org/sql-formatter)
+
+## Starter Template
+
+https://livecodes.io/?template=duckdb
+
+## Links
+
+- [DuckDB official website](https://duckdb.org/)
+- [DuckDB documentation](https://duckdb.org/docs/)
+- [DuckDB-Wasm GitHub repo](https://github.com/duckdb/duckdb-wasm)
+- [SQL in LiveCodes](./sql.mdx) (using SQLite)
+- [PostgreSQL in LiveCodes](./postgresql.mdx)
diff --git a/docs/src/components/LanguageSliders.tsx b/docs/src/components/LanguageSliders.tsx
index 6472765b1b..f9d6ce81aa 100644
--- a/docs/src/components/LanguageSliders.tsx
+++ b/docs/src/components/LanguageSliders.tsx
@@ -133,6 +133,7 @@ export default function Sliders() {
{ name: 'assembly-wasm', title: 'Assembly (Wasm)' },
{ name: 'sql', title: 'SQL' },
{ name: 'postgresql', title: 'PostgreSQL' },
+ { name: 'duckdb', title: 'DuckDB' },
{ name: 'prolog', title: 'Prolog' },
{ name: 'minizinc', title: 'MiniZinc' },
{ name: 'blockly', title: 'Blockly' },
diff --git a/docs/src/components/TemplateList.tsx b/docs/src/components/TemplateList.tsx
index 94b4d94222..4ae8323165 100644
--- a/docs/src/components/TemplateList.tsx
+++ b/docs/src/components/TemplateList.tsx
@@ -90,6 +90,7 @@ const templates = [
{ name: 'assembly-wasm', title: 'Assembly (Wasm) Starter', thumbnail: 'assembly.svg' },
{ name: 'sql', title: 'SQL Starter', thumbnail: 'sqlite.svg' },
{ name: 'postgresql', title: 'PostgreSQL Starter', thumbnail: 'postgresql.svg' },
+ { name: 'duckdb', title: 'DuckDB Starter', thumbnail: 'duckdb.svg' },
{ name: 'prolog', title: 'Prolog Starter', thumbnail: 'tau-prolog.svg' },
{ name: 'minizinc', title: 'MiniZinc Starter', thumbnail: 'minizinc.png' },
{ name: 'blockly', title: 'Blockly Starter', thumbnail: 'blockly.svg' },
diff --git a/e2e/specs/starter.spec.ts b/e2e/specs/starter.spec.ts
index 8cb8f858df..9196f4eeef 100644
--- a/e2e/specs/starter.spec.ts
+++ b/e2e/specs/starter.spec.ts
@@ -1804,6 +1804,18 @@ test.describe('Starter Templates from URL', () => {
expect(resultText).toContain('Whatever you do, do it well. – Walt Disney');
});
+ test('DuckDB Starter (in URL)', async ({ page, getTestUrl }) => {
+ await page.goto(getTestUrl({ template: 'duckdb' }));
+
+ const { app, getResult, waitForResultUpdate } = await getLoadedApp(page);
+
+ await waitForEditorFocus(app);
+ await waitForResultUpdate();
+
+ const resultText = await getResult().innerText('table');
+ expect(resultText).toContain('Whatever you do, do it well. – Walt Disney');
+ });
+
test('Prolog Starter (in URL)', async ({ page, getTestUrl }) => {
await page.goto(getTestUrl({ template: 'prolog' }));
diff --git a/functions/vendors/templates.js b/functions/vendors/templates.js
index 68db74cb56..a9b989323d 100644
--- a/functions/vendors/templates.js
+++ b/functions/vendors/templates.js
@@ -89,6 +89,7 @@ export const starterTemplates = {
"assembly-wasm": "Assembly (Wasm) Starter",
"sql": "SQL Starter",
"postgresql": "PostgreSQL Starter",
+ "duckdb": "DuckDB Starter",
"prolog": "Prolog Starter",
"minizinc": "MiniZinc Starter",
"blockly": "Blockly Starter",
diff --git a/scripts/build.js b/scripts/build.js
index 002a31443e..9436141539 100644
--- a/scripts/build.js
+++ b/scripts/build.js
@@ -201,6 +201,7 @@ const esmBuild = () =>
'UI/code-to-image.ts',
'languages/diagrams/lang-diagrams-compiler-esm.ts',
'languages/postgresql/lang-postgresql-compiler-esm.ts',
+ 'languages/duckdb/lang-duckdb-compiler-esm.ts',
'languages/r/lang-r-script-esm.ts',
'languages/rescript/lang-rescript-compiler-esm.ts',
'i18n/i18n.ts',
diff --git a/server/php/inc/starter-templates.json b/server/php/inc/starter-templates.json
index 9e641ac7bb..6c14769131 100644
--- a/server/php/inc/starter-templates.json
+++ b/server/php/inc/starter-templates.json
@@ -89,6 +89,7 @@
"assembly-wasm": "Assembly (Wasm) Starter",
"sql": "SQL Starter",
"postgresql": "PostgreSQL Starter",
+ "duckdb": "DuckDB Starter",
"prolog": "Prolog Starter",
"minizinc": "MiniZinc Starter",
"blockly": "Blockly Starter",
diff --git a/src/livecodes/UI/command-menu-actions.ts b/src/livecodes/UI/command-menu-actions.ts
index 86a3085723..45689e5e35 100644
--- a/src/livecodes/UI/command-menu-actions.ts
+++ b/src/livecodes/UI/command-menu-actions.ts
@@ -345,6 +345,7 @@ export const getCommandMenuActions = ({
'assembly-wasm',
'sql',
'postgresql',
+ 'duckdb',
'prolog',
'minizinc',
'blockly',
diff --git a/src/livecodes/assets/templates/duckdb.svg b/src/livecodes/assets/templates/duckdb.svg
new file mode 100644
index 0000000000..200339e2e3
--- /dev/null
+++ b/src/livecodes/assets/templates/duckdb.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/livecodes/compiler/compile.page.ts b/src/livecodes/compiler/compile.page.ts
index fcc3a20b94..85d1792872 100644
--- a/src/livecodes/compiler/compile.page.ts
+++ b/src/livecodes/compiler/compile.page.ts
@@ -1,4 +1,5 @@
import { runOutsideWorker as diagrams } from '../languages/diagrams';
+import { runOutsideWorker as duckdb } from '../languages/duckdb';
import { runOutsideWorker as mdx } from '../languages/mdx';
import { runOutsideWorker as postgresql } from '../languages/postgresql';
import { runOutsideWorker as rescript } from '../languages/rescript';
@@ -10,4 +11,5 @@ import { runOutsideWorker as rescript } from '../languages/rescript';
mdx,
diagrams,
postgresql,
+ duckdb,
};
diff --git a/src/livecodes/html/language-info.html b/src/livecodes/html/language-info.html
index efb17b37a5..f3ace733f1 100644
--- a/src/livecodes/html/language-info.html
+++ b/src/livecodes/html/language-info.html
@@ -1984,6 +1984,33 @@ PHP (Wasm)
+
+ DuckDB
+ DuckDB packaged as WASM using DuckDB-Wasm
+
+
PostgreSQL
PostgreSQL packaged as WASM using PGlite
diff --git a/src/livecodes/i18n/locales/ar/language-info.lokalise.json b/src/livecodes/i18n/locales/ar/language-info.lokalise.json
index 7b53395af3..66999f5637 100644
--- a/src/livecodes/i18n/locales/ar/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/ar/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "يتم تجميع Ada وتشغيله بالكامل داخل المتصفح بواسطة <1>HAC1>، وهو مُترجم Ada مكتوب بلغة Ada ومُجمَّع إلى WebAssembly. لا يتضمن ذلك أي خادم."
+ "translation": "يتم تجميع Ada وتشغيله بالكامل داخل المتصفح بواسطة HAC، وهو مُترجم Ada مكتوب بلغة Ada ومُجمَّع إلى WebAssembly. لا يتضمن ذلك أي خادم."
},
"adaWasm.link": {
"translation": " مركز معلومات Ada برمجة Ada (ويكيبوكس) مستودع HAC وثائق LiveCodes تحميل قالب البداية "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB معبأة كـ WASM باستخدام DuckDB-Wasm"
+ },
+ "duckdb.link": {
+ "translation": " الموقع الرسمي لـ DuckDB وثائق DuckDB مستودع GitHub لـ DuckDB-Wasm تعلم X في Y دقائق، حيث X=SQL تحميل القالب الأولي "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "قوالب JavaScript المضمنة."
},
diff --git a/src/livecodes/i18n/locales/ar/language-info.ts b/src/livecodes/i18n/locales/ar/language-info.ts
index 089aed078f..ba790a63dc 100644
--- a/src/livecodes/i18n/locales/ar/language-info.ts
+++ b/src/livecodes/i18n/locales/ar/language-info.ts
@@ -377,6 +377,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>الموقع الرسمي لـ PostgreSQL2> 1> <3> <4>وثائق PostgreSQL4> 3> <5> <6>مستودع GitHub لـ PGlite6> 5> <7> <8>تعلم X في Y دقائق، حيث X=SQL8> 7> <9> <10>تحميل القالب الأولي10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB معبأة كـ WASM باستخدام DuckDB-Wasm',
+ link: '<1> <2>الموقع الرسمي لـ DuckDB2> 1> <3> <4>وثائق DuckDB4> 3> <5> <6>مستودع GitHub لـ DuckDB-Wasm6> 5> <7> <8>تعلم X في Y دقائق، حيث X=SQL8> 7> <9> <10>تحميل القالب الأولي10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'مترجم Prolog مفتوح المصدر في JavaScript.',
link: '<1> <2>الموقع الرسمي لـ Tau Prolog2> 1> <3> <4>وثائق Tau Prolog4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>تعلم X في Y دقائق، حيث X=Prolog8> 7> <9> <10>تحميل القالب الأولي10> 9>',
diff --git a/src/livecodes/i18n/locales/ar/translation.lokalise.json b/src/livecodes/i18n/locales/ar/translation.lokalise.json
index f47897ccc8..9c6151e3c1 100644
--- a/src/livecodes/i18n/locales/ar/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/ar/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "قالب الرسوم البيانية"
},
+ "templates.starter.duckdb": {
+ "translation": "قالب DuckDB"
+ },
"templates.starter.elm": {
"translation": "قالب Elm"
},
diff --git a/src/livecodes/i18n/locales/ar/translation.ts b/src/livecodes/i18n/locales/ar/translation.ts
index 01a973a0eb..310eaed198 100644
--- a/src/livecodes/i18n/locales/ar/translation.ts
+++ b/src/livecodes/i18n/locales/ar/translation.ts
@@ -1043,6 +1043,7 @@ const translation: I18nTranslation = {
php: 'قالب PHP',
'php-wasm': 'قالب PHP (Wasm)',
postgresql: 'قالب PostgreSQL',
+ duckdb: 'قالب DuckDB',
preact: 'قالب Preact',
prolog: 'قالب Prolog',
python: 'قالب Python',
diff --git a/src/livecodes/i18n/locales/bn/language-info.lokalise.json b/src/livecodes/i18n/locales/bn/language-info.lokalise.json
index 7bb6a044d9..1d41fda745 100644
--- a/src/livecodes/i18n/locales/bn/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/bn/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada সম্পূর্ণরূপে ব্রাউজারে <1>HAC1> দ্বারা কম্পাইল ও চালিত হয়, যা Ada-তে লেখা এবং WebAssembly-তে কম্পাইল করা একটি Ada কম্পাইলার। কোনো সার্ভার জড়িত নয়।"
+ "translation": "Ada সম্পূর্ণরূপে ব্রাউজারে HAC দ্বারা কম্পাইল ও চালিত হয়, যা Ada-তে লেখা এবং WebAssembly-তে কম্পাইল করা একটি Ada কম্পাইলার। কোনো সার্ভার জড়িত নয়।"
},
"adaWasm.link": {
"translation": " Ada তথ্য কেন্দ্র Ada প্রোগ্রামিং (উইকিবই) HAC রিপো LiveCodes ডকুমেন্টেশন স্টার্টার টেমপ্লেট লোড করুন "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB-Wasm ব্যবহার করে WASM হিসাবে প্যাকেজ করা DuckDB"
+ },
+ "duckdb.link": {
+ "translation": " DuckDB অফিসিয়াল ওয়েবসাইট DuckDB ডকুমেন্টেশন DuckDB-Wasm GitHub রেপো Y মিনিটে X শিখুন, যেখানে X=SQL স্টার্টার টেমপ্লেট লোড করুন "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "এম্বেডেড JavaScript টেমপ্লেটিং।"
},
diff --git a/src/livecodes/i18n/locales/bn/language-info.ts b/src/livecodes/i18n/locales/bn/language-info.ts
index f0ae315391..5584ffced1 100644
--- a/src/livecodes/i18n/locales/bn/language-info.ts
+++ b/src/livecodes/i18n/locales/bn/language-info.ts
@@ -379,6 +379,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>PostgreSQL অফিসিয়াল ওয়েবসাইট2> 1> <3> <4>PostgreSQL ডকুমেন্টেশন4> 3> <5> <6>PGlite GitHub রেপো6> 5> <7> <8>Y মিনিটে X শিখুন, যেখানে X=SQL8> 7> <9> <10>স্টার্টার টেমপ্লেট লোড করুন10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB-Wasm ব্যবহার করে WASM হিসাবে প্যাকেজ করা DuckDB',
+ link: '<1> <2>DuckDB অফিসিয়াল ওয়েবসাইট2> 1> <3> <4>DuckDB ডকুমেন্টেশন4> 3> <5> <6>DuckDB-Wasm GitHub রেপো6> 5> <7> <8>Y মিনিটে X শিখুন, যেখানে X=SQL8> 7> <9> <10>স্টার্টার টেমপ্লেট লোড করুন10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'JavaScript-এ একটি ওপেন সোর্স Prolog ইন্টারপ্রেটার।',
link: '<1> <2>Tau Prolog অফিসিয়াল ওয়েবসাইট2> 1> <3> <4>Tau Prolog ডকুমেন্টেশন4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>Y মিনিটে X শিখুন, যেখানে X=Prolog8> 7> <9> <10>স্টার্টার টেমপ্লেট লোড করুন10> 9>',
diff --git a/src/livecodes/i18n/locales/bn/translation.lokalise.json b/src/livecodes/i18n/locales/bn/translation.lokalise.json
index 399c428725..0eb6f4228f 100644
--- a/src/livecodes/i18n/locales/bn/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/bn/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "Diagrams স্টার্টার"
},
+ "templates.starter.duckdb": {
+ "translation": "DuckDB স্টার্টার"
+ },
"templates.starter.elm": {
"translation": "Elm স্টার্টার"
},
diff --git a/src/livecodes/i18n/locales/bn/translation.ts b/src/livecodes/i18n/locales/bn/translation.ts
index ea98bf61e1..12d0ac84aa 100644
--- a/src/livecodes/i18n/locales/bn/translation.ts
+++ b/src/livecodes/i18n/locales/bn/translation.ts
@@ -1043,6 +1043,7 @@ const translation: I18nTranslation = {
php: 'PHP স্টার্টার',
'php-wasm': 'PHP (Wasm) স্টার্টার',
postgresql: 'PostgreSQL স্টার্টার',
+ duckdb: 'DuckDB স্টার্টার',
preact: 'Preact স্টার্টার',
prolog: 'Prolog স্টার্টার',
python: 'Python স্টার্টার',
diff --git a/src/livecodes/i18n/locales/de/language-info.lokalise.json b/src/livecodes/i18n/locales/de/language-info.lokalise.json
index f4ecb05372..b2f38934bd 100644
--- a/src/livecodes/i18n/locales/de/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/de/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada wird vollständig im Browser von <1>HAC1> kompiliert und ausgeführt, einem in Ada geschriebenen und zu WebAssembly kompilierten Ada-Compiler. Es ist kein Server beteiligt."
+ "translation": "Ada wird vollständig im Browser von HAC kompiliert und ausgeführt, einem in Ada geschriebenen und zu WebAssembly kompilierten Ada-Compiler. Es ist kein Server beteiligt."
},
"adaWasm.link": {
"translation": " Ada-Informationsstelle Ada-Programmierung (Wikibooks) HAC Repository LiveCodes-Dokumentation Starter-Vorlage laden "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB als WASM verpackt mit DuckDB-Wasm"
+ },
+ "duckdb.link": {
+ "translation": " DuckDB offizielle Website DuckDB Dokumentation DuckDB-Wasm GitHub Repository Lerne X in Y Minuten, wobei X=SQL Starter-Vorlage laden "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "Eingebettetes JavaScript-Templating."
},
diff --git a/src/livecodes/i18n/locales/de/language-info.ts b/src/livecodes/i18n/locales/de/language-info.ts
index 758e63a9f0..2fd50e8499 100644
--- a/src/livecodes/i18n/locales/de/language-info.ts
+++ b/src/livecodes/i18n/locales/de/language-info.ts
@@ -381,6 +381,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>PostgreSQL offizielle Website2> 1> <3> <4>PostgreSQL Dokumentation4> 3> <5> <6>PGlite GitHub Repository6> 5> <7> <8>Lerne X in Y Minuten, wobei X=SQL8> 7> <9> <10>Starter-Vorlage laden10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB als WASM verpackt mit DuckDB-Wasm',
+ link: '<1> <2>DuckDB offizielle Website2> 1> <3> <4>DuckDB Dokumentation4> 3> <5> <6>DuckDB-Wasm GitHub Repository6> 5> <7> <8>Lerne X in Y Minuten, wobei X=SQL8> 7> <9> <10>Starter-Vorlage laden10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'Ein Open-Source-Prolog-Interpreter in JavaScript.',
link: '<1> <2>Tau Prolog offizielle Website2> 1> <3> <4>Tau Prolog Dokumentation4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>Lerne X in Y Minuten, wobei X=Prolog8> 7> <9> <10>Starter-Vorlage laden10> 9>',
diff --git a/src/livecodes/i18n/locales/de/translation.lokalise.json b/src/livecodes/i18n/locales/de/translation.lokalise.json
index 002b693965..ff2f1db7e4 100644
--- a/src/livecodes/i18n/locales/de/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/de/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "Diagramm-Starter"
},
+ "templates.starter.duckdb": {
+ "translation": "DuckDB-Starter"
+ },
"templates.starter.elm": {
"translation": "Elm-Starter"
},
diff --git a/src/livecodes/i18n/locales/de/translation.ts b/src/livecodes/i18n/locales/de/translation.ts
index 3fe84fc633..06096e119e 100644
--- a/src/livecodes/i18n/locales/de/translation.ts
+++ b/src/livecodes/i18n/locales/de/translation.ts
@@ -1045,6 +1045,7 @@ const translation: I18nTranslation = {
php: 'PHP-Starter',
'php-wasm': 'PHP (Wasm)-Starter',
postgresql: 'PostgreSQL-Starter',
+ duckdb: 'DuckDB-Starter',
preact: 'Preact-Starter',
prolog: 'Prolog-Starter',
python: 'Python-Starter',
diff --git a/src/livecodes/i18n/locales/en/language-info.lokalise.json b/src/livecodes/i18n/locales/en/language-info.lokalise.json
index 68bdba1594..bc97a3e294 100644
--- a/src/livecodes/i18n/locales/en/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/en/language-info.lokalise.json
@@ -324,6 +324,18 @@
"notes": "",
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "notes": "",
+ "translation": "DuckDB packaged as WASM using DuckDB-Wasm"
+ },
+ "duckdb.link": {
+ "notes": "### ###\n\n\n### ###\n\n\n### ###\n\n\n### ###\n\n\n### ###\n\n\n### ###\n\n\n### ###\n\n\n### ###\n\n\n### ###\n\n\n### ###\n\n\n",
+ "translation": " DuckDB official website DuckDB documentation DuckDB-Wasm GitHub repo Learn X in Y minutes, where X=SQL Load starter template "
+ },
+ "duckdb.name": {
+ "notes": "",
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"notes": "",
"translation": "Embedded JavaScript templating."
diff --git a/src/livecodes/i18n/locales/en/language-info.ts b/src/livecodes/i18n/locales/en/language-info.ts
index 264ee13892..00c565f32e 100644
--- a/src/livecodes/i18n/locales/en/language-info.ts
+++ b/src/livecodes/i18n/locales/en/language-info.ts
@@ -147,6 +147,11 @@ const languageInfo = {
link: '<1> <2>Official website2> 1> <3> <4>LiveCodes Documentations4> 3>',
name: 'doT.js',
},
+ duckdb: {
+ desc: 'DuckDB packaged as WASM using DuckDB-Wasm',
+ link: '<1> <2>DuckDB official website2> 1> <3> <4>DuckDB documentation4> 3> <5> <6>DuckDB-Wasm GitHub repo6> 5> <7> <8>Learn X in Y minutes, where X=SQL8> 7> <9> <10>Load starter template10> 9>',
+ name: 'DuckDB',
+ },
ejs: {
desc: 'Embedded JavaScript templating.',
link: '<1><2>Official website2>1> <3> <4>LiveCodes Documentations4> 3>',
diff --git a/src/livecodes/i18n/locales/en/translation.lokalise.json b/src/livecodes/i18n/locales/en/translation.lokalise.json
index d708490d5c..0b576592fc 100644
--- a/src/livecodes/i18n/locales/en/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/en/translation.lokalise.json
@@ -2652,6 +2652,10 @@
"notes": "",
"translation": "Diagrams Starter"
},
+ "templates.starter.duckdb": {
+ "notes": "",
+ "translation": "DuckDB Starter"
+ },
"templates.starter.elm": {
"notes": "",
"translation": "Elm Starter"
diff --git a/src/livecodes/i18n/locales/en/translation.ts b/src/livecodes/i18n/locales/en/translation.ts
index 3b50c8ef81..d5d471fa69 100644
--- a/src/livecodes/i18n/locales/en/translation.ts
+++ b/src/livecodes/i18n/locales/en/translation.ts
@@ -1009,6 +1009,7 @@ const translation = {
daisyui: 'daisyUI Starter',
dart: 'Dart Starter',
diagrams: 'Diagrams Starter',
+ duckdb: 'DuckDB Starter',
elm: 'Elm Starter',
fanak: 'Fanak Starter',
fennel: 'Fennel Starter',
diff --git a/src/livecodes/i18n/locales/es/language-info.lokalise.json b/src/livecodes/i18n/locales/es/language-info.lokalise.json
index 0a024157b2..3e8ab5a1f2 100644
--- a/src/livecodes/i18n/locales/es/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/es/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada se compila y ejecuta íntegramente en el navegador mediante <1>HAC1>, un compilador de Ada escrito en Ada y compilado a WebAssembly. No hay ningún servidor involucrado."
+ "translation": "Ada se compila y ejecuta íntegramente en el navegador mediante HAC, un compilador de Ada escrito en Ada y compilado a WebAssembly. No hay ningún servidor involucrado."
},
"adaWasm.link": {
"translation": " Centro de Información de Ada Programación en Ada (Wikibooks) Repositorio de HAC Documentación de LiveCodes Cargar plantilla de inicio "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB empaquetado como WASM usando DuckDB-Wasm"
+ },
+ "duckdb.link": {
+ "translation": " Sitio web oficial de DuckDB Documentación de DuckDB Repositorio GitHub de DuckDB-Wasm Aprende X en Y minutos, donde X=SQL Cargar plantilla inicial "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "Plantillas de JavaScript integradas."
},
diff --git a/src/livecodes/i18n/locales/es/language-info.ts b/src/livecodes/i18n/locales/es/language-info.ts
index 7a472980ef..0d08961637 100644
--- a/src/livecodes/i18n/locales/es/language-info.ts
+++ b/src/livecodes/i18n/locales/es/language-info.ts
@@ -381,6 +381,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Sitio web oficial de PostgreSQL2> 1> <3> <4>Documentación de PostgreSQL4> 3> <5> <6>Repositorio GitHub de PGlite6> 5> <7> <8>Aprende X en Y minutos, donde X=SQL8> 7> <9> <10>Cargar plantilla inicial10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB empaquetado como WASM usando DuckDB-Wasm',
+ link: '<1> <2>Sitio web oficial de DuckDB2> 1> <3> <4>Documentación de DuckDB4> 3> <5> <6>Repositorio GitHub de DuckDB-Wasm6> 5> <7> <8>Aprende X en Y minutos, donde X=SQL8> 7> <9> <10>Cargar plantilla inicial10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'Un intérprete de Prolog de código abierto en JavaScript.',
link: '<1> <2>Sitio web oficial de Tau Prolog2> 1> <3> <4>Documentación de Tau Prolog4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>Aprende X en Y minutos, donde X=Prolog8> 7> <9> <10>Cargar plantilla inicial10> 9>',
diff --git a/src/livecodes/i18n/locales/es/translation.lokalise.json b/src/livecodes/i18n/locales/es/translation.lokalise.json
index 7bd6c2b288..f891de46a9 100644
--- a/src/livecodes/i18n/locales/es/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/es/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "Inicio Diagramas"
},
+ "templates.starter.duckdb": {
+ "translation": "Inicio DuckDB"
+ },
"templates.starter.elm": {
"translation": "Inicio Elm"
},
diff --git a/src/livecodes/i18n/locales/es/translation.ts b/src/livecodes/i18n/locales/es/translation.ts
index 8cc9413d3e..5d28d699e6 100644
--- a/src/livecodes/i18n/locales/es/translation.ts
+++ b/src/livecodes/i18n/locales/es/translation.ts
@@ -1043,6 +1043,7 @@ const translation: I18nTranslation = {
php: 'Inicio PHP',
'php-wasm': 'Inicio PHP (Wasm)',
postgresql: 'Inicio PostgreSQL',
+ duckdb: 'Inicio DuckDB',
preact: 'Inicio Preact',
prolog: 'Inicio Prolog',
python: 'Inicio Python',
diff --git a/src/livecodes/i18n/locales/fa/language-info.lokalise.json b/src/livecodes/i18n/locales/fa/language-info.lokalise.json
index c92e3324bc..2f8987b4fa 100644
--- a/src/livecodes/i18n/locales/fa/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/fa/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada بهطور کامل در مرورگر توسط <1>HAC1> کامپایل و اجرا میشود، که یک کامپایلر Ada نوشتهشده به زبان Ada و کامپایلشده به WebAssembly است. هیچ سروری درگیر نیست."
+ "translation": "Ada بهطور کامل در مرورگر توسط HAC کامپایل و اجرا میشود، که یک کامپایلر Ada نوشتهشده به زبان Ada و کامپایلشده به WebAssembly است. هیچ سروری درگیر نیست."
},
"adaWasm.link": {
"translation": " مرکز اطلاعات Ada برنامهنویسی Ada (ویکیکتاب) مخزن HAC مستندات LiveCodes بارگذاری قالب شروع "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB بستهبندی شده به صورت WASM با استفاده از DuckDB-Wasm"
+ },
+ "duckdb.link": {
+ "translation": " وبسایت رسمی DuckDB مستندات DuckDB مخزن GitHub DuckDB-Wasm یادگیری X در Y دقیقه، جایی که X=SQL بارگذاری قالب شروع کننده "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "قالبسازی جاواسکریپت تعبیه شده."
},
diff --git a/src/livecodes/i18n/locales/fa/language-info.ts b/src/livecodes/i18n/locales/fa/language-info.ts
index cdfbb48afc..89b0a7e546 100644
--- a/src/livecodes/i18n/locales/fa/language-info.ts
+++ b/src/livecodes/i18n/locales/fa/language-info.ts
@@ -380,6 +380,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>وبسایت رسمی PostgreSQL2> 1> <3> <4>مستندات PostgreSQL4> 3> <5> <6>مخزن GitHub PGlite6> 5> <7> <8>یادگیری X در Y دقیقه، جایی که X=SQL8> 7> <9> <10>بارگذاری قالب شروع کننده10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB بستهبندی شده به صورت WASM با استفاده از DuckDB-Wasm',
+ link: '<1> <2>وبسایت رسمی DuckDB2> 1> <3> <4>مستندات DuckDB4> 3> <5> <6>مخزن GitHub DuckDB-Wasm6> 5> <7> <8>یادگیری X در Y دقیقه، جایی که X=SQL8> 7> <9> <10>بارگذاری قالب شروع کننده10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'یک مفسر پرولوگ متنباز در JavaScript.',
link: '<1> <2>وبسایت رسمی Tau Prolog2> 1> <3> <4>مستندات Tau Prolog4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>یادگیری X در Y دقیقه، جایی که X=Prolog8> 7> <9> <10>بارگذاری قالب شروع کننده10> 9>',
diff --git a/src/livecodes/i18n/locales/fa/translation.lokalise.json b/src/livecodes/i18n/locales/fa/translation.lokalise.json
index 80eb9246dd..d428fe0928 100644
--- a/src/livecodes/i18n/locales/fa/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/fa/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "شروع کننده نمودارها"
},
+ "templates.starter.duckdb": {
+ "translation": "شروع کننده DuckDB"
+ },
"templates.starter.elm": {
"translation": "شروع کننده Elm"
},
diff --git a/src/livecodes/i18n/locales/fa/translation.ts b/src/livecodes/i18n/locales/fa/translation.ts
index ae20c53f26..1d2f6d1d67 100644
--- a/src/livecodes/i18n/locales/fa/translation.ts
+++ b/src/livecodes/i18n/locales/fa/translation.ts
@@ -1044,6 +1044,7 @@ const translation: I18nTranslation = {
php: 'شروع کننده PHP',
'php-wasm': 'شروع کننده PHP (Wasm)',
postgresql: 'شروع کننده PostgreSQL',
+ duckdb: 'شروع کننده DuckDB',
preact: 'شروع کننده Preact',
prolog: 'شروع کننده Prolog',
python: 'شروع کننده پایتون',
diff --git a/src/livecodes/i18n/locales/fr/language-info.lokalise.json b/src/livecodes/i18n/locales/fr/language-info.lokalise.json
index 2a281d85cf..8aa0cbdde7 100644
--- a/src/livecodes/i18n/locales/fr/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/fr/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada est compilé et exécuté entièrement dans le navigateur par <1>HAC1>, un compilateur Ada écrit en Ada et compilé en WebAssembly. Aucun serveur n'est impliqué."
+ "translation": "Ada est compilé et exécuté entièrement dans le navigateur par HAC, un compilateur Ada écrit en Ada et compilé en WebAssembly. Aucun serveur n'est impliqué."
},
"adaWasm.link": {
"translation": " Centre d'information Ada Programmation Ada (Wikibooks) Dépôt HAC Documentation LiveCodes Charger un modèle de démarrage "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB packagé en WASM en utilisant DuckDB-Wasm"
+ },
+ "duckdb.link": {
+ "translation": " Site officiel de DuckDB Documentation DuckDB Dépôt GitHub DuckDB-Wasm Apprenez X en Y minutes, où X=SQL Charger le modèle de démarrage "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "Modèles JavaScript embarqués."
},
diff --git a/src/livecodes/i18n/locales/fr/language-info.ts b/src/livecodes/i18n/locales/fr/language-info.ts
index 15db23c4f8..9947601f43 100644
--- a/src/livecodes/i18n/locales/fr/language-info.ts
+++ b/src/livecodes/i18n/locales/fr/language-info.ts
@@ -381,6 +381,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Site officiel de PostgreSQL2> 1> <3> <4>Documentation PostgreSQL4> 3> <5> <6>Dépôt GitHub PGlite6> 5> <7> <8>Apprenez X en Y minutes, où X=SQL8> 7> <9> <10>Charger le modèle de démarrage10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB packagé en WASM en utilisant DuckDB-Wasm',
+ link: '<1> <2>Site officiel de DuckDB2> 1> <3> <4>Documentation DuckDB4> 3> <5> <6>Dépôt GitHub DuckDB-Wasm6> 5> <7> <8>Apprenez X en Y minutes, où X=SQL8> 7> <9> <10>Charger le modèle de démarrage10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'Un interpréteur Prolog open source en JavaScript.',
link: '<1> <2>Site officiel de Tau Prolog2> 1> <3> <4>Documentation Tau Prolog4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>Apprenez X en Y minutes, où X=Prolog8> 7> <9> <10>Charger le modèle de démarrage10> 9>',
diff --git a/src/livecodes/i18n/locales/fr/translation.lokalise.json b/src/livecodes/i18n/locales/fr/translation.lokalise.json
index 98ca53b2b3..7a5274215b 100644
--- a/src/livecodes/i18n/locales/fr/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/fr/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "Démarrage Diagrammes"
},
+ "templates.starter.duckdb": {
+ "translation": "Démarrage DuckDB"
+ },
"templates.starter.elm": {
"translation": "Démarrage Elm"
},
diff --git a/src/livecodes/i18n/locales/fr/translation.ts b/src/livecodes/i18n/locales/fr/translation.ts
index 8d39a69a50..abf00fb010 100644
--- a/src/livecodes/i18n/locales/fr/translation.ts
+++ b/src/livecodes/i18n/locales/fr/translation.ts
@@ -1045,6 +1045,7 @@ const translation: I18nTranslation = {
php: 'Démarrage PHP',
'php-wasm': 'Démarrage PHP (Wasm)',
postgresql: 'Démarrage PostgreSQL',
+ duckdb: 'Démarrage DuckDB',
preact: 'Démarrage Preact',
prolog: 'Démarrage Prolog',
python: 'Démarrage Python',
diff --git a/src/livecodes/i18n/locales/hi/language-info.lokalise.json b/src/livecodes/i18n/locales/hi/language-info.lokalise.json
index 643fdc7634..02bb9b3cf1 100644
--- a/src/livecodes/i18n/locales/hi/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/hi/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada को पूरी तरह से ब्राउज़र में <1>HAC1> द्वारा संकलित और चलाया जाता है, जो Ada में लिखा गया और WebAssembly में संकलित एक Ada कंपाइलर है। कोई सर्वर शामिल नहीं है।"
+ "translation": "Ada को पूरी तरह से ब्राउज़र में HAC द्वारा संकलित और चलाया जाता है, जो Ada में लिखा गया और WebAssembly में संकलित एक Ada कंपाइलर है। कोई सर्वर शामिल नहीं है।"
},
"adaWasm.link": {
"translation": " Ada सूचना केंद्र Ada प्रोग्रामिंग (विकिबुक्स) HAC रेपो लाइवकोड दस्तावेज़ीकरण स्टार्टर टेम्पलेट लोड करें "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB-Wasm का उपयोग करके WASM के रूप में पैकेज किया गया DuckDB"
+ },
+ "duckdb.link": {
+ "translation": " DuckDB आधिकारिक वेबसाइट DuckDB दस्तावेज़ीकरण DuckDB-Wasm GitHub रेपो X को Y मिनटों में सीखें, जहां X=SQL स्टार्टर टेम्पलेट लोड करें "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "एम्बेडेड जावास्क्रिप्ट टेम्प्लेटिंग।"
},
diff --git a/src/livecodes/i18n/locales/hi/language-info.ts b/src/livecodes/i18n/locales/hi/language-info.ts
index 52e2568b7d..da1df6a9d4 100644
--- a/src/livecodes/i18n/locales/hi/language-info.ts
+++ b/src/livecodes/i18n/locales/hi/language-info.ts
@@ -381,6 +381,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>PostgreSQL आधिकारिक वेबसाइट2> 1> <3> <4>PostgreSQL दस्तावेज़ीकरण4> 3> <5> <6>PGlite GitHub रेपो6> 5> <7> <8>X को Y मिनटों में सीखें, जहां X=SQL8> 7> <9> <10>स्टार्टर टेम्पलेट लोड करें10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB-Wasm का उपयोग करके WASM के रूप में पैकेज किया गया DuckDB',
+ link: '<1> <2>DuckDB आधिकारिक वेबसाइट2> 1> <3> <4>DuckDB दस्तावेज़ीकरण4> 3> <5> <6>DuckDB-Wasm GitHub रेपो6> 5> <7> <8>X को Y मिनटों में सीखें, जहां X=SQL8> 7> <9> <10>स्टार्टर टेम्पलेट लोड करें10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'JavaScript में एक ओपन सोर्स Prolog इंटरप्रेटर।',
link: '<1> <2>Tau Prolog आधिकारिक वेबसाइट2> 1> <3> <4>Tau Prolog दस्तावेज़ीकरण4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>X को Y मिनटों में सीखें, जहां X=Prolog8> 7> <9> <10>स्टार्टर टेम्पलेट लोड करें10> 9>',
diff --git a/src/livecodes/i18n/locales/hi/translation.lokalise.json b/src/livecodes/i18n/locales/hi/translation.lokalise.json
index 6a291a3cdc..4586943c8d 100644
--- a/src/livecodes/i18n/locales/hi/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/hi/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "आरेख स्टार्टर"
},
+ "templates.starter.duckdb": {
+ "translation": "DuckDB स्टार्टर"
+ },
"templates.starter.elm": {
"translation": "Elm स्टार्टर"
},
diff --git a/src/livecodes/i18n/locales/hi/translation.ts b/src/livecodes/i18n/locales/hi/translation.ts
index f54269e7c5..bedcf6fe12 100644
--- a/src/livecodes/i18n/locales/hi/translation.ts
+++ b/src/livecodes/i18n/locales/hi/translation.ts
@@ -1043,6 +1043,7 @@ const translation: I18nTranslation = {
php: 'PHP स्टार्टर',
'php-wasm': 'PHP (Wasm) स्टार्टर',
postgresql: 'PostgreSQL स्टार्टर',
+ duckdb: 'DuckDB स्टार्टर',
preact: 'Preact स्टार्टर',
prolog: 'Prolog स्टार्टर',
python: 'Python स्टार्टर',
diff --git a/src/livecodes/i18n/locales/hu/language-info.lokalise.json b/src/livecodes/i18n/locales/hu/language-info.lokalise.json
index e4ebd379b6..d98cd14b15 100644
--- a/src/livecodes/i18n/locales/hu/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/hu/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Az Ada-t teljes egészében a böngészőben fordítja le és futtatja a <1>HAC1>, egy Ada nyelven írt, WebAssembly-re fordított Ada-fordító. Nem vesz igénybe szervert."
+ "translation": "Az Ada-t teljes egészében a böngészőben fordítja le és futtatja a HAC, egy Ada nyelven írt, WebAssembly-re fordított Ada-fordító. Nem vesz igénybe szervert."
},
"adaWasm.link": {
"translation": " Ada Információs Központ Ada programozás (Wikibooks) HAC repo LiveCodes dokumentáció Indító sablon betöltése "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB WASM-ként csomagolva a DuckDB-Wasm használatával"
+ },
+ "duckdb.link": {
+ "translation": " DuckDB hivatalos weboldal DuckDB dokumentáció DuckDB-Wasm GitHub repo Tanulj X-et Y perc alatt, ahol X=SQL Kezdő sablon betöltése "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "Beágyazott JavaScript sablonozás."
},
diff --git a/src/livecodes/i18n/locales/hu/language-info.ts b/src/livecodes/i18n/locales/hu/language-info.ts
index 2aedbc3057..d0050b1970 100644
--- a/src/livecodes/i18n/locales/hu/language-info.ts
+++ b/src/livecodes/i18n/locales/hu/language-info.ts
@@ -381,6 +381,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>PostgreSQL hivatalos weboldal2> 1> <3> <4>PostgreSQL dokumentáció4> 3> <5> <6>PGlite GitHub repo6> 5> <7> <8>Tanulj X-et Y perc alatt, ahol X=SQL8> 7> <9> <10>Kezdő sablon betöltése10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB WASM-ként csomagolva a DuckDB-Wasm használatával',
+ link: '<1> <2>DuckDB hivatalos weboldal2> 1> <3> <4>DuckDB dokumentáció4> 3> <5> <6>DuckDB-Wasm GitHub repo6> 5> <7> <8>Tanulj X-et Y perc alatt, ahol X=SQL8> 7> <9> <10>Kezdő sablon betöltése10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'Egy nyílt forráskódú Prolog értelmező JavaScript-ben.',
link: '<1> <2>Tau Prolog hivatalos weboldal2> 1> <3> <4>Tau Prolog dokumentáció4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>Tanulj X-et Y perc alatt, ahol X=Prolog8> 7> <9> <10>Kezdő sablon betöltése10> 9>',
diff --git a/src/livecodes/i18n/locales/hu/translation.lokalise.json b/src/livecodes/i18n/locales/hu/translation.lokalise.json
index b514de76a5..bfa3a76193 100644
--- a/src/livecodes/i18n/locales/hu/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/hu/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "Diagramok kezdő"
},
+ "templates.starter.duckdb": {
+ "translation": "DuckDB kezdő"
+ },
"templates.starter.elm": {
"translation": "Elm kezdő"
},
diff --git a/src/livecodes/i18n/locales/hu/translation.ts b/src/livecodes/i18n/locales/hu/translation.ts
index 82ffa83907..f6620bc854 100644
--- a/src/livecodes/i18n/locales/hu/translation.ts
+++ b/src/livecodes/i18n/locales/hu/translation.ts
@@ -1044,6 +1044,7 @@ const translation: I18nTranslation = {
php: 'PHP kezdő',
'php-wasm': 'PHP (Wasm) kezdő',
postgresql: 'PostgreSQL kezdő',
+ duckdb: 'DuckDB kezdő',
preact: 'Preact kezdő',
prolog: 'Prolog kezdő',
python: 'Python kezdő',
diff --git a/src/livecodes/i18n/locales/id/language-info.lokalise.json b/src/livecodes/i18n/locales/id/language-info.lokalise.json
index ae1274dc20..93dc5a4fe9 100644
--- a/src/livecodes/i18n/locales/id/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/id/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada dikompilasi dan dijalankan sepenuhnya di dalam browser oleh <1>HAC1>, kompiler Ada yang ditulis dalam bahasa Ada dan dikompilasi ke WebAssembly. Tidak ada server yang terlibat."
+ "translation": "Ada dikompilasi dan dijalankan sepenuhnya di dalam browser oleh HAC, kompiler Ada yang ditulis dalam bahasa Ada dan dikompilasi ke WebAssembly. Tidak ada server yang terlibat."
},
"adaWasm.link": {
"translation": " Pusat Informasi Ada Pemrograman Ada (Wikibooks) Repo HAC Dokumentasi LiveCodes Muat templat awal "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB dikemas sebagai WASM menggunakan DuckDB-Wasm"
+ },
+ "duckdb.link": {
+ "translation": " Situs web resmi DuckDB Dokumentasi DuckDB Repo GitHub DuckDB-Wasm Pelajari X dalam Y menit, dengan X=SQL Muat template pemula "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "Templating JavaScript Tertanam."
},
diff --git a/src/livecodes/i18n/locales/id/language-info.ts b/src/livecodes/i18n/locales/id/language-info.ts
index 45af16c790..6fa26feef7 100644
--- a/src/livecodes/i18n/locales/id/language-info.ts
+++ b/src/livecodes/i18n/locales/id/language-info.ts
@@ -381,6 +381,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Situs web resmi PostgreSQL2> 1> <3> <4>Dokumentasi PostgreSQL4> 3> <5> <6>Repo GitHub PGlite6> 5> <7> <8>Pelajari X dalam Y menit, dengan X=SQL8> 7> <9> <10>Muat template pemula10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB dikemas sebagai WASM menggunakan DuckDB-Wasm',
+ link: '<1> <2>Situs web resmi DuckDB2> 1> <3> <4>Dokumentasi DuckDB4> 3> <5> <6>Repo GitHub DuckDB-Wasm6> 5> <7> <8>Pelajari X dalam Y menit, dengan X=SQL8> 7> <9> <10>Muat template pemula10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'Interpreter Prolog open source di JavaScript.',
link: '<1> <2>Situs web resmi Tau Prolog2> 1> <3> <4>Dokumentasi Tau Prolog4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>Pelajari X dalam Y menit, dengan X=Prolog8> 7> <9> <10>Muat template pemula10> 9>',
diff --git a/src/livecodes/i18n/locales/id/translation.lokalise.json b/src/livecodes/i18n/locales/id/translation.lokalise.json
index d5ec567f78..8692aa62d4 100644
--- a/src/livecodes/i18n/locales/id/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/id/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "Pemula Diagram"
},
+ "templates.starter.duckdb": {
+ "translation": "Pemula DuckDB"
+ },
"templates.starter.elm": {
"translation": "Pemula Elm"
},
diff --git a/src/livecodes/i18n/locales/id/translation.ts b/src/livecodes/i18n/locales/id/translation.ts
index f314c322ff..c025ca477b 100644
--- a/src/livecodes/i18n/locales/id/translation.ts
+++ b/src/livecodes/i18n/locales/id/translation.ts
@@ -1043,6 +1043,7 @@ const translation: I18nTranslation = {
php: 'Pemula PHP',
'php-wasm': 'Pemula PHP (Wasm)',
postgresql: 'Pemula PostgreSQL',
+ duckdb: 'Pemula DuckDB',
preact: 'Pemula Preact',
prolog: 'Pemula Prolog',
python: 'Pemula Python',
diff --git a/src/livecodes/i18n/locales/it/language-info.lokalise.json b/src/livecodes/i18n/locales/it/language-info.lokalise.json
index 988ca6e6f1..666bd9b59f 100644
--- a/src/livecodes/i18n/locales/it/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/it/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada viene compilato ed eseguito interamente nel browser da <1>HAC1>, un compilatore Ada scritto in Ada e compilato in WebAssembly. Nessun server è coinvolto."
+ "translation": "Ada viene compilato ed eseguito interamente nel browser da HAC, un compilatore Ada scritto in Ada e compilato in WebAssembly. Nessun server è coinvolto."
},
"adaWasm.link": {
"translation": " Centro informazioni Ada Programmazione in Ada (Wikibooks) Repository di HAC Documentazione LiveCodes Carica il modello di avvio "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB impacchettato come WASM utilizzando DuckDB-Wasm"
+ },
+ "duckdb.link": {
+ "translation": " Sito ufficiale di DuckDB Documentazione di DuckDB Repository GitHub di DuckDB-Wasm Impara X in Y minuti, dove X=SQL Carica modello di partenza "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "Templating JavaScript incorporato."
},
diff --git a/src/livecodes/i18n/locales/it/language-info.ts b/src/livecodes/i18n/locales/it/language-info.ts
index 42873b47d0..2ff5f7546a 100644
--- a/src/livecodes/i18n/locales/it/language-info.ts
+++ b/src/livecodes/i18n/locales/it/language-info.ts
@@ -380,6 +380,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Sito ufficiale di PostgreSQL2> 1> <3> <4>Documentazione di PostgreSQL4> 3> <5> <6>Repository GitHub di PGlite6> 5> <7> <8>Impara X in Y minuti, dove X=SQL8> 7> <9> <10>Carica modello di partenza10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB impacchettato come WASM utilizzando DuckDB-Wasm',
+ link: '<1> <2>Sito ufficiale di DuckDB2> 1> <3> <4>Documentazione di DuckDB4> 3> <5> <6>Repository GitHub di DuckDB-Wasm6> 5> <7> <8>Impara X in Y minuti, dove X=SQL8> 7> <9> <10>Carica modello di partenza10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'Un interprete Prolog open source in JavaScript.',
link: '<1> <2>Sito ufficiale di Tau Prolog2> 1> <3> <4>Documentazione di Tau Prolog4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>Impara X in Y minuti, dove X=Prolog8> 7> <9> <10>Carica modello di partenza10> 9>',
diff --git a/src/livecodes/i18n/locales/it/translation.lokalise.json b/src/livecodes/i18n/locales/it/translation.lokalise.json
index e1e144de39..b0fb46284a 100644
--- a/src/livecodes/i18n/locales/it/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/it/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "Starter Diagrammi"
},
+ "templates.starter.duckdb": {
+ "translation": "Starter DuckDB"
+ },
"templates.starter.elm": {
"translation": "Starter Elm"
},
diff --git a/src/livecodes/i18n/locales/it/translation.ts b/src/livecodes/i18n/locales/it/translation.ts
index 1c6d1599ad..f58d0479ce 100644
--- a/src/livecodes/i18n/locales/it/translation.ts
+++ b/src/livecodes/i18n/locales/it/translation.ts
@@ -1044,6 +1044,7 @@ const translation: I18nTranslation = {
php: 'Starter PHP',
'php-wasm': 'Starter PHP (Wasm)',
postgresql: 'Starter PostgreSQL',
+ duckdb: 'Starter DuckDB',
preact: 'Starter Preact',
prolog: 'Starter Prolog',
python: 'Starter Python',
diff --git a/src/livecodes/i18n/locales/ja/language-info.lokalise.json b/src/livecodes/i18n/locales/ja/language-info.lokalise.json
index 76264bd9f8..f53213bab5 100644
--- a/src/livecodes/i18n/locales/ja/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/ja/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada は Ada で書かれ WebAssembly にコンパイルされた Ada コンパイラである <1>HAC1> によって、完全にブラウザ内でコンパイルおよび実行されます。サーバーは関与しません。"
+ "translation": "Ada は Ada で書かれ WebAssembly にコンパイルされた Ada コンパイラである HAC によって、完全にブラウザ内でコンパイルおよび実行されます。サーバーは関与しません。"
},
"adaWasm.link": {
"translation": " Ada 情報センター Ada プログラミング(Wikibooks) HAC リポジトリ LiveCodes ドキュメント スターターテンプレートを読み込む "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB-Wasm を使用して WASM としてパッケージ化された DuckDB"
+ },
+ "duckdb.link": {
+ "translation": " DuckDB 公式ウェブサイト DuckDB ドキュメント DuckDB-Wasm GitHub リポジトリ X分でYを学ぶ、X=SQL スターターテンプレートを読み込む "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "埋め込み JavaScript テンプレート。"
},
diff --git a/src/livecodes/i18n/locales/ja/language-info.ts b/src/livecodes/i18n/locales/ja/language-info.ts
index ad822f4056..7adf4071ee 100644
--- a/src/livecodes/i18n/locales/ja/language-info.ts
+++ b/src/livecodes/i18n/locales/ja/language-info.ts
@@ -381,6 +381,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>PostgreSQL 公式ウェブサイト2> 1> <3> <4>PostgreSQL ドキュメント4> 3> <5> <6>PGlite GitHub リポジトリ6> 5> <7> <8>X分でYを学ぶ、X=SQL8> 7> <9> <10>スターターテンプレートを読み込む10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB-Wasm を使用して WASM としてパッケージ化された DuckDB',
+ link: '<1> <2>DuckDB 公式ウェブサイト2> 1> <3> <4>DuckDB ドキュメント4> 3> <5> <6>DuckDB-Wasm GitHub リポジトリ6> 5> <7> <8>X分でYを学ぶ、X=SQL8> 7> <9> <10>スターターテンプレートを読み込む10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'JavaScript で書かれたオープンソースの Prolog インタプリタ。',
link: '<1> <2>Tau Prolog 公式ウェブサイト2> 1> <3> <4>Tau Prolog ドキュメント4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>X分でYを学ぶ、X=Prolog8> 7> <9> <10>スターターテンプレートを読み込む10> 9>',
diff --git a/src/livecodes/i18n/locales/ja/translation.lokalise.json b/src/livecodes/i18n/locales/ja/translation.lokalise.json
index 0999e74294..1f5141fe25 100644
--- a/src/livecodes/i18n/locales/ja/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/ja/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "ダイアグラムスターター"
},
+ "templates.starter.duckdb": {
+ "translation": "DuckDBスターター"
+ },
"templates.starter.elm": {
"translation": "Elmスターター"
},
diff --git a/src/livecodes/i18n/locales/ja/translation.ts b/src/livecodes/i18n/locales/ja/translation.ts
index d85683b8b7..494d0b5174 100644
--- a/src/livecodes/i18n/locales/ja/translation.ts
+++ b/src/livecodes/i18n/locales/ja/translation.ts
@@ -1044,6 +1044,7 @@ const translation: I18nTranslation = {
php: 'PHPスターター',
'php-wasm': 'PHP(Wasm)スターター',
postgresql: 'PostgreSQLスターター',
+ duckdb: 'DuckDBスターター',
preact: 'Preactスターター',
prolog: 'Prologスターター',
python: 'Pythonスターター',
diff --git a/src/livecodes/i18n/locales/nl/language-info.lokalise.json b/src/livecodes/i18n/locales/nl/language-info.lokalise.json
index 520ea44ccb..9e791e5f3e 100644
--- a/src/livecodes/i18n/locales/nl/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/nl/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada wordt volledig in de browser gecompileerd en uitgevoerd door <1>HAC1>, een in Ada geschreven en naar WebAssembly gecompileerde Ada-compiler. Er is geen server bij betrokken."
+ "translation": "Ada wordt volledig in de browser gecompileerd en uitgevoerd door HAC, een in Ada geschreven en naar WebAssembly gecompileerde Ada-compiler. Er is geen server bij betrokken."
},
"adaWasm.link": {
"translation": " Ada Informatiecentrum Programmeren in Ada (Wikibooks) HAC-repo LiveCodes-documentatie Starterssjabloon laden "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB verpakt als WASM met DuckDB-Wasm"
+ },
+ "duckdb.link": {
+ "translation": " DuckDB officiële website DuckDB documentatie DuckDB-Wasm GitHub repo Leer X in Y minuten, waarbij X=SQL Startsjabloon laden "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "Embedded JavaScript-templating."
},
diff --git a/src/livecodes/i18n/locales/nl/language-info.ts b/src/livecodes/i18n/locales/nl/language-info.ts
index 7f9466accc..fe5a3b303f 100644
--- a/src/livecodes/i18n/locales/nl/language-info.ts
+++ b/src/livecodes/i18n/locales/nl/language-info.ts
@@ -380,6 +380,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>PostgreSQL officiële website2> 1> <3> <4>PostgreSQL documentatie4> 3> <5> <6>PGlite GitHub repo6> 5> <7> <8>Leer X in Y minuten, waarbij X=SQL8> 7> <9> <10>Startsjabloon laden10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB verpakt als WASM met DuckDB-Wasm',
+ link: '<1> <2>DuckDB officiële website2> 1> <3> <4>DuckDB documentatie4> 3> <5> <6>DuckDB-Wasm GitHub repo6> 5> <7> <8>Leer X in Y minuten, waarbij X=SQL8> 7> <9> <10>Startsjabloon laden10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'Een open source Prolog-interpreter in JavaScript.',
link: '<1> <2>Tau Prolog officiële website2> 1> <3> <4>Tau Prolog documentatie4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>Leer X in Y minuten, waarbij X=Prolog8> 7> <9> <10>Startsjabloon laden10> 9>',
diff --git a/src/livecodes/i18n/locales/nl/translation.lokalise.json b/src/livecodes/i18n/locales/nl/translation.lokalise.json
index 3dfe0802d9..6e1729fe00 100644
--- a/src/livecodes/i18n/locales/nl/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/nl/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "Diagrammen-starter"
},
+ "templates.starter.duckdb": {
+ "translation": "DuckDB-starter"
+ },
"templates.starter.elm": {
"translation": "Elm-starter"
},
diff --git a/src/livecodes/i18n/locales/nl/translation.ts b/src/livecodes/i18n/locales/nl/translation.ts
index a82e8155da..fce2ffb52a 100644
--- a/src/livecodes/i18n/locales/nl/translation.ts
+++ b/src/livecodes/i18n/locales/nl/translation.ts
@@ -1044,6 +1044,7 @@ const translation: I18nTranslation = {
php: 'PHP-starter',
'php-wasm': 'PHP (Wasm)-starter',
postgresql: 'PostgreSQL-starter',
+ duckdb: 'DuckDB-starter',
preact: 'Preact-starter',
prolog: 'Prolog-starter',
python: 'Python-starter',
diff --git a/src/livecodes/i18n/locales/pt/language-info.lokalise.json b/src/livecodes/i18n/locales/pt/language-info.lokalise.json
index 77201bf96e..18a2fea497 100644
--- a/src/livecodes/i18n/locales/pt/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/pt/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "O Ada é compilado e executado inteiramente no navegador pelo <1>HAC1>, um compilador Ada escrito em Ada e compilado para WebAssembly. Nenhum servidor está envolvido."
+ "translation": "O Ada é compilado e executado inteiramente no navegador pelo HAC, um compilador Ada escrito em Ada e compilado para WebAssembly. Nenhum servidor está envolvido."
},
"adaWasm.link": {
"translation": " Centro de Informação Ada Programação em Ada (Wikibooks) Repositório do HAC Documentação do LiveCodes Carregar modelo inicial "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB empacotado como WASM usando DuckDB-Wasm"
+ },
+ "duckdb.link": {
+ "translation": " Site oficial do DuckDB Documentação do DuckDB Repositório GitHub do DuckDB-Wasm Aprenda X em Y minutos, onde X=SQL Carregar modelo inicial "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "Modelagem JavaScript incorporada."
},
diff --git a/src/livecodes/i18n/locales/pt/language-info.ts b/src/livecodes/i18n/locales/pt/language-info.ts
index fc681c58f8..dc7df1f9b9 100644
--- a/src/livecodes/i18n/locales/pt/language-info.ts
+++ b/src/livecodes/i18n/locales/pt/language-info.ts
@@ -380,6 +380,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Site oficial do PostgreSQL2> 1> <3> <4>Documentação do PostgreSQL4> 3> <5> <6>Repositório GitHub do PGlite6> 5> <7> <8>Aprenda X em Y minutos, onde X=SQL8> 7> <9> <10>Carregar modelo inicial10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB empacotado como WASM usando DuckDB-Wasm',
+ link: '<1> <2>Site oficial do DuckDB2> 1> <3> <4>Documentação do DuckDB4> 3> <5> <6>Repositório GitHub do DuckDB-Wasm6> 5> <7> <8>Aprenda X em Y minutos, onde X=SQL8> 7> <9> <10>Carregar modelo inicial10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'Um interpretador Prolog de código aberto em JavaScript.',
link: '<1> <2>Site oficial do Tau Prolog2> 1> <3> <4>Documentação do Tau Prolog4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>Aprenda X em Y minutos, onde X=Prolog8> 7> <9> <10>Carregar modelo inicial10> 9>',
diff --git a/src/livecodes/i18n/locales/pt/translation.lokalise.json b/src/livecodes/i18n/locales/pt/translation.lokalise.json
index d9b58e7715..3ec5ee1dda 100644
--- a/src/livecodes/i18n/locales/pt/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/pt/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "Iniciante Diagrams"
},
+ "templates.starter.duckdb": {
+ "translation": "Iniciante DuckDB"
+ },
"templates.starter.elm": {
"translation": "Iniciante Elm"
},
diff --git a/src/livecodes/i18n/locales/pt/translation.ts b/src/livecodes/i18n/locales/pt/translation.ts
index 12a509b999..6fbed58c5f 100644
--- a/src/livecodes/i18n/locales/pt/translation.ts
+++ b/src/livecodes/i18n/locales/pt/translation.ts
@@ -1044,6 +1044,7 @@ const translation: I18nTranslation = {
php: 'Iniciante PHP',
'php-wasm': 'Iniciante PHP (Wasm)',
postgresql: 'Iniciante PostgreSQL',
+ duckdb: 'Iniciante DuckDB',
preact: 'Iniciante Preact',
prolog: 'Iniciante Prolog',
python: 'Iniciante Python',
diff --git a/src/livecodes/i18n/locales/ru/language-info.lokalise.json b/src/livecodes/i18n/locales/ru/language-info.lokalise.json
index dbec4ac230..a37d96b9ed 100644
--- a/src/livecodes/i18n/locales/ru/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/ru/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada компилируется и выполняется полностью в браузере с помощью <1>HAC1> — компилятора Ada, написанного на Ada и скомпилированного в WebAssembly. Сервер не задействован."
+ "translation": "Ada компилируется и выполняется полностью в браузере с помощью HAC — компилятора Ada, написанного на Ada и скомпилированного в WebAssembly. Сервер не задействован."
},
"adaWasm.link": {
"translation": " Информационный центр Ada Программирование на Ada (Wikibooks) Репозиторий HAC Документация LiveCodes Загрузить стартовый шаблон "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB, упакованный в WASM с использованием DuckDB-Wasm"
+ },
+ "duckdb.link": {
+ "translation": " Официальный сайт DuckDB Документация DuckDB GitHub-репозиторий DuckDB-Wasm Изучите X за Y минут, где X=SQL Загрузить стартовый шаблон "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "Встроенные шаблоны JavaScript."
},
diff --git a/src/livecodes/i18n/locales/ru/language-info.ts b/src/livecodes/i18n/locales/ru/language-info.ts
index e3f02cfb62..0ae66ae67a 100644
--- a/src/livecodes/i18n/locales/ru/language-info.ts
+++ b/src/livecodes/i18n/locales/ru/language-info.ts
@@ -382,6 +382,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Официальный сайт PostgreSQL2> 1> <3> <4>Документация PostgreSQL4> 3> <5> <6>GitHub-репозиторий PGlite6> 5> <7> <8>Изучите X за Y минут, где X=SQL8> 7> <9> <10>Загрузить стартовый шаблон10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB, упакованный в WASM с использованием DuckDB-Wasm',
+ link: '<1> <2>Официальный сайт DuckDB2> 1> <3> <4>Документация DuckDB4> 3> <5> <6>GitHub-репозиторий DuckDB-Wasm6> 5> <7> <8>Изучите X за Y минут, где X=SQL8> 7> <9> <10>Загрузить стартовый шаблон10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'Интерпретатор Prolog с открытым исходным кодом на JavaScript.',
link: '<1> <2>Официальный сайт Tau Prolog2> 1> <3> <4>Документация Tau Prolog4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>Изучите X за Y минут, где X=Prolog8> 7> <9> <10>Загрузить стартовый шаблон10> 9>',
diff --git a/src/livecodes/i18n/locales/ru/translation.lokalise.json b/src/livecodes/i18n/locales/ru/translation.lokalise.json
index 62cd62ec9d..698a451697 100644
--- a/src/livecodes/i18n/locales/ru/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/ru/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "Стартер диаграмм"
},
+ "templates.starter.duckdb": {
+ "translation": "Стартер DuckDB"
+ },
"templates.starter.elm": {
"translation": "Стартер Elm"
},
diff --git a/src/livecodes/i18n/locales/ru/translation.ts b/src/livecodes/i18n/locales/ru/translation.ts
index 06e56c3eca..12b2c9d264 100644
--- a/src/livecodes/i18n/locales/ru/translation.ts
+++ b/src/livecodes/i18n/locales/ru/translation.ts
@@ -1043,6 +1043,7 @@ const translation: I18nTranslation = {
php: 'Стартер PHP',
'php-wasm': 'Стартер PHP (Wasm)',
postgresql: 'Стартер PostgreSQL',
+ duckdb: 'Стартер DuckDB',
preact: 'Стартер Preact',
prolog: 'Стартер Prolog',
python: 'Стартер Python',
diff --git a/src/livecodes/i18n/locales/tr/language-info.lokalise.json b/src/livecodes/i18n/locales/tr/language-info.lokalise.json
index cd4fd421f3..12a018af49 100644
--- a/src/livecodes/i18n/locales/tr/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/tr/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada, Ada ile yazılmış ve WebAssembly'ye derlenmiş bir Ada derleyicisi olan <1>HAC1> tarafından tamamen tarayıcı içinde derlenir ve çalıştırılır. Hiçbir sunucu devreye girmez."
+ "translation": "Ada, Ada ile yazılmış ve WebAssembly'ye derlenmiş bir Ada derleyicisi olan HAC tarafından tamamen tarayıcı içinde derlenir ve çalıştırılır. Hiçbir sunucu devreye girmez."
},
"adaWasm.link": {
"translation": " Ada Bilgi Merkezi Ada programlama (Wikibooks) HAC repo'su LiveCodes Belgeleri Başlangıç şablonunu yükle "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "DuckDB-Wasm kullanılarak WASM olarak paketlenmiş DuckDB."
+ },
+ "duckdb.link": {
+ "translation": " DuckDB resmi web sitesi DuckDB dokümantasyonu DuckDB-Wasm GitHub repo'su Y Dakikada X Öğrenin, X=SQL Başlangıç şablonunu yükle "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "Gömülü JavaScript şablonlama."
},
diff --git a/src/livecodes/i18n/locales/tr/language-info.ts b/src/livecodes/i18n/locales/tr/language-info.ts
index ed71d0a3a7..c9919b01ee 100644
--- a/src/livecodes/i18n/locales/tr/language-info.ts
+++ b/src/livecodes/i18n/locales/tr/language-info.ts
@@ -381,6 +381,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: "<1> <2>PostgreSQL resmi web sitesi2> 1> <3> <4>PostgreSQL dokümantasyonu4> 3> <5> <6>PGlite GitHub repo'su6> 5> <7> <8>Y Dakikada X Öğrenin, X=SQL8> 7> <9> <10>Başlangıç şablonunu yükle10> 9>",
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: 'DuckDB-Wasm kullanılarak WASM olarak paketlenmiş DuckDB.',
+ link: "<1> <2>DuckDB resmi web sitesi2> 1> <3> <4>DuckDB dokümantasyonu4> 3> <5> <6>DuckDB-Wasm GitHub repo'su6> 5> <7> <8>Y Dakikada X Öğrenin, X=SQL8> 7> <9> <10>Başlangıç şablonunu yükle10> 9>",
+ name: 'DuckDB',
+ },
prolog: {
desc: "JavaScript'te açık kaynaklı bir Prolog yorumlayıcısı.",
link: '<1> <2>Tau Prolog resmi web sitesi2> 1> <3> <4>Tau Prolog dokümantasyonu4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>Y Dakikada X Öğrenin, X=Prolog8> 7> <9> <10>Başlangıç şablonunu yükle10> 9>',
diff --git a/src/livecodes/i18n/locales/tr/translation.lokalise.json b/src/livecodes/i18n/locales/tr/translation.lokalise.json
index 8f9c3bd83a..21f71ca22e 100644
--- a/src/livecodes/i18n/locales/tr/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/tr/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "Diyagramlar Başlangıç"
},
+ "templates.starter.duckdb": {
+ "translation": "DuckDB Başlangıç"
+ },
"templates.starter.elm": {
"translation": "Elm Başlangıç"
},
diff --git a/src/livecodes/i18n/locales/tr/translation.ts b/src/livecodes/i18n/locales/tr/translation.ts
index b973784178..40cbbb8a62 100644
--- a/src/livecodes/i18n/locales/tr/translation.ts
+++ b/src/livecodes/i18n/locales/tr/translation.ts
@@ -1044,6 +1044,7 @@ const translation: I18nTranslation = {
php: 'PHP Başlangıç',
'php-wasm': 'PHP (Wasm) Başlangıç',
postgresql: 'PostgreSQL Başlangıç',
+ duckdb: 'DuckDB Başlangıç',
preact: 'Preact Başlangıç',
prolog: 'Prolog Başlangıç',
python: 'Python Başlangıç',
diff --git a/src/livecodes/i18n/locales/ur/language-info.lokalise.json b/src/livecodes/i18n/locales/ur/language-info.lokalise.json
index 19aff173c2..3b41cfa401 100644
--- a/src/livecodes/i18n/locales/ur/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/ur/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada کو مکمل طور پر براؤزر میں <1>HAC1> کے ذریعے مرتب اور چلایا جاتا ہے، جو Ada میں لکھا گیا اور WebAssembly میں مرتب کردہ ایک Ada کمپائلر ہے۔ کوئی سرور شامل نہیں ہے۔"
+ "translation": "Ada کو مکمل طور پر براؤزر میں HAC کے ذریعے مرتب اور چلایا جاتا ہے، جو Ada میں لکھا گیا اور WebAssembly میں مرتب کردہ ایک Ada کمپائلر ہے۔ کوئی سرور شامل نہیں ہے۔"
},
"adaWasm.link": {
"translation": " Ada معلوماتی مرکز Ada پروگرامنگ (ویکی کتب) HAC ریپو LiveCodes دستاویزات اسٹارٹر ٹیمپلیٹ لوڈ کریں "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "ڈاٹ.جے ایس"
},
+ "duckdb.desc": {
+ "translation": "ڈک ڈی بی-واسم کا استعمال کرتے ہوئے ڈبلیو اے ایس ایم کے طور پر پیکیج کیا گیا ڈک ڈی بی"
+ },
+ "duckdb.link": {
+ "translation": " ڈک ڈی بی کی سرکاری ویب سائٹ ڈک ڈی بی دستاویزات ڈک ڈی بی-واسم گٹ ہب ریپو X کو Y منٹ میں سیکھیں، جہاں X=ایس کیو ایل ابتدائی سانچہ لوڈ کریں "
+ },
+ "duckdb.name": {
+ "translation": "ڈک ڈی بی"
+ },
"ejs.desc": {
"translation": "ایمبیڈڈ جاوا اسکرپٹ ٹیمپلیٹنگ۔"
},
diff --git a/src/livecodes/i18n/locales/ur/language-info.ts b/src/livecodes/i18n/locales/ur/language-info.ts
index 96e63c83f6..65134f09f6 100644
--- a/src/livecodes/i18n/locales/ur/language-info.ts
+++ b/src/livecodes/i18n/locales/ur/language-info.ts
@@ -382,6 +382,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>پوسٹگریس کیو ایل کی سرکاری ویب سائٹ2> 1> <3> <4>پوسٹگریس کیو ایل دستاویزات4> 3> <5> <6>پی جی لائٹ گٹ ہب ریپو6> 5> <7> <8>X کو Y منٹ میں سیکھیں، جہاں X=ایس کیو ایل8> 7> <9> <10>ابتدائی سانچہ لوڈ کریں10> 9>',
name: 'پوسٹگریس کیو ایل',
},
+ duckdb: {
+ desc: 'ڈک ڈی بی-واسم کا استعمال کرتے ہوئے ڈبلیو اے ایس ایم کے طور پر پیکیج کیا گیا ڈک ڈی بی',
+ link: '<1> <2>ڈک ڈی بی کی سرکاری ویب سائٹ2> 1> <3> <4>ڈک ڈی بی دستاویزات4> 3> <5> <6>ڈک ڈی بی-واسم گٹ ہب ریپو6> 5> <7> <8>X کو Y منٹ میں سیکھیں، جہاں X=ایس کیو ایل8> 7> <9> <10>ابتدائی سانچہ لوڈ کریں10> 9>',
+ name: 'ڈک ڈی بی',
+ },
prolog: {
desc: 'جاوا اسکرپٹ میں ایک اوپن سورس پرولوگ انٹرپریٹر۔',
link: '<1> <2>ٹاؤ پرولوگ کی سرکاری ویب سائٹ2> 1> <3> <4>ٹاؤ پرولوگ دستاویزات4> 3> <5> <6>ایس ڈبلیو آئی-پرولوگ6> 5> <7> <8>X کو Y منٹ میں سیکھیں، جہاں X=پرولوگ8> 7> <9> <10>ابتدائی سانچہ لوڈ کریں10> 9>',
diff --git a/src/livecodes/i18n/locales/ur/translation.lokalise.json b/src/livecodes/i18n/locales/ur/translation.lokalise.json
index 3e5e382dc3..00ba8dd0c1 100644
--- a/src/livecodes/i18n/locales/ur/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/ur/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "ڈایاگرامز شروعاتی"
},
+ "templates.starter.duckdb": {
+ "translation": "ڈک ڈی بی شروعاتی"
+ },
"templates.starter.elm": {
"translation": "ایلم شروعاتی"
},
diff --git a/src/livecodes/i18n/locales/ur/translation.ts b/src/livecodes/i18n/locales/ur/translation.ts
index 4ffe0b3a9b..5e27137393 100644
--- a/src/livecodes/i18n/locales/ur/translation.ts
+++ b/src/livecodes/i18n/locales/ur/translation.ts
@@ -1043,6 +1043,7 @@ const translation: I18nTranslation = {
php: 'پی ایچ پی شروعاتی',
'php-wasm': 'پی ایچ پی (واسم) شروعاتی',
postgresql: 'پوسٹگریس کیو ایل شروعاتی',
+ duckdb: 'ڈک ڈی بی شروعاتی',
preact: 'پری ایکٹ شروعاتی',
prolog: 'پرولوگ شروعاتی',
python: 'پائتھن شروعاتی',
diff --git a/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json b/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json
index 7392a070b1..5abff12b47 100644
--- a/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json
@@ -1,7 +1,7 @@
{
"$comment": "ATTENTION: This file is auto-generated from source code. Do not edit manually!",
"adaWasm.desc": {
- "translation": "Ada 由用 Ada 编写并编译为 WebAssembly 的 Ada 编译器 <1>HAC1> 完全在浏览器中编译和运行。不涉及任何服务器。"
+ "translation": "Ada 由用 Ada 编写并编译为 WebAssembly 的 Ada 编译器 HAC 完全在浏览器中编译和运行。不涉及任何服务器。"
},
"adaWasm.link": {
"translation": " Ada 信息交换中心 Ada 编程(Wikibooks) HAC 仓库 LiveCodes 文档 加载入门模板 "
@@ -243,6 +243,15 @@
"dot.name": {
"translation": "doT.js"
},
+ "duckdb.desc": {
+ "translation": "使用 DuckDB-Wasm 打包为 WASM 的 DuckDB。"
+ },
+ "duckdb.link": {
+ "translation": " DuckDB官网 DuckDB文档 DuckDB-Wasm GitHub 仓库 在 Y 分钟内学习 X,其中 X=SQL 加载启动模板 "
+ },
+ "duckdb.name": {
+ "translation": "DuckDB"
+ },
"ejs.desc": {
"translation": "嵌入式 JavaScript 模板。"
},
diff --git a/src/livecodes/i18n/locales/zh-CN/language-info.ts b/src/livecodes/i18n/locales/zh-CN/language-info.ts
index 33b067eed4..286e371b41 100644
--- a/src/livecodes/i18n/locales/zh-CN/language-info.ts
+++ b/src/livecodes/i18n/locales/zh-CN/language-info.ts
@@ -375,6 +375,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>PostgreSQL官网2> 1> <3> <4>PostgreSQL文档4> 3> <5> <6>PGlite GitHub 仓库6> 5> <7> <8>在 Y 分钟内学习 X,其中 X=SQL8> 7> <9> <10>加载启动模板10> 9>',
name: 'PostgreSQL',
},
+ duckdb: {
+ desc: '使用 DuckDB-Wasm 打包为 WASM 的 DuckDB。',
+ link: '<1> <2>DuckDB官网2> 1> <3> <4>DuckDB文档4> 3> <5> <6>DuckDB-Wasm GitHub 仓库6> 5> <7> <8>在 Y 分钟内学习 X,其中 X=SQL8> 7> <9> <10>加载启动模板10> 9>',
+ name: 'DuckDB',
+ },
prolog: {
desc: 'JavaScript 中的开源 Prolog 解释器。',
link: '<1> <2>Tau Prolog 官方网站2> 1> <3> <4>Tau Prolog 文档4> 3> <5> <6>SWI-Prolog6> 5> <7> <8>在 Y 分钟内学习 X,其中 X=Prolog8> 7> <9> <10>加载启动模板10> 9>',
diff --git a/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json b/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json
index 2a4ae41f3a..a60b50a2f4 100644
--- a/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json
@@ -1989,6 +1989,9 @@
"templates.starter.diagrams": {
"translation": "图表启动模板"
},
+ "templates.starter.duckdb": {
+ "translation": "DuckDB 启动模板"
+ },
"templates.starter.elm": {
"translation": "Elm 启动模板"
},
diff --git a/src/livecodes/i18n/locales/zh-CN/translation.ts b/src/livecodes/i18n/locales/zh-CN/translation.ts
index 297550662f..11c63750d6 100644
--- a/src/livecodes/i18n/locales/zh-CN/translation.ts
+++ b/src/livecodes/i18n/locales/zh-CN/translation.ts
@@ -1041,6 +1041,7 @@ const translation: I18nTranslation = {
php: 'PHP 启动模板',
'php-wasm': 'PHP(WASM)启动模板',
postgresql: 'PostgreSQL 启动模板',
+ duckdb: 'DuckDB 启动模板',
preact: 'Preact 启动模板',
prolog: 'Prolog 启动模板',
python: 'Python 启动模板',
diff --git a/src/livecodes/languages/duckdb/index.ts b/src/livecodes/languages/duckdb/index.ts
new file mode 100644
index 0000000000..710e2b7e47
--- /dev/null
+++ b/src/livecodes/languages/duckdb/index.ts
@@ -0,0 +1 @@
+export * from './lang-duckdb';
diff --git a/src/livecodes/languages/duckdb/lang-duckdb-compiler-esm.ts b/src/livecodes/languages/duckdb/lang-duckdb-compiler-esm.ts
new file mode 100644
index 0000000000..148f5bd454
--- /dev/null
+++ b/src/livecodes/languages/duckdb/lang-duckdb-compiler-esm.ts
@@ -0,0 +1,127 @@
+import type { CompilerFunction } from '../../models';
+import { getLanguageCustomSettings } from '../../utils/utils';
+import { duckdbWasmBaseUrl, duckdbWasmModuleUrl } from '../../vendors';
+
+declare global {
+ interface Window {
+ duckdb: any;
+ }
+}
+
+const getDuckDB = async () => {
+ if (!window.duckdb) {
+ window.duckdb = await import(duckdbWasmModuleUrl);
+ }
+ return window.duckdb;
+};
+
+const createDB = async (duckdb: any) => {
+ const bundles = {
+ mvp: {
+ mainModule: duckdbWasmBaseUrl + 'duckdb-mvp.wasm',
+ mainWorker: duckdbWasmBaseUrl + 'duckdb-browser-mvp.worker.js',
+ },
+ eh: {
+ mainModule: duckdbWasmBaseUrl + 'duckdb-eh.wasm',
+ mainWorker: duckdbWasmBaseUrl + 'duckdb-browser-eh.worker.js',
+ },
+ };
+ const bundle = await duckdb.selectBundle(bundles);
+ const workerUrl = URL.createObjectURL(
+ new Blob([`importScripts("${bundle.mainWorker}");`], { type: 'text/javascript' }),
+ );
+ const worker = new Worker(workerUrl);
+ const logger = new duckdb.ConsoleLogger();
+ const db = new duckdb.AsyncDuckDB(logger, worker);
+ await db.instantiate(bundle.mainModule, bundle.pthreadWorker);
+ return db;
+};
+
+export const duckdbCompiler: CompilerFunction = async (code, { config }) => {
+ if (!code.trim()) return '{ "data": [] }';
+ const duckdb = await getDuckDB();
+
+ const options = getLanguageCustomSettings('duckdb', config);
+ const { scriptURLs } = options;
+
+ if (Array.isArray(scriptURLs)) {
+ const scripts = await Promise.all(
+ scriptURLs
+ .map((url) =>
+ fetch(url)
+ .then((res) => {
+ if (!res.ok) {
+ throw new Error('Error fetching: ' + url);
+ }
+ return res.text();
+ })
+ // eslint-disable-next-line no-console
+ .catch(console.warn),
+ )
+ .filter(Boolean),
+ );
+ code = [...scripts, code].join('; ');
+ }
+
+ const db = await createDB(duckdb);
+ const conn = await db.connect();
+
+ try {
+ // `conn.query` materializes only the first result-returning statement, so
+ // statements are run one at a time and their results collected.
+ const statements = splitStatements(code, await db.tokenize(code));
+ const data: Array<{ columns: string[]; values: unknown[][] }> = [];
+ for (const statement of statements) {
+ const result = await conn.query(`${statement}\n; SELECT 0 AS "${resultMarker}"`);
+ const fields = result?.schema?.fields ?? [];
+ // DDL/DML statements return no query result; appending the marker query
+ // makes them return the marker instead, so they can be skipped.
+ if (fields.length === 1 && fields[0].name === resultMarker) continue;
+ data.push(...transformData(result));
+ }
+ return `${JSON.stringify({ data }, jsonReplacer, 2)}`;
+ } catch (error: any) {
+ return `${JSON.stringify({ error: error.message }, null, 2)}`;
+ } finally {
+ await conn.close();
+ await db.terminate();
+ }
+};
+
+const resultMarker = '__livecodes_result__';
+
+const splitStatements = (code: string, tokens: { offsets: number[] }): string[] => {
+ const bytes = new TextEncoder().encode(code);
+ const statements: string[] = [];
+ let start = 0;
+ for (const offset of [...tokens.offsets, bytes.length]) {
+ if (offset === bytes.length || bytes[offset] === 0x3b) {
+ const statement = new TextDecoder().decode(bytes.subarray(start, offset)).trim();
+ if (statement) {
+ statements.push(statement);
+ }
+ start = offset + 1;
+ }
+ }
+ return statements;
+};
+
+const jsonReplacer = (_key: string, value: any) => {
+ if (typeof value === 'bigint') {
+ return value >= BigInt(Number.MIN_SAFE_INTEGER) && value <= BigInt(Number.MAX_SAFE_INTEGER)
+ ? Number(value)
+ : value.toString();
+ }
+ return value;
+};
+
+const transformData = (result: any): Array<{ columns: string[]; values: unknown[][] }> => {
+ const fields = result?.schema?.fields ?? [];
+ if (fields.length === 0) return [];
+ const columns = fields.map((field: any) => field.name);
+ const values = result.toArray().map((row: any) => {
+ const obj = typeof row.toJSON === 'function' ? row.toJSON() : row;
+ return columns.map((column: string) => obj[column]);
+ });
+ return [{ columns, values }];
+};
diff --git a/src/livecodes/languages/duckdb/lang-duckdb.ts b/src/livecodes/languages/duckdb/lang-duckdb.ts
new file mode 100644
index 0000000000..7f0f31a401
--- /dev/null
+++ b/src/livecodes/languages/duckdb/lang-duckdb.ts
@@ -0,0 +1,33 @@
+import type { CompilerFunction, LanguageSpecs } from '../../models';
+import { sqlFormatterUrl } from '../../vendors';
+
+declare const importScripts: (...args: string[]) => void;
+
+export const runOutsideWorker: CompilerFunction = async (code: string, { baseUrl, config }) => {
+ const { duckdbCompiler } = await import(baseUrl + '{{hash:lang-duckdb-compiler-esm.js}}');
+ return duckdbCompiler(code, { baseUrl, config });
+};
+
+export const duckdb: LanguageSpecs = {
+ name: 'duckdb',
+ title: 'DuckDB',
+ formatter: {
+ factory: () => {
+ importScripts(sqlFormatterUrl);
+ return async (value: string) => ({
+ formatted: await (self as any).sqlFormatter.format(value, { linesBetweenQueries: 2 }),
+ cursorOffset: 0,
+ });
+ },
+ },
+ compiler: {
+ factory: () => async (code) => code,
+ runOutsideWorker,
+ scripts: ({ baseUrl }) => [baseUrl + '{{hash:lang-sql-script.js}}'],
+ scriptType: 'application/json',
+ compiledCodeLanguage: 'json',
+ },
+ extensions: ['duckdb.sql', 'duckdb'],
+ editor: 'script',
+ editorLanguage: 'sql',
+};
diff --git a/src/livecodes/languages/languages.ts b/src/livecodes/languages/languages.ts
index 647455e0e6..5f13c0f553 100644
--- a/src/livecodes/languages/languages.ts
+++ b/src/livecodes/languages/languages.ts
@@ -25,6 +25,7 @@ import { dWasm } from './d-wasm';
import { dart } from './dart';
import { diagrams } from './diagrams';
import { dot } from './dot';
+import { duckdb } from './duckdb';
import { ejs } from './ejs';
import { elm } from './elm';
import { eta } from './eta';
@@ -219,6 +220,7 @@ export const languages: LanguageSpecs[] = [
assemblyWasm,
sql,
postgresql,
+ duckdb,
prolog,
minizinc,
blockly,
diff --git a/src/livecodes/languages/postgresql/lang-postgresql-compiler-esm.ts b/src/livecodes/languages/postgresql/lang-postgresql-compiler-esm.ts
index aacc74f089..96f71be7fb 100644
--- a/src/livecodes/languages/postgresql/lang-postgresql-compiler-esm.ts
+++ b/src/livecodes/languages/postgresql/lang-postgresql-compiler-esm.ts
@@ -10,7 +10,7 @@ declare global {
}
export const pgSqlCompiler: CompilerFunction = async (code, { config }) => {
- if (!code.trim()) return '{ data: [] }';
+ if (!code.trim()) return '{ "data": [] }';
window.PGlite = window.PGlite || (await import(pgliteUrl)).PGlite;
const options = getLanguageCustomSettings('pgsql', config);
diff --git a/src/livecodes/templates/starter/duckdb-starter.ts b/src/livecodes/templates/starter/duckdb-starter.ts
new file mode 100644
index 0000000000..397572c779
--- /dev/null
+++ b/src/livecodes/templates/starter/duckdb-starter.ts
@@ -0,0 +1,124 @@
+import type { Template } from '../../models';
+
+export const duckdbStarter: Template = {
+ name: 'duckdb',
+ title: window.deps.translateString('templates.starter.duckdb', 'DuckDB Starter'),
+ thumbnail: 'assets/templates/duckdb.svg',
+ activeEditor: 'script',
+ markup: {
+ language: 'html',
+ content: `
+
+
+ Tables
+
+
+
+ Result
+
+
+
+ Result as objects
+
+
+
+
+
+`.trimStart(),
+ },
+ style: {
+ language: 'css',
+ content: `
+#output {
+ color: #3d3d3d;
+ font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
+}
+
+#output summary {
+ cursor: pointer;
+}
+
+#output table {
+ border: 1px solid #ddd;
+ border-collapse: separate;
+ border-radius: 4px;
+ border-spacing: 0;
+ font-size: 0.9em;
+ margin: 1em;
+ width: 95%;
+}
+
+#output th,
+#output td {
+ padding: 0.5em;
+}
+
+#output tr:nth-child(odd) {
+ background-color: #f2f2f2;
+}
+
+#output pre {
+ background-color: #fafafa;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ box-sizing: border-box;
+ display: inline-block;
+ margin: 1em;
+ min-width: 95%;
+ padding: 1em;
+}
+`.trimStart(),
+ },
+ script: {
+ language: 'duckdb',
+ content: `
+-- based on https://stackoverflow.com/q/7745609
+
+CREATE TABLE IF NOT EXISTS quotes (
+ id int NOT NULL,
+ rev int NOT NULL,
+ quote varchar NOT NULL,
+ PRIMARY KEY (id, rev)
+);
+
+INSERT INTO quotes (id, rev, quote) VALUES
+ (1, 1, 'Simplicity is the ultimate sophistication. – Leonardo da Vinci'),
+ (2, 1, 'Change the world by being yourself. – Amy Poehler'),
+ (1, 2, 'Every moment is a fresh beginning. – T.S Eliot'),
+ (1, 3, 'Whatever you do, do it well. – Walt Disney');
+
+SELECT a.id, a.rev, a.quote
+FROM quotes a
+INNER JOIN (
+ SELECT id, MAX(rev) rev
+ FROM quotes
+ GROUP BY id
+) b ON a.id = b.id AND a.rev = b.rev;
+
+SELECT a.*
+FROM quotes a
+LEFT OUTER JOIN quotes b
+ ON a.id = b.id AND a.rev < b.rev
+WHERE b.id IS NULL;
+
+SELECT a.id, a.rev, a.quote
+ FROM (SELECT id, rev, quote,
+ ROW_NUMBER() OVER (PARTITION BY id ORDER BY rev DESC) rank
+ FROM quotes) a
+ WHERE a.rank = 1;
+`.trimStart(),
+ },
+};
diff --git a/src/livecodes/templates/starter/index.ts b/src/livecodes/templates/starter/index.ts
index 76fd3ad70f..18a2a1e3b9 100644
--- a/src/livecodes/templates/starter/index.ts
+++ b/src/livecodes/templates/starter/index.ts
@@ -26,6 +26,7 @@ import { d3Starter } from './d3-starter';
import { daisyuiStarter } from './daisyui-starter';
import { dartStarter } from './dart-starter';
import { diagramsStarter } from './diagrams-starter';
+import { duckdbStarter } from './duckdb-starter';
import { elmStarter } from './elm-starter';
import { fanakStarter } from './fanak-starter';
import { fennelStarter } from './fennel-starter';
@@ -186,6 +187,7 @@ export const starterTemplates = [
assemblyWasmStarter,
sqlStarter,
postgresqlStarter,
+ duckdbStarter,
prologStarter,
minizincStarter,
blocklyStarter,
diff --git a/src/livecodes/vendors.ts b/src/livecodes/vendors.ts
index 4d1c8285c6..5c60c99741 100644
--- a/src/livecodes/vendors.ts
+++ b/src/livecodes/vendors.ts
@@ -146,6 +146,10 @@ export const doppioJvmBaseUrl = 'https://unpkg.com/@seth0x41/doppio@1.0.0/';
export const dotUrl = /* @__PURE__ */ getUrl('dot@1.1.3/doT.js');
+export const duckdbWasmBaseUrl = /* @__PURE__ */ getUrl('@duckdb/duckdb-wasm@1.32.0/dist/');
+
+export const duckdbWasmModuleUrl = /* @__PURE__ */ getModuleUrl('@duckdb/duckdb-wasm@1.32.0');
+
export const ejsUrl = /* @__PURE__ */ getUrl('ejs@4.0.1/ejs.js');
export const elkjsBaseUrl = /* @__PURE__ */ getUrl('elkjs@0.8.2/lib/');
diff --git a/src/sdk/models.ts b/src/sdk/models.ts
index 749c50a74e..956ec547e4 100644
--- a/src/sdk/models.ts
+++ b/src/sdk/models.ts
@@ -357,6 +357,8 @@ export type Language =
| 'postgres'
| 'postgre.sql'
| 'postgresql.sql'
+ | 'duckdb'
+ | 'duckdb.sql'
| 'prolog.pl'
| 'prolog'
| 'minizinc'
@@ -558,6 +560,7 @@ export type TemplateName =
| 'assembly-wasm'
| 'sql'
| 'postgresql'
+ | 'duckdb'
| 'prolog'
| 'minizinc'
| 'blockly'
diff --git a/storybook/_stories/EmbedOptions/template.ts b/storybook/_stories/EmbedOptions/template.ts
index 8670e7b1c0..b2408f34eb 100644
--- a/storybook/_stories/EmbedOptions/template.ts
+++ b/storybook/_stories/EmbedOptions/template.ts
@@ -94,6 +94,7 @@ const storyDef: StoryDef = {
AssemblyWasm: { props: { template: 'assembly-wasm' }, storyName: 'Assembly (Wasm)' },
SQL: { props: { template: 'sql' } },
PostgreSQL: { props: { template: 'postgresql' } },
+ DuckDB: { props: { template: 'duckdb' } },
Prolog: { props: { template: 'prolog' } },
Minizinc: { props: { template: 'minizinc' } },
Blockly: { props: { template: 'blockly' } },
diff --git a/storybook/preact/stories/EmbedOptions/template.stories.ts b/storybook/preact/stories/EmbedOptions/template.stories.ts
index f49d5295cb..a0136e2acd 100644
--- a/storybook/preact/stories/EmbedOptions/template.stories.ts
+++ b/storybook/preact/stories/EmbedOptions/template.stories.ts
@@ -111,6 +111,7 @@ export const AssemblyWasm = livecodesStory({ template: 'assembly-wasm' });
AssemblyWasm.storyName = 'Assembly (Wasm)';
export const SQL = livecodesStory({ template: 'sql' });
export const PostgreSQL = livecodesStory({ template: 'postgresql' });
+export const DuckDB = livecodesStory({ template: 'duckdb' });
export const Prolog = livecodesStory({ template: 'prolog' });
export const Minizinc = livecodesStory({ template: 'minizinc' });
export const Blockly = livecodesStory({ template: 'blockly' });
diff --git a/storybook/react/stories/EmbedOptions/template.stories.ts b/storybook/react/stories/EmbedOptions/template.stories.ts
index f49d5295cb..a0136e2acd 100644
--- a/storybook/react/stories/EmbedOptions/template.stories.ts
+++ b/storybook/react/stories/EmbedOptions/template.stories.ts
@@ -111,6 +111,7 @@ export const AssemblyWasm = livecodesStory({ template: 'assembly-wasm' });
AssemblyWasm.storyName = 'Assembly (Wasm)';
export const SQL = livecodesStory({ template: 'sql' });
export const PostgreSQL = livecodesStory({ template: 'postgresql' });
+export const DuckDB = livecodesStory({ template: 'duckdb' });
export const Prolog = livecodesStory({ template: 'prolog' });
export const Minizinc = livecodesStory({ template: 'minizinc' });
export const Blockly = livecodesStory({ template: 'blockly' });
diff --git a/storybook/solid/stories/EmbedOptions/template.stories.ts b/storybook/solid/stories/EmbedOptions/template.stories.ts
index f49d5295cb..a0136e2acd 100644
--- a/storybook/solid/stories/EmbedOptions/template.stories.ts
+++ b/storybook/solid/stories/EmbedOptions/template.stories.ts
@@ -111,6 +111,7 @@ export const AssemblyWasm = livecodesStory({ template: 'assembly-wasm' });
AssemblyWasm.storyName = 'Assembly (Wasm)';
export const SQL = livecodesStory({ template: 'sql' });
export const PostgreSQL = livecodesStory({ template: 'postgresql' });
+export const DuckDB = livecodesStory({ template: 'duckdb' });
export const Prolog = livecodesStory({ template: 'prolog' });
export const Minizinc = livecodesStory({ template: 'minizinc' });
export const Blockly = livecodesStory({ template: 'blockly' });
diff --git a/storybook/svelte/stories/EmbedOptions/template.stories.ts b/storybook/svelte/stories/EmbedOptions/template.stories.ts
index f49d5295cb..a0136e2acd 100644
--- a/storybook/svelte/stories/EmbedOptions/template.stories.ts
+++ b/storybook/svelte/stories/EmbedOptions/template.stories.ts
@@ -111,6 +111,7 @@ export const AssemblyWasm = livecodesStory({ template: 'assembly-wasm' });
AssemblyWasm.storyName = 'Assembly (Wasm)';
export const SQL = livecodesStory({ template: 'sql' });
export const PostgreSQL = livecodesStory({ template: 'postgresql' });
+export const DuckDB = livecodesStory({ template: 'duckdb' });
export const Prolog = livecodesStory({ template: 'prolog' });
export const Minizinc = livecodesStory({ template: 'minizinc' });
export const Blockly = livecodesStory({ template: 'blockly' });
diff --git a/storybook/vue/stories/EmbedOptions/template.stories.ts b/storybook/vue/stories/EmbedOptions/template.stories.ts
index f49d5295cb..a0136e2acd 100644
--- a/storybook/vue/stories/EmbedOptions/template.stories.ts
+++ b/storybook/vue/stories/EmbedOptions/template.stories.ts
@@ -111,6 +111,7 @@ export const AssemblyWasm = livecodesStory({ template: 'assembly-wasm' });
AssemblyWasm.storyName = 'Assembly (Wasm)';
export const SQL = livecodesStory({ template: 'sql' });
export const PostgreSQL = livecodesStory({ template: 'postgresql' });
+export const DuckDB = livecodesStory({ template: 'duckdb' });
export const Prolog = livecodesStory({ template: 'prolog' });
export const Minizinc = livecodesStory({ template: 'minizinc' });
export const Blockly = livecodesStory({ template: 'blockly' });
diff --git a/storybook/web-components/stories/EmbedOptions/template.stories.ts b/storybook/web-components/stories/EmbedOptions/template.stories.ts
index f49d5295cb..a0136e2acd 100644
--- a/storybook/web-components/stories/EmbedOptions/template.stories.ts
+++ b/storybook/web-components/stories/EmbedOptions/template.stories.ts
@@ -111,6 +111,7 @@ export const AssemblyWasm = livecodesStory({ template: 'assembly-wasm' });
AssemblyWasm.storyName = 'Assembly (Wasm)';
export const SQL = livecodesStory({ template: 'sql' });
export const PostgreSQL = livecodesStory({ template: 'postgresql' });
+export const DuckDB = livecodesStory({ template: 'duckdb' });
export const Prolog = livecodesStory({ template: 'prolog' });
export const Minizinc = livecodesStory({ template: 'minizinc' });
export const Blockly = livecodesStory({ template: 'blockly' });
diff --git a/vendor-licenses.md b/vendor-licenses.md
index 6a32514a61..2c581b3e45 100644
--- a/vendor-licenses.md
+++ b/vendor-licenses.md
@@ -74,6 +74,8 @@ Dart: [BSD-3-Clause License](https://github.com/dart-lang/sdk/blob/e6f4207adef69
DoppioJVM: [MIT License](https://github.com/plasma-umass/doppio/blob/9a8bcf705c74f91301a542abfe8b7175ca757259/LICENSE)
+DuckDB-Wasm: [MIT License](https://github.com/duckdb/duckdb-wasm/blob/main/LICENSE)
+
dts-bundle: [MIT License](https://github.com/TypeStrong/dts-bundle/blob/2ca1591e890dc4276efc4bb0893367e6ff32a039/LICENSE-MIT)
EasyQRCodeJS: [MIT License](https://github.com/ushelp/EasyQRCodeJS/blob/573373b110d706132a41cc8abb5b297016b80094/LICENSE)