@kulupu-linku/sona 0.2.0 → 0.2.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/dist/client.js +7 -2
- package/dist/index.js +1 -1
- package/dist/lib/client.d.ts +357 -21
- package/dist/lib/client.test.d.ts +27 -0
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/types.d.ts +1 -1
- package/dist/server/index.d.ts +392 -0
- package/dist/server/utils.d.ts +28 -0
- package/dist/server/v1/index.d.ts +394 -0
- package/dist/server/versioning.d.ts +2132 -0
- package/dist/utils-CnA4OULt.js +1 -1
- package/dist/utils.js +1 -1
- package/package.json +7 -7
- package/dist/client.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/utils-CnA4OULt.js.map +0 -1
- package/dist/utils.js.map +0 -1
- package/generated/sandbox.json +0 -315
package/dist/utils.js
CHANGED
|
@@ -6,4 +6,4 @@ export {
|
|
|
6
6
|
r as WritingSystem,
|
|
7
7
|
g as getTranslatedData
|
|
8
8
|
};
|
|
9
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kulupu-linku/sona",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "A library providing TypeScript types and Zod schemas for the sona API",
|
|
5
5
|
"homepage": "https://linku.la/",
|
|
6
6
|
"bugs": {
|
|
@@ -26,19 +26,19 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@hono/vite-cloudflare-pages": "^0.2.5",
|
|
29
|
-
"@hono/vite-dev-server": "^0.
|
|
30
|
-
"@hono/zod-validator": "^0.
|
|
31
|
-
"hono": "^4.0.
|
|
29
|
+
"@hono/vite-dev-server": "^0.8.2",
|
|
30
|
+
"@hono/zod-validator": "^0.2.0",
|
|
31
|
+
"hono": "^4.0.10",
|
|
32
32
|
"p-lazy": "^4.0.0",
|
|
33
33
|
"zod": "^3.22.4",
|
|
34
|
-
"zod-validation-error": "^3.0.
|
|
34
|
+
"zod-validation-error": "^3.0.3"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@types/node": "^20.11.
|
|
37
|
+
"@types/node": "^20.11.24",
|
|
38
38
|
"prettier": "^3.2.5",
|
|
39
39
|
"tsx": "^4.7.1",
|
|
40
40
|
"typescript": "^5.3.3",
|
|
41
|
-
"vite": "^5.1.
|
|
41
|
+
"vite": "^5.1.5",
|
|
42
42
|
"vite-plugin-dts": "^3.7.3",
|
|
43
43
|
"zod-to-json-schema": "^3.22.4"
|
|
44
44
|
},
|
package/dist/client.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sources":["../node_modules/.pnpm/hono@4.0.5/node_modules/hono/dist/utils/cookie.js","../node_modules/.pnpm/hono@4.0.5/node_modules/hono/dist/client/utils.js","../node_modules/.pnpm/hono@4.0.5/node_modules/hono/dist/client/client.js","../src/lib/client.ts"],"sourcesContent":["// src/utils/cookie.ts\nimport { decodeURIComponent_ } from \"./url.js\";\nvar algorithm = { name: \"HMAC\", hash: \"SHA-256\" };\nvar getCryptoKey = async (secret) => {\n const secretBuf = typeof secret === \"string\" ? new TextEncoder().encode(secret) : secret;\n return await crypto.subtle.importKey(\"raw\", secretBuf, algorithm, false, [\"sign\", \"verify\"]);\n};\nvar makeSignature = async (value, secret) => {\n const key = await getCryptoKey(secret);\n const signature = await crypto.subtle.sign(algorithm.name, key, new TextEncoder().encode(value));\n return btoa(String.fromCharCode(...new Uint8Array(signature)));\n};\nvar verifySignature = async (base64Signature, value, secret) => {\n try {\n const signatureBinStr = atob(base64Signature);\n const signature = new Uint8Array(signatureBinStr.length);\n for (let i = 0, len = signatureBinStr.length; i < len; i++) {\n signature[i] = signatureBinStr.charCodeAt(i);\n }\n return await crypto.subtle.verify(algorithm, secret, signature, new TextEncoder().encode(value));\n } catch (e) {\n return false;\n }\n};\nvar validCookieNameRegEx = /^[\\w!#$%&'*.^`|~+-]+$/;\nvar validCookieValueRegEx = /^[ !#-:<-[\\]-~]*$/;\nvar parse = (cookie, name) => {\n const pairs = cookie.trim().split(\";\");\n return pairs.reduce((parsedCookie, pairStr) => {\n pairStr = pairStr.trim();\n const valueStartPos = pairStr.indexOf(\"=\");\n if (valueStartPos === -1) {\n return parsedCookie;\n }\n const cookieName = pairStr.substring(0, valueStartPos).trim();\n if (name && name !== cookieName || !validCookieNameRegEx.test(cookieName)) {\n return parsedCookie;\n }\n let cookieValue = pairStr.substring(valueStartPos + 1).trim();\n if (cookieValue.startsWith('\"') && cookieValue.endsWith('\"')) {\n cookieValue = cookieValue.slice(1, -1);\n }\n if (validCookieValueRegEx.test(cookieValue)) {\n parsedCookie[cookieName] = decodeURIComponent_(cookieValue);\n }\n return parsedCookie;\n }, {});\n};\nvar parseSigned = async (cookie, secret, name) => {\n const parsedCookie = {};\n const secretKey = await getCryptoKey(secret);\n for (const [key, value] of Object.entries(parse(cookie, name))) {\n const signatureStartPos = value.lastIndexOf(\".\");\n if (signatureStartPos < 1) {\n continue;\n }\n const signedValue = value.substring(0, signatureStartPos);\n const signature = value.substring(signatureStartPos + 1);\n if (signature.length !== 44 || !signature.endsWith(\"=\")) {\n continue;\n }\n const isVerified = await verifySignature(signature, signedValue, secretKey);\n parsedCookie[key] = isVerified ? signedValue : false;\n }\n return parsedCookie;\n};\nvar _serialize = (name, value, opt = {}) => {\n let cookie = `${name}=${value}`;\n if (opt && typeof opt.maxAge === \"number\" && opt.maxAge >= 0) {\n cookie += `; Max-Age=${Math.floor(opt.maxAge)}`;\n }\n if (opt.domain) {\n cookie += `; Domain=${opt.domain}`;\n }\n if (opt.path) {\n cookie += `; Path=${opt.path}`;\n }\n if (opt.expires) {\n cookie += `; Expires=${opt.expires.toUTCString()}`;\n }\n if (opt.httpOnly) {\n cookie += \"; HttpOnly\";\n }\n if (opt.secure) {\n cookie += \"; Secure\";\n }\n if (opt.sameSite) {\n cookie += `; SameSite=${opt.sameSite}`;\n }\n if (opt.partitioned) {\n cookie += \"; Partitioned\";\n }\n return cookie;\n};\nvar serialize = (name, value, opt = {}) => {\n value = encodeURIComponent(value);\n return _serialize(name, value, opt);\n};\nvar serializeSigned = async (name, value, secret, opt = {}) => {\n const signature = await makeSignature(value, secret);\n value = `${value}.${signature}`;\n value = encodeURIComponent(value);\n return _serialize(name, value, opt);\n};\nexport {\n parse,\n parseSigned,\n serialize,\n serializeSigned\n};\n","// src/client/utils.ts\nvar mergePath = (base, path) => {\n base = base.replace(/\\/+$/, \"\");\n base = base + \"/\";\n path = path.replace(/^\\/+/, \"\");\n return base + path;\n};\nvar replaceUrlParam = (urlString, params) => {\n for (const [k, v] of Object.entries(params)) {\n const reg = new RegExp(\"/:\" + k + \"(?:{[^/]+})?\");\n urlString = urlString.replace(reg, `/${v}`);\n }\n return urlString;\n};\nvar removeIndexString = (urlSting) => {\n return urlSting.replace(/\\/index$/, \"/\");\n};\nfunction isObject(item) {\n return typeof item === \"object\" && item !== null && !Array.isArray(item);\n}\nfunction deepMerge(target, source) {\n if (!isObject(target) && !isObject(source)) {\n return source;\n }\n const merged = { ...target };\n for (const key in source) {\n const value = source[key];\n if (isObject(merged[key]) && isObject(value)) {\n merged[key] = deepMerge(merged[key], value);\n } else {\n merged[key] = value;\n }\n }\n return merged;\n}\nexport {\n deepMerge,\n mergePath,\n removeIndexString,\n replaceUrlParam\n};\n","// src/client/client.ts\nimport { serialize } from \"../utils/cookie.js\";\nimport { deepMerge, mergePath, removeIndexString, replaceUrlParam } from \"./utils.js\";\nvar createProxy = (callback, path) => {\n const proxy = new Proxy(() => {\n }, {\n get(_obj, key) {\n if (typeof key !== \"string\" || key === \"then\") {\n return void 0;\n }\n return createProxy(callback, [...path, key]);\n },\n apply(_1, _2, args) {\n return callback({\n path,\n args\n });\n }\n });\n return proxy;\n};\nvar ClientRequestImpl = class {\n constructor(url, method) {\n this.queryParams = void 0;\n this.pathParams = {};\n this.cType = void 0;\n this.fetch = (args, opt) => {\n if (args) {\n if (args.query) {\n for (const [k, v] of Object.entries(args.query)) {\n if (v === void 0) {\n continue;\n }\n this.queryParams || (this.queryParams = new URLSearchParams());\n if (Array.isArray(v)) {\n for (const v2 of v) {\n this.queryParams.append(k, v2);\n }\n } else {\n this.queryParams.set(k, v);\n }\n }\n }\n if (args.form) {\n const form = new FormData();\n for (const [k, v] of Object.entries(args.form)) {\n form.append(k, v);\n }\n this.rBody = form;\n }\n if (args.json) {\n this.rBody = JSON.stringify(args.json);\n this.cType = \"application/json\";\n }\n if (args.param) {\n this.pathParams = args.param;\n }\n }\n let methodUpperCase = this.method.toUpperCase();\n let setBody = !(methodUpperCase === \"GET\" || methodUpperCase === \"HEAD\");\n const headerValues = {\n ...args?.header ?? {},\n ...opt?.headers ? opt.headers : {}\n };\n if (args?.cookie) {\n const cookies = [];\n for (const [key, value] of Object.entries(args.cookie)) {\n cookies.push(serialize(key, value, { path: \"/\" }));\n }\n headerValues[\"Cookie\"] = cookies.join(\",\");\n }\n if (this.cType) {\n headerValues[\"Content-Type\"] = this.cType;\n }\n const headers = new Headers(headerValues ?? void 0);\n let url = this.url;\n url = removeIndexString(url);\n url = replaceUrlParam(url, this.pathParams);\n if (this.queryParams) {\n url = url + \"?\" + this.queryParams.toString();\n }\n methodUpperCase = this.method.toUpperCase();\n setBody = !(methodUpperCase === \"GET\" || methodUpperCase === \"HEAD\");\n return (opt?.fetch || fetch)(url, {\n body: setBody ? this.rBody : void 0,\n method: methodUpperCase,\n headers\n });\n };\n this.url = url;\n this.method = method;\n }\n};\nvar hc = (baseUrl, options) => createProxy((opts) => {\n const parts = [...opts.path];\n let method = \"\";\n if (/^\\$/.test(parts[parts.length - 1])) {\n const last = parts.pop();\n if (last) {\n method = last.replace(/^\\$/, \"\");\n }\n }\n const path = parts.join(\"/\");\n const url = mergePath(baseUrl, path);\n if (method === \"url\") {\n if (opts.args[0] && opts.args[0].param) {\n return new URL(replaceUrlParam(url, opts.args[0].param));\n }\n return new URL(url);\n }\n const req = new ClientRequestImpl(url, method);\n if (method) {\n options ?? (options = {});\n const args = deepMerge(options, { ...opts.args[1] ?? {} });\n return req.fetch(opts.args[0], args);\n }\n return req;\n}, []);\nexport {\n hc\n};\n","import { hc } from \"hono/client\";\nimport type { AppType } from \"$server\";\n\nexport const client = hc<AppType>(\"https://api.linku.la/\");\n\nexport type ApiType = AppType;\n"],"names":["_serialize","name","value","opt","cookie","serialize","mergePath","base","path","replaceUrlParam","urlString","params","k","v","reg","removeIndexString","urlSting","isObject","item","deepMerge","target","source","merged","key","createProxy","callback","_obj","_1","_2","args","ClientRequestImpl","url","method","v2","form","methodUpperCase","setBody","headerValues","cookies","headers","hc","baseUrl","options","opts","parts","last","req","client"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/lib/index.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { Book, CoinedEra, UsageCategory, WritingSystem } from \"./utils\";\n\nexport type * from \"./types\";\n\nconst YearMonth = z.string().regex(/^20\\d{2}-(0[1-9]|1[0-2])$/g);\n// Word data\nexport const Word = z\n\t.object({\n\t\tid: z\n\t\t\t.string()\n\t\t\t.min(1)\n\t\t\t.describe(\n\t\t\t\t`A unique identifier for the word. Usually the word but may have an integer added in case of a word with multiple definitions (like \"we\")`,\n\t\t\t),\n\t\tauthor_verbatim: z\n\t\t\t.string()\n\t\t\t.describe(\"The author's original definition, taken verbatim in their words\"),\n\t\tauthor_verbatim_source: z\n\t\t\t.string()\n\t\t\t.describe(\"Where the author's original definition is located (usually Discord)\"),\n\t\tbook: Book.describe(\"Which official Toki Pona book was this word featured in, if any.\"),\n\t\tcoined_era: CoinedEra.or(z.literal(\"\")).describe(\n\t\t\t\"When this word was coined (relative to the publication dates of the official Toki Pona books, if known)\",\n\t\t),\n\t\tcoined_year: z.string().describe(\"The year when this word was coined (if known)\"),\n\t\tcreator: z.array(z.string()).describe(\"The person who created this word (if known)\"),\n\t\tku_data: z\n\t\t\t.record(\n\t\t\t\tz.string().min(1).describe(\"A translation of the word into English proposed in ku\"),\n\t\t\t\tz\n\t\t\t\t\t.number()\n\t\t\t\t\t.min(0)\n\t\t\t\t\t.max(100)\n\t\t\t\t\t.describe(\n\t\t\t\t\t\t\"The percentage of ku survey respondents who report this translation as accurate to their usage.\",\n\t\t\t\t\t),\n\t\t\t)\n\t\t\t.optional()\n\t\t\t.describe(\n\t\t\t\t\"The usage data of the word as described in ku (the official Toki Pona dictionary)\",\n\t\t\t),\n\t\tsee_also: z.array(z.string()).describe(\"A list of related words\"),\n\t\tresources: z\n\t\t\t.object({\n\t\t\t\tsona_pona: z\n\t\t\t\t\t.string()\n\t\t\t\t\t.url()\n\t\t\t\t\t.optional()\n\t\t\t\t\t.describe(\n\t\t\t\t\t\t\"A link to the word's page on sona.pona.la, a Toki Pona wiki. May redirect for words with references but no dedicated page.\",\n\t\t\t\t\t),\n\t\t\t\tlipamanka_semantic: z\n\t\t\t\t\t.string()\n\t\t\t\t\t.url()\n\t\t\t\t\t.optional()\n\t\t\t\t\t.describe(\"A link to lipamanka's description of the word's semantic space.\"),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.describe(\"Non-Linku resources related to the specific word, such as wiki links.\"),\n\t\trepresentations: z\n\t\t\t.object({\n\t\t\t\tsitelen_emosi: z\n\t\t\t\t\t.string()\n\t\t\t\t\t.emoji()\n\t\t\t\t\t.optional()\n\t\t\t\t\t.describe(\n\t\t\t\t\t\t\"The sitelen emosi representation of this word, a script for writing Toki Pona using emoji\",\n\t\t\t\t\t),\n\t\t\t\tsitelen_jelo: z\n\t\t\t\t\t.array(z.string().emoji())\n\t\t\t\t\t.min(1)\n\t\t\t\t\t.optional()\n\t\t\t\t\t.describe(\"One or more example emojis for how the word can be written in sitelen jelo\"),\n\t\t\t\tligatures: z\n\t\t\t\t\t.array(z.string().min(1))\n\t\t\t\t\t.optional()\n\t\t\t\t\t.describe(\n\t\t\t\t\t\t\"A list of sitelen Lasina representations of the word, used by ligature fonts to visually convert latin characters into sitelen pona\",\n\t\t\t\t\t),\n\t\t\t\tsitelen_sitelen: z\n\t\t\t\t\t.string()\n\t\t\t\t\t.url()\n\t\t\t\t\t.optional()\n\t\t\t\t\t.describe(\"A URL pointing to an image of this word's sitelen sitelen hieroglyphic block\"),\n\t\t\t\tucsur: z\n\t\t\t\t\t.string()\n\t\t\t\t\t.regex(/^U\\+[\\da-fA-F]{4,6}$/g)\n\t\t\t\t\t.optional()\n\t\t\t\t\t.describe(\n\t\t\t\t\t\t\"The word's UCSUR codepoint, as defined in https://www.kreativekorp.com/ucsur/charts/sitelen.html\",\n\t\t\t\t\t),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.describe(\"Ways of representing this word in the real world, via text/computers\"),\n\t\tsource_language: z.string().describe(\"The language this word originated from\"),\n\t\tusage_category: UsageCategory.describe(\n\t\t\t\"The word's usage category, according to a survey performed by the Linku Project\",\n\t\t),\n\t\tword: z\n\t\t\t.string()\n\t\t\t.describe(`The word's actual text, in case of a word with multiple definitions (like \"we\")`),\n\t\tdeprecated: z\n\t\t\t.boolean()\n\t\t\t.describe(\"Whether or not the word is considered deprecated by its author.\"),\n\t\tetymology: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tword: z\n\t\t\t\t\t\t.string()\n\t\t\t\t\t\t.optional()\n\t\t\t\t\t\t.describe(\n\t\t\t\t\t\t\t\"One of the root words of this word, as written out in its language of origin\",\n\t\t\t\t\t\t),\n\t\t\t\t\talt: z.string().optional().describe(`A latinized representation of the \"word\" field`),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.describe(\"Unlocalized etymological values regarding this word's origin\"),\n\t\taudio: z.array(\n\t\t\tz\n\t\t\t\t.object({\n\t\t\t\t\tauthor: z.string().describe(\"The author of the audio file in `link`.\"),\n\t\t\t\t\tlink: z\n\t\t\t\t\t\t.string()\n\t\t\t\t\t\t.url()\n\t\t\t\t\t\t.describe(\"A link to the audio file for the word, pronounced by `author`.\"),\n\t\t\t\t})\n\t\t\t\t.describe(\"Audio files of the words pronounced out loud\"),\n\t\t),\n\t\tpu_verbatim: z\n\t\t\t.object({\n\t\t\t\ten: z.string().describe(\"The original definition in the English version of pu\"),\n\t\t\t\tfr: z.string().describe(\"The original definition in the French version of pu\"),\n\t\t\t\tde: z.string().describe(\"The original definition in the German version of pu\"),\n\t\t\t\teo: z.string().describe(\"The original definition in the Esperanto version of pu\"),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.describe(\"The original definition of the word in pu, the first official Toki Pona book\"),\n\t\tusage: z\n\t\t\t.record(z.string().regex(/^20\\d{2}-(0[1-9]|1[0-2])$/g), z.number().min(0).max(100))\n\t\t\t.describe(\n\t\t\t\t\"The percentage of people in the Toki Pona community who use this word, according to surveys performed by the Linku Project\",\n\t\t\t),\n\t})\n\t.describe(\"General info on a Toki Pona word\");\n\nexport type Word = z.infer<typeof Word>;\n\nexport const CommentaryTranslation = z\n\t.record(z.string().min(1), z.string())\n\t.describe(\"Localized commentary regarding Toki Pona words\");\n\nexport type CommentaryTranslation = z.infer<typeof CommentaryTranslation>;\n\nexport const DefinitionTranslation = z\n\t.record(z.string().min(1), z.string().min(1))\n\t.describe(\"Localized definitions of Toki Pona words\");\n\nexport type DefinitionTranslation = z.infer<typeof DefinitionTranslation>;\n\nexport const SitelenPonaTranslation = z\n\t.record(z.string().min(1), z.string())\n\t.describe(\"Localized descriptions of the origins of the sitelen pona glyphs for Toki Pona words\");\n\nexport type SitelenPonaTranslation = z.infer<typeof SitelenPonaTranslation>;\n\nexport const EtymologyTranslation = z\n\t.record(\n\t\tz.string().min(1),\n\t\tz.array(\n\t\t\tz.object({\n\t\t\t\tdefinition: z\n\t\t\t\t\t.string()\n\t\t\t\t\t.optional()\n\t\t\t\t\t.describe(\"The localized definition of the root word in its origin language\"),\n\t\t\t\tlanguage: z\n\t\t\t\t\t.string()\n\t\t\t\t\t.describe(\"The localized name of the language this word originated from\"),\n\t\t\t}),\n\t\t),\n\t)\n\t.describe(\"Localized etymological values for Toki Pona words\");\n\nexport type EtymologyTranslation = z.infer<typeof EtymologyTranslation>;\n\nexport const Sign = z\n\t.object({\n\t\tdefinition: z.string().describe(\"The definition of the sign as a single toki pona word.\"),\n\t\tid: z.string().describe(\"A globally unique name for the sign which is also a gloss.\"),\n\t\tis_two_handed: z.boolean().describe(\"Whether the sign is two-handed or not.\"),\n\t\tnew_gloss: z.string().describe(\"The more recent, preferred gloss for this sign.\"),\n\t\told_gloss: z.string().describe(\"The older gloss for this sign, similar to `id`.\"),\n\t\tetymology: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tlanguage: z.string().describe(\"The language of the sign.\"),\n\t\t\t\t\tsign: z\n\t\t\t\t\t\t.string()\n\t\t\t\t\t\t.optional()\n\t\t\t\t\t\t.describe(\n\t\t\t\t\t\t\t\"The name of the sign such that it could be found in a sign language dictionary.\",\n\t\t\t\t\t\t),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.describe(\"Unlocalized etymological values regarding this sign's origin\"),\n\t\tsignwriting: z\n\t\t\t.object({\n\t\t\t\tfsw: z\n\t\t\t\t\t.string()\n\t\t\t\t\t.describe(\n\t\t\t\t\t\t\"The [Formal SignWriting](https://en.wikipedia.org/wiki/SignWriting) representation of the sign.\",\n\t\t\t\t\t),\n\t\t\t\tswu: z\n\t\t\t\t\t.string()\n\t\t\t\t\t.describe(\n\t\t\t\t\t\t\"The [SignWriting with Unicode](https://en.wikipedia.org/wiki/SignWriting) representation of the sign.\",\n\t\t\t\t\t),\n\t\t\t})\n\t\t\t.describe(\"Scripts for representing a sign as characters.\"),\n\t\tvideo: z\n\t\t\t.object({\n\t\t\t\tgif: z.string().describe(\"A link to a gif of the sign being signed.\"),\n\t\t\t\tmp4: z.string().describe(\"a link to an mp4 of the sign being signed.\"),\n\t\t\t})\n\t\t\t.describe(\"Videos of the sign being performed, by format.\"),\n\t})\n\t.describe(\"Unlocalized info on a Luka Pona sign\");\n\nexport type Sign = z.infer<typeof Sign>;\n\nexport const FingerspellingSign = z\n\t.object({\n\t\tid: z.string().describe(\"A globally unique name for the sign which is also a gloss.\"),\n\t\tis_two_handed: z.boolean().describe(\"Whether the sign is two-handed or not.\"),\n\t\tetymology: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tlanguage: z.string().describe(\"The language of the sign.\"),\n\t\t\t\t\tsign: z\n\t\t\t\t\t\t.string()\n\t\t\t\t\t\t.describe(\n\t\t\t\t\t\t\t\"The name of the sign such that it could be found in a sign language dictionary.\",\n\t\t\t\t\t\t),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.describe(\"Unlocalized etymological values regarding this sign's origin\"),\n\t\tsignwriting: z\n\t\t\t.object({\n\t\t\t\tfsw: z.string().describe(\"The Formal Sign Writing representation of the sign.\"),\n\t\t\t\tswu: z.string().describe(\"The Sign Writing with Unicode representation of hte sign.\"),\n\t\t\t})\n\t\t\t.describe(\"Scripts for representing a sign as characters.\"),\n\t\tvideo: z\n\t\t\t.object({\n\t\t\t\tgif: z.string().optional().describe(\"A link to a gif of the sign being signed.\"),\n\t\t\t\tmp4: z.string().optional().describe(\"a link to an mp4 of the sign being signed.\"),\n\t\t\t})\n\t\t\t.describe(\"Videos of the sign being performed, by format.\"),\n\t})\n\t.describe(\"Unlocalized info on a fingerspelling sign.\");\n\nexport type FingerspellingSign = z.infer<typeof FingerspellingSign>;\n\nexport const ParametersTranslation = z\n\t.record(\n\t\tz.string().min(1),\n\t\tz.object({\n\t\t\thandshape: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\n\t\t\t\t\t\"The shape of the hand when signing, identified by its name in ASL. Should not be translated in any language other than Toki Pona\",\n\t\t\t\t),\n\t\t\tmovement: z.string().optional().describe(\"The motion of the hand when signing.\"),\n\t\t\tplacement: z.string().optional().describe(\"The placement of the hand when signing.\"),\n\t\t\torientation: z.string().optional().describe(\"The orientation of the hand when signing.\"),\n\t\t}),\n\t)\n\t.describe(\"Partly localized descriptions of how a sign is signed.\");\n\nexport type ParametersTranslation = z.infer<typeof ParametersTranslation>;\n\nexport const IconTranslation = z\n\t.record(z.string().min(1), z.string())\n\t.describe(\"Localized descriptions of the thing a sign represents.\");\n\nexport type IconTranslation = z.infer<typeof IconTranslation>;\n\nexport const Font = z\n\t.object({\n\t\tid: z.string().min(1).describe(\"The font's unique ID, identifying it among other fonts\"),\n\t\tcreator: z.array(z.string()).describe(\"a list of this font's creators\"),\n\t\tfeatures: z.array(z.string()).describe(\"a list of features this font supports\"),\n\t\tfilename: z\n\t\t\t.string()\n\t\t\t.regex(/^(?:.+\\.(ttf|otf|woff2|woff))?$/)\n\t\t\t.describe(\"the name of the file this font is stored in at https://github.com/lipu-linku/ijo\"),\n\t\tlast_updated: YearMonth.optional().describe(\"the rough date of this font's last update\"),\n\t\tlicense: z\n\t\t\t.string()\n\t\t\t.describe(\"an SPDX expression describing this font's license: https://spdx.org/licenses/\"),\n\t\tligatures: z.boolean().describe(\"whether this font supports ligatures\"),\n\t\tname: z.string().min(1).describe(\"this font's name\"),\n\t\tstyle: z.string().min(1).describe(\"the general style of this font\"),\n\t\tucsur: z\n\t\t\t.boolean()\n\t\t\t.describe(\n\t\t\t\t\"whether this font conforms to the UCSUR standard: https://www.kreativekorp.com/ucsur/charts/sitelen.html\",\n\t\t\t),\n\t\tversion: z.string().describe(\"the current version of this font\"),\n\t\twriting_system: WritingSystem.describe(\"the writing system this font uses as its script\"),\n\t\tlinks: z.object({\n\t\t\tfontfile: z\n\t\t\t\t.string()\n\t\t\t\t.url()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\n\t\t\t\t\t\"a link to the font file published by the original author (not the mirror on the Linku Project's GitHub)\",\n\t\t\t\t),\n\t\t\trepo: z\n\t\t\t\t.string()\n\t\t\t\t.url()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\n\t\t\t\t\t\"a link to a web hosted repository of this font's source files (usually hosted on GitHub or GitLab)\",\n\t\t\t\t),\n\t\t\twebpage: z\n\t\t\t\t.string()\n\t\t\t\t.url()\n\t\t\t\t.optional()\n\t\t\t\t.describe(\n\t\t\t\t\t\"a link to this font's home page, usually showcasing its features and usage/installation\",\n\t\t\t\t),\n\t\t}),\n\t})\n\t.describe(\"Info on a font for Toki Pona\");\nexport type Font = z.infer<typeof Font>;\n\nexport const Words = z\n\t.record(\n\t\tz.string().min(1),\n\t\tWord.extend({\n\t\t\ttranslations: z.record(\n\t\t\t\tz.object({\n\t\t\t\t\tcommentary: CommentaryTranslation.valueSchema,\n\t\t\t\t\tdefinition: DefinitionTranslation.valueSchema,\n\t\t\t\t\tetymology: EtymologyTranslation.valueSchema,\n\t\t\t\t\tsp_etymology: SitelenPonaTranslation.valueSchema,\n\t\t\t\t}),\n\t\t\t),\n\t\t}),\n\t)\n\t.describe(\"A raw data object containing dictionary info about Toki Pona words\");\nexport type Words = z.infer<typeof Words>;\nexport type LocalizedWord = Words[string];\n\nexport const Signs = z\n\t.record(\n\t\tz.string().min(1),\n\t\tSign.extend({\n\t\t\ttranslations: z.record(\n\t\t\t\tz.object({\n\t\t\t\t\tparameters: ParametersTranslation.valueSchema,\n\t\t\t\t\ticons: IconTranslation.valueSchema,\n\t\t\t\t}),\n\t\t\t),\n\t\t}),\n\t)\n\t.describe(\"A raw data object containing information about Luka Pona signs\");\nexport type Signs = z.infer<typeof Signs>;\nexport type LocalizedSign = Signs[string];\n\nexport const Fingerspelling = z\n\t.record(\n\t\tz.string().min(1),\n\t\tFingerspellingSign.extend({\n\t\t\ttranslations: z.record(z.object({ parameters: ParametersTranslation.valueSchema })),\n\t\t}),\n\t)\n\t.describe(\"A raw data object containing information about Luka Pona fingerspelling signs\");\nexport type Fingerspelling = z.infer<typeof Fingerspelling>;\nexport type LocalizedFingerspellingSign = Fingerspelling[string];\n\nexport const Fonts = z\n\t.record(Font)\n\t.describe(\"A raw data object containing all the fonts data in sona\");\nexport type Fonts = z.infer<typeof Fonts>;\n\nexport const Languages = z.record(\n\tz\n\t\t.string()\n\t\t.min(2)\n\t\t.describe(\"The language code used by Crowdin. Approximates 2 letter code -> 3 letter code.\"),\n\tz\n\t\t.object({\n\t\t\tid: z\n\t\t\t\t.string()\n\t\t\t\t.min(2)\n\t\t\t\t.describe(\n\t\t\t\t\t\"The language code used by Crowdin. Approximates 2 letter code -> 3 letter code.\",\n\t\t\t\t),\n\t\t\tlocale: z.string().describe(\"The locale code corresponding to the language.\"),\n\t\t\tdirection: z\n\t\t\t\t.union([z.literal(\"ltr\"), z.literal(\"rtl\")])\n\t\t\t\t.describe(\"The direction of the language's script.\"),\n\t\t\tname: z.object({\n\t\t\t\ten: z.string().describe(\"The name of the language in English.\"),\n\t\t\t\t// These are optional because we can add a language via Crowdin and Crowdin doesn't provide these.\n\t\t\t\t// Downstream projects should prefer endonym over name_en if both are available.\n\t\t\t\ttok: z.string().optional().describe(\"The name of the language in Toki Pona.\"),\n\t\t\t\tendonym: z.string().optional().describe(\"The name of the language in that language.\"),\n\t\t\t}),\n\t\t\t// TODO: completion percentage on a per-file basis?\n\t\t\t// we also care about completion within usage categories, since the most important words are core+widespread+common\n\t\t})\n\t\t.describe(\"The languages offered by sona Linku.\"),\n);\nexport type Languages = z.infer<typeof Languages>;\nexport type Language = Languages[string];\n"],"names":["YearMonth","z","Word","Book","CoinedEra","UsageCategory","CommentaryTranslation","DefinitionTranslation","SitelenPonaTranslation","EtymologyTranslation","Sign","FingerspellingSign","ParametersTranslation","IconTranslation","Font","WritingSystem","Words","Signs","Fingerspelling","Fonts","Languages"],"mappings":"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"}
|