cl-orm 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/.editorconfig +12 -0
  2. package/.gitattributes +1 -0
  3. package/.prettierignore +3 -0
  4. package/.prettierrc +34 -0
  5. package/.vscode/settings.json +14 -0
  6. package/README.md +105 -0
  7. package/mcr.config.ts +12 -0
  8. package/package.json +30 -0
  9. package/src/drivers/_utils.ts +31 -0
  10. package/src/drivers/d1.ts +70 -0
  11. package/src/drivers/do.ts +81 -0
  12. package/src/index.ts +13 -0
  13. package/src/queries/_utils.ts +10 -0
  14. package/src/queries/delete.ts +26 -0
  15. package/src/queries/insert.ts +22 -0
  16. package/src/queries/select.ts +64 -0
  17. package/src/queries/update.ts +28 -0
  18. package/src/queries/where/operators.ts +96 -0
  19. package/src/queries/where/where.ts +50 -0
  20. package/src/types.ts +76 -0
  21. package/test/__fixtures__/d1/worker.ts +70 -0
  22. package/test/__fixtures__/d1/wrangler.jsonc +13 -0
  23. package/test/__fixtures__/do/worker.ts +106 -0
  24. package/test/__fixtures__/do/wrangler.jsonc +20 -0
  25. package/test/e2e/d1.test.ts +113 -0
  26. package/test/e2e/do.test.ts +116 -0
  27. package/test/unit/buildDelete.test.ts +36 -0
  28. package/test/unit/buildInsert.test.ts +36 -0
  29. package/test/unit/buildSelect.test.ts +137 -0
  30. package/test/unit/buildUpdate.test.ts +34 -0
  31. package/test/unit/buildWhere.test.ts +249 -0
  32. package/test/unit/operators.test.ts +98 -0
  33. package/test/unit/prepare.test.ts +22 -0
  34. package/test/unit/quoteIdentifier.test.ts +12 -0
  35. package/test/unit/returnsRows.test.ts +41 -0
  36. package/test/unit/setMeta.test.ts +31 -0
  37. package/tsconfig.build.json +4 -0
  38. package/tsconfig.json +34 -0
  39. package/website/.prettierignore +4 -0
  40. package/website/.prettierrc +34 -0
  41. package/website/README.md +3 -0
  42. package/website/docs/documentation/connection.mdx +123 -0
  43. package/website/docs/documentation/queries/_category_.json +7 -0
  44. package/website/docs/documentation/queries/delete.mdx +51 -0
  45. package/website/docs/documentation/queries/insert.mdx +63 -0
  46. package/website/docs/documentation/queries/operators/_category_.json +7 -0
  47. package/website/docs/documentation/queries/operators/between.mdx +17 -0
  48. package/website/docs/documentation/queries/operators/eq.mdx +22 -0
  49. package/website/docs/documentation/queries/operators/gt.mdx +22 -0
  50. package/website/docs/documentation/queries/operators/gte.mdx +22 -0
  51. package/website/docs/documentation/queries/operators/in.mdx +28 -0
  52. package/website/docs/documentation/queries/operators/is-not-null.mdx +22 -0
  53. package/website/docs/documentation/queries/operators/is-null.mdx +22 -0
  54. package/website/docs/documentation/queries/operators/like.mdx +27 -0
  55. package/website/docs/documentation/queries/operators/lt.mdx +22 -0
  56. package/website/docs/documentation/queries/operators/lte.mdx +22 -0
  57. package/website/docs/documentation/queries/operators/ne.mdx +22 -0
  58. package/website/docs/documentation/queries/operators/not-between.mdx +17 -0
  59. package/website/docs/documentation/queries/operators/not-like.mdx +27 -0
  60. package/website/docs/documentation/queries/operators/notIn.mdx +28 -0
  61. package/website/docs/documentation/queries/select.mdx +294 -0
  62. package/website/docs/documentation/queries/update.mdx +61 -0
  63. package/website/docs/documentation/queries/where.mdx +176 -0
  64. package/website/docs/index.mdx +228 -0
  65. package/website/docusaurus.config.ts +82 -0
  66. package/website/package-lock.json +21348 -0
  67. package/website/package.json +59 -0
  68. package/website/plugins/locale.ts +16 -0
  69. package/website/sidebars.ts +18 -0
  70. package/website/src/components/FAQ.tsx +35 -0
  71. package/website/src/components/Loading.tsx +4 -0
  72. package/website/src/components/PageTitle.tsx +29 -0
  73. package/website/src/css/_faq.scss +39 -0
  74. package/website/src/css/_loading.scss +43 -0
  75. package/website/src/css/_mixins.scss +19 -0
  76. package/website/src/css/custom.scss +149 -0
  77. package/website/src/pages/index.tsx +17 -0
  78. package/website/static/.nojekyll +0 -0
  79. package/website/static/img/favicon.svg +1 -0
  80. package/website/test/unit/check-extensions.test.ts +48 -0
  81. package/website/tsconfig.json +14 -0
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "website",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "docusaurus": "docusaurus",
7
+ "start": "docusaurus start",
8
+ "build": "docusaurus build",
9
+ "swizzle": "docusaurus swizzle",
10
+ "clear": "docusaurus clear",
11
+ "serve": "docusaurus serve",
12
+ "write-translations": "docusaurus write-translations",
13
+ "write-heading-ids": "docusaurus write-heading-ids",
14
+ "typecheck": "tsc",
15
+ "lint": "prettier --check .",
16
+ "lint:fix": "prettier --write .",
17
+ "test:unit": "poku -p test",
18
+ "test": "npm run typecheck && npm run lint && npm run test:unit && npm run clear && npm run build",
19
+ "update": "pu && npm i && npm update && (npm audit fix || true)"
20
+ },
21
+ "devDependencies": {
22
+ "@docusaurus/core": "^3.9.2",
23
+ "@docusaurus/module-type-aliases": "^3.9.2",
24
+ "@docusaurus/preset-classic": "^3.9.2",
25
+ "@docusaurus/tsconfig": "^3.9.2",
26
+ "@docusaurus/types": "^3.9.2",
27
+ "@easyops-cn/docusaurus-search-local": "^0.52.3",
28
+ "@ianvs/prettier-plugin-sort-imports": "^4.7.0",
29
+ "@mdx-js/react": "^3.1.1",
30
+ "@types/node": "^25.1.0",
31
+ "clsx": "^2.1.1",
32
+ "docusaurus-plugin-sass": "^0.2.6",
33
+ "lucide-react": "^0.563.0",
34
+ "packages-update": "^2.0.0",
35
+ "poku": "^3.0.3-canary.13a996a9",
36
+ "prettier": "^3.8.1",
37
+ "prism-react-renderer": "^2.4.1",
38
+ "react": "^19.2.4",
39
+ "react-dom": "^19.2.4",
40
+ "sass": "^1.97.3",
41
+ "tsx": "^4.21.0",
42
+ "typescript": "^5.9.3"
43
+ },
44
+ "browserslist": {
45
+ "production": [
46
+ ">0.5%",
47
+ "not dead",
48
+ "not op_mini all"
49
+ ],
50
+ "development": [
51
+ "last 3 chrome version",
52
+ "last 3 firefox version",
53
+ "last 5 safari version"
54
+ ]
55
+ },
56
+ "engines": {
57
+ "node": ">=18.0"
58
+ }
59
+ }
@@ -0,0 +1,16 @@
1
+ import type { Plugin } from '@docusaurus/types';
2
+
3
+ export const navbarLocalePlugin = (): Plugin => ({
4
+ name: 'navbar-locale-plugin',
5
+ contentLoaded({ actions }) {
6
+ const { setGlobalData } = actions;
7
+ setGlobalData({ currentLocale: process.env.LOCALE });
8
+ },
9
+ });
10
+
11
+ export const useLocale =
12
+ typeof process.env?.LOCALE === 'string' &&
13
+ process.env.LOCALE.trim().length > 0;
14
+
15
+ export const getLocaleURL = (): string =>
16
+ useLocale ? `/${process.env.LOCALE}/docs` : '/docs';
@@ -0,0 +1,18 @@
1
+ import type { SidebarsConfig } from '@docusaurus/plugin-content-docs';
2
+
3
+ const sidebars: SidebarsConfig = {
4
+ docs: [
5
+ 'index',
6
+ {
7
+ type: 'category',
8
+ label: 'Documentation',
9
+ collapsed: false,
10
+ link: {
11
+ type: 'generated-index',
12
+ },
13
+ items: [{ type: 'autogenerated', dirName: 'documentation' }],
14
+ },
15
+ ],
16
+ };
17
+
18
+ export default sidebars;
@@ -0,0 +1,35 @@
1
+ import type { FC, ReactNode } from 'react';
2
+ import Details from '@theme/Details';
3
+
4
+ export type FAQProps = {
5
+ children: ReactNode;
6
+ open?: boolean;
7
+ title: string;
8
+ };
9
+
10
+ /**
11
+ * Usage example:
12
+ *
13
+ * ```mdx
14
+ * <FAQ title='Title'>
15
+ *
16
+ * > Some markdown (**MDX**) content.
17
+ *
18
+ * </FAQ>
19
+ * ```
20
+ */
21
+ export const FAQ: FC<FAQProps> = ({ children, open, title }) => {
22
+ return (
23
+ <Details
24
+ open={open}
25
+ className='faq'
26
+ summary={
27
+ <summary>
28
+ <strong>{title}</strong>
29
+ </summary>
30
+ }
31
+ >
32
+ <section>{children}</section>
33
+ </Details>
34
+ );
35
+ };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Credits: https://cssloaders.github.io/
3
+ */
4
+ export const Loading = () => <span className='loader'></span>;
@@ -0,0 +1,29 @@
1
+ import Head from '@docusaurus/Head';
2
+ import { FC } from 'react';
3
+
4
+ export type PageTitleProps = {
5
+ title: string;
6
+ };
7
+
8
+ /**
9
+ * **Force a custom Tab Title:** this component sets a specific title for the browser tab.
10
+ *
11
+ * Use it to override the default title derived from the document or page content.
12
+ *
13
+ * ℹ️ Ideal for situations where the tab title needs to be different from the page's main heading or `.mdx` title.
14
+ *
15
+ * ---
16
+ *
17
+ * **Usage:**
18
+ *
19
+ * ```tsx
20
+ * <PageTitle title='Custom Browser Tab Title' />
21
+ * ```
22
+ */
23
+ export const PageTitle: FC<PageTitleProps> = ({ title }) => {
24
+ return (
25
+ <Head>
26
+ <title>{title}</title>
27
+ </Head>
28
+ );
29
+ };
@@ -0,0 +1,39 @@
1
+ details {
2
+ &.faq {
3
+ background-color: var(--faq-background);
4
+ border-color: var(--faq-border-color);
5
+
6
+ pre {
7
+ code {
8
+ border: 0.0625rem solid var(--faq-code-border-color);
9
+ }
10
+ }
11
+ }
12
+ }
13
+
14
+ [data-theme='light'] {
15
+ details {
16
+ &.faq {
17
+ --docusaurus-details-decoration-color: var(--ifm-color-primary);
18
+ --faq-background: #f8fcff;
19
+ --faq-border-color: var(--ifm-color-primary);
20
+ --faq-code-border-color: #add2eb;
21
+
22
+ code[class*='language-'],
23
+ pre[class*='language-'] {
24
+ background-color: #fbfdff !important;
25
+ }
26
+ }
27
+ }
28
+ }
29
+
30
+ [data-theme='dark'] {
31
+ details {
32
+ &.faq {
33
+ --docusaurus-details-decoration-color: #7230d6;
34
+ --faq-background: #151518;
35
+ --faq-border-color: #36284b;
36
+ --faq-code-border-color: #38225a;
37
+ }
38
+ }
39
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Credits: https://cssloaders.github.io/
3
+ */
4
+
5
+ .loader {
6
+ width: 0.8rem;
7
+ height: 0.8rem;
8
+ border-radius: 50%;
9
+ display: block;
10
+ margin: 2.375rem 1.1875rem;
11
+ position: relative;
12
+ color: var(--ifm-color-primary-lightest);
13
+ box-sizing: border-box;
14
+ animation: animloader 1s linear infinite alternate;
15
+ transform: scale(0.5);
16
+ }
17
+
18
+ @keyframes animloader {
19
+ 0% {
20
+ box-shadow:
21
+ -2.375rem -0.35rem,
22
+ -0.875rem 0.35rem,
23
+ 0.875rem -0.35rem;
24
+ }
25
+ 33% {
26
+ box-shadow:
27
+ -2.375rem 0.35rem,
28
+ -0.875rem -0.35rem,
29
+ 0.875rem 0.35rem;
30
+ }
31
+ 66% {
32
+ box-shadow:
33
+ -2.375rem -0.35rem,
34
+ -0.875rem 0.35rem,
35
+ 0.875rem -0.35rem;
36
+ }
37
+ 100% {
38
+ box-shadow:
39
+ -2.375rem 0.35rem,
40
+ -0.875rem -0.35rem,
41
+ 0.875rem 0.35rem;
42
+ }
43
+ }
@@ -0,0 +1,19 @@
1
+ @mixin flex($direction: unset, $align: unset, $justify: unset, $wrap: unset) {
2
+ display: flex;
3
+
4
+ @if ($direction != unset) {
5
+ flex-direction: $direction;
6
+ }
7
+
8
+ @if ($align != unset) {
9
+ align-items: $align;
10
+ }
11
+
12
+ @if ($justify != unset) {
13
+ justify-content: $justify;
14
+ }
15
+
16
+ @if ($wrap != unset) {
17
+ flex-wrap: $wrap;
18
+ }
19
+ }
@@ -0,0 +1,149 @@
1
+ @use 'mixins' as *;
2
+ @use './loading';
3
+ @use './faq';
4
+
5
+ :root {
6
+ --ifm-color-primary: #7a77ff;
7
+ --ifm-color-primary-dark: #5552ff;
8
+ --ifm-color-primary-darker: #433fff;
9
+ --ifm-color-primary-darkest: #0c07ff;
10
+ --ifm-color-primary-light: #9f9cff;
11
+ --ifm-color-primary-lighter: #b1afff;
12
+ --ifm-color-primary-lightest: #b1afff;
13
+ --docusaurus-highlighted-code-line-bg: #0c0d152b;
14
+ --ifm-table-stripe-background: #5e30a0 !important;
15
+ --ifm-table-background: transparent !important;
16
+ }
17
+
18
+ [data-theme='light'] {
19
+ background-color: #f0f0fb;
20
+ color: #2c3462;
21
+
22
+ blockquote {
23
+ color: #7573a4;
24
+ font-size: 0.95rem;
25
+ }
26
+
27
+ .navbar.navbar--fixed-top {
28
+ background-color: #d4d4ff;
29
+ }
30
+
31
+ aside {
32
+ .menu {
33
+ background-color: #e9e9ff;
34
+ }
35
+ }
36
+
37
+ table {
38
+ thead {
39
+ background-color: #e3e3f1;
40
+ }
41
+
42
+ tbody {
43
+ tr:nth-child(2n) {
44
+ background-color: #ededf7;
45
+ }
46
+
47
+ td {
48
+ svg {
49
+ stroke: var(--ifm-color-primary);
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
55
+
56
+ .theme-code-block-highlighted-line {
57
+ opacity: 0.35;
58
+ font-style: italic;
59
+ font-size: 0.8rem;
60
+ background-color: unset !important;
61
+ }
62
+
63
+ p,
64
+ ul li {
65
+ svg {
66
+ stroke: var(--ifm-color-primary);
67
+
68
+ &.warn {
69
+ stroke: #e4346c;
70
+ }
71
+ }
72
+ }
73
+
74
+ code[class*='language-'],
75
+ pre[class*='language-'] {
76
+ font-size: 0.85em;
77
+
78
+ .token {
79
+ &.comment {
80
+ font-size: 0.9em;
81
+ font-style: normal !important;
82
+ }
83
+ }
84
+ }
85
+
86
+ .navbar__brand {
87
+ margin-right: 0;
88
+ }
89
+
90
+ .navbar__manual--title {
91
+ padding: 0;
92
+ margin-right: 1rem;
93
+ font-weight: bold;
94
+ color: #403ca3;
95
+ }
96
+
97
+ .navbar.navbar--fixed-top {
98
+ .navbar__item.dropdown.dropdown--hoverable {
99
+ svg {
100
+ display: none;
101
+ }
102
+ }
103
+ }
104
+
105
+ .navbar__logo {
106
+ width: 1.2rem;
107
+ height: 1.2rem;
108
+ }
109
+
110
+ .title-section {
111
+ @include flex(row, flex-start, space-between);
112
+ gap: 2.5rem;
113
+ }
114
+
115
+ .header-github-link {
116
+ width: 32px;
117
+ height: 32px;
118
+ padding: 6px;
119
+ margin-right: 4px;
120
+ border-radius: 50%;
121
+ transition: background var(--ifm-transition-fast);
122
+ }
123
+
124
+ .header-github-link:hover {
125
+ background: var(--ifm-color-emphasis-200);
126
+ }
127
+
128
+ .header-github-link:before {
129
+ content: '';
130
+ height: 100%;
131
+ display: block;
132
+ background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23403ca3' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")
133
+ no-repeat;
134
+ }
135
+
136
+ html[data-theme='dark'] {
137
+ .navbar__manual--title {
138
+ color: #b4b3ff;
139
+
140
+ &:hover {
141
+ color: var(--ifm-color-primary);
142
+ }
143
+ }
144
+
145
+ .header-github-link:before {
146
+ background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")
147
+ no-repeat;
148
+ }
149
+ }
@@ -0,0 +1,17 @@
1
+ import { Redirect } from '@docusaurus/router';
2
+ import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
3
+
4
+ function Home() {
5
+ const { i18n, siteConfig } = useDocusaurusContext();
6
+ const { baseUrl } = siteConfig;
7
+ const currentLocale = i18n.currentLocale;
8
+ const setLocaleRedirectMap = () =>
9
+ currentLocale === 'en' || baseUrl.includes(currentLocale)
10
+ ? `${baseUrl}docs`
11
+ : `${baseUrl}${currentLocale}/docs`;
12
+ const redirectUrl = setLocaleRedirectMap();
13
+
14
+ return <Redirect to={redirectUrl} />;
15
+ }
16
+
17
+ export default Home;
File without changes
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M25.63 189.17c-.13-13.99.4-27.94 4.44-41.45 5.62-18.81 16.92-33.76 32.43-45.51 13.35-10.11 28.65-17 43.19-25.14 35.66-19.97 71.43-39.73 107.26-59.39 29.02-15.92 58.54-16.79 87.77-.91 46.2 25.09 92.22 50.51 138.15 76.09 20.49 11.41 35.8 27.79 44.4 49.93 4.75 12.22 5.78 25.04 5.95 37.99.04 2.96.17 5.91.25 8.87-1.39.44-1-.67-1.2-1.33-3.06-9.91-8.61-17.98-18.07-22.64-12.15-5.99-24.62-5.31-36.51.45-19.94 9.66-38.92 21.17-58.36 31.78-22.88 12.48-45.56 25.32-68.38 37.91-11.76 6.49-22.56 14-30.43 25.23-8.82 12.58-13.84 26.56-16.13 41.64-1.19.24-1.19 2.17-2.94 1.95-.37-1.39-.9-2.77-1.09-4.2-1.15-8.49-4.14-16.44-7.58-24.18-2.49-5.6-5.81-10.81-9.69-15.58-7.21-8.85-15.17-16.9-25.29-22.49-14.87-8.23-29.57-16.8-44.7-24.54-10.53-5.39-20.29-12.06-30.87-17.3-6.11-3.03-12.23-6.07-18.18-9.4-13.08-7.31-26.06-14.81-39.51-21.46-8.66-4.28-17.8-4.85-26.98-2.99-12.14 2.47-20.45 9.89-24.95 21.47-.74 1.9-1.7 3.65-3 5.21Zm232.16-40.25c5.4.17 11.32-.45 16.74-3 9.59-4.5 16.52-11.68 16.92-22.66.36-9.76-5.41-16.89-13.86-21.05-14.34-7.06-29.07-6.56-42.89 1.17-14.19 7.94-15.7 25.99-3.61 36.88 7.37 6.64 16.47 8.62 26.7 8.65Z" style="fill:#fdfdfd"/><path d="M25.63 189.17c1.31-1.56 2.27-3.32 3-5.21 4.5-11.58 12.81-19 24.95-21.47 9.18-1.87 18.32-1.29 26.98 2.99 13.45 6.65 26.42 14.14 39.51 21.46 5.95 3.33 12.06 6.38 18.18 9.4 10.59 5.24 20.34 11.91 30.87 17.3 15.12 7.74 29.82 16.31 44.7 24.54 10.12 5.6 18.08 13.64 25.29 22.49 3.88 4.77 7.21 9.98 9.69 15.58 3.44 7.74 6.42 15.68 7.58 24.18.19 1.43.72 2.82 1.09 4.2 1.74.22 1.74-1.71 2.94-1.95-.22 4.82-.62 9.63-.63 14.45-.06 31.45-.02 62.89-.05 94.34 0 8.49.41 17.02-1.41 25.42-.24 7.29-1.83 14.34-4.37 21.12-5.59 14.95-14.86 26.22-31.22 30.04-8.6 2.01-17.02.95-25.36-1.51-4.08-2-8.25-3.86-12.24-6.04-24.17-13.19-48.45-26.17-72.39-39.77-18.05-10.25-37.49-18.28-53.26-32.31-3.22-3.57-6.44-7.14-9.66-10.7-2.52-4.11-6.38-7.28-8.29-11.82-.43-.96-.5-2.18-1.77-2.57-2.27-6.61-5.64-12.75-7.88-19.39-5.28-15.67-5.79-31.8-5.69-48.13.22-36.85.04-73.71-.04-110.56-.01-5.36-.34-10.73-.52-16.09Zm140.21 211.11c-1.96 19.82 16.89 39.61 29.73 43.52 14.06 4.28 24.46-3.66 24.58-18.22.08-9.64-3.57-18.06-8.68-25.92-6.05-9.3-14.17-16.13-25.08-18.95-7.83-2.03-15.22 1.9-18.45 9.3-1.52 3.49-2.1 7.18-2.1 10.27M57.86 230.3c0 12.56 5.99 21.98 13.5 30.62 4.87 5.61 10.49 10.36 17.94 12.34 9.83 2.61 17.99-.86 21.41-9.27 2.02-4.98 2.48-10.18 1.22-15.41-4.08-17-13.09-30.3-29.68-37.13-11.65-4.8-21.69 1.31-23.75 13.74-.31 1.85-.47 3.71-.65 5.11Z" style="fill:#deddff"/><path d="M258.32 436.88c1.82-8.4 1.4-16.92 1.41-25.42.03-31.45 0-62.89.05-94.34 0-4.82.41-9.63.63-14.45 2.28-15.08 7.3-29.06 16.13-41.64 7.87-11.22 18.67-18.74 30.43-25.23 22.82-12.59 45.5-25.43 68.38-37.91 19.45-10.61 38.42-22.12 58.36-31.78 11.89-5.76 24.36-6.45 36.51-.45 9.45 4.66 15 12.74 18.07 22.64.2.66-.18 1.77 1.2 1.33-.04 8.58-.13 17.15-.12 25.73.01 18.96.04 37.91.12 56.87.09 22.32.38 44.64-.36 66.96-.38 11.3-4.14 21.81-8.32 32.16-1.21 2.98-2.41 5.97-3.61 8.96-.97.07-1.53.65-1.85 1.51-.06.25-.09.51-.08.78l.02-.02c-2.88 3.46-5.15 7.32-7.35 11.23l-13.65 15.33c-9.51 8.43-20.47 14.62-31.55 20.68-20.84 11.4-41.58 22.97-62.38 34.43-13.6 7.49-27.25 14.91-40.88 22.36-.52.12-1.06.2-1.57.35-25.03 7.5-48.52-5.35-55.44-30.56-1.76-6.4-2.77-13.01-4.12-19.53Zm91.73-34.62c0-1.21.09-2.43-.01-3.63-1.12-13.55-10.09-20.58-22.2-17.6-16.24 4-34.78 27.43-30.68 49.74 2 10.89 9.89 15.48 20.84 13.38 10.35-1.99 16.83-9.13 22.91-16.69 5.84-7.28 9.22-15.67 9.15-25.19Zm54.39-82.89c-.07-1.61-.1-3.23-.23-4.84-.74-9.07-7.18-15.92-15.74-16.55-4.41-.32-8.64.82-12.31 3.16-15.46 9.86-24.98 23.43-25.17 42.33-.14 13.71 10.31 21.23 23.57 17.88 14.14-3.57 31.24-25.33 29.88-41.99Zm52.99-86.47c-.19-1.87-.41-3.74-.55-5.61-.98-13-9.81-19.55-22.43-16.46a21.1 21.1 0 0 0-6.27 2.67c-16.05 10.23-24.62 24.78-24.37 43.95.14 11.38 8.82 18.03 20.1 16.33 8.67-1.3 15-6.24 20.58-12.46 7.26-8.11 12.01-17.4 12.95-28.43Z" style="fill:#b1afff"/><path d="M257.79 148.92c-10.23-.04-19.33-2.01-26.7-8.65-12.09-10.88-10.58-28.93 3.61-36.88 13.82-7.74 28.55-8.23 42.89-1.17 8.45 4.16 14.22 11.29 13.86 21.05-.4 10.97-7.33 18.15-16.92 22.66-5.42 2.54-11.34 3.17-16.74 3Z" style="fill:#8381f1"/><path d="M165.84 400.28c0-3.09.57-6.78 2.1-10.27 3.23-7.4 10.62-11.33 18.45-9.3 10.91 2.82 19.03 9.65 25.08 18.95 5.11 7.86 8.77 16.28 8.68 25.92-.13 14.57-10.53 22.5-24.58 18.22-12.83-3.91-31.69-23.7-29.73-43.52M57.86 230.3c.17-1.4.34-3.26.65-5.11 2.06-12.43 12.1-18.53 23.75-13.74 16.59 6.83 25.6 20.13 29.68 37.13 1.25 5.23.8 10.43-1.22 15.41-3.42 8.41-11.57 11.88-21.41 9.27-7.45-1.98-13.07-6.73-17.94-12.34-7.51-8.64-13.5-18.06-13.5-30.62Z"/><path d="M258.32 436.88c1.35 6.52 2.36 13.13 4.12 19.53 6.92 25.21 30.41 38.06 55.44 30.56.51-.15 1.05-.24 1.57-.35-.3.57-.59 1.14-.89 1.71-1.39.14-2.44.97-3.59 1.65-4.35 2.58-8.63 5.27-13.24 7.43-7.36 3.45-15.14 5.76-22.71 8.65-1.74.12-3.51.06-5.21.4-11.86 2.37-23.67 1.44-35.36-.86-11.81-2.32-22.72-7.21-33.01-13.35-2.8-1.67-6.17-2.71-8.07-5.72 8.34 2.46 16.76 3.52 25.36 1.51 16.36-3.83 25.63-15.1 31.22-30.04 2.54-6.78 4.13-13.83 4.37-21.12" style="fill:#deddff"/><path d="M350.05 402.27c.07 9.52-3.31 17.92-9.15 25.19-6.07 7.57-12.56 14.7-22.91 16.69-10.96 2.11-18.84-2.48-20.84-13.38-4.1-22.31 14.44-45.74 30.68-49.74 12.11-2.98 21.09 4.05 22.2 17.6.1 1.2.01 2.42.01 3.63Zm54.38-82.9c1.36 16.66-15.74 38.42-29.88 41.99-13.26 3.35-23.71-4.17-23.57-17.88.19-18.9 9.71-32.47 25.17-42.33 3.68-2.34 7.9-3.48 12.31-3.16 8.56.63 15.01 7.48 15.74 16.55.13 1.61.15 3.22.22 4.84Zm53-86.47c-.94 11.03-5.68 20.32-12.95 28.43-5.57 6.22-11.91 11.16-20.58 12.46-11.28 1.69-19.95-4.95-20.1-16.33-.24-19.18 8.32-33.73 24.37-43.95 1.89-1.21 4.09-2.13 6.27-2.67 12.62-3.09 21.45 3.46 22.43 16.46.14 1.87.37 3.74.55 5.61Z"/><path d="M345.28 480.33c.27-.56.54-.55.81 0z" style="fill:#31637d"/></svg>
@@ -0,0 +1,48 @@
1
+ import fs from 'node:fs';
2
+ import { EOL } from 'node:os';
3
+ import path from 'node:path';
4
+
5
+ const checkExtensions = (
6
+ directoriesToCheck: string[],
7
+ allowedExtensions: string[],
8
+ ignoreList: string[] = ['.DS_Store']
9
+ ) => {
10
+ const isIgnored = (fileName: string): boolean => {
11
+ return (
12
+ ignoreList.includes(fileName) ||
13
+ allowedExtensions.includes(path.extname(fileName))
14
+ );
15
+ };
16
+
17
+ const findInvalidFiles = (dir: string): string[] => {
18
+ return fs.readdirSync(dir, { withFileTypes: true }).flatMap((file) => {
19
+ const fullPath = path.join(dir, file.name);
20
+
21
+ if (file.isDirectory()) return findInvalidFiles(fullPath);
22
+ if (file.isFile() && !isIgnored(file.name)) return [fullPath];
23
+
24
+ return [];
25
+ });
26
+ };
27
+
28
+ const invalidFiles = directoriesToCheck.flatMap((dir) =>
29
+ findInvalidFiles(dir)
30
+ );
31
+
32
+ if (invalidFiles.length > 0) {
33
+ console.log(
34
+ '❌ Invalid file types found in restricted directories:',
35
+ invalidFiles,
36
+ EOL,
37
+ ` Please ensure that files in these directories have one of the following extensions: ${allowedExtensions.join(
38
+ ', '
39
+ )}.`
40
+ );
41
+ process.exit(1);
42
+ }
43
+ };
44
+
45
+ checkExtensions(['docs' /** 'i18n' */], ['.mdx', '.json']);
46
+ checkExtensions(['plugins', 'test/unit'], ['.ts']);
47
+ checkExtensions(['src/components', 'src/pages'], ['.tsx']);
48
+ checkExtensions(['src/css'], ['.scss']);
@@ -0,0 +1,14 @@
1
+ {
2
+ // This file is not used in compilation. It is here just for a nice editor experience.
3
+ "extends": "@docusaurus/tsconfig",
4
+ "compilerOptions": {
5
+ "baseUrl": ".",
6
+ "isolatedModules": true,
7
+ "allowJs": false,
8
+ "strict": true,
9
+ "alwaysStrict": true,
10
+ "strictFunctionTypes": true,
11
+ "noUnusedLocals": true
12
+ },
13
+ "exclude": ["static", "build", ".docusaurus"]
14
+ }