@canmi/me 2026.1004.0 → 2026.1004.2

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 ADDED
@@ -0,0 +1,7 @@
1
+ # @canmi/me
2
+
3
+ The author's own facts, for the author's own programs: their sites' addresses and the world's
4
+ (`@canmi/me/urls`), who they are (`@canmi/me/identity`), and the languages they write in
5
+ (`@canmi/me/locales`). The `canmi` crate is the same addresses and identity for Rust.
6
+
7
+ Versioned by the day it was released, `YYYY.MDD.N`; see the repository's `spec/repository.md`.
@@ -1,14 +1,14 @@
1
1
  //#region identity/src/index.d.ts
2
2
  /**
3
3
  * The author, declared once for every app. The values are a JSON file so that Rust and the
4
- * scripts outside the Vite graph read the same file. See spec/architecture/identity.md.
4
+ * scripts outside the Vite graph read the same file. See spec/me/identity.md.
5
5
  */
6
6
  export interface Author {
7
7
  /** The name a page signs with, and the one the author goes by. */
8
8
  name: string;
9
9
  /**
10
10
  * Said only where the author is introduced: the home page, its card and its agent view once, and
11
- * the structured data. Not translated. See spec/architecture/identity.md, "One name, said
11
+ * the structured data. Not translated. See web's spec/architecture/identity.md, "One name, said
12
12
  * plainly".
13
13
  */
14
14
  fullName: string;
@@ -9,8 +9,8 @@
9
9
  * here and two Chinese, and each is written in its own script.
10
10
  *
11
11
  * The site's language picker was the first consumer and the desktop client's segment view was
12
- * the second, which is what moved this out of `apps/site/src/lib/locale/switcher.ts`. That client
13
- * is archived and the surface replacing it inherits the same need, so the move still stands.
12
+ * the second, which is what moved this out of web's `apps/site/src/lib/locale/switcher.ts`. That
13
+ * client is archived and the surface replacing it inherits the same need, so the move still stands.
14
14
  */
15
15
  export declare const LOCALE_TAGS: readonly ['en-US', 'zh-CN', 'ja-JP', 'de-DE', 'ko-KR', 'fr-FR', 'es-ES', 'zh-TW'];
16
16
  export type LocaleTag = (typeof LOCALE_TAGS)[number];
@@ -38,14 +38,14 @@ export type LocaleCode = (typeof LOCALE_CODES)[number];
38
38
  /**
39
39
  * The language this site's own copy is written in -- not a fallback for a missing article
40
40
  * language. It moved here when the API needed to name a locale no article carries a view of,
41
- * which is the third consumer this table has collected. See lattice's spec/locale/interface.md.
41
+ * which is the third consumer this table has collected. See web's spec/locale/interface.md.
42
42
  */
43
43
  export declare const SITE_LANGUAGE = "en-US";
44
44
  /**
45
45
  * What a code is called in public, which is the only place BCP-47 and the corpus's codes meet.
46
46
  *
47
47
  * `mw` has no entry: the source view's tag is whatever language the article was written in, so
48
- * it is the article's to say and not this table's. See lattice's spec/locale/addressing.md.
48
+ * it is the article's to say and not this table's. See web's spec/locale/addressing.md.
49
49
  */
50
50
  export declare const PUBLIC_LANGUAGE: {
51
51
  readonly de: 'de-DE';
@@ -9,8 +9,8 @@
9
9
  * here and two Chinese, and each is written in its own script.
10
10
  *
11
11
  * The site's language picker was the first consumer and the desktop client's segment view was
12
- * the second, which is what moved this out of `apps/site/src/lib/locale/switcher.ts`. That client
13
- * is archived and the surface replacing it inherits the same need, so the move still stands.
12
+ * the second, which is what moved this out of web's `apps/site/src/lib/locale/switcher.ts`. That
13
+ * client is archived and the surface replacing it inherits the same need, so the move still stands.
14
14
  */
15
15
  const LOCALE_TAGS = [
16
16
  "en-US",
@@ -57,14 +57,14 @@ const LOCALE_CODES = [
57
57
  /**
58
58
  * The language this site's own copy is written in -- not a fallback for a missing article
59
59
  * language. It moved here when the API needed to name a locale no article carries a view of,
60
- * which is the third consumer this table has collected. See lattice's spec/locale/interface.md.
60
+ * which is the third consumer this table has collected. See web's spec/locale/interface.md.
61
61
  */
62
62
  const SITE_LANGUAGE = "en-US";
63
63
  /**
64
64
  * What a code is called in public, which is the only place BCP-47 and the corpus's codes meet.
65
65
  *
66
66
  * `mw` has no entry: the source view's tag is whatever language the article was written in, so
67
- * it is the article's to say and not this table's. See lattice's spec/locale/addressing.md.
67
+ * it is the article's to say and not this table's. See web's spec/locale/addressing.md.
68
68
  */
69
69
  const PUBLIC_LANGUAGE = {
70
70
  de: "de-DE",
@@ -2,13 +2,13 @@
2
2
  /**
3
3
  * The author's own: their site, their identity's addresses, the world's addresses anyone could
4
4
  * use, and the functions every program here reads a request with. Depends on nothing else of
5
- * theirs, so every layer above may read it. See spec/architecture/layers.md, "Addresses are split
6
- * by who owns the name".
5
+ * theirs, so every layer above may read it. See spec/me/addresses.md, "`@canmi/me/urls` holds
6
+ * the addresses whose names are the author's".
7
7
  */
8
8
  /**
9
9
  * How far the sandbox shifts every pinned port, and 0 everywhere else. Read from the environment
10
10
  * where there is one, and stated by the build where there is not; production states nothing and
11
- * gets 0. See spec/architecture/modes.md, "Every port is shifted by one hundred".
11
+ * gets 0. See web's spec/architecture/modes.md, "Every port is shifted by one hundred".
12
12
  */
13
13
  export declare const PORT_OFFSET: number;
14
14
  /** The author's site. */
@@ -21,7 +21,7 @@ export declare const SITE_PORT = 26511;
21
21
  * An identity rather than an address, which is why it sits beside the map instead of inside it:
22
22
  * the map is mirrored into Rust as URL constants, and this is the one string in it that is not
23
23
  * a URL. The CDN's release proxy fetches from this account and no other -- there is no place in
24
- * its URL to name a different one. See spec/architecture/delivery.md.
24
+ * its URL to name a different one. See platform's spec/architecture/delivery.md.
25
25
  */
26
26
  export declare const GITHUB_OWNER = "canmi21";
27
27
  /**
@@ -30,7 +30,7 @@ export declare const GITHUB_OWNER = "canmi21";
30
30
  * themselves -- so it is a published fact, not a convenience, and belongs beside the other URLs
31
31
  * rather than written into a route.
32
32
  */
33
- export declare const SOURCE = "https://github.com/canmi21/lattice";
33
+ export declare const SOURCE = "https://github.com/canmi21/web";
34
34
  /**
35
35
  * Where a vulnerability is reported, published in every zone's security.txt. An address on the
36
36
  * site's domain that Cloudflare forwards, so the mailbox behind it can change without it.
@@ -106,7 +106,7 @@ export declare function loopbackUrl(port: number): string;
106
106
  /**
107
107
  * A request path in its one spelling: every CJK full stop a dot, every backslash a slash, every run
108
108
  * of slashes one, and no trailing slash -- so the root alone is `''`, the bare host. See
109
- * spec/architecture/delivery.md, "Every address has one spelling".
109
+ * spec/me/addresses.md, "Every address has one spelling".
110
110
  */
111
111
  export declare function normalizePath(path: string): string;
112
112
  /** Where a request belongs and how it is sent there. */
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * How far the sandbox shifts every pinned port, and 0 everywhere else. Read from the environment
4
4
  * where there is one, and stated by the build where there is not; production states nothing and
5
- * gets 0. See spec/architecture/modes.md, "Every port is shifted by one hundred".
5
+ * gets 0. See web's spec/architecture/modes.md, "Every port is shifted by one hundred".
6
6
  */
7
7
  const PORT_OFFSET = typeof STATED_PORT_OFFSET === "number" ? STATED_PORT_OFFSET : Number(globalThis.process?.env?.LATTICE_PORT_OFFSET || 0);
8
8
  /** The author's site. */
@@ -15,7 +15,7 @@ const SITE_PORT = 26511;
15
15
  * An identity rather than an address, which is why it sits beside the map instead of inside it:
16
16
  * the map is mirrored into Rust as URL constants, and this is the one string in it that is not
17
17
  * a URL. The CDN's release proxy fetches from this account and no other -- there is no place in
18
- * its URL to name a different one. See spec/architecture/delivery.md.
18
+ * its URL to name a different one. See platform's spec/architecture/delivery.md.
19
19
  */
20
20
  const GITHUB_OWNER = "canmi21";
21
21
  /**
@@ -24,7 +24,7 @@ const GITHUB_OWNER = "canmi21";
24
24
  * themselves -- so it is a published fact, not a convenience, and belongs beside the other URLs
25
25
  * rather than written into a route.
26
26
  */
27
- const SOURCE = `https://github.com/${GITHUB_OWNER}/lattice`;
27
+ const SOURCE = `https://github.com/${GITHUB_OWNER}/web`;
28
28
  /**
29
29
  * Where a vulnerability is reported, published in every zone's security.txt. An address on the
30
30
  * site's domain that Cloudflare forwards, so the mailbox behind it can change without it.
@@ -122,7 +122,7 @@ const FULL_STOPS = /[。.。]|%E3%80%82|%EF%BC%8E|%EF%BD%A1/gi;
122
122
  /**
123
123
  * A request path in its one spelling: every CJK full stop a dot, every backslash a slash, every run
124
124
  * of slashes one, and no trailing slash -- so the root alone is `''`, the bare host. See
125
- * spec/architecture/delivery.md, "Every address has one spelling".
125
+ * spec/me/addresses.md, "Every address has one spelling".
126
126
  */
127
127
  function normalizePath(path) {
128
128
  return path.replace(FULL_STOPS, ".").replaceAll("\\", "/").replace(/\/{2,}/g, "/").replace(/\/+$/, "");
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Every string under `map` as a Rust `pub const`, named by its path in capitals, so
4
4
  * `external.github.web` is `EXTERNAL_GITHUB_WEB`. The generator each address package renders its
5
- * Rust half with; it knows nothing of what the addresses are. See spec/architecture/layers.md.
5
+ * Rust half with; it knows nothing of what the addresses are. See spec/me/addresses.md.
6
6
  */
7
7
  export declare function rustConstants(map: Record<string, unknown>): string;
8
8
  /**
@@ -4,7 +4,7 @@ import { author } from "../../identity/src/index.js";
4
4
  /**
5
5
  * Every string under `map` as a Rust `pub const`, named by its path in capitals, so
6
6
  * `external.github.web` is `EXTERNAL_GITHUB_WEB`. The generator each address package renders its
7
- * Rust half with; it knows nothing of what the addresses are. See spec/architecture/layers.md.
7
+ * Rust half with; it knows nothing of what the addresses are. See spec/me/addresses.md.
8
8
  */
9
9
  function rustConstants(map) {
10
10
  const pairs = [];
@@ -30,7 +30,7 @@ function rustCanmi() {
30
30
  return [
31
31
  "//! @generated from pkgs/me/urls/src/index.ts and pkgs/me/identity/author.json by",
32
32
  "//! `mise run urls`; do not edit.",
33
- "//! The author's own addresses and identity, for Rust -- see spec/architecture/layers.md.",
33
+ "//! The author's own addresses and identity, for Rust -- see spec/me/addresses.md.",
34
34
  "",
35
35
  rustConstants({
36
36
  site: SITE,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canmi/me",
3
- "version": "2026.1004.0",
3
+ "version": "2026.1004.2",
4
4
  "description": "The author's own facts: their sites' addresses and the world's, their identity, the languages they write in",
5
5
  "license": "MIT",
6
6
  "repository": {