@krizaka/org

中文文档
0.7.0发布于 2026/11/01Apache-2.0TypeScriptES Module零依赖构建来源已验证

The public facts about Krizaka, in one validated JSON that every footer, site and app reads: legal name, NEQ, « Fait à Montréal » in French and English, brand marks, default avatars and banners, the live products and sites, the public contact, the footer

原始使用文档

@krizaka/org

The public facts about Krizaka, in one validated JSON. The legal name, the NEQ, « Fait à Montréal » in French and English, the brand marks, the default avatars, the live products (Orazaka, Yomizaka, Akinaza), the sites, the public contact, the footer line and the legal links — read by every footer, site and app, so changing one takes one pull request here.

import { footerLine, org } from "@krizaka/org";

footerLine("fr"); // « Une entreprise de Technologies Krizaka · Fait à Montréal »
org.company.legalName; // « Technologies Krizaka Inc. »

Without a build step, read it from the CDN: krizaka-assets.b-cdn.net/org/v1/org.json (an immutable copy sits beside it, org.<hash>.json). Also exported: @krizaka/org/org.json, @krizaka/org/org.schema.json and @krizaka/org/apps/<product>.json.

  • Default media come from here. The defaults section lists the central sets of default pictures — person, folder, organisation, shop, banner — with id, alt text in English and French and the URLs per size on Bunny (defaults/v1/<kind>/<id>-<size>.<ext>, written by krizaka-ui tools/export-defaults.mjs). An app never hard-codes or bundles one: listDefaults(kind) lists them, defaultFor(kind, seed) picks one deterministically (FNV-1a of the seed, modulo the list), defaultUrl(item, size) gives the URL, fetchDefaults(ORG_URL) reads the section from the published JSON. A folder is never given a person.
  • One name per entry of the family. org.family (and familyName(id)) is the only place a name is written: the company is « Krizaka », a product goes by its own name (Orazaka, Yomizaka, Akinaza — never « Krizaka Yomizaka »), a library or a tool is « Krizaka » (Krizaka UI, Krizaka Java, Krizaka TypeScript, Krizaka Lab; the short name only under a heading « Open source »). The bar, the switcher and every footer read it; a test holds the rule.
  • Public facts only. Never an address, a phone number, figures, a secret, an IP address or an internal host: the test scans for them and the schema refuses any field it does not list.
  • Validated. orgSchema (JSON Schema 2020-12) and the types Org, AppConfig…; a test validates the data and requests every URL in it.
  • Mobile runtime config. apps/<product>.json holds what a client may know — the API base URL per environment, feature flags, the minimum app version — never a secret. An app reads it at start, with a copy built into the binary as fallback.
  • Published on each release by the Release workflow (pnpm run publish:cdn), needing the organisation secrets MEDIA_STORAGE_API_KEY and MEDIA_STORAGE_ZONE; without them it warns and publishes nothing.

Apache-2.0 · Krizaka TypeScript

What org.json is, and what it is not

Service discovery only (founder, 2026-11-01): the addresses and versions clients resolve (API URLs, minimum and latest app versions, the default media, the family's names and addresses). It is read at start by the apps and published at each release. Names, status, store availability, social links and the footer contents are not in it: they are admin configuration of each app in its database, through @krizaka/settings (audit trail), read at runtime and at build where needed (a save redeploys). The shared validation (no code name as a display name, FR/EN labels, valid URLs) lives in the settings package.

A rename is therefore: the administrator edits the value in the app's settings, saves, and the build-time pages redeploy. The seed below is only the default of that setting.

Commercial names (brands, a seed)

The code names (yomizaka, akinaza, orazaka, kachizaka) stay internal: repositories, packages, coordinates, CLI. A customer reads the commercial name, endorsed by the company — « Verikora by Krizaka » / « Verikora par Krizaka ».

import { brandOf, displayName, lockup } from "@krizaka/org";
brandOf("akinaza").domains.shop; // "https://folioviv.shop"
displayName("yomizaka", settingValue); // the admin's choice (`brand.displayName`), else « Verikora »
lockup("orazaka", "fr"); // « Sovkora par Krizaka »

The guard. npx krizaka-code-names [--report] [--allow <path-part>] <built-html-dir> messages/ stores/ fails when a public surface shows a code name (or « Krizaka ECM ») where the commercial name is required. Allowed, declared once: URLs and hosts, @krizaka/* and com.krizaka.* coordinates, krizaka/<repo>, code (backticks, <pre>, <code>), class names and attributes other than alt / title / aria-label, catalogue keys, and each brand's one « formerly » line.

版本与发布记录

@krizaka/org 共发布 10 个版本,首次发布于 2026/10/26;过去 12 个月发布了 10 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.7.0latest2026/11/011 天前
0.6.02026/10/313 天前
0.5.02026/10/295 天前
0.4.02026/10/286 天前
0.3.12026/10/286 天前
0.3.02026/10/286 天前

关于 @krizaka/org 的常见问题

@krizaka/org 是什么?

关于Krizaka的公开事实,在一个经过验证的JSON中,每个页脚,网站和应用程序都可以读取:法定名称,NEQ,法语和英语的«Fait <e:1> montr<s:1>»,品牌标志,默认的化身和横幅,现场产品和网站,公共联系人,页脚

如何安装 @krizaka/org?

在项目目录运行 npm install @krizaka/org,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 krizaka-code-names,可以用 npx krizaka-code-names 直接运行。

@krizaka/org 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@krizaka/org 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@krizaka/org 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@krizaka/org 可以商用吗?

@krizaka/org 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@krizaka/org 还在维护吗?

最新版本 0.7.0 发布于 2026/11/01(1 天前);至今共发布 10 个版本,其中过去 12 个月发布了 10 个;首次发布于 2026/10/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。