├── .env
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── type_bug.md
│ ├── type_improvement.md
│ ├── type_new_feature.md
│ └── type_task.md
├── actions
│ └── spelling
│ │ ├── README.md
│ │ ├── advice.md
│ │ ├── allow.txt
│ │ ├── excludes.txt
│ │ ├── expect.txt
│ │ ├── patterns.txt
│ │ └── reject.txt
└── workflows
│ └── prod_sync.yml
├── .gitignore
├── CNAME
├── README.md
├── _posts
├── 2018-06-04-introduction-to-ballerina-0.970.md
├── 2018-06-26-improvements-and-new-features-in-ballerina-0.980.0-release.md
├── 2018-10-08-introduction-to-new-features-and-changes-introduced-with-ballerina-0.982.0.md
├── 2019-09-09-annoucing-1.0.0.md
├── 2020-01-02-ballerina-1.1.0-released.md
├── 2020-03-20-ballerina-1.2.0-released.md
├── 2020-06-19-announcing-the-first-preview-of-ballerina-swan-lake.md
├── 2021-06-02-announcing-ballerina-swan-lake-beta1.md
├── 2021-12-14-ballerina-swan-lake-is-on-the-horizon.md
├── 2021-12-23-ballerina-log4shell-vulnerability-community-update.md
├── 2022-02-01-announcing-ballerina-2201.0.0-swan-lake.md
├── 2022-05-30-announcing-ballerina-2201.1.0-swan-lake-update-1.md
├── 2022-08-10-announcing-ballerina-2201.2.0-swan-lake-update-2.md
├── 2022-09-21-ballerina-is-moving-from-slack-to-discord.md
├── 2022-12-05-announcing-ballerina-2201.3.0-swan-lake-update-3.md
├── 2023-02-28-announcing-ballerina-2201.4.0-swan-lake-update-4.md
├── 2023-04-15-announcing-ballerina-2201.5.0-swan-lake-update-5.md
├── 2023-06-06-announcing-ballerina-2201.6.0-swan-lake-update-6.md
├── 2023-07-14-announcing-ballerina-2201.7.0-swan-lake-update-7.md
├── 2023-09-22-announcing-ballerina-2201.8.0-swan-lake-update-8.md
├── 2024-05-27-announcing-ballerina-2201.9.0-swan-lake-update-9.md
├── 2024-08-23-announcing-ballerina-2201.10.0-swan-lake-update-10.md
├── 2025-02-11-announcing-ballerina-2201.11.0-swan-lake-update-11.md
└── 2025-04-26-introducing-natural-programming.md
├── components
└── common
│ ├── footer
│ ├── Footer.js
│ └── Footer.module.css
│ ├── main-content
│ └── MainContent.js
│ ├── meta
│ └── Meta.js
│ ├── pg-toc
│ └── Toc.js
│ ├── prev-next
│ └── PrevNext.js
│ ├── redirect-message
│ └── RedirectMessage.js
│ ├── search
│ ├── Search.js
│ ├── search-box
│ │ ├── SearchBox.js
│ │ └── SearchBox.module.css
│ └── search-hits
│ │ ├── SearchHits.js
│ │ └── SearchHits.module.css
│ └── top-nav
│ ├── CustomMenu.js
│ ├── CustomToggle.js
│ ├── TopNav.js
│ └── TopNav.module.css
├── layouts
├── Layout404.js
├── LayoutDocs.js
└── LayoutHome.js
├── next-sitemap.config.js
├── next.config.js
├── package-lock.json
├── package.json
├── pages
├── 404.js
├── _app.js
├── _document.js
├── index.js
└── posts
│ └── [slug].js
├── public
├── blog-images
│ ├── Ballerina-Swan-Lake-GA-Release-banner-02-with-button.png
│ ├── SwanLake-04.jpeg
│ ├── alexandre-tsuchiya-valUbSBTRG4-unsplash.jpg
│ ├── apple-black-and-white-brick-wall-169573.jpg
│ ├── aws-blog.jpg
│ ├── ballerina-358010.jpg
│ ├── ballerina-generic-social-media-image-2023.png
│ ├── ballerina-logo-shoes.jpg
│ ├── ballet-sneaker-dress-ballet-dancer-163379.jpeg
│ ├── ballet-sneaker-dress-ballet-dancer-163379.jpg
│ ├── blackboard-board-chalk-6375.jpg
│ ├── bulb-close-up-crack-40889.jpg
│ ├── codes-coding-computer-247791.jpg
│ ├── computer-desk-electronics-374074.jpg
│ ├── concept-idea-innovation-212286.jpg
│ ├── drone-innovation-technology-57544.jpg
│ ├── dummy-image.jpg
│ ├── nihal-demirci-dVtnD1aV2QU-unsplash.jpg
│ ├── pexels-photo-206274.jpeg
│ ├── pexels-photo-258447.jpg
│ └── pexels-photo-374074.jpg
├── css
│ ├── abixTreeList.css
│ ├── archived-page.css
│ ├── ballerina-central-api.css
│ ├── ballerina-day.css
│ ├── ballerina-io-api-new.css
│ ├── ballerina-io-api.css
│ ├── ballerina-io-apidocs-2020.css
│ ├── ballerina-io-bbe.css
│ ├── ballerina-io-blog-inner-pages.css
│ ├── ballerina-io-docs.css
│ ├── ballerina-io-guides.css
│ ├── ballerina-io-learn-v2.css
│ ├── ballerina-io-learn.css
│ ├── ballerina-io-release-note.css
│ ├── ballerina-io.css
│ ├── ballerina-search-button.css
│ ├── ballerina-search-modal.css
│ ├── ballerina-search-style.css
│ ├── ballerina-search-variables.css
│ ├── ballerinacon-page.css
│ ├── bbe-home-page.css
│ ├── bbe-page.css
│ ├── blog-home-page.css
│ ├── bootstrap_3.3.7_css_bootstrap-theme.min.css
│ ├── bootstrap_3.3.7_css_bootstrap.min.css
│ ├── download-page.css
│ ├── events-page.css
│ ├── help-page.css
│ ├── home-page-2020.css
│ ├── home-page.css
│ ├── latest-bootstrap-theme.css
│ ├── latest-bootstrap.css
│ ├── new-icons-style.css
│ ├── philosophy-page.css
│ ├── prism.css
│ ├── roboto.css
│ ├── slack-page.css
│ ├── theme.css
│ ├── theme_extra.css
│ └── webinar-page.css
├── favicon.ico
├── fonts
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ ├── glyphicons-halflings-regular.woff2
│ └── roboto
│ │ ├── KFOiCnqEu92Fr1Mu51QrEzAdLw.woff2
│ │ ├── KFOjCnqEu92Fr1Mu51S7ACc6CsQ.woff2
│ │ ├── KFOjCnqEu92Fr1Mu51TLBCc6CsQ.woff2
│ │ ├── KFOjCnqEu92Fr1Mu51TjASc6CsQ.woff2
│ │ ├── KFOjCnqEu92Fr1Mu51TzBic6CsQ.woff2
│ │ ├── KFOkCnqEu92Fr1MmgVxIIzI.woff2
│ │ ├── KFOkCnqEu92Fr1Mu51xIIzI.woff2
│ │ ├── KFOlCnqEu92Fr1MmEU9fBBc4.woff2
│ │ ├── KFOlCnqEu92Fr1MmSU5fBBc4.woff2
│ │ ├── KFOlCnqEu92Fr1MmWUlfBBc4.woff2
│ │ ├── KFOlCnqEu92Fr1MmYUtfBBc4.woff2
│ │ └── KFOmCnqEu92Fr1Mu4mxK.woff2
├── images
│ ├── U9_AI_datamappingGIF.gif
│ ├── ai_data_mapping.jpg
│ ├── ballerina-generic-social-media-image-2023.png
│ ├── ballerina-logo-white.svg
│ ├── ballerina-logo.svg
│ ├── ballerina-service-profiler-output.png
│ ├── ballerina-swan-lake-sm-banner-general.png
│ ├── chevron-right-grey.svg
│ ├── chevron-right-teal.svg
│ ├── conbg2024.png
│ ├── downloads
│ │ ├── linux.svg
│ │ ├── mac.svg
│ │ ├── vs-code.svg
│ │ └── windows.svg
│ ├── favicon.ico
│ ├── home-page
│ │ ├── batteries-included.png
│ │ ├── developer-first.png
│ │ ├── from-code-to-cloud.png
│ │ ├── icons
│ │ │ ├── cloud-native.svg
│ │ │ ├── concurrent.svg
│ │ │ ├── data-transformation.svg
│ │ │ ├── flexible-typing.svg
│ │ │ ├── graphical.svg
│ │ │ └── reliable-maintainable.svg
│ │ ├── network-in-the-language.png
│ │ ├── sequence-diagrams-for-programming.png
│ │ ├── structtypes.png
│ │ ├── the-network-in-the-language.jpg
│ │ └── the-network-in-the-language.png
│ ├── logo
│ │ ├── ballerina-logo-dark-grey-sl-white.svg
│ │ ├── ballerina-logo-grey-sl-white.svg
│ │ ├── ballerina-logo-grey.svg
│ │ └── ballerina-logo-white.svg
│ ├── natural-programming
│ │ ├── np_derivation.png
│ │ └── np_sdlc.png
│ ├── play=button.svg
│ ├── right-bg-green-fill.svg
│ ├── service_contract_type.png
│ ├── sm-icons
│ │ ├── discord-grey.svg
│ │ ├── discord-white.svg
│ │ ├── discord.svg
│ │ ├── github-grey.svg
│ │ ├── github-white.svg
│ │ ├── github.svg
│ │ ├── google-group-grey.svg
│ │ ├── google-groups.svg
│ │ ├── linkedin-grey.svg
│ │ ├── linkedin-white.svg
│ │ ├── linkedin.svg
│ │ ├── rss-teal.svg
│ │ ├── rss-white.svg
│ │ ├── slack-grey.svg
│ │ ├── slack.svg
│ │ ├── stackoverflow-grey.svg
│ │ ├── stackoverflow-white.svg
│ │ ├── stackoverflow.svg
│ │ ├── twitter-grey.svg
│ │ ├── twitter-white.svg
│ │ ├── twitter-x-black.png
│ │ ├── twitter-x-white.svg
│ │ ├── twitter-x.svg
│ │ ├── twitter.svg
│ │ ├── youtube-grey.svg
│ │ └── youtube-white.svg
│ ├── swagger_ui.png
│ ├── toc-bg-hover.svg
│ ├── toc-bg.svg
│ └── u11
│ │ ├── fibonacci-u10-vs-u11.png
│ │ ├── file-size-u10-vs-u11.png
│ │ ├── graalvm-build-time-u10-vs-u11.png
│ │ ├── loops-performance-u10-vs-u11.png
│ │ ├── peak-heap-memory-u10-vs-u11.png
│ │ └── query-expressions-with-loops-u10-vs-u11.png
├── img
│ ├── Ballerina_logo-2.png
│ ├── Ballerina_logo.png
│ ├── ballerina-blog-logo.svg
│ ├── ballerina-generic-social-media-image-2023.png
│ ├── ballerina-logo-whiite.svg
│ ├── ballerina-logo.png
│ ├── ballerina-logo.svg
│ ├── ballerina-swan-lake-sm-banner-general.png
│ ├── ballerina-swan-lake-sm-banner.png
│ ├── ballerina.ico
│ ├── branding
│ │ ├── ballerina_logo_dgrey_png.png
│ │ ├── ballerina_logo_dgrey_source_file.eps
│ │ ├── ballerina_logo_dgrey_svg.svg
│ │ ├── ballerina_logo_white_m__svg.svg
│ │ ├── ballerina_logo_white_m_png.png
│ │ └── ballerina_logo_white_m_source_file.eps
│ ├── discord-grey.svg
│ ├── facebook.svg
│ ├── favicon.ico
│ ├── github-grey.svg
│ ├── github-logo-green.svg
│ ├── github-logo.svg
│ ├── github.svg
│ ├── globe-green.svg
│ ├── globe.svg
│ ├── google-group-grey.svg
│ ├── google-groups.svg
│ ├── linkedin-grey.svg
│ ├── linkedin.svg
│ ├── loader.gif
│ ├── slack-2022.svg
│ ├── slack.svg
│ ├── stackoverflow-grey.svg
│ ├── stackoverflow.svg
│ ├── submit-button-icon.svg
│ ├── youtube-grey.svg
│ ├── youtube-icon.svg
│ ├── youtube.png
│ └── youtube.svg
├── jquery
│ └── jquery.min.js
├── js
│ ├── Philosophy - Ballerina.io_files
│ │ ├── ballerina-io.css
│ │ ├── ballerina-logo.svg
│ │ ├── bootstrap-theme.css
│ │ ├── bootstrap.css
│ │ ├── bootstrap.js
│ │ ├── editor.css
│ │ ├── editor.js
│ │ ├── editor_002.js
│ │ ├── github.svg
│ │ ├── grammer.js
│ │ ├── jquery-3.js
│ │ ├── loader.js
│ │ ├── m.svg
│ │ ├── philosophy-01-a.png
│ │ ├── philosophy-diagrams-for-site-02.svg
│ │ ├── philosophy-diagrams-for-site-03.svg
│ │ ├── philosophy-diagrams-for-site-04.svg
│ │ ├── son4ymv.html
│ │ ├── stackoverflow.svg
│ │ └── twitter.svg
│ ├── abixTreeList.min.js
│ ├── add-monaco.js
│ ├── api-doc-template.js
│ ├── ballerina-common.js
│ ├── ballerina-form.js
│ ├── ballerina-leftnav.js
│ ├── ballerina.js
│ ├── blog-home-page.js
│ ├── bootstrap.min.js
│ ├── clipboard.js-2.0.0
│ │ └── clipboard.min.js
│ ├── download-page.js
│ ├── download
│ │ ├── archived_download.js
│ │ └── swan_lake_archived_download.js
│ ├── events.js
│ ├── handlebars
│ │ ├── 4.0.5
│ │ │ └── handlebars.js
│ │ └── 4.7.6
│ │ │ └── handlebars.js
│ ├── highlight.pack.js
│ ├── hyperlink-creator.js
│ ├── jquery-2.1.1.min.js
│ ├── jquery-3.3.1.min.js
│ ├── jquery.min.js
│ ├── jquery.validate.js
│ ├── latest-bootstrap.js
│ ├── latest-jquery.js
│ ├── lunr.js
│ ├── modernizr-2.8.3.min.js
│ ├── moment-2.22.0
│ │ └── moment.min.js
│ ├── philosophy-syntax.js
│ ├── philosophy.js
│ ├── prism-ballerina.js
│ ├── prism.js
│ ├── quick-tour.js
│ ├── readme.txt
│ ├── redirections.js
│ ├── release_notes
│ │ ├── all_release_notes.js
│ │ └── swan_lake_all_release_notes.js
│ ├── searchIndex.js
│ ├── site-search.js
│ ├── theme.js
│ └── vs
│ │ ├── base
│ │ └── worker
│ │ │ └── workerMain.js
│ │ ├── basic-languages
│ │ ├── bat
│ │ │ └── bat.js
│ │ ├── coffee
│ │ │ └── coffee.js
│ │ ├── cpp
│ │ │ └── cpp.js
│ │ ├── csharp
│ │ │ └── csharp.js
│ │ ├── csp
│ │ │ └── csp.js
│ │ ├── css
│ │ │ └── css.js
│ │ ├── dockerfile
│ │ │ └── dockerfile.js
│ │ ├── fsharp
│ │ │ └── fsharp.js
│ │ ├── go
│ │ │ └── go.js
│ │ ├── handlebars
│ │ │ └── handlebars.js
│ │ ├── html
│ │ │ └── html.js
│ │ ├── ini
│ │ │ └── ini.js
│ │ ├── java
│ │ │ └── java.js
│ │ ├── less
│ │ │ └── less.js
│ │ ├── lua
│ │ │ └── lua.js
│ │ ├── markdown
│ │ │ └── markdown.js
│ │ ├── msdax
│ │ │ └── msdax.js
│ │ ├── mysql
│ │ │ └── mysql.js
│ │ ├── objective-c
│ │ │ └── objective-c.js
│ │ ├── pgsql
│ │ │ └── pgsql.js
│ │ ├── php
│ │ │ └── php.js
│ │ ├── postiats
│ │ │ └── postiats.js
│ │ ├── powershell
│ │ │ └── powershell.js
│ │ ├── pug
│ │ │ └── pug.js
│ │ ├── python
│ │ │ └── python.js
│ │ ├── r
│ │ │ └── r.js
│ │ ├── razor
│ │ │ └── razor.js
│ │ ├── redis
│ │ │ └── redis.js
│ │ ├── redshift
│ │ │ └── redshift.js
│ │ ├── ruby
│ │ │ └── ruby.js
│ │ ├── sb
│ │ │ └── sb.js
│ │ ├── scss
│ │ │ └── scss.js
│ │ ├── solidity
│ │ │ └── solidity.js
│ │ ├── sql
│ │ │ └── sql.js
│ │ ├── swift
│ │ │ └── swift.js
│ │ ├── vb
│ │ │ └── vb.js
│ │ ├── xml
│ │ │ └── xml.js
│ │ └── yaml
│ │ │ └── yaml.js
│ │ ├── editor
│ │ ├── contrib
│ │ │ └── suggest
│ │ │ │ └── media
│ │ │ │ ├── String_16x.svg
│ │ │ │ └── String_inverse_16x.svg
│ │ ├── editor.main.css
│ │ ├── editor.main.js
│ │ ├── editor.main.nls.de.js
│ │ ├── editor.main.nls.es.js
│ │ ├── editor.main.nls.fr.js
│ │ ├── editor.main.nls.it.js
│ │ ├── editor.main.nls.ja.js
│ │ ├── editor.main.nls.js
│ │ ├── editor.main.nls.ko.js
│ │ ├── editor.main.nls.ru.js
│ │ ├── editor.main.nls.zh-cn.js
│ │ ├── editor.main.nls.zh-tw.js
│ │ └── standalone
│ │ │ └── browser
│ │ │ └── quickOpen
│ │ │ └── symbol-sprite.svg
│ │ ├── grammer.js
│ │ ├── language
│ │ ├── css
│ │ │ ├── cssMode.js
│ │ │ └── cssWorker.js
│ │ ├── html
│ │ │ ├── htmlMode.js
│ │ │ └── htmlWorker.js
│ │ ├── json
│ │ │ ├── jsonMode.js
│ │ │ └── jsonWorker.js
│ │ └── typescript
│ │ │ ├── lib
│ │ │ └── typescriptServices.js
│ │ │ ├── tsMode.js
│ │ │ └── tsWorker.js
│ │ └── loader.js
├── shiki
│ └── shiki.js
└── sitemap.xml
├── robots.txt
├── styles
└── globals.css
└── utils
├── generateRSSFeed.js
├── highlighter.js
├── prefix.js
└── rearrangeFiles.sh
/.env:
--------------------------------------------------------------------------------
1 | NEXT_PUBLIC_ALGOLIA_APP_ID=8LWM72S9RU
2 | NEXT_PUBLIC_ALGOLIA_SEARCH_API_KEY=92200f3f6f975bb54619f532b8cb3fa7
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # Lines starting with '#' are comments.
2 | # Each line is a file pattern followed by one or more owners.
3 |
4 | # See: https://help.github.com/articles/about-codeowners/
5 |
6 | # These owners will be the default owners for everything in the repo.
7 | * @MaryamZi @anupama-pathirage @sm1990
8 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/type_bug.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Bug Report"
3 | about: "Report a bug if something is not working as expected"
4 | labels: 'Type/Bug'
5 |
6 | ---
7 |
8 | **Description:**
9 |
10 |
11 | **Steps to reproduce:**
12 |
13 | **Affected Versions:**
14 |
15 | **OS, DB, other environment details and versions:**
16 |
17 | **Related Issues (optional):**
18 |
19 |
20 | **Suggested Labels (optional):**
21 |
22 |
23 | **Suggested Assignees (optional):**
24 |
25 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/type_improvement.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Improvement Request"
3 | about: "Create an improvement request for an existing feature"
4 | labels: 'Type/Improvement'
5 |
6 | ---
7 |
8 | **Description:**
9 |
10 |
11 | **Describe your problem(s)**
12 |
13 | **Describe your solution(s)**
14 |
15 | **Related Issues (optional):**
16 |
17 |
18 | **Suggested Labels (optional):**
19 |
20 |
21 | **Suggested Assignees (optional):**
22 |
23 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/type_new_feature.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "New Feature Request"
3 | about: "Create a new feature request"
4 | labels: 'Type/NewFeature'
5 |
6 | ---
7 |
8 | **Description:**
9 |
10 |
11 | **Describe your problem(s)**
12 |
13 | **Describe your solution(s)**
14 |
15 | **Related Issues (optional):**
16 |
17 |
18 | **Suggested Labels (optional):**
19 |
20 |
21 | **Suggested Assignees (optional):**
22 |
23 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/type_task.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "Task"
3 | about: "Create a task which you want to keep track"
4 | labels: 'Type/Task'
5 |
6 | ---
7 |
8 | **Description:**
9 |
10 |
11 | **Describe your task(s)**
12 |
13 | **Related Issues (optional):**
14 |
15 |
16 | **Suggested Labels (optional):**
17 |
18 |
19 | **Suggested Assignees (optional):**
20 |
21 |
--------------------------------------------------------------------------------
/.github/actions/spelling/README.md:
--------------------------------------------------------------------------------
1 | # check-spelling/check-spelling configuration
2 |
3 | File | Purpose | Format | Info
4 | -|-|-|-
5 | [dictionary.txt](dictionary.txt) | Replacement dictionary (creating this file will override the default dictionary) | one word per line | [dictionary](https://github.com/check-spelling/check-spelling/wiki/Configuration#dictionary)
6 | [allow.txt](allow.txt) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow)
7 | [reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject)
8 | [excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes)
9 | [only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only)
10 | [patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
11 | [expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect)
12 | [advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)
13 |
14 | Note: you can replace any of these files with a directory by the same name (minus the suffix)
15 | and then include multiple files inside that directory (with that suffix) to merge multiple files together.
16 |
--------------------------------------------------------------------------------
/.github/actions/spelling/advice.md:
--------------------------------------------------------------------------------
1 |
2 | If you see a bunch of garbage
3 |
4 | If it relates to a ...
5 | well-formed pattern
6 |
7 | See if there's a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it.
8 |
9 | If not, try writing one and adding it to the `patterns.txt` file.
10 |
11 | Patterns are Perl 5 Regular Expressions - you can [test](
12 | https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines.
13 |
14 | Note that patterns can't match multiline strings.
15 |
16 | binary-ish string
17 |
18 | Please add a file path to the `excludes.txt` file instead of just accepting the garbage.
19 |
20 | File paths are Perl 5 Regular Expressions - you can [test](
21 | https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
22 |
23 | `^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](
24 | ../tree/HEAD/README.md) (on whichever branch you're using).
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/.github/actions/spelling/allow.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ballerina-platform/blog/976a54e96bdc19192e4fdd8fc32d28b342f2d1d0/.github/actions/spelling/allow.txt
--------------------------------------------------------------------------------
/.github/actions/spelling/excludes.txt:
--------------------------------------------------------------------------------
1 | # See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes
2 | (?:^|/)(?i)COPYRIGHT
3 | (?:^|/)(?i)LICEN[CS]E
4 | (?:^|/)package(?:-lock|)\.json$
5 | (?:^|/)vendor/
6 | ignore$
7 | \.avi$
8 | \.ico$
9 | \.jpe?g$
10 | \.lock$
11 | \.map$
12 | \.min\.
13 | \.mod$
14 | \.mp[34]$
15 | \.png$
16 | \.wav$
17 | ^\.github/
18 |
--------------------------------------------------------------------------------
/.github/actions/spelling/expect.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ballerina-platform/blog/976a54e96bdc19192e4fdd8fc32d28b342f2d1d0/.github/actions/spelling/expect.txt
--------------------------------------------------------------------------------
/.github/actions/spelling/patterns.txt:
--------------------------------------------------------------------------------
1 | # See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns
2 |
3 | # ignore long runs of a single character:
4 | \b([A-Za-z])\g{-1}{3,}\b
5 |
--------------------------------------------------------------------------------
/.github/actions/spelling/reject.txt:
--------------------------------------------------------------------------------
1 | ^attache$
2 | benefitting
3 | occurence
4 | Sorce
5 | ^[Ss]pae
6 | ^untill
7 | ^wether
8 |
--------------------------------------------------------------------------------
/.github/workflows/prod_sync.yml:
--------------------------------------------------------------------------------
1 | name: Deploy Nextjs app to gh-pages
2 |
3 | on:
4 | workflow_dispatch:
5 | inputs:
6 | source_branch:
7 | description: blog repo branch
8 | required: true
9 | default: master
10 |
11 | jobs:
12 | build:
13 | runs-on: ubuntu-latest
14 | env:
15 | NEXT_PUBLIC_BASE_PATH: ""
16 | GITHUB_TOKEN: ${{ secrets.WEBSITE_TOKEN }}
17 | strategy:
18 | matrix:
19 | node-version: [16.x]
20 |
21 | steps:
22 | - name: Checkout code
23 | uses: actions/checkout@v3
24 | with:
25 | ref: ${{ github.event.inputs.source_branch }}
26 |
27 | - name: Use Node.js ${{ matrix.node-version }}
28 | uses: actions/setup-node@v3
29 | with:
30 | node-version: ${{ matrix.node-version }}
31 |
32 | - name: Install dependencies
33 | run: npm ci
34 |
35 | - name: Build project
36 | run: npm run build
37 |
38 | - name: Checkout gh-pages
39 | run: |
40 | mkdir gh-pages
41 | cd gh-pages
42 | git init
43 | git remote add origin https://ballerina-bot:$GITHUB_TOKEN@github.com/ballerina-platform/blog.git
44 | git fetch origin
45 | git checkout -b deploy-website-$GITHUB_SHA origin/gh-pages
46 |
47 | - name: Export static files
48 | run: npm run export
49 |
50 | - name: Add .nojekyll file
51 | run: touch out/.nojekyll
52 |
53 | - name: Rearrange files to match the urls
54 | run: |
55 | chmod +x utils/rearrangeFiles.sh
56 | utils/rearrangeFiles.sh
57 | shell: bash
58 |
59 | - name: Deploy
60 | run: |
61 | cp -r .github CNAME robots.txt gh-pages/.git utils out
62 | cd out
63 | git config --global user.email "ballerina-bot@ballerina.org"
64 | git config --global user.name "ballerina-bot"
65 | git add .
66 | git commit --allow-empty -m 'Deploy website'
67 | git push origin deploy-website-$GITHUB_SHA
68 | echo 'Successfully pushed to deploy-website-$GITHUB_SHA branch'
69 |
70 | - name: Create pull request for new site
71 | shell: bash
72 | run: |
73 | cd out
74 | curl -fsSL https://github.com/github/hub/raw/master/script/get | bash -s 2.14.1
75 | bin/hub pull-request -b gh-pages -m '[Automated] Deploy website'
76 | env:
77 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
78 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | **/node_modules
5 | /.pnp
6 | .pnp.js
7 | .github/scripts/bbe/package-lock.json
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 | .pnpm-debug.log*
28 |
29 | # local env files
30 | .env.local
31 | .env.development.local
32 | .env.test.local
33 | .env.production.local
34 |
35 | # vercel
36 | .vercel
37 |
38 | #folders
39 | .github/scripts/bal_proposals_bot/target/
40 |
--------------------------------------------------------------------------------
/CNAME:
--------------------------------------------------------------------------------
1 | blog.ballerina.io
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
2 |
3 | ## Run website locally
4 |
5 | First, execute the following command to install necessary packages
6 |
7 | ```bash
8 | npm install
9 | ```
10 |
11 | Execute the following command to run the development server:
12 |
13 | ```bash
14 | npm run dev
15 | ```
16 |
17 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
18 |
19 |
20 | ## Learn More
21 |
22 | To learn more about Next.js, take a look at the following resources:
23 |
24 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
--------------------------------------------------------------------------------
/_posts/2020-01-02-ballerina-1.1.0-released.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: blog-post
3 | title: Ballerina 1.1.0 released!
4 | author: Sameera Jayasoma
5 | published-date: 02 Jan 2020
6 | status: Published
7 | abstract: This blog outlines the improvements and feature additions to the Ballerina language introduced in the 1.1.0 release.
8 | socialmediaimage: nihal-demirci-dVtnD1aV2QU-unsplash.jpg
9 | permalink: /posts/ballerina-1.1.0-released/
10 |
11 | ---
12 |
13 | We’re glad to announce the release of Ballerina 1.1.0 today. You can download it [here](https://ballerina.io/downloads/). There are significant improvements to the developer tooling, standard library modules, compiler, and runtime.
14 |
15 | The following are some feature additions and improvements:
16 | - The Ballerina tool — a command-line utility that manages Ballerina source code — now helps to keep your Ballerina installation up to date with the latest patch and minor releases. With 1.1.0, you can now install, update, and easily switch among Ballerina distributions. Read [how to keep Ballerina up to date](https://ballerina.io/learn/how-to-keep-ballerina-up-to-date/) for more details.
17 | - An enhanced IDE experience for decent-sized Ballerina projects. We’ve optimized the Ballerina language server and the compiler front-end by introducing caches at various levels to avoid repeatedly building untouched code. Moreover, these optimizations significantly reduce the response time for language intelligence features such as diagnostics and code completion in both VSCode and IntelliJ plugins.
18 | - Code navigation capability is now available in both the VSCode and the IntelliJ plugins. A function, method, constant, or type definition anywhere in your Ballerina project is a jump away.
19 | - The gRPC and WebSocket services and clients are now observable by default. This capability was only available in HTTP/HTTPS and SQL connectors in 1.0.0. The NATS connector has also been improved with observability support.
20 | - We have improved the runtime performance of Ballerina programs with an optimized runtime type checker and by introducing significant changes to Ballerina values such as maps, arrays, and records.
21 | - The Ballerina 1.1.0 release is based on the [2019R3](https://ballerina.io/spec/lang/2019R3/) language spec. We’ve closed many deviations from this spec that were in Ballerina 1.0.0. Some of you may come across errors when compiling your code (written with 1.0.x versions) with Ballerina 1.1.0, but they are minor changes.
22 |
23 | If you’d like to see a more detailed list of changes, you can check out the [Ballerina 1.1.0 release note](https://ballerina.io/downloads/release-notes/#110notes).
24 |
25 | Your contribution helps! If you see any problems or future improvements in the language, don’t hesitate to [file an issue](https://github.com/ballerina-platform/ballerina-lang/issues). We are grateful to all those who contributed, by writing code or documentation, reporting issues, or giving feedback.
26 |
27 | Happy coding!
28 |
--------------------------------------------------------------------------------
/_posts/2021-12-23-ballerina-log4shell-vulnerability-community-update.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: blog-post
3 | title: Ballerina community update - the Log4j Log4Shell vulnerability
4 | author: Ballerina Team
5 | published-date: 23 December 2021
6 | status: Published
7 | socialmediaimage: SwanLake-04.jpeg
8 | permalink: /posts/ballerina-log4shell-vulnerability-community-update/
9 | ---
10 |
11 |
12 |
13 | >**TL;DR:** Ballerina and Ballerina Central are NOT affected by the "Log4Shell” (CVE-2021-44228) vulnerability as they DO NOT use any Log4j libraries.
14 |
15 | Apache Log4j is part of the Apache Logging Services project, which is owned by the Apache Software Foundation. It’s one of the most popular Java-based logging frameworks, which is currently being used by many commercial and open-source software.
16 |
17 | Recently, the Apache Software Foundation announced the “Log4Shell” vulnerability, which is now published as [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228). With Log4Shell, Log4j can be instructed to perform a JNDI lookup by an attacker, who can control log messages or log message parameters when message lookup substitution is enabled. Both LDAP and RMI JNDI service implementations return a serialized Java object that can lead to a Java deserialization attack, thereby allowing arbitrary code execution on the recipient server or disclosure of sensitive information. The vulnerability is particularly dangerous because of how widely implemented the Log4j library is. For more information on this, see [Apache Log4j Security Vulnerabilities](https://logging.apache.org/log4j/2.x/security.html).
18 |
19 | Ballerina is not affected by this vulnerability because Ballerina’s logging setup uses java.utils.logging and does not use Log4j. Furthermore, all official packages, i.e., all ballerina, ballarinax, choreo and wso2 packages, and other packages that are currently available in [Ballerina Central](https://central.ballerina.io/) also do not use Log4j libraries. Therefore, we would like to assure all Ballerina users that applications written in Ballerina cannot be compromised by the Log4Shell vulnerability unless you have used third-party libraries that do use Log4j. To check if you have any third-party libraries that use Log4j, run [this script](https://github.com/CERTCC/CVE-2021-44228_scanner) against the target directory of your Ballerina application or package.
20 |
21 | Please be assured that we are rigorously and regularly scanning our systems against all reported vulnerabilities, as we always do.
22 |
--------------------------------------------------------------------------------
/_posts/2022-09-21-ballerina-is-moving-from-slack-to-discord.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: blog-post
3 | title: Ballerina is moving from Slack to Discord
4 | author: Ballerina Team
5 | published-date: 21 September 2022
6 | status: Published
7 | socialmediaimage: ballerina-generic-social-media-image-2023.png
8 | permalink: /posts/2022-09-21-ballerina-is-moving-from-slack-to-discord/
9 | ---
10 |
11 |
12 |
13 | We will be moving from Slack to [Discord](https://discord.com/invite/wAJYFbMrG2){:target="_blank"} from October 1, 2022. Our Slack community has grown to over 1,500 users, and we are excited to have them meet our 1000+ users who are currently on Discord! Join the [Ballerina Discord server](https://discord.com/invite/wAJYFbMrG2){:target="_blank"}.
14 |
15 | We love Slack, but it's not built for large online communities. It lacks moderation features such as spam filtering, complete message histories, unlimited file sharing, and more. This makes sense after all as Slack was built mainly for corporate teams.
16 |
17 | [Discord](https://discord.com/invite/wAJYFbMrG2){:target="_blank"}, on the other hand, was built specifically for large online communities. Many large communities, including development communities like Reactiflux, Python, and Java have already moved to Discord. It allows an unlimited number of users, unlimited file uploads (with a per-file size limit), unlimited message histories, and great moderation and spam filtering features. Discord also includes voice and video chat, which will give our users a more immersive community experience.
18 |
19 | The whole idea is to deliver a better experience for our community members and we feel Discord will be the ideal solution to deliver that.
20 |
21 | We will continue to keep Slack active in the interim and ensure a smooth migration and in the meantime, all Ballerina team members and mods will be waiting for you on Discord from October 1, 2022.
22 |
23 | We look forward to seeing you as part of our new community. Join the [Ballerina’s Discord server](https://discord.com/invite/wAJYFbMrG2){:target="_blank"} today!
24 |
25 | Cheers,
26 | The Ballerina Team
--------------------------------------------------------------------------------
/components/common/meta/Meta.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2023, WSO2 LLC (http://www.wso2.com) All Rights Reserved.
3 | *
4 | * WSO2 LLC licenses this file to you under the Apache License,
5 | * Version 2.0 (the "License"); you may not use this file except
6 | * in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing,
12 | * software distributed under the License is distributed on an
13 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | * KIND, either express or implied. See the License for the
15 | * specific language governing permissions and limitations
16 | * under the License.
17 | */
18 |
19 | import * as React from 'react';
20 | import Head from 'next/head';
21 |
22 | const Meta = () => {
23 | return (
24 |
25 |
26 |
27 |
28 | );
29 | };
30 |
31 | export default Meta;
32 |
--------------------------------------------------------------------------------
/components/common/search/search-box/SearchBox.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2023, WSO2 LLC (http://www.wso2.com) All Rights Reserved.
3 | *
4 | * WSO2 LLC licenses this file to you under the Apache License,
5 | * Version 2.0 (the "License"); you may not use this file except
6 | * in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing,
12 | * software distributed under the License is distributed on an
13 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | * KIND, either express or implied. See the License for the
15 | * specific language governing permissions and limitations
16 | * under the License.
17 | */
18 |
19 | // import connectSearchBox
20 | import { connectSearchBox } from "react-instantsearch-dom";
21 | import styles from './SearchBox.module.css';
22 |
23 | function SearchBox({ refine }) {
24 | return (
25 | <>
26 | refine(e.currentTarget.value)}
31 | className={styles.searchBox}
32 | autoFocus
33 | />
34 | >
35 | )
36 | }
37 |
38 | export default connectSearchBox(SearchBox)
--------------------------------------------------------------------------------
/components/common/search/search-box/SearchBox.module.css:
--------------------------------------------------------------------------------
1 | .searchBox {
2 | width: 100%;
3 | border-radius: none;
4 | border: 2px solid #20b6b0;
5 | font-size: 1.2em;
6 | height: 56px;
7 | outline: none;
8 | margin-bottom: 10px;
9 | }
10 |
11 | .searchBox:focus {
12 | border-radius: none;
13 | border: 2px solid #20b6b0;
14 | }
--------------------------------------------------------------------------------
/components/common/search/search-hits/SearchHits.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2023, WSO2 LLC (http://www.wso2.com) All Rights Reserved.
3 | *
4 | * WSO2 LLC licenses this file to you under the Apache License,
5 | * Version 2.0 (the "License"); you may not use this file except
6 | * in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing,
12 | * software distributed under the License is distributed on an
13 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 | * KIND, either express or implied. See the License for the
15 | * specific language governing permissions and limitations
16 | * under the License.
17 | */
18 |
19 | import { connectStateResults } from "react-instantsearch-dom";
20 |
21 | import styles from './SearchHits.module.css';
22 |
23 | function SearchHits({ searchState, searchResults }) {
24 | const validQuery = searchState.query?.length >= 3 // 3 is the minimum query length
25 |
26 | return (
27 | <>
28 | {searchResults?.hits.length === 0 && validQuery && (
29 |