@cloudflare/kumo 1.5.0 → 1.5.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.
- package/CHANGELOG.md +18 -0
- package/ai/component-registry.json +10 -4
- package/ai/component-registry.md +87 -35
- package/ai/schemas.ts +1 -0
- package/bin/kumo.js +23 -19
- package/dist/.build-complete +1 -1
- package/dist/ai/schemas.d.ts +2147 -0
- package/dist/ai/schemas.d.ts.map +1 -0
- package/dist/catalog.js +1 -1
- package/dist/{clipboard-text-CqueQiB8.js → clipboard-text-B32_yb2r.js} +9 -9
- package/dist/clipboard-text-B32_yb2r.js.map +1 -0
- package/dist/command-line/cli.js +16 -17
- package/dist/command-line/commands/ai.js +2 -3
- package/dist/components/clipboard-text.js +1 -1
- package/dist/components/pagination.js +1 -1
- package/dist/components/table.js +1 -1
- package/dist/index.js +40 -29
- package/dist/index.js.map +1 -1
- package/dist/{pagination-Bm8eMWpj.js → pagination-Cf-yRO-n.js} +20 -19
- package/dist/pagination-Cf-yRO-n.js.map +1 -0
- package/dist/{schemas-B-D2OT-O.js → schemas-H10xB2M_.js} +4 -2
- package/dist/{schemas-B-D2OT-O.js.map → schemas-H10xB2M_.js.map} +1 -1
- package/dist/src/blocks/delete-resource/delete-resource.d.ts.map +1 -1
- package/dist/src/blocks/delete-resource/delete-resource.tsx +213 -0
- package/dist/src/blocks/page-header/page-header.tsx +99 -0
- package/dist/src/blocks/resource-list/resource-list.test.tsx +28 -0
- package/dist/src/blocks/resource-list/resource-list.tsx +69 -0
- package/dist/src/command-line/commands/ai.d.ts.map +1 -1
- package/dist/src/components/pagination/pagination.d.ts +8 -1
- package/dist/src/components/pagination/pagination.d.ts.map +1 -1
- package/dist/src/components/table/table.d.ts +2 -0
- package/dist/src/components/table/table.d.ts.map +1 -1
- package/dist/styles/kumo-standalone.css +1 -1
- package/dist/table-DtUrZ2Rj.js +149 -0
- package/dist/table-DtUrZ2Rj.js.map +1 -0
- package/package.json +1 -1
- package/scripts/css-build.ts +47 -1
- package/dist/clipboard-text-CqueQiB8.js.map +0 -1
- package/dist/pagination-Bm8eMWpj.js.map +0 -1
- package/dist/table-BUmvaBj8.js +0 -153
- package/dist/table-BUmvaBj8.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @cloudflare/kumo
|
|
2
2
|
|
|
3
|
+
## 1.5.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 2c8a5ad: Changed ClipboardIcon to CopyIcon in ClipboardText component
|
|
8
|
+
- 31cc2e1: Fix AI command USAGE.md path resolution to work correctly from bundled dist output
|
|
9
|
+
- 1ae7dfd: fix(cli): include block source files in build for `kumo add` command
|
|
10
|
+
|
|
11
|
+
The `kumo add` command was failing because block source files (`.tsx`) were not being copied to `dist/` during the build process. This adds copying of block source files from `src/blocks/` to `dist/src/blocks/` so the CLI can install them into user projects.
|
|
12
|
+
|
|
13
|
+
- fa3eba3: fix(Table): Add indeterminate prop and fix checkbox click handling
|
|
14
|
+
- Added `indeterminate` prop to `Table.CheckHead` and `Table.CheckCell` components to support indeterminate checkbox state (shows minus icon when some but not all rows are selected)
|
|
15
|
+
- Fixed checkbox click handling - clicking directly on the checkbox now works correctly (previously only clicking the cell area next to the checkbox worked)
|
|
16
|
+
- Updated Table demos (`TableSelectedRowDemo` and `TableFullDemo`) with proper React state management for interactive row selection
|
|
17
|
+
|
|
18
|
+
- 3bc976e: fix: delete-resource shouldn't nest buttons within each other
|
|
19
|
+
- 752fdf1: support overwriting text in pagination component
|
|
20
|
+
|
|
3
21
|
## 1.5.0
|
|
4
22
|
|
|
5
23
|
### Minor Changes
|
|
@@ -3446,6 +3446,11 @@
|
|
|
3446
3446
|
"type": "number",
|
|
3447
3447
|
"optional": true,
|
|
3448
3448
|
"description": "Total number of items across all pages."
|
|
3449
|
+
},
|
|
3450
|
+
"text": {
|
|
3451
|
+
"type": "object",
|
|
3452
|
+
"optional": true,
|
|
3453
|
+
"description": "Method to provide custom pagination text"
|
|
3449
3454
|
}
|
|
3450
3455
|
},
|
|
3451
3456
|
"examples": [
|
|
@@ -3453,7 +3458,8 @@
|
|
|
3453
3458
|
"<Pagination\n page={page}\n setPage={setPage}\n perPage={10}\n totalCount={100}\n controls=\"simple\"\n />",
|
|
3454
3459
|
"<Pagination\n page={page}\n setPage={setPage}\n perPage={10}\n totalCount={100}\n controls=\"full\"\n />",
|
|
3455
3460
|
"<Pagination page={page} setPage={setPage} perPage={10} totalCount={100} />",
|
|
3456
|
-
"<Pagination page={page} setPage={setPage} perPage={25} totalCount={1250} />"
|
|
3461
|
+
"<Pagination page={page} setPage={setPage} perPage={25} totalCount={1250} />",
|
|
3462
|
+
"<Pagination\n text={({ perPage }) => `Page ${page} - showing ${perPage} per page`}\n page={page}\n setPage={setPage}\n perPage={25}\n totalCount={100}\n />"
|
|
3457
3463
|
],
|
|
3458
3464
|
"colors": [
|
|
3459
3465
|
"text-kumo-strong"
|
|
@@ -4154,10 +4160,10 @@
|
|
|
4154
4160
|
},
|
|
4155
4161
|
"examples": [
|
|
4156
4162
|
"<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table>\n <Table.Header>\n <Table.Row>\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {emailData.slice(0, 3).map((row) => (\n <Table.Row key={row.id}>\n <Table.Cell>{row.subject}</Table.Cell>\n <Table.Cell>{row.from}</Table.Cell>\n <Table.Cell>{row.date}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
|
|
4157
|
-
"<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table>\n <Table.Header>\n <Table.Row>\n <Table.CheckHead aria-label=\"Select all rows\"
|
|
4158
|
-
"<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table>\n <Table.Header>\n <Table.Row>\n <Table.CheckHead aria-label=\"Select all rows\"
|
|
4163
|
+
"<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table>\n <Table.Header>\n <Table.Row>\n <Table.CheckHead\n checked={selectedIds.size === rows.length}\n indeterminate={\n selectedIds.size > 0 && selectedIds.size < rows.length\n }\n onValueChange={toggleAll}\n aria-label=\"Select all rows\"\n />\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {rows.map((row) => (\n <Table.Row key={row.id}>\n <Table.CheckCell\n checked={selectedIds.has(row.id)}\n onValueChange={() => toggleRow(row.id)}\n aria-label={`Select ${row.subject}`}\n />\n <Table.Cell>{row.subject}</Table.Cell>\n <Table.Cell>{row.from}</Table.Cell>\n <Table.Cell>{row.date}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
|
|
4164
|
+
"<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table>\n <Table.Header>\n <Table.Row>\n <Table.CheckHead\n checked={selectedIds.size === rows.length}\n indeterminate={\n selectedIds.size > 0 && selectedIds.size < rows.length\n }\n onValueChange={toggleAll}\n aria-label=\"Select all rows\"\n />\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {rows.map((row) => (\n <Table.Row\n key={row.id}\n variant={selectedIds.has(row.id) ? \"selected\" : \"default\"}\n >\n <Table.CheckCell\n checked={selectedIds.has(row.id)}\n onValueChange={() => toggleRow(row.id)}\n aria-label={`Select ${row.subject}`}\n />\n <Table.Cell>{row.subject}</Table.Cell>\n <Table.Cell>{row.from}</Table.Cell>\n <Table.Cell>{row.date}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
|
|
4159
4165
|
"<LayerCard>\n <LayerCard.Primary className=\"p-0\">\n <Table layout=\"fixed\">\n <colgroup>\n <col />\n <col className=\"w-[150px]\" />\n <col className=\"w-[150px]\" />\n </colgroup>\n <Table.Header>\n <Table.Row>\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {emailData.map((row) => (\n <Table.Row key={row.id}>\n <Table.Cell>{row.subject}</Table.Cell>\n <Table.Cell>{row.from}</Table.Cell>\n <Table.Cell>{row.date}</Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>",
|
|
4160
|
-
"<LayerCard>\n <LayerCard.Primary className=\"w-full overflow-x-auto p-0\">\n <Table layout=\"fixed\">\n <colgroup>\n <col
|
|
4166
|
+
"<LayerCard>\n <LayerCard.Primary className=\"w-full overflow-x-auto p-0\">\n <Table layout=\"fixed\">\n <colgroup>\n <col />{\" \"}\n {/* Checkbox column - width handled by Table.CheckHead/CheckCell */}\n <col />\n <col style={{ width: \"150px\" }} />\n <col style={{ width: \"120px\" }} />\n <col style={{ width: \"50px\" }} />\n </colgroup>\n <Table.Header>\n <Table.Row>\n <Table.CheckHead\n checked={selectedIds.size === emailData.length}\n indeterminate={\n selectedIds.size > 0 && selectedIds.size < emailData.length\n }\n onValueChange={toggleAll}\n aria-label=\"Select all rows\"\n />\n <Table.Head>Subject</Table.Head>\n <Table.Head>From</Table.Head>\n <Table.Head>Date</Table.Head>\n <Table.Head></Table.Head>\n </Table.Row>\n </Table.Header>\n <Table.Body>\n {emailData.map((row) => (\n <Table.Row\n key={row.id}\n variant={selectedIds.has(row.id) ? \"selected\" : \"default\"}\n >\n <Table.CheckCell\n checked={selectedIds.has(row.id)}\n onValueChange={() => toggleRow(row.id)}\n aria-label={`Select ${row.subject}`}\n />\n <Table.Cell>\n <div className=\"flex items-center gap-2\">\n <EnvelopeSimple size={16} />\n <span className=\"truncate\">{row.subject}</span>\n {row.tags && (\n <div className=\"ml-2 inline-flex gap-1\">\n {row.tags.map((tag) => (\n <Badge key={tag}>{tag}</Badge>\n ))}\n </div>\n )}\n </div>\n </Table.Cell>\n <Table.Cell>\n <span className=\"truncate\">{row.from}</span>\n </Table.Cell>\n <Table.Cell>\n <span className=\"truncate\">{row.date}</span>\n </Table.Cell>\n <Table.Cell className=\"text-right\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n shape=\"square\"\n aria-label=\"More options\"\n >\n <DotsThree weight=\"bold\" size={16} />\n </Button>\n }\n />\n <DropdownMenu.Content>\n <DropdownMenu.Item icon={Eye}>View</DropdownMenu.Item>\n <DropdownMenu.Item icon={PencilSimple}>\n Edit\n </DropdownMenu.Item>\n <DropdownMenu.Separator />\n <DropdownMenu.Item icon={Trash} variant=\"danger\">\n Delete\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table>\n </LayerCard.Primary>\n </LayerCard>"
|
|
4161
4167
|
],
|
|
4162
4168
|
"colors": [
|
|
4163
4169
|
"bg-kumo-base",
|
package/ai/component-registry.md
CHANGED
|
@@ -3090,6 +3090,8 @@ Page navigation controls with page count display.
|
|
|
3090
3090
|
Number of items displayed per page.
|
|
3091
3091
|
- `totalCount`: number
|
|
3092
3092
|
Total number of items across all pages.
|
|
3093
|
+
- `text`: object
|
|
3094
|
+
Method to provide custom pagination text
|
|
3093
3095
|
|
|
3094
3096
|
**Colors (kumo tokens used):**
|
|
3095
3097
|
|
|
@@ -3114,6 +3116,16 @@ Page navigation controls with page count display.
|
|
|
3114
3116
|
/>
|
|
3115
3117
|
```
|
|
3116
3118
|
|
|
3119
|
+
```tsx
|
|
3120
|
+
<Pagination
|
|
3121
|
+
text={({ perPage }) => `Page ${page} - showing ${perPage} per page`}
|
|
3122
|
+
page={page}
|
|
3123
|
+
setPage={setPage}
|
|
3124
|
+
perPage={25}
|
|
3125
|
+
totalCount={100}
|
|
3126
|
+
/>
|
|
3127
|
+
```
|
|
3128
|
+
|
|
3117
3129
|
|
|
3118
3130
|
---
|
|
3119
3131
|
|
|
@@ -3955,16 +3967,27 @@ ResizeHandle sub-component
|
|
|
3955
3967
|
<Table>
|
|
3956
3968
|
<Table.Header>
|
|
3957
3969
|
<Table.Row>
|
|
3958
|
-
<Table.CheckHead
|
|
3970
|
+
<Table.CheckHead
|
|
3971
|
+
checked={selectedIds.size === rows.length}
|
|
3972
|
+
indeterminate={
|
|
3973
|
+
selectedIds.size > 0 && selectedIds.size < rows.length
|
|
3974
|
+
}
|
|
3975
|
+
onValueChange={toggleAll}
|
|
3976
|
+
aria-label="Select all rows"
|
|
3977
|
+
/>
|
|
3959
3978
|
<Table.Head>Subject</Table.Head>
|
|
3960
3979
|
<Table.Head>From</Table.Head>
|
|
3961
3980
|
<Table.Head>Date</Table.Head>
|
|
3962
3981
|
</Table.Row>
|
|
3963
3982
|
</Table.Header>
|
|
3964
3983
|
<Table.Body>
|
|
3965
|
-
{
|
|
3984
|
+
{rows.map((row) => (
|
|
3966
3985
|
<Table.Row key={row.id}>
|
|
3967
|
-
<Table.CheckCell
|
|
3986
|
+
<Table.CheckCell
|
|
3987
|
+
checked={selectedIds.has(row.id)}
|
|
3988
|
+
onValueChange={() => toggleRow(row.id)}
|
|
3989
|
+
aria-label={`Select ${row.subject}`}
|
|
3990
|
+
/>
|
|
3968
3991
|
<Table.Cell>{row.subject}</Table.Cell>
|
|
3969
3992
|
<Table.Cell>{row.from}</Table.Cell>
|
|
3970
3993
|
<Table.Cell>{row.date}</Table.Cell>
|
|
@@ -3982,31 +4005,35 @@ ResizeHandle sub-component
|
|
|
3982
4005
|
<Table>
|
|
3983
4006
|
<Table.Header>
|
|
3984
4007
|
<Table.Row>
|
|
3985
|
-
<Table.CheckHead
|
|
4008
|
+
<Table.CheckHead
|
|
4009
|
+
checked={selectedIds.size === rows.length}
|
|
4010
|
+
indeterminate={
|
|
4011
|
+
selectedIds.size > 0 && selectedIds.size < rows.length
|
|
4012
|
+
}
|
|
4013
|
+
onValueChange={toggleAll}
|
|
4014
|
+
aria-label="Select all rows"
|
|
4015
|
+
/>
|
|
3986
4016
|
<Table.Head>Subject</Table.Head>
|
|
3987
4017
|
<Table.Head>From</Table.Head>
|
|
3988
4018
|
<Table.Head>Date</Table.Head>
|
|
3989
4019
|
</Table.Row>
|
|
3990
4020
|
</Table.Header>
|
|
3991
4021
|
<Table.Body>
|
|
3992
|
-
|
|
3993
|
-
<Table.
|
|
3994
|
-
|
|
3995
|
-
|
|
3996
|
-
|
|
3997
|
-
|
|
3998
|
-
|
|
3999
|
-
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
<Table.Cell>Cloudflare</Table.Cell>
|
|
4008
|
-
<Table.Cell>1 hour ago</Table.Cell>
|
|
4009
|
-
</Table.Row>
|
|
4022
|
+
{rows.map((row) => (
|
|
4023
|
+
<Table.Row
|
|
4024
|
+
key={row.id}
|
|
4025
|
+
variant={selectedIds.has(row.id) ? "selected" : "default"}
|
|
4026
|
+
>
|
|
4027
|
+
<Table.CheckCell
|
|
4028
|
+
checked={selectedIds.has(row.id)}
|
|
4029
|
+
onValueChange={() => toggleRow(row.id)}
|
|
4030
|
+
aria-label={`Select ${row.subject}`}
|
|
4031
|
+
/>
|
|
4032
|
+
<Table.Cell>{row.subject}</Table.Cell>
|
|
4033
|
+
<Table.Cell>{row.from}</Table.Cell>
|
|
4034
|
+
<Table.Cell>{row.date}</Table.Cell>
|
|
4035
|
+
</Table.Row>
|
|
4036
|
+
))}
|
|
4010
4037
|
</Table.Body>
|
|
4011
4038
|
</Table>
|
|
4012
4039
|
</LayerCard.Primary>
|
|
@@ -4048,7 +4075,8 @@ ResizeHandle sub-component
|
|
|
4048
4075
|
<LayerCard.Primary className="w-full overflow-x-auto p-0">
|
|
4049
4076
|
<Table layout="fixed">
|
|
4050
4077
|
<colgroup>
|
|
4051
|
-
<col
|
|
4078
|
+
<col />{" "}
|
|
4079
|
+
{/* Checkbox column - width handled by Table.CheckHead/CheckCell */}
|
|
4052
4080
|
<col />
|
|
4053
4081
|
<col style={{ width: "150px" }} />
|
|
4054
4082
|
<col style={{ width: "120px" }} />
|
|
@@ -4056,7 +4084,14 @@ ResizeHandle sub-component
|
|
|
4056
4084
|
</colgroup>
|
|
4057
4085
|
<Table.Header>
|
|
4058
4086
|
<Table.Row>
|
|
4059
|
-
<Table.CheckHead
|
|
4087
|
+
<Table.CheckHead
|
|
4088
|
+
checked={selectedIds.size === emailData.length}
|
|
4089
|
+
indeterminate={
|
|
4090
|
+
selectedIds.size > 0 && selectedIds.size < emailData.length
|
|
4091
|
+
}
|
|
4092
|
+
onValueChange={toggleAll}
|
|
4093
|
+
aria-label="Select all rows"
|
|
4094
|
+
/>
|
|
4060
4095
|
<Table.Head>Subject</Table.Head>
|
|
4061
4096
|
<Table.Head>From</Table.Head>
|
|
4062
4097
|
<Table.Head>Date</Table.Head>
|
|
@@ -4064,13 +4099,14 @@ ResizeHandle sub-component
|
|
|
4064
4099
|
</Table.Row>
|
|
4065
4100
|
</Table.Header>
|
|
4066
4101
|
<Table.Body>
|
|
4067
|
-
{emailData.map((row
|
|
4102
|
+
{emailData.map((row) => (
|
|
4068
4103
|
<Table.Row
|
|
4069
4104
|
key={row.id}
|
|
4070
|
-
variant={
|
|
4105
|
+
variant={selectedIds.has(row.id) ? "selected" : "default"}
|
|
4071
4106
|
>
|
|
4072
4107
|
<Table.CheckCell
|
|
4073
|
-
checked={
|
|
4108
|
+
checked={selectedIds.has(row.id)}
|
|
4109
|
+
onValueChange={() => toggleRow(row.id)}
|
|
4074
4110
|
aria-label={`Select ${row.subject}`}
|
|
4075
4111
|
/>
|
|
4076
4112
|
<Table.Cell>
|
|
@@ -4093,14 +4129,30 @@ ResizeHandle sub-component
|
|
|
4093
4129
|
<span className="truncate">{row.date}</span>
|
|
4094
4130
|
</Table.Cell>
|
|
4095
4131
|
<Table.Cell className="text-right">
|
|
4096
|
-
<
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4103
|
-
|
|
4132
|
+
<DropdownMenu>
|
|
4133
|
+
<DropdownMenu.Trigger
|
|
4134
|
+
render={
|
|
4135
|
+
<Button
|
|
4136
|
+
variant="ghost"
|
|
4137
|
+
size="sm"
|
|
4138
|
+
shape="square"
|
|
4139
|
+
aria-label="More options"
|
|
4140
|
+
>
|
|
4141
|
+
<DotsThree weight="bold" size={16} />
|
|
4142
|
+
</Button>
|
|
4143
|
+
}
|
|
4144
|
+
/>
|
|
4145
|
+
<DropdownMenu.Content>
|
|
4146
|
+
<DropdownMenu.Item icon={Eye}>View</DropdownMenu.Item>
|
|
4147
|
+
<DropdownMenu.Item icon={PencilSimple}>
|
|
4148
|
+
Edit
|
|
4149
|
+
</DropdownMenu.Item>
|
|
4150
|
+
<DropdownMenu.Separator />
|
|
4151
|
+
<DropdownMenu.Item icon={Trash} variant="danger">
|
|
4152
|
+
Delete
|
|
4153
|
+
</DropdownMenu.Item>
|
|
4154
|
+
</DropdownMenu.Content>
|
|
4155
|
+
</DropdownMenu>
|
|
4104
4156
|
</Table.Cell>
|
|
4105
4157
|
</Table.Row>
|
|
4106
4158
|
))}
|
package/ai/schemas.ts
CHANGED
|
@@ -583,6 +583,7 @@ export const PaginationPropsSchema = z.object({
|
|
|
583
583
|
page: z.number().optional(), // Current page number (1-indexed).
|
|
584
584
|
perPage: z.number().optional(), // Number of items displayed per page.
|
|
585
585
|
totalCount: z.number().optional(), // Total number of items across all pages.
|
|
586
|
+
text: z.unknown().optional(), // Method to provide custom pagination text
|
|
586
587
|
});
|
|
587
588
|
|
|
588
589
|
export const PopoverPropsSchema = z.object({
|
package/bin/kumo.js
CHANGED
|
@@ -7,26 +7,30 @@ import { fileURLToPath, pathToFileURL } from "node:url";
|
|
|
7
7
|
const __filename = fileURLToPath(import.meta.url);
|
|
8
8
|
const __dirname = path.dirname(__filename);
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
async function main() {
|
|
11
|
+
const distCliPath = path.resolve(__dirname, "../dist/command-line/cli.js");
|
|
12
|
+
if (existsSync(distCliPath)) {
|
|
13
|
+
await import(pathToFileURL(distCliPath).href);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
15
16
|
|
|
16
|
-
// In a repo checkout, the CLI may not be built yet. If `tsx` is available,
|
|
17
|
-
// run the TypeScript entrypoint directly.
|
|
18
|
-
const srcCliPath = path.resolve(__dirname, "../src/command-line/cli.ts");
|
|
19
|
-
if (existsSync(srcCliPath)) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
// In a repo checkout, the CLI may not be built yet. If `tsx` is available,
|
|
18
|
+
// run the TypeScript entrypoint directly.
|
|
19
|
+
const srcCliPath = path.resolve(__dirname, "../src/command-line/cli.ts");
|
|
20
|
+
if (existsSync(srcCliPath)) {
|
|
21
|
+
const result = spawnSync(
|
|
22
|
+
process.execPath,
|
|
23
|
+
["--import", "tsx", srcCliPath, ...process.argv.slice(2)],
|
|
24
|
+
{ stdio: "inherit" },
|
|
25
|
+
);
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
process.exit(result.status ?? 1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
console.error(
|
|
31
|
+
"Kumo CLI entrypoint not found. If you're in the repo, run: pnpm --filter @cloudflare/kumo build",
|
|
32
|
+
);
|
|
33
|
+
process.exit(1);
|
|
27
34
|
}
|
|
28
35
|
|
|
29
|
-
|
|
30
|
-
"Kumo CLI entrypoint not found. If you're in the repo, run: pnpm --filter @cloudflare/kumo build",
|
|
31
|
-
);
|
|
32
|
-
process.exit(1);
|
|
36
|
+
main();
|
package/dist/.build-complete
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1771248145491
|