rotion 3.6.3 → 4.0.1

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 (56) hide show
  1. package/README.ja.md +20 -12
  2. package/README.md +26 -17
  3. package/dist/exporter/api.d.ts +11 -1
  4. package/dist/exporter/api.js +35 -30
  5. package/dist/exporter/api.js.map +1 -1
  6. package/dist/exporter/bin.d.ts +2 -0
  7. package/dist/exporter/bin.js +4 -0
  8. package/dist/exporter/bin.js.map +1 -0
  9. package/dist/exporter/blocks.js +355 -322
  10. package/dist/exporter/blocks.js.map +1 -1
  11. package/dist/exporter/breadcrumbs.js +3 -3
  12. package/dist/exporter/breadcrumbs.js.map +1 -1
  13. package/dist/exporter/cli.d.ts +16 -0
  14. package/dist/exporter/cli.js +126 -0
  15. package/dist/exporter/cli.js.map +1 -0
  16. package/dist/exporter/database.js +82 -75
  17. package/dist/exporter/database.js.map +1 -1
  18. package/dist/exporter/dependencies.d.ts +38 -0
  19. package/dist/exporter/dependencies.js +102 -0
  20. package/dist/exporter/dependencies.js.map +1 -0
  21. package/dist/exporter/failures.d.ts +52 -0
  22. package/dist/exporter/failures.js +105 -0
  23. package/dist/exporter/failures.js.map +1 -0
  24. package/dist/exporter/files.d.ts +21 -0
  25. package/dist/exporter/files.js +164 -94
  26. package/dist/exporter/files.js.map +1 -1
  27. package/dist/exporter/github.d.ts +8 -0
  28. package/dist/exporter/github.js +22 -5
  29. package/dist/exporter/github.js.map +1 -1
  30. package/dist/exporter/index.d.ts +4 -0
  31. package/dist/exporter/index.js +2 -0
  32. package/dist/exporter/index.js.map +1 -1
  33. package/dist/exporter/log.d.ts +6 -0
  34. package/dist/exporter/log.js +15 -0
  35. package/dist/exporter/log.js.map +1 -0
  36. package/dist/exporter/mutex.js +55 -16
  37. package/dist/exporter/mutex.js.map +1 -1
  38. package/dist/exporter/page.js +51 -35
  39. package/dist/exporter/page.js.map +1 -1
  40. package/dist/exporter/prune.d.ts +27 -0
  41. package/dist/exporter/prune.js +95 -0
  42. package/dist/exporter/prune.js.map +1 -0
  43. package/dist/exporter/types.d.ts +13 -0
  44. package/dist/exporter/variables.d.ts +61 -17
  45. package/dist/exporter/variables.js +86 -23
  46. package/dist/exporter/variables.js.map +1 -1
  47. package/dist/ui/components/Gallery/GalleryCard/options.d.ts +11 -0
  48. package/dist/ui/esm/components/Gallery/GalleryCard/GalleryCard.js +2 -17
  49. package/dist/ui/esm/components/Gallery/GalleryCard/GalleryCard.js.map +1 -1
  50. package/dist/ui/esm/components/Gallery/GalleryCard/options.js +27 -0
  51. package/dist/ui/esm/components/Gallery/GalleryCard/options.js.map +1 -0
  52. package/dist/ui/esm/components/Page/CodeBlock/Code/Code.js +5 -0
  53. package/dist/ui/esm/components/Page/CodeBlock/Code/Code.js.map +1 -1
  54. package/dist/ui/index-without-dark.css +1 -1
  55. package/dist/ui/index.css +1 -1
  56. package/package.json +32 -25
package/README.ja.md CHANGED
@@ -3,7 +3,7 @@
3
3
  <p align="center">
4
4
  <a href="https://rotion.linyo.ws">
5
5
  <picture>
6
- <source media="(prefers-color-scheme: dark)" srcset="https://github.com/linyows/rotion/blob/main/misc/rotion-dark-bg.svg?raw=true">
6
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/linyows/rotion/blob/main/misc/rotion-dark.svg?raw=true">
7
7
  <img alt="Rotion" src="https://github.com/linyows/rotion/blob/main/misc/rotion.svg?raw=true" width="300">
8
8
  </picture>
9
9
  </a>
@@ -18,19 +18,19 @@
18
18
  </a>
19
19
  </p>
20
20
 
