@learncard/simple-signing-client 1.0.37 → 1.1.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/CHANGELOG.md +32 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/simple-signing-client.cjs.development.js +17 -18
- package/dist/simple-signing-client.cjs.development.js.map +2 -2
- package/dist/simple-signing-client.cjs.production.min.js +1 -1
- package/dist/simple-signing-client.cjs.production.min.js.map +3 -3
- package/dist/simple-signing-client.esm.js +14 -16
- package/dist/simple-signing-client.esm.js.map +2 -2
- package/package.json +13 -6
- package/scripts/build.mjs +0 -3
- package/src/index.ts +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# @welibraryos/lca-api-client
|
|
2
2
|
|
|
3
|
+
## 1.1.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies []:
|
|
8
|
+
- @learncard/simple-signing-service@1.1.2
|
|
9
|
+
|
|
10
|
+
## 1.1.1
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies []:
|
|
15
|
+
- @learncard/simple-signing-service@1.1.1
|
|
16
|
+
|
|
17
|
+
## 1.1.0
|
|
18
|
+
|
|
19
|
+
### Minor Changes
|
|
20
|
+
|
|
21
|
+
- [#858](https://github.com/learningeconomy/LearnCard/pull/858) [`279e0491c5f284f9343ef0c39f3c38cd76e608f9`](https://github.com/learningeconomy/LearnCard/commit/279e0491c5f284f9343ef0c39f3c38cd76e608f9) Thanks [@Custard7](https://github.com/Custard7)! - Upgrade build tooling (esbuild `0.27.1`) and migrate to Zod v4 + TypeScript `5.9.3` across the monorepo.
|
|
22
|
+
|
|
23
|
+
This includes follow-up fixes for Zod v4 behavior and typing changes:
|
|
24
|
+
|
|
25
|
+
- Update query validators to preserve runtime deep-partial semantics while keeping TypeScript inference compatible with `{}` defaults.
|
|
26
|
+
- Prevent `.partial()` + `.default()` from materializing omitted fields in permission updates (`canManageChildrenProfiles`).
|
|
27
|
+
- Allow `Infinity` for generational query inputs in brain-service routes.
|
|
28
|
+
- Document running Vitest in non-watch mode (`pnpm test -- run`).
|
|
29
|
+
|
|
30
|
+
### Patch Changes
|
|
31
|
+
|
|
32
|
+
- Updated dependencies [[`279e0491c5f284f9343ef0c39f3c38cd76e608f9`](https://github.com/learningeconomy/LearnCard/commit/279e0491c5f284f9343ef0c39f3c38cd76e608f9)]:
|
|
33
|
+
- @learncard/simple-signing-service@1.1.0
|
|
34
|
+
|
|
3
35
|
## 1.0.37
|
|
4
36
|
|
|
5
37
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TRPCClient } from '@trpc/client';
|
|
2
2
|
import type { AppRouter } from '@learncard/simple-signing-service';
|
|
3
|
-
export type Client =
|
|
3
|
+
export type Client = TRPCClient<AppRouter>;
|
|
4
4
|
export declare const getClient: (url: string, didAuthFunction: (challenge?: string) => Promise<string>) => Promise<Client>;
|
|
5
5
|
export default getClient;
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,UAAU,EAAiB,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAInE,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AAE3C,eAAO,MAAM,SAAS,QACb,MAAM,mBACM,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,KACzD,OAAO,CAAC,MAAM,CAkChB,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
2
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
@@ -18,12 +19,12 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
19
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
20
|
|
|
20
21
|
// src/index.ts
|
|
21
|
-
var
|
|
22
|
-
__export(
|
|
23
|
-
default: () =>
|
|
22
|
+
var index_exports = {};
|
|
23
|
+
__export(index_exports, {
|
|
24
|
+
default: () => index_default,
|
|
24
25
|
getClient: () => getClient
|
|
25
26
|
});
|
|
26
|
-
module.exports = __toCommonJS(
|
|
27
|
+
module.exports = __toCommonJS(index_exports);
|
|
27
28
|
var import_client = require("@trpc/client");
|
|
28
29
|
|
|
29
30
|
// src/callbackLink.ts
|
|
@@ -39,18 +40,17 @@ var callbackLink = /* @__PURE__ */ __name((callback) => {
|
|
|
39
40
|
attempts += 1;
|
|
40
41
|
request?.unsubscribe();
|
|
41
42
|
request = next(op).subscribe({
|
|
42
|
-
error: async (error) => {
|
|
43
|
+
error: /* @__PURE__ */ __name(async (error) => {
|
|
43
44
|
if (attempts > 5 || error.data?.httpStatus !== 401) {
|
|
44
45
|
return observer.error(error);
|
|
45
46
|
}
|
|
46
47
|
await callback();
|
|
47
48
|
attempt();
|
|
48
|
-
},
|
|
49
|
-
next: (result) => observer.next(result),
|
|
50
|
-
complete: () => {
|
|
51
|
-
if (isDone)
|
|
52
|
-
|
|
53
|
-
}
|
|
49
|
+
}, "error"),
|
|
50
|
+
next: /* @__PURE__ */ __name((result) => observer.next(result), "next"),
|
|
51
|
+
complete: /* @__PURE__ */ __name(() => {
|
|
52
|
+
if (isDone) observer.complete();
|
|
53
|
+
}, "complete")
|
|
54
54
|
});
|
|
55
55
|
}, "attempt");
|
|
56
56
|
attempt();
|
|
@@ -66,7 +66,7 @@ var callbackLink = /* @__PURE__ */ __name((callback) => {
|
|
|
66
66
|
// src/index.ts
|
|
67
67
|
var getClient = /* @__PURE__ */ __name(async (url, didAuthFunction) => {
|
|
68
68
|
let challenges = [];
|
|
69
|
-
const challengeRequester = (0, import_client.
|
|
69
|
+
const challengeRequester = (0, import_client.createTRPCClient)({
|
|
70
70
|
links: [
|
|
71
71
|
(0, import_client.httpBatchLink)({ url, headers: { Authorization: `Bearer ${await didAuthFunction()}` } })
|
|
72
72
|
]
|
|
@@ -75,21 +75,20 @@ var getClient = /* @__PURE__ */ __name(async (url, didAuthFunction) => {
|
|
|
75
75
|
return challengeRequester.utilities.getChallenges.query({ amount });
|
|
76
76
|
}, "getChallenges");
|
|
77
77
|
getChallenges().then((result) => challenges = result);
|
|
78
|
-
const trpc = (0, import_client.
|
|
78
|
+
const trpc = (0, import_client.createTRPCClient)({
|
|
79
79
|
links: [
|
|
80
80
|
callbackLink(async () => {
|
|
81
81
|
challenges = await getChallenges();
|
|
82
82
|
}),
|
|
83
83
|
(0, import_client.httpBatchLink)({
|
|
84
84
|
url,
|
|
85
|
-
headers: async () => {
|
|
86
|
-
if (challenges.length === 0)
|
|
87
|
-
challenges.push(...await getChallenges());
|
|
85
|
+
headers: /* @__PURE__ */ __name(async () => {
|
|
86
|
+
if (challenges.length === 0) challenges.push(...await getChallenges());
|
|
88
87
|
return { Authorization: `Bearer ${await didAuthFunction(challenges.pop())}` };
|
|
89
|
-
}
|
|
88
|
+
}, "headers")
|
|
90
89
|
})
|
|
91
90
|
]
|
|
92
91
|
});
|
|
93
92
|
return trpc;
|
|
94
93
|
}, "getClient");
|
|
95
|
-
var
|
|
94
|
+
var index_default = getClient;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/callbackLink.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import { createTRPCClient, TRPCClient, httpBatchLink } from '@trpc/client';\nimport type { AppRouter } from '@learncard/simple-signing-service';\n\nimport { callbackLink } from './callbackLink';\n\nexport type Client = TRPCClient<AppRouter>;\n\nexport const getClient = async (\n url: string,\n didAuthFunction: (challenge?: string) => Promise<string>\n): Promise<Client> => {\n let challenges: string[] = [];\n\n const challengeRequester = createTRPCClient<AppRouter>({\n links: [\n httpBatchLink({ url, headers: { Authorization: `Bearer ${await didAuthFunction()}` } }),\n ],\n }) as Client;\n\n const getChallenges = async (\n amount = 95 + Math.round((Math.random() - 0.5) * 5)\n ): Promise<string[]> => {\n return challengeRequester.utilities.getChallenges.query({ amount });\n };\n\n getChallenges().then(result => (challenges = result));\n\n const trpc = createTRPCClient<AppRouter>({\n links: [\n callbackLink(async () => {\n challenges = await getChallenges();\n }),\n httpBatchLink({\n url,\n headers: async () => {\n if (challenges.length === 0) challenges.push(...(await getChallenges()));\n\n return { Authorization: `Bearer ${await didAuthFunction(challenges.pop())}` };\n },\n }),\n ],\n }) as Client;\n\n return trpc;\n};\n\nexport default getClient;\n", "import { TRPCLink } from '@trpc/client';\nimport { observable, Unsubscribable } from '@trpc/server/observable';\nimport type { AppRouter } from '@learncard/simple-signing-service';\n\nexport const callbackLink = (callback: () => Promise<void>): TRPCLink<AppRouter> => {\n return () => {\n return ({ next, op }) => {\n return observable(observer => {\n let request: Unsubscribable | null = null;\n let attempts = 0;\n let isDone = false;\n\n const attempt = () => {\n attempts += 1;\n request?.unsubscribe();\n request = next(op).subscribe({\n error: async error => {\n if (attempts > 5 || error.data?.httpStatus !== 401) {\n return observer.error(error);\n }\n\n await callback();\n\n attempt();\n },\n next: result => observer.next(result),\n complete: () => {\n if (isDone) observer.complete();\n },\n });\n };\n\n attempt();\n\n return () => {\n isDone = true;\n request?.unsubscribe();\n };\n });\n };\n };\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA4D;;;ACC5D,wBAA2C;AAGpC,IAAM,eAAe,wBAAC,aAAuD;AAChF,SAAO,MAAM;AACT,WAAO,CAAC,EAAE,MAAM,GAAG,MAAM;AACrB,iBAAO,8BAAW,cAAY;AAC1B,YAAI,UAAiC;AACrC,YAAI,WAAW;AACf,YAAI,SAAS;AAEb,cAAM,UAAU,6BAAM;AAClB,sBAAY;AACZ,mBAAS,YAAY;AACrB,oBAAU,KAAK,EAAE,EAAE,UAAU;AAAA,YACzB,OAAO,8BAAM,UAAS;AAClB,kBAAI,WAAW,KAAK,MAAM,MAAM,eAAe,KAAK;AAChD,uBAAO,SAAS,MAAM,KAAK;AAAA,cAC/B;AAEA,oBAAM,SAAS;AAEf,sBAAQ;AAAA,YACZ,GARO;AAAA,YASP,MAAM,mCAAU,SAAS,KAAK,MAAM,GAA9B;AAAA,YACN,UAAU,6BAAM;AACZ,kBAAI,OAAQ,UAAS,SAAS;AAAA,YAClC,GAFU;AAAA,UAGd,CAAC;AAAA,QACL,GAlBgB;AAoBhB,gBAAQ;AAER,eAAO,MAAM;AACT,mBAAS;AACT,mBAAS,YAAY;AAAA,QACzB;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AACJ,GArC4B;;;ADGrB,IAAM,YAAY,8BACrB,KACA,oBACkB;AAClB,MAAI,aAAuB,CAAC;AAE5B,QAAM,yBAAqB,gCAA4B;AAAA,IACnD,OAAO;AAAA,UACH,6BAAc,EAAE,KAAK,SAAS,EAAE,eAAe,UAAU,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC;AAAA,IAC1F;AAAA,EACJ,CAAC;AAED,QAAM,gBAAgB,8BAClB,SAAS,KAAK,KAAK,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,MAC9B;AACpB,WAAO,mBAAmB,UAAU,cAAc,MAAM,EAAE,OAAO,CAAC;AAAA,EACtE,GAJsB;AAMtB,gBAAc,EAAE,KAAK,YAAW,aAAa,MAAO;AAEpD,QAAM,WAAO,gCAA4B;AAAA,IACrC,OAAO;AAAA,MACH,aAAa,YAAY;AACrB,qBAAa,MAAM,cAAc;AAAA,MACrC,CAAC;AAAA,UACD,6BAAc;AAAA,QACV;AAAA,QACA,SAAS,mCAAY;AACjB,cAAI,WAAW,WAAW,EAAG,YAAW,KAAK,GAAI,MAAM,cAAc,CAAE;AAEvE,iBAAO,EAAE,eAAe,UAAU,MAAM,gBAAgB,WAAW,IAAI,CAAC,CAAC,GAAG;AAAA,QAChF,GAJS;AAAA,MAKb,CAAC;AAAA,IACL;AAAA,EACJ,CAAC;AAED,SAAO;AACX,GArCyB;AAuCzB,IAAO,gBAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var p=Object.defineProperty;var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var i=(t,e)=>p(t,"name",{value:e,configurable:!0});var f=(t,e)=>{for(var n in e)p(t,n,{get:e[n],enumerable:!0})},k=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of b(e))!R.call(t,r)&&r!==n&&p(t,r,{get:()=>e[r],enumerable:!(s=C(e,r))||s.enumerable});return t};var y=t=>k(p({},"__esModule",{value:!0}),t);var d={};f(d,{default:()=>P,getClient:()=>h});module.exports=y(d);var l=require("@trpc/client");var m=require("@trpc/server/observable");var g=i(t=>()=>({next:e,op:n})=>(0,m.observable)(s=>{let r=null,c=0,a=!1,u=i(()=>{c+=1,r?.unsubscribe(),r=e(n).subscribe({error:i(async o=>{if(c>5||o.data?.httpStatus!==401)return s.error(o);await t(),u()},"error"),next:i(o=>s.next(o),"next"),complete:i(()=>{a&&s.complete()},"complete")})},"attempt");return u(),()=>{a=!0,r?.unsubscribe()}}),"callbackLink");var h=i(async(t,e)=>{let n=[],s=(0,l.createTRPCClient)({links:[(0,l.httpBatchLink)({url:t,headers:{Authorization:`Bearer ${await e()}`}})]}),r=i(async(a=95+Math.round((Math.random()-.5)*5))=>s.utilities.getChallenges.query({amount:a}),"getChallenges");return r().then(a=>n=a),(0,l.createTRPCClient)({links:[g(async()=>{n=await r()}),(0,l.httpBatchLink)({url:t,headers:i(async()=>(n.length===0&&n.push(...await r()),{Authorization:`Bearer ${await e(n.pop())}`}),"headers")})]})},"getClient"),P=h;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/callbackLink.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["
|
|
4
|
+
"sourcesContent": ["import { createTRPCClient, TRPCClient, httpBatchLink } from '@trpc/client';\nimport type { AppRouter } from '@learncard/simple-signing-service';\n\nimport { callbackLink } from './callbackLink';\n\nexport type Client = TRPCClient<AppRouter>;\n\nexport const getClient = async (\n url: string,\n didAuthFunction: (challenge?: string) => Promise<string>\n): Promise<Client> => {\n let challenges: string[] = [];\n\n const challengeRequester = createTRPCClient<AppRouter>({\n links: [\n httpBatchLink({ url, headers: { Authorization: `Bearer ${await didAuthFunction()}` } }),\n ],\n }) as Client;\n\n const getChallenges = async (\n amount = 95 + Math.round((Math.random() - 0.5) * 5)\n ): Promise<string[]> => {\n return challengeRequester.utilities.getChallenges.query({ amount });\n };\n\n getChallenges().then(result => (challenges = result));\n\n const trpc = createTRPCClient<AppRouter>({\n links: [\n callbackLink(async () => {\n challenges = await getChallenges();\n }),\n httpBatchLink({\n url,\n headers: async () => {\n if (challenges.length === 0) challenges.push(...(await getChallenges()));\n\n return { Authorization: `Bearer ${await didAuthFunction(challenges.pop())}` };\n },\n }),\n ],\n }) as Client;\n\n return trpc;\n};\n\nexport default getClient;\n", "import { TRPCLink } from '@trpc/client';\nimport { observable, Unsubscribable } from '@trpc/server/observable';\nimport type { AppRouter } from '@learncard/simple-signing-service';\n\nexport const callbackLink = (callback: () => Promise<void>): TRPCLink<AppRouter> => {\n return () => {\n return ({ next, op }) => {\n return observable(observer => {\n let request: Unsubscribable | null = null;\n let attempts = 0;\n let isDone = false;\n\n const attempt = () => {\n attempts += 1;\n request?.unsubscribe();\n request = next(op).subscribe({\n error: async error => {\n if (attempts > 5 || error.data?.httpStatus !== 401) {\n return observer.error(error);\n }\n\n await callback();\n\n attempt();\n },\n next: result => observer.next(result),\n complete: () => {\n if (isDone) observer.complete();\n },\n });\n };\n\n attempt();\n\n return () => {\n isDone = true;\n request?.unsubscribe();\n };\n });\n };\n };\n};\n"],
|
|
5
|
+
"mappings": "4dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,cAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAA4D,wBCC5D,IAAAC,EAA2C,mCAGpC,IAAMC,EAAeC,EAACC,GAClB,IACI,CAAC,CAAE,KAAAC,EAAM,GAAAC,CAAG,OACR,cAAWC,GAAY,CAC1B,IAAIC,EAAiC,KACjCC,EAAW,EACXC,EAAS,GAEPC,EAAUR,EAAA,IAAM,CAClBM,GAAY,EACZD,GAAS,YAAY,EACrBA,EAAUH,EAAKC,CAAE,EAAE,UAAU,CACzB,MAAOH,EAAA,MAAMS,GAAS,CAClB,GAAIH,EAAW,GAAKG,EAAM,MAAM,aAAe,IAC3C,OAAOL,EAAS,MAAMK,CAAK,EAG/B,MAAMR,EAAS,EAEfO,EAAQ,CACZ,EARO,SASP,KAAMR,EAAAU,GAAUN,EAAS,KAAKM,CAAM,EAA9B,QACN,SAAUV,EAAA,IAAM,CACRO,GAAQH,EAAS,SAAS,CAClC,EAFU,WAGd,CAAC,CACL,EAlBgB,WAoBhB,OAAAI,EAAQ,EAED,IAAM,CACTD,EAAS,GACTF,GAAS,YAAY,CACzB,CACJ,CAAC,EAlCe,gBDGrB,IAAMM,EAAYC,EAAA,MACrBC,EACAC,IACkB,CAClB,IAAIC,EAAuB,CAAC,EAEtBC,KAAqB,oBAA4B,CACnD,MAAO,IACH,iBAAc,CAAE,IAAAH,EAAK,QAAS,CAAE,cAAe,UAAU,MAAMC,EAAgB,CAAC,EAAG,CAAE,CAAC,CAC1F,CACJ,CAAC,EAEKG,EAAgBL,EAAA,MAClBM,EAAS,GAAK,KAAK,OAAO,KAAK,OAAO,EAAI,IAAO,CAAC,IAE3CF,EAAmB,UAAU,cAAc,MAAM,CAAE,OAAAE,CAAO,CAAC,EAHhD,iBAMtB,OAAAD,EAAc,EAAE,KAAKE,GAAWJ,EAAaI,CAAO,KAEvC,oBAA4B,CACrC,MAAO,CACHC,EAAa,SAAY,CACrBL,EAAa,MAAME,EAAc,CACrC,CAAC,KACD,iBAAc,CACV,IAAAJ,EACA,QAASD,EAAA,UACDG,EAAW,SAAW,GAAGA,EAAW,KAAK,GAAI,MAAME,EAAc,CAAE,EAEhE,CAAE,cAAe,UAAU,MAAMH,EAAgBC,EAAW,IAAI,CAAC,CAAC,EAAG,GAHvE,UAKb,CAAC,CACL,CACJ,CAAC,CAGL,EArCyB,aAuClBM,EAAQV",
|
|
6
|
+
"names": ["index_exports", "__export", "index_default", "getClient", "__toCommonJS", "import_client", "import_observable", "callbackLink", "__name", "callback", "next", "op", "observer", "request", "attempts", "isDone", "attempt", "error", "result", "getClient", "__name", "url", "didAuthFunction", "challenges", "challengeRequester", "getChallenges", "amount", "result", "callbackLink", "index_default"]
|
|
7
7
|
}
|
|
@@ -2,7 +2,7 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
|
|
4
4
|
// src/index.ts
|
|
5
|
-
import {
|
|
5
|
+
import { createTRPCClient, httpBatchLink } from "@trpc/client";
|
|
6
6
|
|
|
7
7
|
// src/callbackLink.ts
|
|
8
8
|
import { observable } from "@trpc/server/observable";
|
|
@@ -17,18 +17,17 @@ var callbackLink = /* @__PURE__ */ __name((callback) => {
|
|
|
17
17
|
attempts += 1;
|
|
18
18
|
request?.unsubscribe();
|
|
19
19
|
request = next(op).subscribe({
|
|
20
|
-
error: async (error) => {
|
|
20
|
+
error: /* @__PURE__ */ __name(async (error) => {
|
|
21
21
|
if (attempts > 5 || error.data?.httpStatus !== 401) {
|
|
22
22
|
return observer.error(error);
|
|
23
23
|
}
|
|
24
24
|
await callback();
|
|
25
25
|
attempt();
|
|
26
|
-
},
|
|
27
|
-
next: (result) => observer.next(result),
|
|
28
|
-
complete: () => {
|
|
29
|
-
if (isDone)
|
|
30
|
-
|
|
31
|
-
}
|
|
26
|
+
}, "error"),
|
|
27
|
+
next: /* @__PURE__ */ __name((result) => observer.next(result), "next"),
|
|
28
|
+
complete: /* @__PURE__ */ __name(() => {
|
|
29
|
+
if (isDone) observer.complete();
|
|
30
|
+
}, "complete")
|
|
32
31
|
});
|
|
33
32
|
}, "attempt");
|
|
34
33
|
attempt();
|
|
@@ -44,7 +43,7 @@ var callbackLink = /* @__PURE__ */ __name((callback) => {
|
|
|
44
43
|
// src/index.ts
|
|
45
44
|
var getClient = /* @__PURE__ */ __name(async (url, didAuthFunction) => {
|
|
46
45
|
let challenges = [];
|
|
47
|
-
const challengeRequester =
|
|
46
|
+
const challengeRequester = createTRPCClient({
|
|
48
47
|
links: [
|
|
49
48
|
httpBatchLink({ url, headers: { Authorization: `Bearer ${await didAuthFunction()}` } })
|
|
50
49
|
]
|
|
@@ -53,25 +52,24 @@ var getClient = /* @__PURE__ */ __name(async (url, didAuthFunction) => {
|
|
|
53
52
|
return challengeRequester.utilities.getChallenges.query({ amount });
|
|
54
53
|
}, "getChallenges");
|
|
55
54
|
getChallenges().then((result) => challenges = result);
|
|
56
|
-
const trpc =
|
|
55
|
+
const trpc = createTRPCClient({
|
|
57
56
|
links: [
|
|
58
57
|
callbackLink(async () => {
|
|
59
58
|
challenges = await getChallenges();
|
|
60
59
|
}),
|
|
61
60
|
httpBatchLink({
|
|
62
61
|
url,
|
|
63
|
-
headers: async () => {
|
|
64
|
-
if (challenges.length === 0)
|
|
65
|
-
challenges.push(...await getChallenges());
|
|
62
|
+
headers: /* @__PURE__ */ __name(async () => {
|
|
63
|
+
if (challenges.length === 0) challenges.push(...await getChallenges());
|
|
66
64
|
return { Authorization: `Bearer ${await didAuthFunction(challenges.pop())}` };
|
|
67
|
-
}
|
|
65
|
+
}, "headers")
|
|
68
66
|
})
|
|
69
67
|
]
|
|
70
68
|
});
|
|
71
69
|
return trpc;
|
|
72
70
|
}, "getClient");
|
|
73
|
-
var
|
|
71
|
+
var index_default = getClient;
|
|
74
72
|
export {
|
|
75
|
-
|
|
73
|
+
index_default as default,
|
|
76
74
|
getClient
|
|
77
75
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/callbackLink.ts"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": ";;;;AAAA,SAAS,
|
|
4
|
+
"sourcesContent": ["import { createTRPCClient, TRPCClient, httpBatchLink } from '@trpc/client';\nimport type { AppRouter } from '@learncard/simple-signing-service';\n\nimport { callbackLink } from './callbackLink';\n\nexport type Client = TRPCClient<AppRouter>;\n\nexport const getClient = async (\n url: string,\n didAuthFunction: (challenge?: string) => Promise<string>\n): Promise<Client> => {\n let challenges: string[] = [];\n\n const challengeRequester = createTRPCClient<AppRouter>({\n links: [\n httpBatchLink({ url, headers: { Authorization: `Bearer ${await didAuthFunction()}` } }),\n ],\n }) as Client;\n\n const getChallenges = async (\n amount = 95 + Math.round((Math.random() - 0.5) * 5)\n ): Promise<string[]> => {\n return challengeRequester.utilities.getChallenges.query({ amount });\n };\n\n getChallenges().then(result => (challenges = result));\n\n const trpc = createTRPCClient<AppRouter>({\n links: [\n callbackLink(async () => {\n challenges = await getChallenges();\n }),\n httpBatchLink({\n url,\n headers: async () => {\n if (challenges.length === 0) challenges.push(...(await getChallenges()));\n\n return { Authorization: `Bearer ${await didAuthFunction(challenges.pop())}` };\n },\n }),\n ],\n }) as Client;\n\n return trpc;\n};\n\nexport default getClient;\n", "import { TRPCLink } from '@trpc/client';\nimport { observable, Unsubscribable } from '@trpc/server/observable';\nimport type { AppRouter } from '@learncard/simple-signing-service';\n\nexport const callbackLink = (callback: () => Promise<void>): TRPCLink<AppRouter> => {\n return () => {\n return ({ next, op }) => {\n return observable(observer => {\n let request: Unsubscribable | null = null;\n let attempts = 0;\n let isDone = false;\n\n const attempt = () => {\n attempts += 1;\n request?.unsubscribe();\n request = next(op).subscribe({\n error: async error => {\n if (attempts > 5 || error.data?.httpStatus !== 401) {\n return observer.error(error);\n }\n\n await callback();\n\n attempt();\n },\n next: result => observer.next(result),\n complete: () => {\n if (isDone) observer.complete();\n },\n });\n };\n\n attempt();\n\n return () => {\n isDone = true;\n request?.unsubscribe();\n };\n });\n };\n };\n};\n"],
|
|
5
|
+
"mappings": ";;;;AAAA,SAAS,kBAA8B,qBAAqB;;;ACC5D,SAAS,kBAAkC;AAGpC,IAAM,eAAe,wBAAC,aAAuD;AAChF,SAAO,MAAM;AACT,WAAO,CAAC,EAAE,MAAM,GAAG,MAAM;AACrB,aAAO,WAAW,cAAY;AAC1B,YAAI,UAAiC;AACrC,YAAI,WAAW;AACf,YAAI,SAAS;AAEb,cAAM,UAAU,6BAAM;AAClB,sBAAY;AACZ,mBAAS,YAAY;AACrB,oBAAU,KAAK,EAAE,EAAE,UAAU;AAAA,YACzB,OAAO,8BAAM,UAAS;AAClB,kBAAI,WAAW,KAAK,MAAM,MAAM,eAAe,KAAK;AAChD,uBAAO,SAAS,MAAM,KAAK;AAAA,cAC/B;AAEA,oBAAM,SAAS;AAEf,sBAAQ;AAAA,YACZ,GARO;AAAA,YASP,MAAM,mCAAU,SAAS,KAAK,MAAM,GAA9B;AAAA,YACN,UAAU,6BAAM;AACZ,kBAAI,OAAQ,UAAS,SAAS;AAAA,YAClC,GAFU;AAAA,UAGd,CAAC;AAAA,QACL,GAlBgB;AAoBhB,gBAAQ;AAER,eAAO,MAAM;AACT,mBAAS;AACT,mBAAS,YAAY;AAAA,QACzB;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AACJ,GArC4B;;;ADGrB,IAAM,YAAY,8BACrB,KACA,oBACkB;AAClB,MAAI,aAAuB,CAAC;AAE5B,QAAM,qBAAqB,iBAA4B;AAAA,IACnD,OAAO;AAAA,MACH,cAAc,EAAE,KAAK,SAAS,EAAE,eAAe,UAAU,MAAM,gBAAgB,CAAC,GAAG,EAAE,CAAC;AAAA,IAC1F;AAAA,EACJ,CAAC;AAED,QAAM,gBAAgB,8BAClB,SAAS,KAAK,KAAK,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,MAC9B;AACpB,WAAO,mBAAmB,UAAU,cAAc,MAAM,EAAE,OAAO,CAAC;AAAA,EACtE,GAJsB;AAMtB,gBAAc,EAAE,KAAK,YAAW,aAAa,MAAO;AAEpD,QAAM,OAAO,iBAA4B;AAAA,IACrC,OAAO;AAAA,MACH,aAAa,YAAY;AACrB,qBAAa,MAAM,cAAc;AAAA,MACrC,CAAC;AAAA,MACD,cAAc;AAAA,QACV;AAAA,QACA,SAAS,mCAAY;AACjB,cAAI,WAAW,WAAW,EAAG,YAAW,KAAK,GAAI,MAAM,cAAc,CAAE;AAEvE,iBAAO,EAAE,eAAe,UAAU,MAAM,gBAAgB,WAAW,IAAI,CAAC,CAAC,GAAG;AAAA,QAChF,GAJS;AAAA,MAKb,CAAC;AAAA,IACL;AAAA,EACJ,CAAC;AAED,SAAO;AACX,GArCyB;AAuCzB,IAAO,gBAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@learncard/simple-signing-client",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "./dist/simple-signing-client.esm.js",
|
|
@@ -11,15 +11,22 @@
|
|
|
11
11
|
"devDependencies": {
|
|
12
12
|
"@esbuild-plugins/node-resolve": "^0.1.4",
|
|
13
13
|
"dts-bundle-generator": "^6.10.0",
|
|
14
|
-
"esbuild": "^0.
|
|
14
|
+
"esbuild": "^0.27.1",
|
|
15
15
|
"rimraf": "^3.0.2",
|
|
16
16
|
"shx": "^0.3.4",
|
|
17
|
-
"@learncard/types": "5.
|
|
17
|
+
"@learncard/types": "5.11.1"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@trpc/client": "^
|
|
21
|
-
"@
|
|
22
|
-
|
|
20
|
+
"@trpc/client": "^11.7.2",
|
|
21
|
+
"@learncard/simple-signing-service": "1.1.2"
|
|
22
|
+
},
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/learningeconomy/LearnCard"
|
|
26
|
+
},
|
|
27
|
+
"homepage": "https://github.com/learningeconomy/LearnCard/tree/main/packages/learn-card-network/simple-signing-client/README.md",
|
|
28
|
+
"bugs": {
|
|
29
|
+
"url": "https://github.com/learningeconomy/LearnCard/issues"
|
|
23
30
|
},
|
|
24
31
|
"scripts": {
|
|
25
32
|
"build": "node ./scripts/build.mjs && shx cp ./scripts/mixedEntypoint.js ./dist/index.js && tsc --p tsconfig.json"
|
package/scripts/build.mjs
CHANGED
|
@@ -21,7 +21,6 @@ const configurations = [
|
|
|
21
21
|
keepNames: true,
|
|
22
22
|
bundle: true,
|
|
23
23
|
sourcemap: 'external',
|
|
24
|
-
incremental: true,
|
|
25
24
|
tsconfig: 'tsconfig.json',
|
|
26
25
|
plugins: [nodeResolveExternal],
|
|
27
26
|
entryPoints: ['src/index.ts'],
|
|
@@ -32,7 +31,6 @@ const configurations = [
|
|
|
32
31
|
keepNames: true,
|
|
33
32
|
bundle: true,
|
|
34
33
|
sourcemap: 'external',
|
|
35
|
-
incremental: true,
|
|
36
34
|
tsconfig: 'tsconfig.json',
|
|
37
35
|
plugins: [nodeResolveExternal],
|
|
38
36
|
entryPoints: ['src/index.ts'],
|
|
@@ -44,7 +42,6 @@ const configurations = [
|
|
|
44
42
|
keepNames: true,
|
|
45
43
|
bundle: true,
|
|
46
44
|
sourcemap: 'external',
|
|
47
|
-
incremental: true,
|
|
48
45
|
tsconfig: 'tsconfig.json',
|
|
49
46
|
plugins: [nodeResolveExternal],
|
|
50
47
|
entryPoints: ['src/index.ts'],
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createTRPCClient, TRPCClient, httpBatchLink } from '@trpc/client';
|
|
2
2
|
import type { AppRouter } from '@learncard/simple-signing-service';
|
|
3
3
|
|
|
4
4
|
import { callbackLink } from './callbackLink';
|
|
5
5
|
|
|
6
|
-
export type Client =
|
|
6
|
+
export type Client = TRPCClient<AppRouter>;
|
|
7
7
|
|
|
8
8
|
export const getClient = async (
|
|
9
9
|
url: string,
|
|
@@ -11,7 +11,7 @@ export const getClient = async (
|
|
|
11
11
|
): Promise<Client> => {
|
|
12
12
|
let challenges: string[] = [];
|
|
13
13
|
|
|
14
|
-
const challengeRequester =
|
|
14
|
+
const challengeRequester = createTRPCClient<AppRouter>({
|
|
15
15
|
links: [
|
|
16
16
|
httpBatchLink({ url, headers: { Authorization: `Bearer ${await didAuthFunction()}` } }),
|
|
17
17
|
],
|
|
@@ -25,7 +25,7 @@ export const getClient = async (
|
|
|
25
25
|
|
|
26
26
|
getChallenges().then(result => (challenges = result));
|
|
27
27
|
|
|
28
|
-
const trpc =
|
|
28
|
+
const trpc = createTRPCClient<AppRouter>({
|
|
29
29
|
links: [
|
|
30
30
|
callbackLink(async () => {
|
|
31
31
|
challenges = await getChallenges();
|