58 lines
2.5 KiB
TypeScript
58 lines
2.5 KiB
TypeScript
// The ledger module's manifest (spec §4.1): the one place it registers anything. Procedures, jobs,
|
|
// events, tables and permissions are added here as the module grows; `modules/index.ts` lists the
|
|
// manifest, and nothing in apps/ changes.
|
|
|
|
import { defineModule } from "@conusai-kit/core"
|
|
import { LEDGER_PROCEDURES } from "./adapters/procedures.js"
|
|
import { en, lt } from "./i18n/index.js"
|
|
|
|
export const ledgerModule = defineModule({
|
|
id: "ledger",
|
|
// A business module is its service, which this app reaches on these profiles (test/module-profiles.test.ts).
|
|
profiles: ["postgres", "mariadb", "mongodb"],
|
|
version: "0.1.0",
|
|
kit: "^0.1.0",
|
|
requires: ["tenancy"],
|
|
permissions: {
|
|
"ledger.accounts.read": "viewer",
|
|
"ledger.balances.read": "viewer",
|
|
"ledger.transactions.read": "viewer",
|
|
"ledger.accounts.manage": "admin",
|
|
"ledger.transactions.write": "editor",
|
|
"ledger.transactions.reverse": "admin",
|
|
},
|
|
procedures: LEDGER_PROCEDURES,
|
|
serviceRequirements: [
|
|
{
|
|
transport: "business",
|
|
service: "ledger",
|
|
apiRange: "^1.1.0",
|
|
profiles: ["postgres", "mariadb", "mongodb"],
|
|
operations: {
|
|
"ledger.accounts.list": ["ledger.accounts:read"],
|
|
"ledger.accounts.get": ["ledger.accounts:read"],
|
|
"ledger.balances.list": ["ledger.balances:read"],
|
|
"ledger.verify": ["ledger.balances:read"],
|
|
"ledger.entries.list": ["ledger.transactions:read"],
|
|
"ledger.transactions.list": ["ledger.transactions:read"],
|
|
"ledger.transactions.get": ["ledger.transactions:read"],
|
|
"ledger.accounts.create": ["ledger.accounts:write"],
|
|
"ledger.accounts.update": ["ledger.accounts:write"],
|
|
"ledger.transactions.record": ["ledger.balances:read", "ledger.transactions:write"],
|
|
"ledger.transactions.post": ["ledger.balances:read", "ledger.transactions:write"],
|
|
"ledger.transactions.void": ["ledger.transactions:write"],
|
|
"ledger.transactions.reverse": ["ledger.balances:read", "ledger.transactions:write"],
|
|
},
|
|
configuration: [],
|
|
dependencies: [],
|
|
dataClasses: ["financial"],
|
|
partitionRequired: true,
|
|
remediation: "/docs/business-services.md",
|
|
},
|
|
],
|
|
// A project's tab. `modules/pages.ts` mounts the page under this segment.
|
|
ui: { nav: [{ scope: "project", label: "ledger.title", href: "ledger", permission: "ledger.accounts.read" }] },
|
|
// Both languages, as TypeScript objects: kit-i18n merges them from the registry (AT-D23).
|
|
i18n: { en, lt },
|
|
})
|