@lowerdeck/id 1.0.4 → 1.0.5
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/package.json +11 -5
- package/.turbo/turbo-build.log +0 -13
- package/.turbo/turbo-test.log +0 -21
- package/CHANGELOG.md +0 -36
- package/dist/index.modern.js +0 -2
- package/dist/index.modern.js.map +0 -1
- package/tsconfig.json +0 -13
package/package.json
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lowerdeck/id",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
+
"files": [
|
|
8
|
+
"src/**",
|
|
9
|
+
"dist/**",
|
|
10
|
+
"README.md",
|
|
11
|
+
"package.json"
|
|
12
|
+
],
|
|
7
13
|
"author": "Tobias Herber",
|
|
8
14
|
"license": "Apache 2",
|
|
9
15
|
"type": "module",
|
|
@@ -21,18 +27,18 @@
|
|
|
21
27
|
"scripts": {
|
|
22
28
|
"test": "vitest run --passWithNoTests",
|
|
23
29
|
"lint": "prettier src/**/*.ts --check",
|
|
24
|
-
"build": "microbundle"
|
|
30
|
+
"build": "rm -rf ./dist && microbundle"
|
|
25
31
|
},
|
|
26
32
|
"dependencies": {
|
|
27
|
-
"@lowerdeck/hash": "^1.0.
|
|
28
|
-
"@lowerdeck/error": "^1.0.
|
|
33
|
+
"@lowerdeck/hash": "^1.0.4",
|
|
34
|
+
"@lowerdeck/error": "^1.0.8",
|
|
29
35
|
"nanoid": "^5.0.7",
|
|
30
36
|
"short-uuid": "^5.2.0",
|
|
31
37
|
"snowflake-uuid": "^1.0.0"
|
|
32
38
|
},
|
|
33
39
|
"devDependencies": {
|
|
34
40
|
"microbundle": "^0.15.1",
|
|
35
|
-
"@lowerdeck/tsconfig": "^1.0.
|
|
41
|
+
"@lowerdeck/tsconfig": "^1.0.1",
|
|
36
42
|
"typescript": "^5.8.3",
|
|
37
43
|
"vitest": "^3.1.2"
|
|
38
44
|
}
|
package/.turbo/turbo-build.log
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
[0m[2m[35m$[0m [2m[1mmicrobundle[0m
|
|
3
|
-
No name was provided for external module '@lowerdeck/error' in output.globals – guessing 'error'
|
|
4
|
-
No name was provided for external module '@lowerdeck/hash' in output.globals – guessing 'hash'
|
|
5
|
-
[34mBuild "@lowerdeck/id" to dist:[39m
|
|
6
|
-
[32m1164 B[39m: [37mindex.cjs[39m.gz
|
|
7
|
-
[32m1029 B[39m: [37mindex.cjs[39m.br
|
|
8
|
-
[32m1057 B[39m: [37mindex.module.js[39m.gz
|
|
9
|
-
[32m938 B[39m: [37mindex.module.js[39m.br
|
|
10
|
-
[32m1130 B[39m: [37mindex.module.js[39m.gz
|
|
11
|
-
[32m1010 B[39m: [37mindex.module.js[39m.br
|
|
12
|
-
[32m1247 B[39m: [37mindex.umd.js[39m.gz
|
|
13
|
-
[32m1109 B[39m: [37mindex.umd.js[39m.br
|
package/.turbo/turbo-test.log
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
[0m[2m[35m$[0m [2m[1mvitest run --passWithNoTests[0m
|
|
3
|
-
[?25l
|
|
4
|
-
[1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/Users/tobias/code/metorial/metorial-enterprise/oss/src/packages/shared/id[39m
|
|
5
|
-
|
|
6
|
-
[?2026h
|
|
7
|
-
[1m[33m ❯ [39m[22msrc/id.test.ts[2m [queued][22m
|
|
8
|
-
|
|
9
|
-
[2m Test Files [22m[1m[32m0 passed[39m[22m[90m (1)[39m
|
|
10
|
-
[2m Tests [22m[1m[32m0 passed[39m[22m[90m (0)[39m
|
|
11
|
-
[2m Start at [22m10:23:46
|
|
12
|
-
[2m Duration [22m101ms
|
|
13
|
-
[?2026l[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K [32m✓[39m src/id.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 2[2mms[22m[39m
|
|
14
|
-
[32m✓[39m id[2m > [22mgenerateId[32m 1[2mms[22m[39m
|
|
15
|
-
|
|
16
|
-
[2m Test Files [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
17
|
-
[2m Tests [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
18
|
-
[2m Start at [22m 10:23:46
|
|
19
|
-
[2m Duration [22m 270ms[2m (transform 65ms, setup 0ms, collect 83ms, tests 2ms, environment 0ms, prepare 41ms)[22m
|
|
20
|
-
|
|
21
|
-
[?25h
|
package/CHANGELOG.md
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# @lowerdeck/id
|
|
2
|
-
|
|
3
|
-
## 1.0.4
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Fix default entry point
|
|
8
|
-
- Updated dependencies
|
|
9
|
-
- @lowerdeck/error@1.0.7
|
|
10
|
-
- @lowerdeck/hash@1.0.3
|
|
11
|
-
|
|
12
|
-
## 1.0.3
|
|
13
|
-
|
|
14
|
-
### Patch Changes
|
|
15
|
-
|
|
16
|
-
- update versions
|
|
17
|
-
- Updated dependencies
|
|
18
|
-
- @lowerdeck/error@1.0.6
|
|
19
|
-
- @lowerdeck/hash@1.0.2
|
|
20
|
-
|
|
21
|
-
## 1.0.2
|
|
22
|
-
|
|
23
|
-
### Patch Changes
|
|
24
|
-
|
|
25
|
-
- sync
|
|
26
|
-
- Updated dependencies
|
|
27
|
-
- @lowerdeck/error@1.0.5
|
|
28
|
-
|
|
29
|
-
## 1.0.1
|
|
30
|
-
|
|
31
|
-
### Patch Changes
|
|
32
|
-
|
|
33
|
-
- Fix exports
|
|
34
|
-
- Updated dependencies
|
|
35
|
-
- @lowerdeck/error@1.0.1
|
|
36
|
-
- @lowerdeck/hash@1.0.1
|
package/dist/index.modern.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{ServiceError as e,badRequestError as r}from"@lowerdeck/error";import{Hash as t}from"@lowerdeck/hash";import{customAlphabet as i}from"nanoid";import n from"short-uuid";import{Worker as o}from"snowflake-uuid";let s=n("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"),f=i("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",20),d=i("0123456789",6),l=()=>(new Date).getTime().toString(36).padStart(9,"0"),$=new o(0,0,{workerIdBits:12,sequenceBits:12}),a=new Set,h=e=>{if(e.endsWith("_")&&(e=e.slice(0,-1)),a.has(e))throw new Error(`Prefix ${e} already exists`)},p={sorted:(e,r=22)=>(h(e),{prefix:e,length:r,type:"sorted"}),unsorted:(e,r=22)=>(h(e),{prefix:e,length:r,type:"unsorted"}),key:(e,r=50)=>(h(e),{prefix:e,length:r,type:"key"})},x=e=>{for(let r in e)e[r].prefix.endsWith("_")||(e[r].prefix=`${e[r].prefix}_`);let r=new Set;for(let t in e){let i=e[t].prefix;if(r.has(i))throw new Error(`Prefix ${i} already exists`);r.add(i)}let i=r=>{let t=e[r];if(!t)throw new Error(`Invalid prefix: ${r}`);return t};return{generateId:async e=>{let r=i(e),n=r.length;if("sorted"==r.type){let e=l(),t=n-e.length;return t<10&&(t=10),`${r.prefix}${e}${f(t)}`}if("unsorted"==r.type)return`${r.prefix}${f(n)}`;{let e=`${r.prefix}${f(n)}`;return`${e}${(await t.sha512(e)).slice(0,6)}`}},generateIdSync:e=>{let r=i(e),t=r.length;if("sorted"==r.type){let e=l(),i=t-e.length;return i<10&&(i=10),`${r.prefix}${e}${f(i)}`}if("unsorted"==r.type)return`${r.prefix}${f(t)}`;throw new Error("Cannot generate key id synchronously")},idPrefixes:Object.entries(e).reduce((e,[r,t])=>(e[r]=t.prefix,e),{}),normalizeUUID:(e,r)=>`${i(e).prefix}${s.fromUUID(r)}`}},w=t=>{if(t.endsWith("_")||(t=`${t}_`),a.has(t))throw new Error(`Prefix ${t} already exists`);return a.add(t),{fromUUID:e=>`${t}${s.fromUUID(e)}`,toUUID:i=>{if(!i.startsWith(t))throw new e(r({message:`ID ${i} does not start with prefix ${t}`}));return s.toUUID(i.slice(t.length))}}},u=(e,r=20)=>(e&&!e.endsWith("_")&&(e=`${e}_`),`${e}${f(r)}`),y=(e=20)=>f(e),g=(e,r=20)=>{let t=l(),i=r-t.length;return i<10&&(i=10),`${e}${t}${f(i)}`},m=(e=6)=>d(e),I=e=>(e&&!e.endsWith("_")&&(e=`${e}_`),`${e}${$.nextId().toString(36)}`);export{x as createIdGenerator,w as createUuidTranslator,m as generateCode,u as generateCustomId,g as generateId,y as generatePlainId,I as generateSnowflakeId,l as idTime,p as idType};
|
|
2
|
-
//# sourceMappingURL=index.modern.js.map
|
package/dist/index.modern.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/id.ts"],"sourcesContent":["import { ServiceError, badRequestError } from '@lowerdeck/error';\nimport { Hash } from '@lowerdeck/hash';\nimport { customAlphabet } from 'nanoid';\nimport short from 'short-uuid';\nimport { Worker } from 'snowflake-uuid';\n\nlet translator = short('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz');\n\nlet _defaultId = customAlphabet(\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n 20\n);\n\nlet _code = customAlphabet('0123456789', 6);\n\nexport let idTime = () => new Date().getTime().toString(36).padStart(9, '0');\n\nlet snowflakeIdGenerator = new Worker(0, 0, {\n workerIdBits: 12,\n sequenceBits: 12\n});\n\nlet seenPrefixes = new Set<string>();\nlet checkPrefix = (prefix: string) => {\n if (prefix.endsWith('_')) prefix = prefix.slice(0, -1);\n\n if (seenPrefixes.has(prefix)) {\n throw new Error(`Prefix ${prefix} already exists`);\n }\n};\n\nexport let idType = {\n sorted: (prefix: string, length: number = 22) => {\n checkPrefix(prefix);\n\n return {\n prefix,\n length,\n type: 'sorted' as const\n };\n },\n unsorted: (prefix: string, length: number = 22) => {\n checkPrefix(prefix);\n\n return {\n prefix,\n length,\n type: 'unsorted' as const\n };\n },\n key: (prefix: string, length: number = 50) => {\n checkPrefix(prefix);\n\n return { prefix, length, type: 'key' as const };\n }\n};\n\nexport let createIdGenerator = <\n T extends {\n [key: string]: {\n prefix: string;\n length: number;\n type: 'sorted' | 'key' | 'unsorted';\n };\n }\n>(\n idPrefixes: T\n) => {\n for (let key in idPrefixes) {\n if (!idPrefixes[key].prefix.endsWith('_')) {\n idPrefixes[key].prefix = `${idPrefixes[key].prefix}_`;\n }\n }\n\n let seenPrefixes = new Set<string>();\n for (let key in idPrefixes) {\n let prefix = idPrefixes[key].prefix;\n if (seenPrefixes.has(prefix)) {\n throw new Error(`Prefix ${prefix} already exists`);\n }\n seenPrefixes.add(prefix);\n }\n\n let getIdDescription = (prefix: keyof T) => {\n let pf = idPrefixes[prefix];\n if (!pf) throw new Error(`Invalid prefix: ${prefix as string}`);\n\n return pf;\n };\n\n return {\n generateId: async (prefix: keyof T) => {\n let desc = getIdDescription(prefix);\n let length = desc.length;\n\n if (desc.type == 'sorted') {\n let date = idTime();\n\n let remainingLength = length - date.length;\n if (remainingLength < 10) remainingLength = 10;\n\n return `${desc.prefix}${date}${_defaultId(remainingLength)}`;\n } else if (desc.type == 'unsorted') {\n return `${desc.prefix}${_defaultId(length)}`;\n } else {\n let main = `${desc.prefix}${_defaultId(length)}`;\n return `${main}${(await Hash.sha512(main)).slice(0, 6)}`;\n }\n },\n generateIdSync: (prefix: keyof T) => {\n let desc = getIdDescription(prefix);\n let length = desc.length;\n\n if (desc.type == 'sorted') {\n let date = idTime();\n\n let remainingLength = length - date.length;\n if (remainingLength < 10) remainingLength = 10;\n\n return `${desc.prefix}${date}${_defaultId(remainingLength)}`;\n } else if (desc.type == 'unsorted') {\n return `${desc.prefix}${_defaultId(length)}`;\n } else {\n throw new Error('Cannot generate key id synchronously');\n }\n },\n idPrefixes: Object.entries(idPrefixes).reduce(\n (acc, [key, value]) => {\n // @ts-ignore\n acc[key] = value.prefix;\n return acc;\n },\n {} as { [key in keyof T]: string }\n ),\n\n normalizeUUID: (prefix: keyof T, uuid: string) => {\n let desc = getIdDescription(prefix);\n\n return `${desc.prefix}${translator.fromUUID(uuid)}`;\n }\n\n // toUUID: (prefix: keyof T, id: string) => {\n // let desc = getIdDescription(prefix);\n\n // if (!id.startsWith(desc.prefix)) {\n // throw new ServiceError(\n // badRequestError({\n // message: `ID ${id} does not start with prefix ${desc.prefix}`\n // })\n // );\n // }\n\n // return translator.toUUID(id.slice(desc.prefix.length));\n // }\n };\n};\n\nexport let createUuidTranslator = (prefix: string) => {\n if (!prefix.endsWith('_')) prefix = `${prefix}_`;\n\n if (seenPrefixes.has(prefix)) {\n throw new Error(`Prefix ${prefix} already exists`);\n }\n seenPrefixes.add(prefix);\n\n return {\n fromUUID: (uuid: string) => `${prefix}${translator.fromUUID(uuid)}`,\n toUUID: (id: string) => {\n if (!id.startsWith(prefix)) {\n throw new ServiceError(\n badRequestError({\n message: `ID ${id} does not start with prefix ${prefix}`\n })\n );\n }\n\n return translator.toUUID(id.slice(prefix.length));\n }\n };\n};\n\nexport let generateCustomId = (prefix?: string, length: number = 20) => {\n if (prefix && !prefix.endsWith('_')) prefix = `${prefix}_`;\n\n return `${prefix}${_defaultId(length)}`;\n};\n\nexport let generatePlainId = (length: number = 20) => {\n return _defaultId(length);\n};\n\nexport let generateId = (prefix: string, length: number = 20) => {\n let date = idTime();\n\n let remainingLength = length - date.length;\n if (remainingLength < 10) remainingLength = 10;\n\n return `${prefix}${date}${_defaultId(remainingLength)}`;\n};\n\nexport let generateCode = (length: number = 6) => {\n return _code(length);\n};\n\nexport let generateSnowflakeId = (prefix?: string) => {\n if (prefix && !prefix.endsWith('_')) prefix = `${prefix}_`;\n\n return `${prefix}${snowflakeIdGenerator.nextId().toString(36)}`;\n};\n"],"names":["translator","short","_defaultId","customAlphabet","_code","idTime","Date","getTime","toString","padStart","snowflakeIdGenerator","Worker","workerIdBits","sequenceBits","seenPrefixes","Set","checkPrefix","prefix","endsWith","slice","has","Error","idType","sorted","length","type","unsorted","key","createIdGenerator","idPrefixes","add","getIdDescription","pf","generateId","async","desc","date","remainingLength","main","Hash","sha512","generateIdSync","Object","entries","reduce","acc","value","normalizeUUID","uuid","fromUUID","createUuidTranslator","toUUID","id","startsWith","ServiceError","badRequestError","message","generateCustomId","generatePlainId","generateCode","generateSnowflakeId","nextId"],"mappings":"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"}
|