@cereworker/browser 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.
@@ -0,0 +1,3 @@
1
+ export { launchBrowser, closeBrowser, getSession, navigateTo, getPageText, screenshot, clickElement, typeText, evaluateJs, waitForSelector, getPageUrl, type BrowserSession, } from './puppeteer.js';
2
+ export { browserToolDefinitions, type BrowserToolName } from './tools.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,UAAU,EACV,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { launchBrowser, closeBrowser, getSession, navigateTo, getPageText, screenshot, clickElement, typeText, evaluateJs, waitForSelector, getPageUrl, } from './puppeteer.js';
2
+ export { browserToolDefinitions } from './tools.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,UAAU,GAEX,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAwB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type Browser, type Page } from 'puppeteer';
2
+ export interface BrowserSession {
3
+ browser: Browser;
4
+ page: Page;
5
+ }
6
+ export declare function launchBrowser(headless?: boolean): Promise<BrowserSession>;
7
+ export declare function closeBrowser(): Promise<void>;
8
+ export declare function getSession(): BrowserSession | null;
9
+ export declare function navigateTo(url: string): Promise<string>;
10
+ export declare function getPageText(): Promise<string>;
11
+ export declare function screenshot(path?: string): Promise<string>;
12
+ export declare function clickElement(selector: string): Promise<string>;
13
+ export declare function typeText(selector: string, text: string): Promise<string>;
14
+ export declare function evaluateJs(code: string): Promise<string>;
15
+ export declare function waitForSelector(selector: string, timeoutMs?: number): Promise<string>;
16
+ export declare function getPageUrl(): Promise<string>;
17
+ //# sourceMappingURL=puppeteer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"puppeteer.d.ts","sourceRoot":"","sources":["../src/puppeteer.ts"],"names":[],"mappings":"AAAA,OAAkB,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;CACZ;AAID,wBAAsB,aAAa,CAAC,QAAQ,UAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAa5E;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAKlD;AAED,wBAAgB,UAAU,IAAI,cAAc,GAAG,IAAI,CAElD;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI7D;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CASnD;AAED,wBAAsB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK/D;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQpE;AAED,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ9E;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ9D;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAQzF;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlD"}
@@ -0,0 +1,89 @@
1
+ import puppeteer from 'puppeteer';
2
+ let session = null;
3
+ export async function launchBrowser(headless = true) {
4
+ if (session)
5
+ return session;
6
+ const browser = await puppeteer.launch({
7
+ headless: headless ? 'shell' : false,
8
+ args: ['--no-sandbox', '--disable-setuid-sandbox'],
9
+ });
10
+ const page = await browser.newPage();
11
+ await page.setViewport({ width: 1280, height: 800 });
12
+ session = { browser, page };
13
+ return session;
14
+ }
15
+ export async function closeBrowser() {
16
+ if (session) {
17
+ await session.browser.close();
18
+ session = null;
19
+ }
20
+ }
21
+ export function getSession() {
22
+ return session;
23
+ }
24
+ export async function navigateTo(url) {
25
+ const s = await launchBrowser();
26
+ await s.page.goto(url, { waitUntil: 'networkidle2', timeout: 30000 });
27
+ return `Navigated to ${s.page.url()} - Title: ${await s.page.title()}`;
28
+ }
29
+ export async function getPageText() {
30
+ const s = await launchBrowser();
31
+ const text = await s.page.evaluate(() => document.body.innerText);
32
+ // Truncate to avoid massive output
33
+ const maxLen = 10000;
34
+ if (text.length > maxLen) {
35
+ return text.slice(0, maxLen) + '\n... (truncated)';
36
+ }
37
+ return text;
38
+ }
39
+ export async function screenshot(path) {
40
+ const s = await launchBrowser();
41
+ const filePath = path ?? `/tmp/cereworker-screenshot-${Date.now()}.png`;
42
+ await s.page.screenshot({ path: filePath, fullPage: false });
43
+ return `Screenshot saved to ${filePath}`;
44
+ }
45
+ export async function clickElement(selector) {
46
+ const s = await launchBrowser();
47
+ try {
48
+ await s.page.click(selector);
49
+ return `Clicked: ${selector}`;
50
+ }
51
+ catch {
52
+ return `Element not found: ${selector}`;
53
+ }
54
+ }
55
+ export async function typeText(selector, text) {
56
+ const s = await launchBrowser();
57
+ try {
58
+ await s.page.type(selector, text);
59
+ return `Typed into: ${selector}`;
60
+ }
61
+ catch {
62
+ return `Element not found: ${selector}`;
63
+ }
64
+ }
65
+ export async function evaluateJs(code) {
66
+ const s = await launchBrowser();
67
+ try {
68
+ const result = await s.page.evaluate(code);
69
+ return String(result ?? '(no result)');
70
+ }
71
+ catch (err) {
72
+ return `Error: ${err instanceof Error ? err.message : String(err)}`;
73
+ }
74
+ }
75
+ export async function waitForSelector(selector, timeoutMs = 5000) {
76
+ const s = await launchBrowser();
77
+ try {
78
+ await s.page.waitForSelector(selector, { timeout: timeoutMs });
79
+ return `Found: ${selector}`;
80
+ }
81
+ catch {
82
+ return `Timeout waiting for: ${selector}`;
83
+ }
84
+ }
85
+ export async function getPageUrl() {
86
+ const s = await launchBrowser();
87
+ return s.page.url();
88
+ }
89
+ //# sourceMappingURL=puppeteer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"puppeteer.js","sourceRoot":"","sources":["../src/puppeteer.ts"],"names":[],"mappings":"AAAA,OAAO,SAAsC,MAAM,WAAW,CAAC;AAO/D,IAAI,OAAO,GAA0B,IAAI,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAQ,GAAG,IAAI;IACjD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC;QACrC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;QACpC,IAAI,EAAE,CAAC,cAAc,EAAE,0BAA0B,CAAC;KACnD,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACrC,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAErD,OAAO,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC5B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC9B,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,MAAM,CAAC,GAAG,MAAM,aAAa,EAAE,CAAC;IAChC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACtE,OAAO,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,CAAC,GAAG,MAAM,aAAa,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClE,mCAAmC;IACnC,MAAM,MAAM,GAAG,KAAK,CAAC;IACrB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,mBAAmB,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAa;IAC5C,MAAM,CAAC,GAAG,MAAM,aAAa,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,IAAI,8BAA8B,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IACxE,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,OAAO,uBAAuB,QAAQ,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,MAAM,CAAC,GAAG,MAAM,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,YAAY,QAAQ,EAAE,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,sBAAsB,QAAQ,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,IAAY;IAC3D,MAAM,CAAC,GAAG,MAAM,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClC,OAAO,eAAe,QAAQ,EAAE,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,sBAAsB,QAAQ,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,CAAC,GAAG,MAAM,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,SAAS,GAAG,IAAI;IACtE,MAAM,CAAC,GAAG,MAAM,aAAa,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/D,OAAO,UAAU,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,wBAAwB,QAAQ,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,CAAC,GAAG,MAAM,aAAa,EAAE,CAAC;IAChC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,106 @@
1
+ import { z } from 'zod';
2
+ export declare const browserToolDefinitions: {
3
+ browserNavigate: {
4
+ description: string;
5
+ parameters: z.ZodObject<{
6
+ url: z.ZodString;
7
+ }, "strip", z.ZodTypeAny, {
8
+ url: string;
9
+ }, {
10
+ url: string;
11
+ }>;
12
+ execute: (args: {
13
+ url: string;
14
+ }) => Promise<string>;
15
+ };
16
+ browserGetText: {
17
+ description: string;
18
+ parameters: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
19
+ execute: () => Promise<string>;
20
+ };
21
+ browserScreenshot: {
22
+ description: string;
23
+ parameters: z.ZodObject<{
24
+ path: z.ZodOptional<z.ZodString>;
25
+ }, "strip", z.ZodTypeAny, {
26
+ path?: string | undefined;
27
+ }, {
28
+ path?: string | undefined;
29
+ }>;
30
+ execute: (args: {
31
+ path?: string;
32
+ }) => Promise<string>;
33
+ };
34
+ browserClick: {
35
+ description: string;
36
+ parameters: z.ZodObject<{
37
+ selector: z.ZodString;
38
+ }, "strip", z.ZodTypeAny, {
39
+ selector: string;
40
+ }, {
41
+ selector: string;
42
+ }>;
43
+ execute: (args: {
44
+ selector: string;
45
+ }) => Promise<string>;
46
+ };
47
+ browserType: {
48
+ description: string;
49
+ parameters: z.ZodObject<{
50
+ selector: z.ZodString;
51
+ text: z.ZodString;
52
+ }, "strip", z.ZodTypeAny, {
53
+ text: string;
54
+ selector: string;
55
+ }, {
56
+ text: string;
57
+ selector: string;
58
+ }>;
59
+ execute: (args: {
60
+ selector: string;
61
+ text: string;
62
+ }) => Promise<string>;
63
+ };
64
+ browserEval: {
65
+ description: string;
66
+ parameters: z.ZodObject<{
67
+ code: z.ZodString;
68
+ }, "strip", z.ZodTypeAny, {
69
+ code: string;
70
+ }, {
71
+ code: string;
72
+ }>;
73
+ execute: (args: {
74
+ code: string;
75
+ }) => Promise<string>;
76
+ };
77
+ browserWait: {
78
+ description: string;
79
+ parameters: z.ZodObject<{
80
+ selector: z.ZodString;
81
+ timeout: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
82
+ }, "strip", z.ZodTypeAny, {
83
+ timeout: number;
84
+ selector: string;
85
+ }, {
86
+ selector: string;
87
+ timeout?: number | undefined;
88
+ }>;
89
+ execute: (args: {
90
+ selector: string;
91
+ timeout?: number;
92
+ }) => Promise<string>;
93
+ };
94
+ browserGetUrl: {
95
+ description: string;
96
+ parameters: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
97
+ execute: () => Promise<string>;
98
+ };
99
+ browserClose: {
100
+ description: string;
101
+ parameters: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
102
+ execute: () => Promise<string>;
103
+ };
104
+ };
105
+ export type BrowserToolName = keyof typeof browserToolDefinitions;
106
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,sBAAsB;;;;;;;;;;wBAMT;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;wBAYf;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;wBAOjB;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;wBAQpB;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;wBAOlC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;wBAQhB;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;CAgB/D,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,sBAAsB,CAAC"}
package/dist/tools.js ADDED
@@ -0,0 +1,67 @@
1
+ import { z } from 'zod';
2
+ import { navigateTo, getPageText, screenshot, clickElement, typeText, evaluateJs, waitForSelector, getPageUrl, closeBrowser, } from './puppeteer.js';
3
+ export const browserToolDefinitions = {
4
+ browserNavigate: {
5
+ description: 'Navigate the browser to a URL',
6
+ parameters: z.object({
7
+ url: z.string().describe('The URL to navigate to'),
8
+ }),
9
+ execute: async (args) => navigateTo(args.url),
10
+ },
11
+ browserGetText: {
12
+ description: 'Get the visible text content of the current page',
13
+ parameters: z.object({}),
14
+ execute: async () => getPageText(),
15
+ },
16
+ browserScreenshot: {
17
+ description: 'Take a screenshot of the current page',
18
+ parameters: z.object({
19
+ path: z.string().optional().describe('File path to save screenshot'),
20
+ }),
21
+ execute: async (args) => screenshot(args.path),
22
+ },
23
+ browserClick: {
24
+ description: 'Click an element on the page by CSS selector',
25
+ parameters: z.object({
26
+ selector: z.string().describe('CSS selector of the element to click'),
27
+ }),
28
+ execute: async (args) => clickElement(args.selector),
29
+ },
30
+ browserType: {
31
+ description: 'Type text into an input element on the page',
32
+ parameters: z.object({
33
+ selector: z.string().describe('CSS selector of the input element'),
34
+ text: z.string().describe('Text to type'),
35
+ }),
36
+ execute: async (args) => typeText(args.selector, args.text),
37
+ },
38
+ browserEval: {
39
+ description: 'Execute JavaScript code in the browser page context',
40
+ parameters: z.object({
41
+ code: z.string().describe('JavaScript code to evaluate'),
42
+ }),
43
+ execute: async (args) => evaluateJs(args.code),
44
+ },
45
+ browserWait: {
46
+ description: 'Wait for a CSS selector to appear on the page',
47
+ parameters: z.object({
48
+ selector: z.string().describe('CSS selector to wait for'),
49
+ timeout: z.number().optional().default(5000).describe('Timeout in milliseconds'),
50
+ }),
51
+ execute: async (args) => waitForSelector(args.selector, args.timeout),
52
+ },
53
+ browserGetUrl: {
54
+ description: 'Get the current URL of the browser page',
55
+ parameters: z.object({}),
56
+ execute: async () => getPageUrl(),
57
+ },
58
+ browserClose: {
59
+ description: 'Close the browser',
60
+ parameters: z.object({}),
61
+ execute: async () => {
62
+ await closeBrowser();
63
+ return 'Browser closed';
64
+ },
65
+ },
66
+ };
67
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@cereworker/browser",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/Producible/CereWorker.git",
16
+ "directory": "packages/browser"
17
+ },
18
+ "dependencies": {
19
+ "puppeteer": "^24.0.0",
20
+ "zod": "^3.24.0",
21
+ "@cereworker/core": "0.1.0",
22
+ "@cereworker/config": "0.1.0"
23
+ },
24
+ "devDependencies": {
25
+ "typescript": "^5.7.3"
26
+ },
27
+ "scripts": {
28
+ "build": "tsc",
29
+ "typecheck": "tsc --noEmit",
30
+ "lint": "eslint src/",
31
+ "clean": "rm -rf dist"
32
+ }
33
+ }