21
- **Rotion**は、Notion APIとReactを活用して、Notionのデータベースやページを静的ウェブサイトとして生成するためのコンポーネント&ツール群です。
21
+ **Rotion**は、Notion APIとReactを活用して、Notionのデータベースやページからウェブサイトを作るためのコンポーネント&ツール群です。
22
22
  Next.jsをはじめとしたReact系フレームワークでの利用を想定していますが、他のフレームワークでも動作します。
23
- 画像や必要なファイルはローカルに保存されるため、完全な静的サイト生成が可能です。
23
+ 画像や必要なファイルはローカルに保存されるため、完全な静的サイトとして生成することも、Node.jsのサーバーで描画することもできます。
24
24
 
25
25
  公式サイト: https://rotion.linyo.ws
26
26
 
27
27
  主な特徴
28
28
  --
29
29
 
30
- - Notion APIからデータベース・ページを取得し、静的サイト用データとして変換
30
+ - Notion APIからデータベース・ページを取得し、ビルド時またはリクエスト時にサイト用のデータとして変換
31
31
  - 画像やPDFなどのファイルもローカル保存
32
32
  - 豊富なReactコンポーネント(Gallery, Table, List, Page, 各種Blockなど)
33
- - Next.jsなどの静的サイトジェネレーターと親和性が高い
33
+ - Next.jsなどで、静的サイト生成にもサーバーでの描画にも対応([サーバーでの描画](https://rotion.linyo.ws/ja/server-rendering))
34
34
  - **Next.js App Router サポート** - `createClientLink` ヘルパー(v2.0.1以降)
35
35
  - **Next.js Page Router サポート** - 従来のSSGワークフロー
36
36
  - TypeScript対応
@@ -42,12 +42,6 @@ Next.jsをはじめとしたReact系フレームワークでの利用を想定
42
42
  npm install rotion
43
43
  ```
44
44
 
45
- または
46
-
47
- ```bash
48
- yarn add rotion
49
- ```
50
-
51
45
  使い方
52
46
  --
53
47
 
@@ -246,6 +240,20 @@ npm install
246
240
  npm run dev
247
241
  ```
248
242
 
243
+ ### [nextjs-server](./examples/nextjs-server)
244
+ Node.jsのサーバーで描画するNext.js App Routerサンプル:
245
+ - リクエスト時に描画し、`revalidate` で再生成するページ
246
+ - ダウンロードした画像やファイルを、ルートハンドラーで `storage/` から配信
247
+ - インクリメンタルキャッシュにより、再ビルドなしでNotionの編集を反映
248
+
249
+ ```bash
250
+ cd examples/nextjs-server
251
+ # .env.localにNOTION_TOKENとNOTION_DATABASE_IDを設定
252
+ npm install
253
+ npm run build
254
+ npm start
255
+ ```
256
+
249
257
  ### [nextjs-pagerouter](./examples/nextjs-pagerouter)
250
258
  データベース対応のNext.js Pages Routerサンプル:
251
259
  - `getStaticProps` を使ったデータベーステーブルビュー
@@ -289,7 +297,7 @@ npm run dev
289
297
  必要な環境
290
298
  --
291
299
 
292
- - Node.js 18以上推奨
300
+ - Node.js 22.12以上
293
301
  - React 17、18、または19
294
302
  - Next.js 13以上(App Router機能を使う場合はNext.js 15以上推奨)
295
303
 
package/README.md CHANGED
@@ -2,34 +2,35 @@
2
2
 
3
3
  <p align="center">
4
4
  <a href="https://rotion.linyo.ws">
5
+ <br /><br /><br /><br /><br />
5
6
  <picture>
6
- <source media="(prefers-color-scheme: dark)" srcset="https://github.com/linyows/rotion/blob/main/misc/rotion-dark-bg.svg?raw=true">
7
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/linyows/rotion/blob/main/misc/rotion-dark.svg?raw=true">
7
8
  <img alt="Rotion" src="https://github.com/linyows/rotion/blob/main/misc/rotion.svg?raw=true" width="300">
8
9
  </picture>
10
+ <br /><br /><br /><br /><br />
9
11
  </a>
10
12
  </p>
11
13
 
14
+ **Rotion** is a set of components and tools that utilize the Notion API and React to build a website from your Notion databases and pages.
15
+ It is designed primarily for use with Next.js (or other React frameworks) and stores images and other files locally, so that you can build a fully static site or render the pages on a Node.js server.
16
+ https://rotion.linyo.ws
17
+
12
18
  <p align="center">
13
19
  <a href="https://github.com/linyows/rotion/actions">
14
- <img src="https://img.shields.io/github/actions/workflow/status/linyows/rotion/build.yml?branch=main&style=for-the-badge&labelColor=000000" alt="Github Actions" />
20
+ <img alt="Github Workflow Status" src="https://img.shields.io/github/actions/workflow/status/linyows/rotion/build.yml?branch=main&style=for-the-badge&labelColor=666666" />
15
21
  </a>
16
22
  <a href="https://www.npmjs.com/package/rotion">
17
- <img src="http://img.shields.io/npm/v/rotion.svg?style=for-the-badge&labelColor=000000" alt="NPM" />
23
+ <img alrt="NPM" src="http://img.shields.io/npm/v/rotion.svg?style=for-the-badge&labelColor=666666&color=DDDDDD" />
18
24
  </a>
19
25
  </p>
20
26
 
21
- **Rotion** is a set of components and tools that utilize the Notion API and React to generate a static website from your Notion databases and pages.
22
- It is designed primarily for use with Next.js (or other React frameworks) and stores images and other files locally, so that you can build a fully static site.
23
-
24
- Official site: https://rotion.linyo.ws
25
-
26
27
  Features
27
28
  --
28
29
 
29
- - Fetch and convert Notion databases and pages into static site data via the Notion API.
30
+ - Fetch and convert Notion databases and pages into data for your site via the Notion API, at build time or on request.
30
31
  - Local storage of images, PDFs, and other files.
31
32
  - Rich React components (Gallery, Table, List, Page, and various Blocks).
32
- - Compatible with static site generators such as Next.js.
33
+ - Works with static site generation and server rendering in frameworks such as Next.js ([Server rendering](https://rotion.linyo.ws/server-rendering)).
33
34
  - **Next.js App Router support** with `createClientLink` helper (v2.0.1+).
34
35
  - **Next.js Page Router support** for traditional SSG workflows.
35
36
  - TypeScript support.
@@ -41,12 +42,6 @@ Installation
41
42
  npm install rotion
42
43
  ```
43
44
 
44
- or
45
-
46
- ```bash
47
- yarn add rotion
48
- ```
49
-
50
45
  Usage
51
46
  --
52
47
 
@@ -245,6 +240,20 @@ npm install
245
240
  npm run dev
246
241
  ```
247
242
 
243
+ ### [nextjs-server](./examples/nextjs-server)
244
+ Next.js App Router example rendered on a Node.js server:
245
+ - Pages rendered on request and regenerated with `revalidate`
246
+ - Downloaded images and files served from `storage/` by route handlers
247
+ - Incremental cache, so edits in Notion appear without a rebuild
248
+
249
+ ```bash
250
+ cd examples/nextjs-server
251
+ # Add your NOTION_TOKEN and NOTION_DATABASE_ID to .env.local
252
+ npm install
253
+ npm run build
254
+ npm start
255
+ ```
256
+
248
257
  ### [nextjs-pagerouter](./examples/nextjs-pagerouter)
249
258
  Next.js Pages Router example with database support:
250
259
  - Database table view using `getStaticProps`
@@ -288,7 +297,7 @@ Scripts
288
297
  Requirements
289
298
  --
290
299
 
291
- - Node.js 18 or later (recommended)
300
+ - Node.js 22.12 or later
292
301
  - React 17, 18, or 19
293
302
  - Next.js 13+ (for App Router features, Next.js 15+ recommended)
294
303
 
@@ -1,5 +1,10 @@
1
1
  import { Client } from '@notionhq/client';
2
- export declare const notion: Client;
2
+ /**
3
+ * notion returns the Notion client for the current settings. It is created on
4
+ * first use, not on import, so NOTION_TOKEN (or configure({ auth })) only has
5
+ * to be set before the first request, and a new token gets a new client.
6
+ */
7
+ export declare function notion(): Client;
3
8
  export interface reqAPIWithBackoffArgs {
4
9
  func: Function;
5
10
  args: unknown;
@@ -23,4 +28,9 @@ export declare function reqAPIWithBackoffAndCache<T>({ name, func, args, count }
23
28
  export interface FetchOptions extends RequestInit {
24
29
  timeout?: number;
25
30
  }
31
+ /**
32
+ * fetchWithTimeout aborts the request when it takes longer than timeout
33
+ * milliseconds. The limit also covers reading the body, so a server that
34
+ * sends the headers and then stalls does not hold the caller forever.
35
+ */
26
36
  export declare function fetchWithTimeout(url: string | URL | Request, options?: FetchOptions): Promise<Response>;
@@ -1,14 +1,22 @@
1
1
  import { Client } from '@notionhq/client';
2
- import { isNotionClientError, APIErrorCode, ClientErrorCode, LogLevel, } from '@notionhq/client';
2
+ import { isNotionClientError, LogLevel, } from '@notionhq/client';
3
+ import { transientNotionErrorCodes } from './failures.js';
4
+ import { warn } from './log.js';
3
5
  import { atoh, readCache, writeCache, isAvailableCache, } from './files.js';
4
- import { cacheDir, waitingTimeSec, waitTimeSecAfterLimit, auth, debug, } from './variables.js';
5
- export const notion = new Client({ auth, logLevel: debug ? LogLevel.DEBUG : LogLevel.ERROR });
6
- const retryableErrorCodes = [
7
- APIErrorCode.RateLimited,
8
- APIErrorCode.InternalServerError,
9
- ClientErrorCode.ResponseError,
10
- ClientErrorCode.RequestTimeout,
11
- ];
6
+ import { config } from './variables.js';
7
+ let client;
8
+ /**
9
+ * notion returns the Notion client for the current settings. It is created on
10
+ * first use, not on import, so NOTION_TOKEN (or configure({ auth })) only has
11
+ * to be set before the first request, and a new token gets a new client.
12
+ */
13
+ export function notion() {
14
+ const { auth, debug } = config();
15
+ if (client === undefined || client.auth !== auth || client.debug !== debug) {
16
+ client = { auth, debug, instance: new Client({ auth, logLevel: debug ? LogLevel.DEBUG : LogLevel.ERROR }) };
17
+ }
18
+ return client.instance;
19
+ }
12
20
  const truncate = (str, max = 1000) => {
13
21
  return str.length > max ? `${str.slice(0, max)}...` : str;
14
22
  };
@@ -29,21 +37,22 @@ export async function reqAPIWithBackoff({ func, args, count }) {
29
37
  if (count < 1) {
30
38
  throw new Error('backoff count exceeded');
31
39
  }
40
+ const { waitTime, limitedWaitTime, debug } = config();
32
41
  let res = null;
33
42
  try {
34
43
  res = await func(args);
35
- if (waitingTimeSec > 0) {
36
- await new Promise(resolve => setTimeout(resolve, waitingTimeSec));
44
+ if (waitTime > 0) {
45
+ await new Promise(resolve => setTimeout(resolve, waitTime));
37
46
  }
38
47
  }
39
48
  catch (error) {
40
- const retryable = error && typeof error === 'object' && isNotionClientError(error) && retryableErrorCodes.includes(error.code);
49
+ const retryable = error && typeof error === 'object' && isNotionClientError(error) && transientNotionErrorCodes.includes(error.code);
41
50
  if (retryable && count > 1) {
42
- if (debug) {
43
- console.log(`reqAPIWithBackoff backoff(${count}) -- error: ${error}`);
44
- }
45
- if (waitTimeSecAfterLimit > 0) {
46
- await new Promise(resolve => setTimeout(resolve, waitTimeSecAfterLimit));
51
+ // The wait is a minute by default; say why nothing seems to happen
52
+ const name = func.name === '' ? 'anonymous' : func.name;
53
+ warn(`notion api ${name} failed with ${error.code}; retrying in ${limitedWaitTime}ms (${count - 1} attempts left)`);
54
+ if (limitedWaitTime > 0) {
55
+ await new Promise(resolve => setTimeout(resolve, limitedWaitTime));
47
56
  }
48
57
  return await reqAPIWithBackoff({ func, args, count: count - 1 });
49
58
  }
@@ -59,7 +68,7 @@ export async function reqAPIWithBackoff({ func, args, count }) {
59
68
  }
60
69
  export async function reqAPIWithBackoffAndCache({ name, func, args, count }) {
61
70
  const key = atoh(JSON.stringify({ func: func.name, args }));
62
- const cacheFile = `${cacheDir}/${name}-${key}`;
71
+ const cacheFile = `${config().cacheDir}/${name}-${key}`;
63
72
  try {
64
73
  const cache = await readCache(cacheFile);
65
74
  if (await isAvailableCache(cacheFile)) {
@@ -73,24 +82,20 @@ export async function reqAPIWithBackoffAndCache({ name, func, args, count }) {
73
82
  await writeCache(cacheFile, res);
74
83
  return res;
75
84
  }
85
+ /**
86
+ * fetchWithTimeout aborts the request when it takes longer than timeout
87
+ * milliseconds. The limit also covers reading the body, so a server that
88
+ * sends the headers and then stalls does not hold the caller forever.
89
+ */
76
90
  // TODO: replace http(s).get functions to this
77
91
  export async function fetchWithTimeout(url, options = {}) {
78
92
  const { timeout = 5000, ...fetchOptions } = options;
79
- const controller = new AbortController();
80
- const { signal } = controller;
81
- const timeoutId = setTimeout(() => {
82
- controller.abort();
83
- }, timeout);
84
- options.signal = signal;
85
93
  try {
86
- const response = await fetch(url, fetchOptions);
87
- clearTimeout(timeoutId);
88
- return response;
94
+ return await fetch(url, { ...fetchOptions, signal: AbortSignal.timeout(timeout) });
89
95
  }
90
96
  catch (error) {
91
- clearTimeout(timeoutId);
92
- if (error instanceof Error && error.name === 'AbortError') {
93
- throw new Error(`Request timed out after ${timeout}ms`);
97
+ if (error instanceof Error && (error.name === 'TimeoutError' || error.name === 'AbortError')) {
98
+ throw new Error(`Request timed out after ${timeout}ms`, { cause: error });
94
99
  }
95
100
  throw error;
96
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/exporter/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/exporter/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EACL,mBAAmB,EACnB,QAAQ,GACT,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAC/B,OAAO,EACL,IAAI,EACJ,SAAS,EACT,UAAU,EACV,gBAAgB,GACjB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,IAAI,MAAuE,CAAA;AAE3E;;;;GAIG;AACH,MAAM,UAAU,MAAM;IACpB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAAA;IAChC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC3E,MAAM,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAA;IAC7G,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAA;AACxB,CAAC;AAQD,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,GAAG,GAAG,IAAI,EAAU,EAAE;IACnD,OAAO,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA;AAC3D,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAE,IAAc,EAAE,IAAa,EAAE,KAAc;IACjF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IACvD,MAAM,MAAM,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,KAAK,CAAC;QAC7E,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE;QACnC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAA;IACd,OAAO,iCAAiC,IAAI,OAAO,MAAM,aAAa,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,EAAE,CAAA;AACvH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAyB;IACtF,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAAA;IACrD,IAAI,GAAG,GAAW,IAAI,CAAA;IAEtB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAM,CAAA;QAC3B,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,mBAAmB,CAAC,KAAK,CAAC,IAAI,yBAAyB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACpI,IAAI,SAAS,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC3B,mEAAmE;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;YACvD,IAAI,CAAC,cAAc,IAAI,gBAAgB,KAAK,CAAC,IAAI,iBAAiB,eAAe,OAAO,KAAK,GAAG,CAAC,iBAAiB,CAAC,CAAA;YACnH,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAA;YACpE,CAAC;YACD,OAAO,MAAM,iBAAiB,CAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAA;QACrE,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,CAAA;QAChH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAC5E,CAAC;IAED,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,CAAA;IAClH,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAiC;IAC7G,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC3D,MAAM,SAAS,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,IAAI,IAAI,IAAI,GAAG,EAAE,CAAA;IAEvD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAS,SAAS,CAAC,CAAA;QAChD,IAAI,MAAM,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,OAAO,KAAU,CAAA;QACnB,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,eAAe;IACjB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC7D,MAAM,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IAChC,OAAO,GAAQ,CAAA;AACjB,CAAC;AAMD;;;;GAIG;AACH,8CAA8C;AAC9C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAA2B,EAAE,OAAO,GAAiB,EAAE;IAC5F,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAA;IACnD,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACpF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,CAAC;YAC7F,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3E,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import { run } from './cli.js';
3
+ process.exitCode = await run(process.argv.slice(2));
4
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/exporter/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA"}