@lupinum/ginko 0.0.0-stage → 0.4.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/CHANGELOG.md +75 -0
- package/LICENSE +21 -0
- package/README.md +99 -2
- package/dist/cli/index.d.mts +17 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.mjs +679 -0
- package/dist/index.d.mts +6 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.mjs +15 -0
- package/dist/internal/search.d.mts +25 -0
- package/dist/internal/search.d.ts +25 -0
- package/dist/internal/search.mjs +85 -0
- package/dist/internal.d.mts +496 -0
- package/dist/internal.d.ts +496 -0
- package/dist/internal.mjs +903 -0
- package/dist/nuxt/module.d.mts +29 -0
- package/dist/nuxt/module.d.ts +29 -0
- package/dist/nuxt/module.mjs +364 -0
- package/dist/nuxt/runtime/GinkoImage.d.mts +39 -0
- package/dist/nuxt/runtime/GinkoImage.mjs +33 -0
- package/dist/nuxt/runtime/GinkoMarkdown.d.mts +36 -0
- package/dist/nuxt/runtime/GinkoMarkdown.mjs +24 -0
- package/dist/nuxt/runtime/composables.d.mts +121 -0
- package/dist/nuxt/runtime/composables.mjs +182 -0
- package/dist/nuxt/runtime/fetch.d.mts +26 -0
- package/dist/nuxt/runtime/fetch.mjs +50 -0
- package/dist/nuxt/runtime/markdown.d.mts +13 -0
- package/dist/nuxt/runtime/markdown.mjs +17 -0
- package/dist/nuxt/runtime/og/GinkoCard.vue +48 -0
- package/dist/nuxt/runtime/plugin.d.mts +2 -0
- package/dist/nuxt/runtime/plugin.mjs +89 -0
- package/dist/nuxt/runtime/preview.vue +52 -0
- package/dist/nuxt/runtime/schema.d.ts +50 -0
- package/dist/nuxt/runtime/server/bundles.d.mts +4 -0
- package/dist/nuxt/runtime/server/bundles.mjs +18 -0
- package/dist/nuxt/runtime/server/files-md.d.mts +2 -0
- package/dist/nuxt/runtime/server/files-md.mjs +8 -0
- package/dist/nuxt/runtime/server/files.d.mts +2 -0
- package/dist/nuxt/runtime/server/files.mjs +9 -0
- package/dist/nuxt/runtime/server/headers.d.mts +2 -0
- package/dist/nuxt/runtime/server/headers.mjs +9 -0
- package/dist/nuxt/runtime/server/llms-full.d.mts +2 -0
- package/dist/nuxt/runtime/server/llms-full.mjs +13 -0
- package/dist/nuxt/runtime/server/llms.d.mts +2 -0
- package/dist/nuxt/runtime/server/llms.mjs +13 -0
- package/dist/nuxt/runtime/server/markdown-trees.d.mts +2 -0
- package/dist/nuxt/runtime/server/markdown-trees.mjs +2 -0
- package/dist/nuxt/runtime/server/markdown.d.mts +2 -0
- package/dist/nuxt/runtime/server/markdown.mjs +35 -0
- package/dist/nuxt/runtime/server/redirects.d.mts +2 -0
- package/dist/nuxt/runtime/server/redirects.mjs +17 -0
- package/dist/nuxt/runtime/server/robots.d.mts +2 -0
- package/dist/nuxt/runtime/server/robots.mjs +8 -0
- package/dist/nuxt/runtime/server/search.d.mts +2 -0
- package/dist/nuxt/runtime/server/search.mjs +9 -0
- package/dist/nuxt/runtime/server/site-config.d.mts +14 -0
- package/dist/nuxt/runtime/server/site-config.mjs +9 -0
- package/dist/nuxt/runtime/server/sitemap-source.d.mts +2 -0
- package/dist/nuxt/runtime/server/sitemap-source.mjs +14 -0
- package/dist/nuxt/runtime/server/sitemap-xml.d.mts +24 -0
- package/dist/nuxt/runtime/server/sitemap-xml.mjs +88 -0
- package/dist/nuxt/runtime/server/sitemap.d.mts +2 -0
- package/dist/nuxt/runtime/server/sitemap.mjs +15 -0
- package/dist/nuxt/runtime/shared.d.mts +35 -0
- package/dist/nuxt/runtime/shared.mjs +9 -0
- package/dist/nuxt/runtime/today.client.d.mts +2 -0
- package/dist/nuxt/runtime/today.client.mjs +18 -0
- package/dist/search.d.mts +1 -0
- package/dist/search.d.ts +1 -0
- package/dist/search.mjs +2 -0
- package/dist/shared/ginko.BBkZW2nW.d.ts +68 -0
- package/dist/shared/ginko.BDF3bW0C.d.ts +213 -0
- package/dist/shared/ginko.BTUfZCfa.d.mts +172 -0
- package/dist/shared/ginko.BWpep204.mjs +62 -0
- package/dist/shared/ginko.Bwan3BB-.d.mts +68 -0
- package/dist/shared/ginko.C-QjDn3O.mjs +4944 -0
- package/dist/shared/ginko.C90fPpMP.mjs +544 -0
- package/dist/shared/ginko.CQvxhyez.mjs +40 -0
- package/dist/shared/ginko.CrNRBkS5.mjs +1075 -0
- package/dist/shared/ginko.D-fNojn9.d.mts +1554 -0
- package/dist/shared/ginko.D-fNojn9.d.ts +1554 -0
- package/dist/shared/ginko.D4ApSEyg.d.mts +57 -0
- package/dist/shared/ginko.D4ApSEyg.d.ts +57 -0
- package/dist/shared/ginko.Dc0oNcDv.d.ts +172 -0
- package/dist/shared/ginko.Dht0xxE5.mjs +96 -0
- package/dist/shared/ginko.Mn30dmlm.mjs +20 -0
- package/dist/shared/ginko.akHewCGt.d.mts +213 -0
- package/dist/vue.d.mts +45 -0
- package/dist/vue.d.ts +45 -0
- package/dist/vue.mjs +84 -0
- package/i18n/de.json +204 -0
- package/i18n/en.json +204 -0
- package/i18n/es.json +204 -0
- package/package.json +85 -3
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# @lupinum/ginko
|
|
2
|
+
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`ea2ea13`](https://github.com/lupinum-dev/ginko/commit/ea2ea133997f2011ad0d43f77a0f1dc75605923e) Thanks [@Mat4m0](https://github.com/Mat4m0)! - Add Ginko 0.4, the first release: one content system for Nuxt websites, from Markdown files in Git to a hosted platform.
|
|
8
|
+
|
|
9
|
+
Owners, staff and AI agents edit the same content. All seven packages release together under one version. It starts at 0.4 because `@lupinum/ginko-content` and `@lupinum/ginko-docs` already published an older, unrelated line up to 0.3. Until 1.0, a minor version (0.4 → 0.5) may contain breaking changes; the changelog names each one and how to update.
|
|
10
|
+
|
|
11
|
+
Requirements: Node 22.18+, 24 or 26, and Nuxt 4.6+ or Nuxt 5 (tested on its nightly until it is released). Start a site with `npm create ginko@latest my-site`; the documentation explains every step.
|
|
12
|
+
|
|
13
|
+
**Public API**
|
|
14
|
+
|
|
15
|
+
- `@lupinum/ginko`: `defineSite`, `single`, `collection`, `f`, `defineComponents`, `formatMoney`, `plainText`, `safeHref`, `startOfWeek` and the documented types. Imported, not auto-imported.
|
|
16
|
+
- `@lupinum/ginko/nuxt`: the module, the `useGinko*` composables (everything that needs a Nuxt app starts with `useGinko`), `<GinkoMarkdown>` and `<GinkoImage>`. `@lupinum/ginko/vue`: `<GinkoMarkdown>` for any Vue app. `@lupinum/ginko/search`: `loadIndex` and `search`.
|
|
17
|
+
- `@lupinum/ginko/internal` and `@lupinum/ginko/internal/search` are for Ginko's own packages and have no stability promise.
|
|
18
|
+
- The `ginko` CLI: `check [--offline]`, `release` and `export [folder]`, plus `--version`. Every command run prints one JSON line, `{ "ok": true, … }` or `{ "ok": false, "error": { code, message } }` (`--help` and `--version` print plain text), and ends with exit code 0 (ok), 1 (fix the code), 2 (usage), 3 (platform unreachable, retry) or 4 (key not allowed). CI deploys the site only when `release` prints `"deploy": true` (a superseded run exits 0 with `"deploy": false`). The CLI reads `GINKO_PLATFORM` (or `NUXT_PUBLIC_GINKO_PLATFORM`), `GINKO_KEY`, `GINKO_COMMIT` (or `GITHUB_SHA`), `GINKO_BRANCH` and `GINKO_REMOTE`; it does not read `.env` files. `ginko-i18n --json` uses the same output shape, error codes (`USAGE`, `INVALID`) and exit codes.
|
|
19
|
+
- Config names: `f.ref` (one entry) and `f.refs` (several); `visible: { mode: 'until', field, days?, deleteExpired? }`; prefill tokens `@today`, `@workWeek`, `@nextWorkWeek`; `firstDayOfWeek`, `linkCheck`, `untranslated`, `maxBytes`, `Migration.compute`, `retired` rule `{ drop: true }`. Options and defaults are typed per field, and an unknown top-level key fails the build.
|
|
20
|
+
- Markdown components: `embed`, `frame` (`none`, `card`, `border`, …), `background` (`none`, `muted`, `tint`), `appearance` (`quiet`, `tint`), `quiz-question{mode}`, `code-tree{file}`.
|
|
21
|
+
|
|
22
|
+
**Content (`@lupinum/ginko`, `@lupinum/ginko-content`)**
|
|
23
|
+
|
|
24
|
+
- One text format: Markdown (comark 0.7) everywhere, with field profiles that limit what a field may contain. Footnotes, emoji, alerts, Shiki code, task lists, route links (`$blog.my-post`), reusable snippets and heading anchors.
|
|
25
|
+
- Data files: YAML and JSON (one file, one entry) and CSV (one file, many entries), checked against the field schema; every error names the file and field, and the line for CSV rows and unreadable files. Entries with `draft: true` stay out of production builds.
|
|
26
|
+
- Query engine in the site, over the loaded bundle: `where`, `order`, `limit`, pagination with totals, field selection, `include` for references, previous/next and facet counts.
|
|
27
|
+
- References (`f.ref`, `f.refs`), navigation trees and breadcrumbs, and a URL for every entry in every language; two entries on one URL fail the build.
|
|
28
|
+
- Link check before any HTML exists: route links, anchors, snippets and redirected paths, in the build, the dev terminal, `ginko check` and the agent tools. On the platform a save, a new entry or a scheduled publish that adds a broken link is stopped, and History says why. External links are checked on request (`linkCheck.external`), at build and in `ginko check` (never in dev), with a 7-day cache.
|
|
29
|
+
- Images: WebP copies at 480, 960 and 1600 px, made at upload on the platform and at build for files. `<GinkoImage>` and Markdown images get `srcset` and `sizes`.
|
|
30
|
+
- Redirects from `redirectFrom` (301) and site rules in `redirects` (301 by default, `status` 302/307/308 per rule).
|
|
31
|
+
- SEO from the bundle, with no other module: title template, canonical, Open Graph with `og:url`, `<html lang>`, hreflang with `x-default`, sitemap with `lastmod`, images and alternates, robots.txt with `noindex` on preview hosts, JSON-LD. With `nuxt-og-image` (in every starter), every page gets a generated share card in the brand colour `seo.color`, with the site's logo and the page's image.
|
|
32
|
+
- Works with the Nuxt SEO modules (`@nuxtjs/seo` or single ones, in any order): Ginko leaves them sitemap, robots.txt and JSON-LD defaults and hands them its pages with hreflang, the site's address, name and languages, and `noindex` on preview hosts. `nuxt-ai-ready` stays off while Ginko serves `/llms.txt`. Requires `nuxt-og-image` 7.
|
|
33
|
+
- Search index built in plain JS at build time, one record per heading section, loaded lazily per language.
|
|
34
|
+
- Agent output: `/llms.txt`, `/llms-full.txt`, a `.md` twin for every entry page (collections with a `route`), and a Markdown 404 that suggests pages. The normal address always answers with HTML.
|
|
35
|
+
- Render modes: Git-only sites prerender everything; platform sites refresh changed pages after a publish; previews render with `noindex`.
|
|
36
|
+
- In dev, `nuxt dev` restarts when `ginko.config.ts` changes, and a brick that cannot reach the platform names itself and the fix.
|
|
37
|
+
- CLI `ginko`: `check` (schema, links and the share image, for every site; `--offline` without the platform) and `release` for CI, `export` for backups; `pnpm local:dev|import|pull` run only in the Ginko monorepo.
|
|
38
|
+
|
|
39
|
+
**Languages (`@lupinum/ginko-i18n`)**
|
|
40
|
+
|
|
41
|
+
- The only locale authority: routes, alternates, hreflang, messages with plurals, and formatters for dates, ranges, relative time, numbers, currency and lists, each in the site's time zone.
|
|
42
|
+
- Works on its own in any Nuxt 4.6+ or Nuxt 5 app, without the rest of Ginko.
|
|
43
|
+
|
|
44
|
+
**Components and docs (`@lupinum/ginko-components`, `@lupinum/ginko-docs`)**
|
|
45
|
+
|
|
46
|
+
- Content components with props defined as Ginko fields: callouts, tabs, code groups, steps, cards, accordion, figures, embeds (click to load), timeline, quiz and more. Each one can also be copied into an app with the shadcn-vue CLI, from a registry the docs build generates.
|
|
47
|
+
- Docs layer (`@lupinum/ginko-docs`; `npm create ginko@latest my-docs -- --preset docs` starts a site with it): navigation, section tabs, breadcrumbs, table of contents with scroll spy, previous/next, ⌘K search with heading results, blog with authors and RSS, changelog, copy page as Markdown, dark mode. A guide for switching from Nuxt Content and `@nuxtjs/i18n`. Math (KaTeX) and mermaid diagrams render and load only on pages that use them.
|
|
48
|
+
|
|
49
|
+
**Platform and Studio (hosted by Lupinum)**
|
|
50
|
+
|
|
51
|
+
The platform is a hosted service, not an npm package. A site connects to it with one setting; without it, the site reads its content from files.
|
|
52
|
+
|
|
53
|
+
- Quick tasks for the jobs owners do most ("Heute geschlossen", "Preis ändern"), phone first, with the full form behind "Alles bearbeiten".
|
|
54
|
+
- Files library: All, Recent, Unused, Missing alt text, Duplicates and folders; icon and list views; "used in" with links; replace a file and keep its references; a used file cannot be removed by mistake. Alt text set in the library is the default for every use, per language.
|
|
55
|
+
- Approvals, off by default: a task or agent key can need a yes. Reviewers see the change, approve, approve for a time, or reject with a sentence; the author sees the reason. Releases publish several changes together.
|
|
56
|
+
- History with "show changes", "back to this version" and undo; drafts and scheduled publishing; trash with restore; translation status per language; "why is this not on the website?".
|
|
57
|
+
- Team and invitations with per-task rights, sign-in with an emailed code, AI agent keys with an MCP tool catalog derived from the operations, and weekly reminder mails.
|
|
58
|
+
- Long forms group their fields under headings or in tabs (`group` on a field, `layout: 'tabs'` on a brick); phones always show headings.
|
|
59
|
+
- A rich text editor (TipTap 3) that writes Markdown, where untouched text stays byte for byte. Headings, lists, task lists, quotes, code blocks, tables, images from the library, embeds, registry components with prop forms, slash and bubble menus, Markdown shortcuts and paste, source mode, find and replace (⌘F), a drag handle and Alt+↑/↓ to move blocks, character counter, a link card for pasted URLs, uploads with progress, and a formatting bar above the phone keyboard.
|
|
60
|
+
- Delete a site, with seven days to cancel, and delete your own account. The last owner of a site must hand it over or delete it first.
|
|
61
|
+
- Studio in German, English and Spanish (beta), light and dark.
|
|
62
|
+
|
|
63
|
+
**Presets (`@lupinum/ginko-preset-gastro`, `create-ginko`)**
|
|
64
|
+
|
|
65
|
+
- Gastro: opening hours with exceptions, seasons, holidays and new hours from a date; lunch week with planning ahead and an optional PDF; menu with prices from a date; notices that expire; events; JSON-LD for Restaurant, Menu, opening hours and Event; a printable lunch sheet.
|
|
66
|
+
- `create-ginko` starts a new site, plain or with `--preset gastro|docs`. Starters install with npm, pnpm 11 and bun, carry a `typecheck` script, a page description and share cards (`nuxt-og-image` with Takumi, Nuxt 4.6.1 or later; set `NUXT_APP_SECRET` where the site runs, `.env` has one), and create-ginko warns on an unsupported Node.
|
|
67
|
+
|
|
68
|
+
**Not in 0.4**
|
|
69
|
+
|
|
70
|
+
Real-time co-editing comes next. Also not included: an agency preset, the editor UI as a shadcn-vue registry, OAuth for agent connectors, and a Google Business sync.
|
|
71
|
+
|
|
72
|
+
### Patch Changes
|
|
73
|
+
|
|
74
|
+
- Updated dependencies [[`ea2ea13`](https://github.com/lupinum-dev/ginko/commit/ea2ea133997f2011ad0d43f77a0f1dc75605923e)]:
|
|
75
|
+
- @lupinum/ginko-i18n@0.4.0
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025-2026 Lupinum OG
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,100 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @lupinum/ginko
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Connect a Nuxt site with its content. The site stays normal Nuxt code; the content arrives as one
|
|
4
|
+
JSON **bundle** per language, either from the hosted Ginko platform (owners edit opening hours, menus,
|
|
5
|
+
events) or from Markdown files in your repo (with [`@lupinum/ginko-content`](https://github.com/lupinum-dev/ginko/tree/main/packages/ginko-content)).
|
|
6
|
+
|
|
7
|
+
## Start
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm create ginko my-site
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Or add it to an existing Nuxt 4.6+ or Nuxt 5 site:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install @lupinum/ginko @lupinum/ginko-content
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
// ginko.config.ts: the bricks (content types) of this site
|
|
21
|
+
import { collection, defineSite, f } from '@lupinum/ginko'
|
|
22
|
+
|
|
23
|
+
export default defineSite({
|
|
24
|
+
site: 'my-site',
|
|
25
|
+
name: 'My site',
|
|
26
|
+
url: 'https://example.com',
|
|
27
|
+
timeZone: 'Europe/Vienna',
|
|
28
|
+
locales: ['en'],
|
|
29
|
+
currency: 'EUR',
|
|
30
|
+
pages: { home: '/' },
|
|
31
|
+
bricks: {
|
|
32
|
+
events: collection({
|
|
33
|
+
label: 'Events',
|
|
34
|
+
source: 'files', // read from content/events/*.md; without `source` the brick needs the Ginko platform
|
|
35
|
+
fields: { title: f.text('Title'), date: f.date('Date') },
|
|
36
|
+
max: 50,
|
|
37
|
+
order: { field: 'date', dir: 'asc' },
|
|
38
|
+
}),
|
|
39
|
+
},
|
|
40
|
+
})
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
One file per entry, for example `content/events/opening.md`:
|
|
44
|
+
|
|
45
|
+
```md
|
|
46
|
+
---
|
|
47
|
+
title: Opening night
|
|
48
|
+
date: 2026-11-05
|
|
49
|
+
---
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
// nuxt.config.ts
|
|
54
|
+
import ginko from './ginko.config.ts'
|
|
55
|
+
|
|
56
|
+
export default defineNuxtConfig({ modules: ['@lupinum/ginko/nuxt'], ginko })
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
```vue
|
|
60
|
+
<script setup lang="ts">
|
|
61
|
+
const events = useGinko('events') // typed from ginko.config.ts
|
|
62
|
+
</script>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## What is in the package
|
|
66
|
+
|
|
67
|
+
- **`@lupinum/ginko`**: `defineSite`, `single`, `collection`, `f`, `defineComponents`, `formatMoney`, `plainText`,
|
|
68
|
+
`safeHref`, `startOfWeek` and the documented types.
|
|
69
|
+
- **`@lupinum/ginko/nuxt`**: the Nuxt module. It fetches and caches the bundle, adds the composables
|
|
70
|
+
(`useGinko`, `useGinkoEntry`, `useGinkoQuery`, `useGinkoNeighbors`, `useGinkoNav`, `useGinkoBreadcrumbs`,
|
|
71
|
+
`useGinkoToday`, `useGinkoWeek`, `useGinkoLocale`, `useGinkoPath`, `useGinkoSeo` and more), the components
|
|
72
|
+
`<GinkoMarkdown>` and `<GinkoImage>`, a sitemap, and languages through
|
|
73
|
+
[`@lupinum/ginko-i18n`](https://github.com/lupinum-dev/ginko/tree/main/packages/ginko-i18n).
|
|
74
|
+
- **`@lupinum/ginko/vue`**: `<GinkoMarkdown :value>` for a Vue 3 app without Nuxt: takes a parsed `MarkdownTree`,
|
|
75
|
+
renders at once (no `<Suspense>`), and uses only the components you pass. Pass the site's `components` as
|
|
76
|
+
`registry` too: a component keeps only the props its registry declares.
|
|
77
|
+
- **`ginko`**: the CLI. `ginko check` checks the config and the content links of every site (use it in CI;
|
|
78
|
+
`--offline` needs no platform key); `release` and `export` work with the hosted platform. Every run prints one
|
|
79
|
+
JSON line and ends with a documented exit code.
|
|
80
|
+
|
|
81
|
+
## Stability
|
|
82
|
+
|
|
83
|
+
`@lupinum/ginko`, `@lupinum/ginko/nuxt`, `@lupinum/ginko/vue` and `@lupinum/ginko/search` are the public
|
|
84
|
+
API. Every name they export is documented on the docs site. `pos` and `retired` on fields and bricks are set by
|
|
85
|
+
the platform; do not set them. Until 1.0, a minor release may still break it, and the changelog names the break.
|
|
86
|
+
`@lupinum/ginko/internal` and `@lupinum/ginko/internal/search` are for Ginko's own packages. They can change in
|
|
87
|
+
any release, so do not import them in a site.
|
|
88
|
+
|
|
89
|
+
## Docs
|
|
90
|
+
|
|
91
|
+
[Getting started](https://github.com/lupinum-dev/ginko/blob/main/sites/docs/content/docs/1.einstieg.en.md) ·
|
|
92
|
+
[Bricks](https://github.com/lupinum-dev/ginko/blob/main/sites/docs/content/docs/3.bausteine.en.md) ·
|
|
93
|
+
[Reading content](https://github.com/lupinum-dev/ginko/blob/main/sites/docs/content/docs/5.seiten-lesen.en.md) ·
|
|
94
|
+
[Languages](https://github.com/lupinum-dev/ginko/blob/main/sites/docs/content/docs/6.sprachen.en.md) ·
|
|
95
|
+
[Content from files](https://github.com/lupinum-dev/ginko/blob/main/sites/docs/content/docs/4.inhalte-aus-dateien.en.md) ·
|
|
96
|
+
[Platform and CLI](https://github.com/lupinum-dev/ginko/blob/main/sites/docs/content/docs/12.plattform-und-cli.en.md)
|
|
97
|
+
|
|
98
|
+
## License
|
|
99
|
+
|
|
100
|
+
MIT © Lupinum OG
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
/** The outside world of the CLI. main() takes it as a parameter so that tests can replace it. */
|
|
3
|
+
interface CliDeps {
|
|
4
|
+
env: NodeJS.ProcessEnv;
|
|
5
|
+
/** Runs git and returns its stdout. Rejects when git fails. */
|
|
6
|
+
git: (args: string[]) => Promise<string>;
|
|
7
|
+
stdout: (text: string) => void;
|
|
8
|
+
log: (line: string) => void;
|
|
9
|
+
/** Network requests (platform, file downloads, local upload). Tests route it elsewhere. */
|
|
10
|
+
fetch: (input: string, init?: RequestInit) => Promise<Response>;
|
|
11
|
+
}
|
|
12
|
+
/** 0 ok, 1 invalid or rejected (fix the code), 2 usage (fix the call), 3 unavailable (run again), 4 key not allowed. */
|
|
13
|
+
type ExitCode = 0 | 1 | 2 | 3 | 4;
|
|
14
|
+
|
|
15
|
+
declare function main(argv: string[], deps?: CliDeps): Promise<ExitCode>;
|
|
16
|
+
|
|
17
|
+
export { main };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
/** The outside world of the CLI. main() takes it as a parameter so that tests can replace it. */
|
|
3
|
+
interface CliDeps {
|
|
4
|
+
env: NodeJS.ProcessEnv;
|
|
5
|
+
/** Runs git and returns its stdout. Rejects when git fails. */
|
|
6
|
+
git: (args: string[]) => Promise<string>;
|
|
7
|
+
stdout: (text: string) => void;
|
|
8
|
+
log: (line: string) => void;
|
|
9
|
+
/** Network requests (platform, file downloads, local upload). Tests route it elsewhere. */
|
|
10
|
+
fetch: (input: string, init?: RequestInit) => Promise<Response>;
|
|
11
|
+
}
|
|
12
|
+
/** 0 ok, 1 invalid or rejected (fix the code), 2 usage (fix the call), 3 unavailable (run again), 4 key not allowed. */
|
|
13
|
+
type ExitCode = 0 | 1 | 2 | 3 | 4;
|
|
14
|
+
|
|
15
|
+
declare function main(argv: string[], deps?: CliDeps): Promise<ExitCode>;
|
|
16
|
+
|
|
17
|
+
export { main };
|