Skip to content
This repository was archived by the owner on Dec 30, 2023. It is now read-only.

Commit 9193c29

Browse files
authored
feat(extension): ✨ Add support for UI libraries (#57)
1 parent 2a474e0 commit 9193c29

File tree

6 files changed

+33
-2
lines changed

6 files changed

+33
-2
lines changed

.changeset/heavy-spoons-juggle.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@terminal-nerds/snippets-extension": minor
3+
---
4+
5+
✨ Add extensions related to UI Libraries _(JSX-based, Astro, Svelte, Vue)_

packages/extension/source/schema/groups/javascript.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { z } from "zod";
22

3-
export const JAVASCRIPT_EXTENSIONS = ["cjs", "js", "jsx", "mjs"] as const;
3+
export const JAVASCRIPT_EXTENSIONS = ["cjs", "js", "mjs"] as const;
44
export type JavaScriptExtension = (typeof JAVASCRIPT_EXTENSIONS)[number];
55
export const JAVASCRIPT_EXTENSION_SCHEMA = z.enum(JAVASCRIPT_EXTENSIONS);
66

packages/extension/source/schema/groups/typescript.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { z } from "zod";
22

3-
export const TYPESCRIPT_EXTENSIONS = ["cts", "ts", "tsx", "mts"] as const;
3+
export const TYPESCRIPT_EXTENSIONS = ["cts", "ts", "mts"] as const;
44
export type TypeScriptExtension = (typeof TYPESCRIPT_EXTENSIONS)[number];
55
export const TYPESCRIPT_EXTENSION_SCHEMA = z.enum(TYPESCRIPT_EXTENSIONS);
66

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { z } from "zod";
2+
3+
export const UI_LIBRARY_EXTENSIONS = ["astro", "jsx", "tsx", "svelte", "vue"] as const;
4+
export type UILibraryExtension = (typeof UI_LIBRARY_EXTENSIONS)[number];
5+
export const UI_LIBRARY_EXTENSION_SCHEMA = z.enum(UI_LIBRARY_EXTENSIONS);
6+
7+
export function isUILibraryExtension(extension: string): extension is UILibraryExtension {
8+
return UI_LIBRARY_EXTENSION_SCHEMA.safeParse(extension).success;
9+
}

packages/extension/source/schema/schema.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ import {
99
isMarkdownExtension,
1010
isStylesheetExtension,
1111
isTypeScriptExtension,
12+
isUILibraryExtension,
1213
isYAMLExtension,
1314
JAVASCRIPT_EXTENSIONS,
1415
JSON_EXTENSIONS,
1516
MARKDOWN_EXTENSIONS,
1617
STYLESHEETS_EXTENSIONS,
1718
TYPESCRIPT_EXTENSIONS,
19+
UI_LIBRARY_EXTENSIONS,
1820
YAML_EXTENSIONS,
1921
} from "./schema.ts";
2022

@@ -102,6 +104,20 @@ describe("isTypeScriptExtension(extension)", () => {
102104
});
103105
});
104106

107+
describe("isUILibraryExtension(extension)", () => {
108+
it(returns(false).on(`non-valid UI library extensions`).samples(JAVASCRIPT_EXTENSIONS), () => {
109+
for (const extension of JAVASCRIPT_EXTENSIONS) {
110+
expect(isUILibraryExtension(extension)).toBe(false);
111+
}
112+
});
113+
114+
it(returns(true).on(`valid UI library extensions`).samples(UI_LIBRARY_EXTENSIONS), () => {
115+
for (const extension of UI_LIBRARY_EXTENSIONS) {
116+
expect(isUILibraryExtension(extension)).toBe(true);
117+
}
118+
});
119+
});
120+
105121
describe("isYAMLExtension(extension)", () => {
106122
it(returns(false).on(`non-valid YAML extensions`).samples(HTML_EXTENSIONS), () => {
107123
for (const extension of HTML_EXTENSIONS) {

packages/extension/source/schema/schema.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ export * from "./groups/json.ts";
44
export * from "./groups/markdown.ts";
55
export * from "./groups/stylesheet.ts";
66
export * from "./groups/typescript.ts";
7+
export * from "./groups/ui-library.ts";
78
export * from "./groups/yaml.ts";

0 commit comments

Comments
 (0)