torch-glare 2.5.5 → 2.6.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.
- package/README.md +4 -3
- package/dist/bin/index.js +9 -24
- package/dist/bin/index.js.map +1 -1
- package/dist/src/commands/add.d.ts +2 -2
- package/dist/src/commands/add.d.ts.map +1 -1
- package/dist/src/commands/add.js +4 -70
- package/dist/src/commands/add.js.map +1 -1
- package/dist/src/commands/hook.d.ts +5 -4
- package/dist/src/commands/hook.d.ts.map +1 -1
- package/dist/src/commands/hook.js +7 -75
- package/dist/src/commands/hook.js.map +1 -1
- package/dist/src/commands/init.js +1 -1
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/layout.d.ts +5 -4
- package/dist/src/commands/layout.d.ts.map +1 -1
- package/dist/src/commands/layout.js +7 -75
- package/dist/src/commands/layout.js.map +1 -1
- package/dist/src/commands/provider.d.ts +5 -4
- package/dist/src/commands/provider.d.ts.map +1 -1
- package/dist/src/commands/provider.js +7 -75
- package/dist/src/commands/provider.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +78 -43
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/utils.d.ts +5 -4
- package/dist/src/commands/utils.d.ts.map +1 -1
- package/dist/src/commands/utils.js +7 -80
- package/dist/src/commands/utils.js.map +1 -1
- package/dist/src/shared/addFromRegistry.d.ts +16 -0
- package/dist/src/shared/addFromRegistry.d.ts.map +1 -0
- package/dist/src/shared/addFromRegistry.js +88 -0
- package/dist/src/shared/addFromRegistry.js.map +1 -0
- package/dist/src/shared/getInstallCommand.d.ts.map +1 -1
- package/dist/src/shared/getInstallCommand.js +5 -0
- package/dist/src/shared/getInstallCommand.js.map +1 -1
- package/dist/src/shared/installDependencies.d.ts +0 -10
- package/dist/src/shared/installDependencies.d.ts.map +1 -1
- package/dist/src/shared/installDependencies.js +0 -17
- package/dist/src/shared/installDependencies.js.map +1 -1
- package/dist/src/shared/installFromPlan.d.ts +7 -5
- package/dist/src/shared/installFromPlan.d.ts.map +1 -1
- package/dist/src/shared/installFromPlan.js +103 -36
- package/dist/src/shared/installFromPlan.js.map +1 -1
- package/dist/src/shared/loadRegistry.d.ts +12 -3
- package/dist/src/shared/loadRegistry.d.ts.map +1 -1
- package/dist/src/shared/loadRegistry.js +19 -20
- package/dist/src/shared/loadRegistry.js.map +1 -1
- package/dist/src/shared/registryClient.d.ts +19 -0
- package/dist/src/shared/registryClient.d.ts.map +1 -0
- package/dist/src/shared/registryClient.js +128 -0
- package/dist/src/shared/registryClient.js.map +1 -0
- package/dist/src/shared/resolveEntry.d.ts +10 -7
- package/dist/src/shared/resolveEntry.d.ts.map +1 -1
- package/dist/src/shared/resolveEntry.js +18 -13
- package/dist/src/shared/resolveEntry.js.map +1 -1
- package/dist/src/shared/suggestOtherCommand.d.ts +7 -1
- package/dist/src/shared/suggestOtherCommand.d.ts.map +1 -1
- package/dist/src/shared/suggestOtherCommand.js +29 -23
- package/dist/src/shared/suggestOtherCommand.js.map +1 -1
- package/dist/src/types/main.d.ts +31 -2
- package/dist/src/types/main.d.ts.map +1 -1
- package/package.json +6 -11
- package/apps/lib/components/ActionButton.tsx +0 -93
- package/apps/lib/components/ActionsGroup.tsx +0 -27
- package/apps/lib/components/AlertDialog.tsx +0 -204
- package/apps/lib/components/Avatar.tsx +0 -46
- package/apps/lib/components/Badge.tsx +0 -250
- package/apps/lib/components/BadgeField.tsx +0 -338
- package/apps/lib/components/Breadcrumb.tsx +0 -280
- package/apps/lib/components/Button.tsx +0 -317
- package/apps/lib/components/ButtonGroup.tsx +0 -190
- package/apps/lib/components/Calendar.tsx +0 -115
- package/apps/lib/components/Card.tsx +0 -95
- package/apps/lib/components/Checkbox.tsx +0 -42
- package/apps/lib/components/ColorPicker.tsx +0 -441
- package/apps/lib/components/ConclusionHeader.tsx +0 -148
- package/apps/lib/components/ContextMenu.tsx +0 -571
- package/apps/lib/components/CountBadge.tsx +0 -52
- package/apps/lib/components/DataTable.tsx +0 -213
- package/apps/lib/components/DataViews/badge.ts +0 -49
- package/apps/lib/components/DataViews/cell.tsx +0 -324
- package/apps/lib/components/DataViews/context.ts +0 -144
- package/apps/lib/components/DataViews/data-views.tsx +0 -383
- package/apps/lib/components/DataViews/filters/children.tsx +0 -98
- package/apps/lib/components/DataViews/filters/custom.tsx +0 -34
- package/apps/lib/components/DataViews/filters/filters.tsx +0 -157
- package/apps/lib/components/DataViews/filters/index.ts +0 -4
- package/apps/lib/components/DataViews/filters/labelled.tsx +0 -20
- package/apps/lib/components/DataViews/filters/presets.tsx +0 -65
- package/apps/lib/components/DataViews/filters/sync.tsx +0 -35
- package/apps/lib/components/DataViews/filters/values.ts +0 -173
- package/apps/lib/components/DataViews/header.tsx +0 -220
- package/apps/lib/components/DataViews/hooks/index.ts +0 -5
- package/apps/lib/components/DataViews/hooks/useActiveRow.ts +0 -22
- package/apps/lib/components/DataViews/hooks/useControllable.ts +0 -52
- package/apps/lib/components/DataViews/index.ts +0 -84
- package/apps/lib/components/DataViews/panel/columns.tsx +0 -153
- package/apps/lib/components/DataViews/panel/controls.tsx +0 -106
- package/apps/lib/components/DataViews/panel/index.ts +0 -3
- package/apps/lib/components/DataViews/panel/panel.tsx +0 -164
- package/apps/lib/components/DataViews/panel/saved-views.tsx +0 -67
- package/apps/lib/components/DataViews/panel/section.tsx +0 -81
- package/apps/lib/components/DataViews/panel/sort.tsx +0 -42
- package/apps/lib/components/DataViews/panel/tab.tsx +0 -31
- package/apps/lib/components/DataViews/slots.ts +0 -63
- package/apps/lib/components/DataViews/states.tsx +0 -38
- package/apps/lib/components/DataViews/types.ts +0 -510
- package/apps/lib/components/DataViews/views/board-view.tsx +0 -381
- package/apps/lib/components/DataViews/views/card-rows.tsx +0 -36
- package/apps/lib/components/DataViews/views/inbox-view.tsx +0 -260
- package/apps/lib/components/DataViews/views/pane-views.tsx +0 -196
- package/apps/lib/components/DataViews/views/table-view.tsx +0 -493
- package/apps/lib/components/DataViews/views/tree-view.tsx +0 -367
- package/apps/lib/components/DatePicker.tsx +0 -232
- package/apps/lib/components/Dialog.tsx +0 -116
- package/apps/lib/components/Divider.tsx +0 -28
- package/apps/lib/components/Drawer.tsx +0 -420
- package/apps/lib/components/DropdownMenu.tsx +0 -540
- package/apps/lib/components/FieldHint.tsx +0 -69
- package/apps/lib/components/Form.tsx +0 -182
- package/apps/lib/components/FormBuilder/context.ts +0 -73
- package/apps/lib/components/FormBuilder/field-kind.ts +0 -28
- package/apps/lib/components/FormBuilder/fields/ChoiceFields.tsx +0 -60
- package/apps/lib/components/FormBuilder/fields/ColorField.tsx +0 -59
- package/apps/lib/components/FormBuilder/fields/CustomField.tsx +0 -11
- package/apps/lib/components/FormBuilder/fields/DateField.tsx +0 -32
- package/apps/lib/components/FormBuilder/fields/FieldArray.tsx +0 -74
- package/apps/lib/components/FormBuilder/fields/FieldShell.tsx +0 -163
- package/apps/lib/components/FormBuilder/fields/FileField.tsx +0 -39
- package/apps/lib/components/FormBuilder/fields/OptionListFields.tsx +0 -132
- package/apps/lib/components/FormBuilder/fields/OtpField.tsx +0 -31
- package/apps/lib/components/FormBuilder/fields/PhoneField.tsx +0 -109
- package/apps/lib/components/FormBuilder/fields/RichTextEditorField.tsx +0 -31
- package/apps/lib/components/FormBuilder/fields/SelectField.tsx +0 -91
- package/apps/lib/components/FormBuilder/fields/SignatureField.tsx +0 -157
- package/apps/lib/components/FormBuilder/fields/SliderField.tsx +0 -67
- package/apps/lib/components/FormBuilder/fields/SwitchBoxField.tsx +0 -41
- package/apps/lib/components/FormBuilder/fields/TableField.tsx +0 -336
- package/apps/lib/components/FormBuilder/fields/TextField.tsx +0 -213
- package/apps/lib/components/FormBuilder/fields/TreeSelectField.tsx +0 -43
- package/apps/lib/components/FormBuilder/fields/countries.ts +0 -303
- package/apps/lib/components/FormBuilder/fields/index.ts +0 -25
- package/apps/lib/components/FormBuilder/form-builder.tsx +0 -198
- package/apps/lib/components/FormBuilder/index.ts +0 -31
- package/apps/lib/components/FormBuilder/numberFormat.ts +0 -16
- package/apps/lib/components/FormBuilder/submit.tsx +0 -47
- package/apps/lib/components/FormBuilder/types.ts +0 -311
- package/apps/lib/components/FormRenderer/FormDrawer.tsx +0 -128
- package/apps/lib/components/FormRenderer/detail.tsx +0 -207
- package/apps/lib/components/FormRenderer/form-renderer.tsx +0 -297
- package/apps/lib/components/FormRenderer/header.tsx +0 -88
- package/apps/lib/components/FormRenderer/index.ts +0 -15
- package/apps/lib/components/FormRenderer/section.tsx +0 -39
- package/apps/lib/components/FormRenderer/stepper.tsx +0 -339
- package/apps/lib/components/FormRenderer/types.ts +0 -78
- package/apps/lib/components/FormSummary.tsx +0 -282
- package/apps/lib/components/HeaderBar.tsx +0 -117
- package/apps/lib/components/ImageAttachment.tsx +0 -209
- package/apps/lib/components/InnerLabelField.tsx +0 -154
- package/apps/lib/components/Input.tsx +0 -224
- package/apps/lib/components/InputField.tsx +0 -147
- package/apps/lib/components/InputOTP.tsx +0 -84
- package/apps/lib/components/Label.tsx +0 -129
- package/apps/lib/components/LabelField.tsx +0 -76
- package/apps/lib/components/LabeledCheckBox.tsx +0 -51
- package/apps/lib/components/LabeledRadio.tsx +0 -51
- package/apps/lib/components/LinkButton.tsx +0 -94
- package/apps/lib/components/LoginButton.tsx +0 -51
- package/apps/lib/components/PasswordLevel.tsx +0 -58
- package/apps/lib/components/Popover.tsx +0 -312
- package/apps/lib/components/ProfileMenu.tsx +0 -85
- package/apps/lib/components/Radio.tsx +0 -59
- package/apps/lib/components/RadioCard.tsx +0 -50
- package/apps/lib/components/ScrollArea.tsx +0 -54
- package/apps/lib/components/SearchField.tsx +0 -62
- package/apps/lib/components/SearchableSelect.tsx +0 -318
- package/apps/lib/components/SearchableTable.tsx +0 -344
- package/apps/lib/components/SearchableTree.tsx +0 -485
- package/apps/lib/components/SearchableTreeDialog.tsx +0 -502
- package/apps/lib/components/SectionBlock.tsx +0 -147
- package/apps/lib/components/Select.tsx +0 -347
- package/apps/lib/components/SimpleSelect.tsx +0 -225
- package/apps/lib/components/Skeleton.tsx +0 -12
- package/apps/lib/components/SlideDatePicker.tsx +0 -253
- package/apps/lib/components/SpinLoading.tsx +0 -174
- package/apps/lib/components/Stepper.tsx +0 -480
- package/apps/lib/components/Switch.tsx +0 -82
- package/apps/lib/components/TabFormItem.tsx +0 -153
- package/apps/lib/components/TabSwitch.tsx +0 -172
- package/apps/lib/components/Table.tsx +0 -610
- package/apps/lib/components/TextEditor/ChartBlockTool.ts +0 -676
- package/apps/lib/components/TextEditor/RichTextField.tsx +0 -46
- package/apps/lib/components/TextEditor/TableDnDWrapper.ts +0 -462
- package/apps/lib/components/TextEditor/TextEditor.tsx +0 -1164
- package/apps/lib/components/TextEditor/TextEditorToolbar.tsx +0 -429
- package/apps/lib/components/TextEditor/editor-tools/AlignmentTune.ts +0 -70
- package/apps/lib/components/TextEditor/editor-tools/ColorInlineTool.ts +0 -50
- package/apps/lib/components/TextEditor/editor-tools/StrikethroughInlineTool.ts +0 -48
- package/apps/lib/components/TextEditor/editor-tools/inlineFormat.ts +0 -98
- package/apps/lib/components/TextEditor/editorjs.d.ts +0 -60
- package/apps/lib/components/TextEditor/index.ts +0 -7
- package/apps/lib/components/TextEditor/markdownParser.ts +0 -346
- package/apps/lib/components/Textarea.tsx +0 -117
- package/apps/lib/components/Timeline.tsx +0 -263
- package/apps/lib/components/Toast.tsx +0 -87
- package/apps/lib/components/Toggle.tsx +0 -125
- package/apps/lib/components/ToggleButton.tsx +0 -140
- package/apps/lib/components/Tooltip.tsx +0 -116
- package/apps/lib/components/TransparentLabel.tsx +0 -71
- package/apps/lib/components/TreeDropDown.tsx +0 -115
- package/apps/lib/components/TreeFolder/TreeFolder.tsx +0 -380
- package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +0 -75
- package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +0 -354
- package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +0 -60
- package/apps/lib/components/TreeFolder/icons.tsx +0 -60
- package/apps/lib/components/TreeFolder/index.ts +0 -24
- package/apps/lib/components/TreeFolder/treeFolderUtils.ts +0 -109
- package/apps/lib/components/TreeFolder/types.ts +0 -77
- package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +0 -118
- package/apps/lib/hooks/useActiveTreeItem.ts +0 -58
- package/apps/lib/hooks/useClickOutside.ts +0 -27
- package/apps/lib/hooks/useDragDrop.tsx +0 -365
- package/apps/lib/hooks/useInfiniteScroll.ts +0 -108
- package/apps/lib/hooks/useIsMobile.ts +0 -21
- package/apps/lib/hooks/useResize.ts +0 -67
- package/apps/lib/hooks/useTagSelection.ts +0 -214
- package/apps/lib/layouts/CNLayout.tsx +0 -372
- package/apps/lib/layouts/DataViewCard.tsx +0 -62
- package/apps/lib/layouts/FieldSection.tsx +0 -91
- package/apps/lib/layouts/TreeSubLayout.tsx +0 -173
- package/apps/lib/providers/ThemeProvider.tsx +0 -84
- package/apps/lib/registry.json +0 -1201
- package/apps/lib/tsconfig.json +0 -9
- package/apps/lib/tsconfig.tsbuildinfo +0 -1
- package/apps/lib/utils/cn.ts +0 -6
- package/apps/lib/utils/color.ts +0 -175
- package/apps/lib/utils/dataViews/path.ts +0 -67
- package/apps/lib/utils/dataViews/query.ts +0 -73
- package/apps/lib/utils/dataViews/types.ts +0 -187
- package/apps/lib/utils/dateFormat.ts +0 -108
- package/apps/lib/utils/resize.ts +0 -31
- package/apps/lib/utils/types.ts +0 -16
- package/docs/BLOCKS.md +0 -129
- package/docs/CHANGELOG-1.1.16.md +0 -108
- package/docs/Cover.png +0 -0
- package/docs/README.md +0 -215
- package/docs/components/action-button.md +0 -638
- package/docs/components/actions-group.md +0 -708
- package/docs/components/alert-dialog.md +0 -920
- package/docs/components/avatar.md +0 -709
- package/docs/components/badge-field.md +0 -712
- package/docs/components/badge.md +0 -301
- package/docs/components/breadcrumb.md +0 -930
- package/docs/components/button-group.md +0 -650
- package/docs/components/button.md +0 -639
- package/docs/components/calendar.md +0 -555
- package/docs/components/card.md +0 -622
- package/docs/components/chart-block-tool.md +0 -129
- package/docs/components/checkbox.md +0 -699
- package/docs/components/cn-layout.md +0 -854
- package/docs/components/color-picker.md +0 -101
- package/docs/components/conclusion-header.md +0 -80
- package/docs/components/context-menu.md +0 -483
- package/docs/components/count-badge.md +0 -560
- package/docs/components/data-table.md +0 -854
- package/docs/components/data-views/backend-response.md +0 -324
- package/docs/components/data-views/examples/a11y-rtl.md +0 -250
- package/docs/components/data-views/examples/api-orders-route.md +0 -130
- package/docs/components/data-views/examples/fields.md +0 -362
- package/docs/components/data-views/examples/filters.md +0 -307
- package/docs/components/data-views/examples/inbox-routing.md +0 -218
- package/docs/components/data-views/examples/index.md +0 -29
- package/docs/components/data-views/examples/overview.md +0 -244
- package/docs/components/data-views/examples/panel.md +0 -212
- package/docs/components/data-views/examples/scale.md +0 -231
- package/docs/components/data-views/examples/server-side.md +0 -210
- package/docs/components/data-views/examples/state.md +0 -250
- package/docs/components/data-views/examples/tree-custom.md +0 -388
- package/docs/components/data-views/examples/view-registry.md +0 -313
- package/docs/components/data-views/examples/views.md +0 -534
- package/docs/components/data-views/guide.md +0 -405
- package/docs/components/data-views/index.md +0 -1495
- package/docs/components/data-views/migration.md +0 -79
- package/docs/components/date-picker.md +0 -857
- package/docs/components/dialog.md +0 -929
- package/docs/components/divider.md +0 -766
- package/docs/components/drawer.md +0 -654
- package/docs/components/dropdown-menu.md +0 -668
- package/docs/components/field-hint.md +0 -898
- package/docs/components/field-section.md +0 -781
- package/docs/components/form-builder.md +0 -276
- package/docs/components/form-renderer.md +0 -326
- package/docs/components/form-summary.md +0 -138
- package/docs/components/form.md +0 -785
- package/docs/components/header-bar.md +0 -188
- package/docs/components/image-attachment.md +0 -906
- package/docs/components/inner-label-field.md +0 -819
- package/docs/components/input-field.md +0 -623
- package/docs/components/input-otp.md +0 -756
- package/docs/components/input.md +0 -634
- package/docs/components/label-field.md +0 -770
- package/docs/components/label.md +0 -761
- package/docs/components/labeled-check-box.md +0 -642
- package/docs/components/labeled-radio.md +0 -796
- package/docs/components/link-button.md +0 -685
- package/docs/components/login-button.md +0 -872
- package/docs/components/password-level.md +0 -803
- package/docs/components/popover.md +0 -649
- package/docs/components/profile-menu.md +0 -656
- package/docs/components/radio-card.md +0 -801
- package/docs/components/radio.md +0 -735
- package/docs/components/scroll-area.md +0 -691
- package/docs/components/search-field.md +0 -702
- package/docs/components/searchable-select.md +0 -368
- package/docs/components/searchable-table.md +0 -438
- package/docs/components/searchable-tree-dialog.md +0 -190
- package/docs/components/searchable-tree.md +0 -200
- package/docs/components/section-block.md +0 -477
- package/docs/components/select.md +0 -709
- package/docs/components/simple-select.md +0 -741
- package/docs/components/skeleton.md +0 -706
- package/docs/components/slide-date-picker.md +0 -837
- package/docs/components/spin-loading.md +0 -696
- package/docs/components/stepper.md +0 -316
- package/docs/components/switch.md +0 -770
- package/docs/components/tab-form-item.md +0 -773
- package/docs/components/tab-switch.md +0 -170
- package/docs/components/table-dnd-wrapper.md +0 -107
- package/docs/components/table.md +0 -1088
- package/docs/components/text-editor.md +0 -735
- package/docs/components/textarea.md +0 -681
- package/docs/components/timeline.md +0 -254
- package/docs/components/toast.md +0 -773
- package/docs/components/toggle-button.md +0 -643
- package/docs/components/toggle.md +0 -882
- package/docs/components/tooltip.md +0 -513
- package/docs/components/transparent-label.md +0 -721
- package/docs/components/tree-drop-down.md +0 -740
- package/docs/components/tree-folder.md +0 -110
- package/docs/components/tree-sub-layout.md +0 -707
- package/docs/explanation/architecture.md +0 -54
- package/docs/explanation/design-system.md +0 -52
- package/docs/how-to/form-and-list-recipes.md +0 -386
- package/docs/how-to/forms-with-form-builder.md +0 -472
- package/docs/how-to/guides.md +0 -1027
- package/docs/migration/changelog.md +0 -54
- package/docs/migration/form-builder-2.5.2.md +0 -113
- package/docs/reference/cli.md +0 -112
- package/docs/reference/components.md +0 -572
- package/docs/reference/hooks.md +0 -1500
- package/docs/reference/providers.md +0 -866
- package/docs/reference/tailwind-plugins.md +0 -942
- package/docs/reference/theme.md +0 -85
- package/docs/reference/types.md +0 -1016
- package/docs/reference/utilities.md +0 -704
- package/docs/tutorials/building-first-form.md +0 -846
- package/docs/tutorials/component-composition.md +0 -882
- package/docs/tutorials/getting-started.md +0 -302
- package/docs/tutorials/theming-basics.md +0 -785
package/README.md
CHANGED
|
@@ -10,10 +10,11 @@ You can find the complete documentation at: [https://glare.torchcorp.com](https:
|
|
|
10
10
|
## MCP Server (AI assistants)
|
|
11
11
|
TORCH Glare ships an [MCP](https://modelcontextprotocol.io) server (`torch-glare-mcp`) that gives
|
|
12
12
|
AI assistants full access to component docs, API references, code examples, install commands, and
|
|
13
|
-
the
|
|
13
|
+
the component source itself. See [`mcp/README.md`](mcp/README.md).
|
|
14
14
|
|
|
15
|
-
Wire it into your AI client with `npx torch-glare mcp`, or, when working in this repo,
|
|
16
|
-
`pnpm run
|
|
15
|
+
Wire it into your AI client with `npx torch-glare mcp`, or, when working in this repo, build it
|
|
16
|
+
once with `pnpm -C mcp install && pnpm -C mcp run build` — the local server is registered in
|
|
17
|
+
[`.mcp.json`](.mcp.json).
|
|
17
18
|
|
|
18
19
|
## Contributing
|
|
19
20
|
We’re excited to welcome contributors! To get started:
|
package/dist/bin/index.js
CHANGED
|
@@ -23,31 +23,16 @@ program
|
|
|
23
23
|
.command("init")
|
|
24
24
|
.description("Initialize glare.json configuration file")
|
|
25
25
|
.action(() => initConfig());
|
|
26
|
-
program
|
|
27
|
-
.command(
|
|
28
|
-
.description(
|
|
29
|
-
.option("-f, --force", "Overwrite the component if it already exists")
|
|
30
|
-
.action((component, options) => add(component, !!options.force));
|
|
31
|
-
program
|
|
32
|
-
.command("hook [hook]")
|
|
33
|
-
.option("-f, --force", "Overwrite it if it already exists")
|
|
34
|
-
.description("Add a hook interactively or install a specified one")
|
|
35
|
-
.action((hook, options) => addHook(hook, !!options.force));
|
|
36
|
-
program
|
|
37
|
-
.command("layout [layout]")
|
|
38
|
-
.option("-f, --force", "Overwrite it if it already exists")
|
|
39
|
-
.description("Add a Layout interactively or install a specified one")
|
|
40
|
-
.action((layout, options) => addLayout(layout, !!options.force));
|
|
41
|
-
program
|
|
42
|
-
.command("util [util]")
|
|
43
|
-
.option("-f, --force", "Overwrite it if it already exists")
|
|
44
|
-
.description("Add a utils interactively or install a specified one")
|
|
45
|
-
.action((util, options) => addUtil(util, !!options.force));
|
|
46
|
-
program
|
|
47
|
-
.command("provider [provider]")
|
|
26
|
+
const installCommand = (signature, description, run) => program
|
|
27
|
+
.command(signature)
|
|
28
|
+
.description(description)
|
|
48
29
|
.option("-f, --force", "Overwrite it if it already exists")
|
|
49
|
-
.
|
|
50
|
-
|
|
30
|
+
.action((name, options) => run(name, !!options.force));
|
|
31
|
+
installCommand("add [component]", "Add a component interactively or install a specified one", add);
|
|
32
|
+
installCommand("hook [hook]", "Add a hook interactively or install a specified one", addHook);
|
|
33
|
+
installCommand("layout [layout]", "Add a Layout interactively or install a specified one", addLayout);
|
|
34
|
+
installCommand("util [util]", "Add a utils interactively or install a specified one", addUtil);
|
|
35
|
+
installCommand("provider [provider]", "Add a provider interactively or install a specified one", addProvider);
|
|
51
36
|
program
|
|
52
37
|
.command("update")
|
|
53
38
|
.description("Update everything installed")
|
package/dist/bin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../cli/bin/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,4EAA4E;AAC5E,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CACxE,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;AAE9B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../cli/bin/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,4EAA4E;AAC5E,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CACxE,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;AAE9B,MAAM,cAAc,GAAG,CACrB,SAAiB,EACjB,WAAmB,EACnB,GAAkE,EAClE,EAAE,CACF,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,WAAW,CAAC;KACxB,MAAM,CAAC,aAAa,EAAE,mCAAmC,CAAC;KAC1D,MAAM,CAAC,CAAC,IAAwB,EAAE,OAA4B,EAAE,EAAE,CACjE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAC3B,CAAC;AAEN,cAAc,CACZ,iBAAiB,EACjB,0DAA0D,EAC1D,GAAG,CACJ,CAAC;AACF,cAAc,CAAC,aAAa,EAAE,qDAAqD,EAAE,OAAO,CAAC,CAAC;AAC9F,cAAc,CAAC,iBAAiB,EAAE,uDAAuD,EAAE,SAAS,CAAC,CAAC;AACtG,cAAc,CAAC,aAAa,EAAE,sDAAsD,EAAE,OAAO,CAAC,CAAC;AAC/F,cAAc,CACZ,qBAAqB,EACrB,yDAAyD,EACzD,WAAW,CACZ,CAAC;AAEF,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,yBAAyB,EAAE,CAAC,CAAC;AAE7C,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE5B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Add a component and everything it needs.
|
|
3
3
|
*
|
|
4
|
-
* @param {string}
|
|
4
|
+
* @param {string} name - The name of the component to add.
|
|
5
5
|
* @param {boolean} replace - Overwrite what is already there, dependencies included.
|
|
6
6
|
*/
|
|
7
|
-
export declare function add(
|
|
7
|
+
export declare function add(name?: string, replace?: boolean): Promise<void>;
|
|
8
8
|
//# sourceMappingURL=add.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../cli/src/commands/add.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../cli/src/commands/add.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF"}
|
package/dist/src/commands/add.js
CHANGED
|
@@ -1,77 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import inquirer from "inquirer";
|
|
3
|
-
import { fileURLToPath } from "url";
|
|
4
|
-
import { ensureDirectoryExists } from "../shared/ensureDirectoryExists.js";
|
|
5
|
-
import { getInstallPaths } from "../shared/getInstallPaths.js";
|
|
6
|
-
import { copyComponentsRecursively } from "../shared/copyComponentsRecursively.js";
|
|
7
|
-
import { getAvailableFiles } from "../shared/getAvailableFiles.js";
|
|
8
|
-
import { installDependencies } from "../shared/installDependencies.js";
|
|
9
|
-
import { installFromPlan, reportInstall } from "../shared/installFromPlan.js";
|
|
10
|
-
import { isInstalled, resolveEntry } from "../shared/resolveEntry.js";
|
|
11
|
-
import { getConfig } from "../shared/getConfig.js";
|
|
12
|
-
import { suggestOtherCommand } from "../shared/suggestOtherCommand.js";
|
|
13
|
-
import { CONFIG_FILE } from "./init.js";
|
|
14
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
15
|
-
const __dirname = path.dirname(__filename);
|
|
16
|
-
const templatesDir = path.resolve(__dirname, "../../../apps/lib/components");
|
|
1
|
+
import { addFromRegistry } from "../shared/addFromRegistry.js";
|
|
17
2
|
/**
|
|
18
3
|
* Add a component and everything it needs.
|
|
19
4
|
*
|
|
20
|
-
* @param {string}
|
|
5
|
+
* @param {string} name - The name of the component to add.
|
|
21
6
|
* @param {boolean} replace - Overwrite what is already there, dependencies included.
|
|
22
7
|
*/
|
|
23
|
-
export async function add(
|
|
24
|
-
|
|
25
|
-
const availableComponents = getAvailableFiles(templatesDir);
|
|
26
|
-
if (!component) {
|
|
27
|
-
component = await promptComponentSelection(availableComponents);
|
|
28
|
-
}
|
|
29
|
-
const resolved = resolveEntry(component, availableComponents, templatesDir);
|
|
30
|
-
if (!resolved) {
|
|
31
|
-
console.error(`❌ Component "${component}" not found.`);
|
|
32
|
-
// It may well exist — as a hook, util, layout or provider. Say which command to use rather
|
|
33
|
-
// than leaving the caller to guess.
|
|
34
|
-
const hint = suggestOtherCommand(component);
|
|
35
|
-
if (hint)
|
|
36
|
-
console.error(` ${hint}`);
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
// The registry knows the whole graph, so resolve it in one pass. `replace` reaches every item
|
|
40
|
-
// in the plan, which is what `--force` has always implied and never did.
|
|
41
|
-
const name = resolved.replace(/\.(tsx|ts)$/, "");
|
|
42
|
-
const result = installFromPlan("components", name, targetFile, replace);
|
|
43
|
-
if (result) {
|
|
44
|
-
reportInstall(resolved, result, targetFile.path);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
// Not in the registry — something added to apps/lib before `pnpm run registry` was re-run.
|
|
48
|
-
// Copy it alone and say so, rather than pretending the dependencies were handled.
|
|
49
|
-
console.warn(`⚠️ "${resolved}" is not in registry.json, so its dependencies cannot be resolved.\n` +
|
|
50
|
-
` Copying the files only. Re-run \`pnpm run registry\` in the library to fix this.`);
|
|
51
|
-
const { source, targetDir } = getInstallPaths(resolved, targetFile, templatesDir, "components");
|
|
52
|
-
if (isInstalled(targetDir, resolved) && !replace) {
|
|
53
|
-
console.log(`⚠️ Component "${resolved}" already exists.`);
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
ensureDirectoryExists(targetDir);
|
|
57
|
-
copyComponentsRecursively(source, targetDir);
|
|
58
|
-
installDependencies(source);
|
|
59
|
-
console.log(`✅ ${resolved} has been added to ${targetFile.path}!`);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Prompt the user to select a component from a list.
|
|
63
|
-
* @param {string[]} availableComponents - Array of available components.
|
|
64
|
-
* @returns {string} - The selected component.
|
|
65
|
-
*/
|
|
66
|
-
async function promptComponentSelection(availableComponents) {
|
|
67
|
-
const { selectedComponent } = await inquirer.prompt([
|
|
68
|
-
{
|
|
69
|
-
type: "list",
|
|
70
|
-
name: "selectedComponent",
|
|
71
|
-
message: "Which component would you like to add?",
|
|
72
|
-
choices: availableComponents,
|
|
73
|
-
},
|
|
74
|
-
]);
|
|
75
|
-
return selectedComponent;
|
|
8
|
+
export async function add(name, replace = false) {
|
|
9
|
+
await addFromRegistry("components", name, replace);
|
|
76
10
|
}
|
|
77
11
|
//# sourceMappingURL=add.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../cli/src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../cli/src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAa,EAAE,UAAmB,KAAK;IAC7D,MAAM,eAAe,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* @param {
|
|
2
|
+
* Add a hook and everything it needs.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} name - The name of the hook to add.
|
|
5
|
+
* @param {boolean} replace - Overwrite what is already there, dependencies included.
|
|
5
6
|
*/
|
|
6
|
-
export declare function addHook(
|
|
7
|
+
export declare function addHook(name?: string, replace?: boolean): Promise<void>;
|
|
7
8
|
//# sourceMappingURL=hook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../cli/src/commands/hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../cli/src/commands/hook.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF"}
|
|
@@ -1,79 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import path from "path";
|
|
3
|
-
import { fileURLToPath } from "url";
|
|
4
|
-
import inquirer from "inquirer";
|
|
5
|
-
import { ensureDirectoryExists } from "../shared/ensureDirectoryExists.js";
|
|
6
|
-
import { getInstallPaths } from "../shared/getInstallPaths.js";
|
|
7
|
-
import { copyComponentsRecursively } from "../shared/copyComponentsRecursively.js";
|
|
8
|
-
import { getConfig } from "../shared/getConfig.js";
|
|
9
|
-
import { CONFIG_FILE } from "./init.js";
|
|
10
|
-
import { installFromPlan, reportInstall } from "../shared/installFromPlan.js";
|
|
11
|
-
import { isInstalled, resolveEntry } from "../shared/resolveEntry.js";
|
|
12
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
-
const __dirname = path.dirname(__filename);
|
|
14
|
-
// Define the path to the hooks templates directory
|
|
15
|
-
const hooksTemplatesDir = path.resolve(__dirname, "../../../apps/lib/hooks");
|
|
1
|
+
import { addFromRegistry } from "../shared/addFromRegistry.js";
|
|
16
2
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* @param {
|
|
3
|
+
* Add a hook and everything it needs.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} name - The name of the hook to add.
|
|
6
|
+
* @param {boolean} replace - Overwrite what is already there, dependencies included.
|
|
20
7
|
*/
|
|
21
|
-
export async function addHook(
|
|
22
|
-
|
|
23
|
-
const availableHooks = getAvailableHooks(hooksTemplatesDir);
|
|
24
|
-
// If no hook is provided, prompt the user to select one
|
|
25
|
-
if (!hook) {
|
|
26
|
-
hook = await promptHookSelection(availableHooks);
|
|
27
|
-
}
|
|
28
|
-
// Resolve the name the way every other command does — a bare `hook` name, a name with
|
|
29
|
-
// its extension, or a folder all reach the same entry.
|
|
30
|
-
const resolved = resolveEntry(hook, availableHooks, hooksTemplatesDir);
|
|
31
|
-
if (!resolved) {
|
|
32
|
-
console.error(`❌ Hook "${hook}" not found.`);
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
// The registry resolves the whole graph in one pass, so `replace` reaches every item — and a
|
|
36
|
-
// dependency is never skipped-and-forgotten the way the per-file walker used to skip it.
|
|
37
|
-
const name = resolved.replace(/\.(tsx|ts)$/, "");
|
|
38
|
-
const result = installFromPlan("hooks", name, targetFile, replace);
|
|
39
|
-
if (result) {
|
|
40
|
-
reportInstall(resolved, result, targetFile.path);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
// Not in registry.json — copy it alone, and say why the dependencies were not resolved.
|
|
44
|
-
console.warn(`⚠️ "${resolved}" is not in registry.json, so its dependencies cannot be resolved.\n` +
|
|
45
|
-
` Copying the file only. Re-run \`pnpm run registry\` in the library to fix this.`);
|
|
46
|
-
const { source, targetDir } = getInstallPaths(resolved, targetFile, hooksTemplatesDir, "hooks");
|
|
47
|
-
if (isInstalled(targetDir, resolved) && !replace) {
|
|
48
|
-
console.log(`⚠️ Hook "${resolved}" already exists.`);
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
ensureDirectoryExists(targetDir);
|
|
52
|
-
copyComponentsRecursively(source, targetDir);
|
|
53
|
-
console.log(`✅ ${resolved} has been added to ${targetFile.path}!`);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Get a list of available hooks from the hooks templates directory.
|
|
57
|
-
* @param {string} hooksTemplatesDir - Path to the hooks templates directory.
|
|
58
|
-
* @returns {string[]} - Array of hook names.
|
|
59
|
-
*/
|
|
60
|
-
function getAvailableHooks(hooksTemplatesDir) {
|
|
61
|
-
return fs.readdirSync(hooksTemplatesDir).map((file) => path.basename(file));
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Prompt the user to select a hook from a list.
|
|
65
|
-
* @param {string[]} availableHooks - Array of available hooks.
|
|
66
|
-
* @returns {string} - The selected hook.
|
|
67
|
-
*/
|
|
68
|
-
async function promptHookSelection(availableHooks) {
|
|
69
|
-
const { selectedHook } = await inquirer.prompt([
|
|
70
|
-
{
|
|
71
|
-
type: "list",
|
|
72
|
-
name: "selectedHook",
|
|
73
|
-
message: "Which hook would you like to add?",
|
|
74
|
-
choices: availableHooks,
|
|
75
|
-
},
|
|
76
|
-
]);
|
|
77
|
-
return selectedHook;
|
|
8
|
+
export async function addHook(name, replace = false) {
|
|
9
|
+
await addFromRegistry("hooks", name, replace);
|
|
78
10
|
}
|
|
79
11
|
//# sourceMappingURL=hook.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../cli/src/commands/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../cli/src/commands/hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAa,EAAE,UAAmB,KAAK;IACjE,MAAM,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -5,7 +5,7 @@ export const CONFIG_FILE = "glare.json";
|
|
|
5
5
|
export async function initConfig() {
|
|
6
6
|
const defaultConfig = { path: "./" };
|
|
7
7
|
if (!fs.existsSync(CONFIG_FILE)) {
|
|
8
|
-
fs.writeFileSync(CONFIG_FILE, JSON.stringify(defaultConfig, null, 2));
|
|
8
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(defaultConfig, null, 2) + "\n");
|
|
9
9
|
console.log("✅ Created glare.json configuration file");
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../cli/src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAM7D,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AAGxC,MAAM,CAAC,KAAK,UAAU,UAAU;IAC5B,MAAM,aAAa,GAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAElD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../cli/src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAM7D,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AAGxC,MAAM,CAAC,KAAK,UAAU,UAAU;IAC5B,MAAM,aAAa,GAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAElD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IACpE,CAAC;IAED,wFAAwF;IACxF,4FAA4F;IAC5F,wEAAwE;IACxE,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC;IAChC,cAAc,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* @param {
|
|
2
|
+
* Add a layout and everything it needs.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} name - The name of the layout to add.
|
|
5
|
+
* @param {boolean} replace - Overwrite what is already there, dependencies included.
|
|
5
6
|
*/
|
|
6
|
-
export declare function addLayout(
|
|
7
|
+
export declare function addLayout(name?: string, replace?: boolean): Promise<void>;
|
|
7
8
|
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../cli/src/commands/layout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../cli/src/commands/layout.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtF"}
|
|
@@ -1,79 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import path from "path";
|
|
3
|
-
import { fileURLToPath } from "url";
|
|
4
|
-
import { copyComponentsRecursively } from "../shared/copyComponentsRecursively.js";
|
|
5
|
-
import inquirer from "inquirer";
|
|
6
|
-
import { getConfig } from "../shared/getConfig.js";
|
|
7
|
-
import { getInstallPaths } from "../shared/getInstallPaths.js";
|
|
8
|
-
import { ensureDirectoryExists } from "../shared/ensureDirectoryExists.js";
|
|
9
|
-
import { CONFIG_FILE } from "./init.js";
|
|
10
|
-
import { installFromPlan, reportInstall } from "../shared/installFromPlan.js";
|
|
11
|
-
import { isInstalled, resolveEntry } from "../shared/resolveEntry.js";
|
|
12
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
-
const __dirname = path.dirname(__filename);
|
|
14
|
-
// Define the path to the layouts templates directory
|
|
15
|
-
const layoutsTemplatesDir = path.resolve(__dirname, "../../../apps/lib/layouts");
|
|
1
|
+
import { addFromRegistry } from "../shared/addFromRegistry.js";
|
|
16
2
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* @param {
|
|
3
|
+
* Add a layout and everything it needs.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} name - The name of the layout to add.
|
|
6
|
+
* @param {boolean} replace - Overwrite what is already there, dependencies included.
|
|
20
7
|
*/
|
|
21
|
-
export async function addLayout(
|
|
22
|
-
|
|
23
|
-
const availableLayouts = getAvailableLayouts(layoutsTemplatesDir);
|
|
24
|
-
// If no layout is provided, prompt the user to select one
|
|
25
|
-
if (!layout) {
|
|
26
|
-
layout = await promptLayoutSelection(availableLayouts);
|
|
27
|
-
}
|
|
28
|
-
// Resolve the name the way every other command does — a bare `layout` name, a name with
|
|
29
|
-
// its extension, or a folder all reach the same entry.
|
|
30
|
-
const resolved = resolveEntry(layout, availableLayouts, layoutsTemplatesDir);
|
|
31
|
-
if (!resolved) {
|
|
32
|
-
console.error(`❌ Layout "${layout}" not found.`);
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
// The registry resolves the whole graph in one pass, so `replace` reaches every item — and a
|
|
36
|
-
// dependency is never skipped-and-forgotten the way the per-file walker used to skip it.
|
|
37
|
-
const name = resolved.replace(/\.(tsx|ts)$/, "");
|
|
38
|
-
const result = installFromPlan("layouts", name, targetFile, replace);
|
|
39
|
-
if (result) {
|
|
40
|
-
reportInstall(resolved, result, targetFile.path);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
// Not in registry.json — copy it alone, and say why the dependencies were not resolved.
|
|
44
|
-
console.warn(`⚠️ "${resolved}" is not in registry.json, so its dependencies cannot be resolved.\n` +
|
|
45
|
-
` Copying the file only. Re-run \`pnpm run registry\` in the library to fix this.`);
|
|
46
|
-
const { source, targetDir } = getInstallPaths(resolved, targetFile, layoutsTemplatesDir, "layouts");
|
|
47
|
-
if (isInstalled(targetDir, resolved) && !replace) {
|
|
48
|
-
console.log(`⚠️ Layout "${resolved}" already exists.`);
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
ensureDirectoryExists(targetDir);
|
|
52
|
-
copyComponentsRecursively(source, targetDir);
|
|
53
|
-
console.log(`✅ ${resolved} has been added to ${targetFile.path}!`);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Get a list of available layouts from the layouts templates directory.
|
|
57
|
-
* @param {string} layoutsTemplatesDir - Path to the layouts templates directory.
|
|
58
|
-
* @returns {string[]} - Array of layout names.
|
|
59
|
-
*/
|
|
60
|
-
function getAvailableLayouts(layoutsTemplatesDir) {
|
|
61
|
-
return fs.readdirSync(layoutsTemplatesDir).map((file) => path.basename(file));
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Prompt the user to select a layout from a list.
|
|
65
|
-
* @param {string[]} availableLayouts - Array of available layouts.
|
|
66
|
-
* @returns {string} - The selected layout.
|
|
67
|
-
*/
|
|
68
|
-
async function promptLayoutSelection(availableLayouts) {
|
|
69
|
-
const { selectedLayout } = await inquirer.prompt([
|
|
70
|
-
{
|
|
71
|
-
type: "list",
|
|
72
|
-
name: "selectedLayout",
|
|
73
|
-
message: "Which layout would you like to add?",
|
|
74
|
-
choices: availableLayouts,
|
|
75
|
-
},
|
|
76
|
-
]);
|
|
77
|
-
return selectedLayout;
|
|
8
|
+
export async function addLayout(name, replace = false) {
|
|
9
|
+
await addFromRegistry("layouts", name, replace);
|
|
78
10
|
}
|
|
79
11
|
//# sourceMappingURL=layout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../cli/src/commands/layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../cli/src/commands/layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAa,EAAE,UAAmB,KAAK;IACnE,MAAM,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* @param {
|
|
2
|
+
* Add a provider and everything it needs.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} name - The name of the provider to add.
|
|
5
|
+
* @param {boolean} replace - Overwrite what is already there, dependencies included.
|
|
5
6
|
*/
|
|
6
|
-
export declare function addProvider(
|
|
7
|
+
export declare function addProvider(name?: string, replace?: boolean): Promise<void>;
|
|
7
8
|
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../cli/src/commands/provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../cli/src/commands/provider.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF"}
|
|
@@ -1,79 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import path from "path";
|
|
3
|
-
import { getConfig } from "../shared/getConfig.js";
|
|
4
|
-
import { CONFIG_FILE } from "./init.js";
|
|
5
|
-
import { fileURLToPath } from "url";
|
|
6
|
-
import { ensureDirectoryExists } from "../shared/ensureDirectoryExists.js";
|
|
7
|
-
import { getInstallPaths } from "../shared/getInstallPaths.js";
|
|
8
|
-
import { copyComponentsRecursively } from "../shared/copyComponentsRecursively.js";
|
|
9
|
-
import inquirer from "inquirer";
|
|
10
|
-
import { installFromPlan, reportInstall } from "../shared/installFromPlan.js";
|
|
11
|
-
import { isInstalled, resolveEntry } from "../shared/resolveEntry.js";
|
|
12
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
13
|
-
const __dirname = path.dirname(__filename);
|
|
14
|
-
// Define the path to the provider templates directory
|
|
15
|
-
const providerTemplatesDir = path.resolve(__dirname, "../../../apps/lib/providers");
|
|
1
|
+
import { addFromRegistry } from "../shared/addFromRegistry.js";
|
|
16
2
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* @param {
|
|
3
|
+
* Add a provider and everything it needs.
|
|
4
|
+
*
|
|
5
|
+
* @param {string} name - The name of the provider to add.
|
|
6
|
+
* @param {boolean} replace - Overwrite what is already there, dependencies included.
|
|
20
7
|
*/
|
|
21
|
-
export async function addProvider(
|
|
22
|
-
|
|
23
|
-
const availableProviders = getAvailableProviders(providerTemplatesDir);
|
|
24
|
-
// If no provider is provided, prompt the user to select one
|
|
25
|
-
if (!provider) {
|
|
26
|
-
provider = await promptProviderSelection(availableProviders);
|
|
27
|
-
}
|
|
28
|
-
// Resolve the name the way every other command does — a bare `provider` name, a name with
|
|
29
|
-
// its extension, or a folder all reach the same entry.
|
|
30
|
-
const resolved = resolveEntry(provider, availableProviders, providerTemplatesDir);
|
|
31
|
-
if (!resolved) {
|
|
32
|
-
console.error(`❌ Provider "${provider}" not found.`);
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
// The registry resolves the whole graph in one pass, so `replace` reaches every item — and a
|
|
36
|
-
// dependency is never skipped-and-forgotten the way the per-file walker used to skip it.
|
|
37
|
-
const name = resolved.replace(/\.(tsx|ts)$/, "");
|
|
38
|
-
const result = installFromPlan("providers", name, targetFile, replace);
|
|
39
|
-
if (result) {
|
|
40
|
-
reportInstall(resolved, result, targetFile.path);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
// Not in registry.json — copy it alone, and say why the dependencies were not resolved.
|
|
44
|
-
console.warn(`⚠️ "${resolved}" is not in registry.json, so its dependencies cannot be resolved.\n` +
|
|
45
|
-
` Copying the file only. Re-run \`pnpm run registry\` in the library to fix this.`);
|
|
46
|
-
const { source, targetDir } = getInstallPaths(resolved, targetFile, providerTemplatesDir, "providers");
|
|
47
|
-
if (isInstalled(targetDir, resolved) && !replace) {
|
|
48
|
-
console.log(`⚠️ Provider "${resolved}" already exists.`);
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
ensureDirectoryExists(targetDir);
|
|
52
|
-
copyComponentsRecursively(source, targetDir);
|
|
53
|
-
console.log(`✅ ${resolved} has been added to ${targetFile.path}!`);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Get a list of available providers from the provider templates directory.
|
|
57
|
-
* @param {string} providerTemplatesDir - Path to the provider templates directory.
|
|
58
|
-
* @returns {string[]} - Array of provider names.
|
|
59
|
-
*/
|
|
60
|
-
function getAvailableProviders(providerTemplatesDir) {
|
|
61
|
-
return fs.readdirSync(providerTemplatesDir).map((file) => path.basename(file));
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Prompt the user to select a provider from a list.
|
|
65
|
-
* @param {string[]} availableProviders - Array of available providers.
|
|
66
|
-
* @returns {string} - The selected provider.
|
|
67
|
-
*/
|
|
68
|
-
async function promptProviderSelection(availableProviders) {
|
|
69
|
-
const { selectedProvider } = await inquirer.prompt([
|
|
70
|
-
{
|
|
71
|
-
type: "list",
|
|
72
|
-
name: "selectedProvider",
|
|
73
|
-
message: "Which provider would you like to add?",
|
|
74
|
-
choices: availableProviders,
|
|
75
|
-
},
|
|
76
|
-
]);
|
|
77
|
-
return selectedProvider;
|
|
8
|
+
export async function addProvider(name, replace = false) {
|
|
9
|
+
await addFromRegistry("providers", name, replace);
|
|
78
10
|
}
|
|
79
11
|
//# sourceMappingURL=provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../cli/src/commands/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../cli/src/commands/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAa,EAAE,UAAmB,KAAK;IACrE,MAAM,eAAe,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../cli/src/commands/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../cli/src/commands/update.ts"],"names":[],"mappings":"AAmBA;;GAEG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkD/D"}
|