@zenstackhq/tanstack-query 2.18.0 → 2.19.0
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/LICENSE +1 -1
- package/generator.js +5 -2
- package/generator.js.map +1 -1
- package/package.json +4 -4
- package/runtime-v5/angular.d.mts +4 -38
- package/runtime-v5/angular.d.ts +4 -38
- package/runtime-v5/angular.js +25 -20
- package/runtime-v5/angular.js.map +1 -1
- package/runtime-v5/angular.mjs +25 -20
- package/runtime-v5/angular.mjs.map +1 -1
- package/runtime-v5/react.d.mts +4 -4
- package/runtime-v5/react.d.ts +4 -4
package/LICENSE
CHANGED
package/generator.js
CHANGED
|
@@ -88,7 +88,10 @@ function generateQueryHook(target, version, sf, model, operation, returnArray, o
|
|
|
88
88
|
for (const generateMode of generateModes) {
|
|
89
89
|
const capOperation = (0, local_helpers_1.upperCaseFirst)(operation);
|
|
90
90
|
const argsType = overrideInputType !== null && overrideInputType !== void 0 ? overrideInputType : `Prisma.${model}${capOperation}Args`;
|
|
91
|
-
|
|
91
|
+
let inputType = makeQueryArgsType(target, argsType);
|
|
92
|
+
if (target === 'angular') {
|
|
93
|
+
inputType = `${inputType} | (() => ${inputType})`;
|
|
94
|
+
}
|
|
92
95
|
const infinite = generateMode.includes('Infinite');
|
|
93
96
|
const suspense = generateMode.includes('Suspense');
|
|
94
97
|
const optimistic = supportOptimistic &&
|
|
@@ -487,7 +490,7 @@ function makeBaseImports(target, version) {
|
|
|
487
490
|
}
|
|
488
491
|
case 'angular': {
|
|
489
492
|
return [
|
|
490
|
-
`import type { CreateMutationOptions, CreateQueryOptions, CreateInfiniteQueryOptions, InfiniteData } from '@tanstack/angular-query-
|
|
493
|
+
`import type { CreateMutationOptions, CreateQueryOptions, CreateInfiniteQueryOptions, InfiniteData } from '@tanstack/angular-query-experimental';`,
|
|
491
494
|
`import { getHooksContext } from '${runtimeImportBase}/${target}';`,
|
|
492
495
|
...shared,
|
|
493
496
|
];
|
package/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AA2BA,4BA2DC;AAtFD,yCAayB;AACzB,6CAA8F;AAC9F,mDAAiG;AACjG,qEAA8F;AAC9F,4CAAoB;AACpB,gDAAwB;AACxB,uCAAwE;AACxE,2CAAsC;AACtC,wBAAyB;AAEzB,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAI/D,SAAsB,QAAQ,CAAC,KAAY,EAAE,OAAsB,EAAE,IAAmB;;QACpF,MAAM,OAAO,GAAG,IAAA,mBAAa,GAAE,CAAC;QAChC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAA,mBAAa,EAAC,KAAK,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,eAAS,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAG,IAAA,mBAAa,EAAS,OAAO,EAAE,QAAQ,EAAE,OAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,iBAAW,CAAC,OAAI,EAAE,uBAAuB,MAAM,wBAAwB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpH,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACvC,MAAM,IAAI,iBAAW,CAAC,OAAI,EAAE,wBAAwB,OAAO,qBAAqB,CAAC,CAAC;QACtF,CAAC;QAED,kCAAkC;QAClC,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC3C,MAAM,IAAI,iBAAW,CAAC,OAAI,EAAE,4DAA4D,OAAO,GAAG,CAAC,CAAC;QACxG,CAAC;QAED,IAAI,MAAM,GAAG,IAAA,mBAAa,EAAS,OAAO,EAAE,QAAQ,EAAE,OAAI,CAAC,CAAC;QAC5D,MAAM,GAAG,IAAA,iBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,IAAA,oBAAc,EAAC,MAAM,CAAC,CAAC;QAEvB,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5D,MAAM,IAAI,iBAAW,CACjB,OAAI,EACJ,wCAAwC,OAAO,CAAC,QAAQ,+BAA+B,CAC1F,CAAC;QACN,CAAC;QAED,MAAM,IAAA,uBAAiB,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;YAC/C,MAAM,EAAE,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC;YAC5C,kBAAkB,EAAE,KAAK;SAC5B,CAAC,CAAC;QAEH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAExD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;YACxF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,QAAQ,CAAC,IAAI,CAAC,oCAAoC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;gBACpE,OAAO;YACX,CAAC;YACD,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,IAAA,8BAAwB,EAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,cAAc,EAAE,CAAC;gBACtB,QAAQ,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;YAC/G,CAAC;iBAAM,CAAC;gBACJ,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;QAED,MAAM,IAAA,iBAAW,EAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACxB,CAAC;CAAA;AAED,SAAS,iBAAiB,CACtB,MAAuB,EACvB,OAAwB,EACxB,EAAc,EACd,KAAa,EACb,SAAiB,EACjB,WAAoB,EACpB,aAAsB,EACtB,kBAA2B,EAC3B,iBAA0B,EAC1B,sBAAiC,EACjC,eAAe,GAAG,KAAK,EACvB,iBAAiB,GAAG,KAAK;IAEzB,MAAM,aAAa,GAA0D,CAAC,EAAE,CAAC,CAAC;IAClF,IAAI,eAAe,EAAE,CAAC;QAClB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,MAAM,KAAK,OAAO,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACzC,yCAAyC;QACzC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,eAAe,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IAED,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,IAAA,8BAAc,EAAC,SAAS,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,UAAU,KAAK,GAAG,YAAY,MAAM,CAAC;QAC3E,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,UAAU,GACZ,iBAAiB;YACjB,yDAAyD;YACzD,CAAC,QAAQ,CAAC;QAEd,IAAI,iBAAiB,GAAG,UAAU,KAAK,mBAAmB,CAAC;QAC3D,IAAI,UAAU,EAAE,CAAC;YACb,iBAAiB,IAAI,6BAA6B,CAAC;QACvD,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YACd,iBAAiB,GAAG,SAAS,iBAAiB,GAAG,CAAC;QACtD,CAAC;QAED,MAAM,UAAU,GAAG,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,iBAAiB,CAAC;QAC3D,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEnG,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC;YACxB,IAAI,EAAE,MAAM,YAAY,GAAG,YAAY,GAAG,KAAK,EAAE;YACjD,cAAc,EAAE,sBAAsB,aAAtB,sBAAsB,cAAtB,sBAAsB,GAAI;gBACtC,iBAAiB,QAAQ,EAAE;gBAC3B,kBAAkB,UAAU,GAAG;gBAC/B,sBAAsB;gBACtB,uBAAuB;aAC1B;YACD,UAAU,EAAE;gBACR;oBACI,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;oBACtC,IAAI,EAAE,SAAS;iBAClB;gBACD;oBACI,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,WAAW;iBACpB;aACJ;YACD,UAAU,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,OAAO,KAAK,IAAI,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE,4CAA4C;YAC5C,IAAI,CAAC,aAAa,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,CAAC,aAAa,CAAC;YACf,cAAc,CAAC,MAAM,CAAC;YACtB,aAAa,YAAY,4CAA4C,KAAK,qBAAqB,IAAA,8BAAc,EACzG,KAAK,CACR,IAAI,SAAS,4BAA4B;SAC7C,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CACzB,MAAuB,EACvB,EAAc,EACd,KAAa,EACb,SAAiB,EACjB,QAAmC,EACnC,aAAsB,EACtB,kBAA2B;IAE3B,MAAM,YAAY,GAAG,IAAA,8BAAc,EAAC,SAAS,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,UAAU,KAAK,GAAG,YAAY,MAAM,CAAC;IACtD,MAAM,SAAS,GAAG,0BAA0B,QAAQ,GAAG,CAAC;IACxD,IAAI,UAAU,GAAG,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,kBAAkB,KAAK,YAAY,KAAK,gBAAgB,CAAC;IAChG,IAAI,aAAa,EAAE,CAAC;QAChB,UAAU,GAAG,IAAI,UAAU,gBAAgB,CAAC;IAChD,CAAC;IACD,MAAM,qBAAqB,GAAG,QAAQ,mBAAmB,CACrD,MAAM,EACN,aAAa,CAAC,CAAC,CAAC,IAAI,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,KAAK,eAAe,CAAC,CAAC,CAAC,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,KAAK,EAC5F,QAAQ,CACX,iBAAiB,CAAC;IACnB,MAAM,WAAW,GAAG,QAAQ,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAEhG,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC;QACxB,IAAI,EAAE,MAAM,YAAY,GAAG,KAAK,EAAE;QAClC,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,qBAAqB;aAC9B;SACJ;KACJ,CAAC,CAAC;IAEH,4BAA4B;IAC5B,IAAI,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE7C,IAAI,CAAC,oBAAoB,CAAC;QACtB,eAAe,EAAE,kCAAuB,CAAC,KAAK;QAC9C,YAAY,EAAE;YACV;gBACI,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE;uCACU,QAAQ,mBAC3B,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,KAC1B,KAAK,aAAa,MAAM,KAAK,OAAO,QAAQ,CAAC,WAAW,EAAE,qBAAqB,IAAA,8BAAc,EACzF,KAAK,CACR,IAAI,SAAS,iCAAiC,aAAa;iBAC3D;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,KAAK,CAAC;QACX,KAAK,SAAS;YACV,+DAA+D;YAC/D,IAAI,CAAC,oBAAoB,CAAC;gBACtB,eAAe,EAAE,kCAAuB,CAAC,KAAK;gBAC9C,YAAY,EAAE;oBACV;wBACI,IAAI,EAAE,UAAU;wBAChB,WAAW,EAAE;;oDAEe,QAAQ;uDACL,QAAQ;oCAC3B,WAAW;;;;;gCAKf,UAAU;;kBAExB;qBACG;iBACJ;aACJ,CAAC,CAAC;YACH,MAAM;QAEV,KAAK,QAAQ;YACT,6CAA6C;YAC7C,uEAAuE;YACvE,oDAAoD;YACpD,IAAI,CAAC,oBAAoB,CAAC;gBACtB,eAAe,EAAE,kCAAuB,CAAC,KAAK;gBAC9C,YAAY,EAAE;oBACV;wBACI,IAAI,EAAE,UAAU;wBAChB,WAAW,EAAE;;oDAEe,QAAQ;uDACL,QAAQ;oCAC3B,WAAW;;;;;gCAKf,UAAU;;oBAEtB;qBACC;iBACJ;aACJ,CAAC,CAAC;YACH,MAAM;QAEV;YACI,MAAM,IAAI,iBAAW,CAAC,OAAI,EAAE,uBAAuB,MAAM,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,iBAAiB,CACtB,MAAc,EACd,OAAwB,EACxB,EAAc,EACd,KAAgB,EAChB,YAAoB;IAEpB,MAAM,aAAa,GAAG,CAAC,IAAwB,EAAE,EAAE;QAC/C,OAAO,IAAA,kBAAK,EAAC,IAAI,CAAC,IAAI,CAAC;aAClB,IAAI,CAAC,cAAC,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;aAC9C,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC;aAC9B,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC;aAChC,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,YAAY,GAA0C,EAAE,CAAC;IAC/D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,gDAAgD;IAChD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;QACvB,IAAI,IAAA,YAAM,EAAC,MAAA,CAAC,CAAC,IAAI,CAAC,SAAS,0CAAE,GAAG,CAAC,EAAE,CAAC;YAChC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC7C,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,UAAU,EAAE,CAAC;YACb,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACzB,eAAe;QACf,EAAE,CAAC,aAAa,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC;IACxG,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IAEhG,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC;QACxB,IAAI,EAAE,WAAW,KAAK,CAAC,IAAI,EAAE;QAC7B,UAAU,EAAE,IAAI;QAChB,cAAc,EAAE,CAAC,uBAAuB,CAAC;QACzC,UAAU,EAAE;YACR,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wCAAwC,SAAS,KAAK,EAAE;YAC9E,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE;SACpG;KACJ,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa,CAAC;QACf,cAAc,CAAC,MAAM,CAAC;QACtB,mDAAmD,KAAK,CAAC,IAAI,qBAAqB,IAAA,8BAAc,EAC5F,KAAK,CAAC,IAAI,CACb,kCAAkC;KACtC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,kBAAkB,CACvB,MAAuB,EACvB,OAAwB,EACxB,OAAgB,EAChB,MAAc,EACd,KAAgB,EAChB,OAA0B,EAC1B,OAAsB;IAEtB,MAAM,YAAY,GAAG,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAA,yBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzG,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAA,kCAAyB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjG,EAAE,CAAC,oBAAoB,CAAC;QACpB,YAAY,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;QACpC,UAAU,EAAE,IAAI;QAChB,eAAe,EAAE,YAAY;KAChC,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEnD,mEAAmE;IAEnE,kDAAkD;IAClD,8DAA8D;IAC9D,IAAI,CAAC,IAAA,qBAAe,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAK,OAAe,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5E,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,aAAa;IACb,IAAI,CAAC,IAAA,qBAAe,EAAC,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,IAAI,IAAA,0BAAiB,EAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACvF,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACrG,CAAC;IAED,WAAW;IACX,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,mBAAmB;QACnB,iBAAiB,CACb,MAAM,EACN,OAAO,EACP,EAAE,EACF,KAAK,CAAC,IAAI,EACV,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,SAAS,EACT,IAAI,EACJ,IAAI,CACP,CAAC;IACN,CAAC;IAED,aAAa;IACb,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,iBAAiB,CACb,MAAM,EACN,OAAO,EACP,EAAE,EACF,KAAK,CAAC,IAAI,EACV,YAAY,EACZ,KAAK,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,KAAK,EACL,IAAI,CACP,CAAC;IACN,CAAC;IAED,YAAY;IACZ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACpB,iBAAiB,CACb,MAAM,EACN,OAAO,EACP,EAAE,EACF,KAAK,CAAC,IAAI,EACV,WAAW,EACX,KAAK,EACL,IAAI,EACJ,SAAS,EACT,SAAS,EACT,SAAS,EACT,KAAK,EACL,IAAI,CACP,CAAC;IACN,CAAC;IAED,SAAS;IACT,kDAAkD;IAClD,8DAA8D;IAC9D,IAAI,OAAO,CAAC,MAAM,IAAK,OAAe,CAAC,SAAS,EAAE,CAAC;QAC/C,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,aAAa;IACb,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACpG,CAAC;IAED,SAAS;IACT,kDAAkD;IAClD,8DAA8D;IAC9D,IAAI,CAAC,IAAA,qBAAe,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAK,OAAe,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5E,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,MAAM;IACN,kDAAkD;IAClD,8DAA8D;IAC9D,IAAI,OAAO,CAAC,MAAM,IAAK,OAAe,CAAC,SAAS,EAAE,CAAC;QAC/C,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,aAAa;IACb,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACvG,CAAC;IAED,YAAY;IACZ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACpB,iBAAiB,CACb,MAAM,EACN,OAAO,EACP,EAAE,EACF,YAAY,EACZ,WAAW,EACX,KAAK,EACL,KAAK,EACL,aAAa,YAAY,sBAAsB,CAClD,CAAC;IACN,CAAC;IAED,UAAU;IACV,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QAE3B,MAAM,UAAU,GAAG;sCACW,YAAY;;mDAEC,YAAY;;;0DAGL,YAAY;wDACd,YAAY;;wBAE5C,CAAC;QAEjB,MAAM,cAAc,GAAG;YACnB,wBAAwB,OAAO,aAAa;YAC5C,2HAA2H;YAC3H,8EAA8E,OAAO,gDAAgD,OAAO,2BAA2B;YACvK,2GAA2G;YAC3G,wDAAwD;YACxD,mDAAmD;YACnD,8DAA8D;YAC9D,wDAAwD;YACxD,0EAA0E;YAC1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAyCe;YACf,kBAAkB,UAAU,EAAE;YAC9B,sBAAsB;YACtB,uBAAuB;SAC1B,CAAC;QAEF,iBAAiB,CACb,MAAM,EACN,OAAO,EACP,EAAE,EACF,KAAK,CAAC,IAAI,EACV,SAAS,EACT,KAAK,EACL,KAAK,EACL,UAAU,EACV,2CAA2C,OAAO,wCAAwC,EAC1F,cAAc,CACjB,CAAC;IACN,CAAC;IAED,oFAAoF;IACpF,CAAC;QACG,iBAAiB,CACb,MAAM,EACN,OAAO,EACP,EAAE,EACF,KAAK,CAAC,IAAI,EACV,OAAO,EACP,KAAK,EACL,IAAI,EACJ,yHAAyH,YAAY,oCAAoC,CAC5K,CAAC;IACN,CAAC;IAED,CAAC;QACG,2DAA2D;QAC3D,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAChE,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAClB,OAAgB,EAChB,MAAc,EACd,MAAmB,EACnB,MAAc,EACd,OAAwB;IAExB,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,IAAA,yBAAS,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,EAAE,CAAC,aAAa,CAAC,gCAAgC,iBAAiB,IAAI,CAAC,CAAC;IACxE,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,OAAO;YACR,EAAE,CAAC,aAAa,CAAC,6BAA6B,iBAAiB,UAAU,CAAC,CAAC;YAC3E,MAAM;QACV,KAAK,KAAK;YACN,EAAE,CAAC,aAAa,CAAC,4DAA4D,iBAAiB,QAAQ,CAAC,CAAC;YACxG,MAAM;QACV,KAAK,QAAQ;YACT,EAAE,CAAC,aAAa,CAAC,2DAA2D,iBAAiB,WAAW,CAAC,CAAC;YAC1G,MAAM;QACV,KAAK,SAAS;YACV,EAAE,CAAC,aAAa,CACZ,uEAAuE,iBAAiB,YAAY,CACvG,CAAC;YACF,MAAM;IACd,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,uDAAuD,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,cAAc,CAAC,MAAuB;IAC3C,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,OAAO;YACR,OAAO,gDAAgD,CAAC;QAC5D,KAAK,KAAK;YACN,OAAO,gDAAgD,CAAC;QAC5D,KAAK,QAAQ;YACT,OAAO,gDAAgD,CAAC;QAC5D,KAAK,SAAS;YACV,OAAO,gDAAgD,CAAC;QAC5D;YACI,MAAM,IAAI,iBAAW,CAAC,OAAI,EAAE,uBAAuB,MAAM,GAAG,CAAC,CAAC;IACtE,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,MAAuB,EAAE,OAAwB;IACtE,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG;QACX,2EAA2E,iBAAiB,IAAI,MAAM,IAAI;QAC1G,0GAA0G,iBAAiB,IAAI;QAC/H,wCAAwC,qBAAe,GAAG;QAC1D,wCAAwC;QACxC,iCAAiC;KACpC,CAAC;IACF,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,MAAM,QAAQ,GACV,OAAO,KAAK,IAAI;gBACZ,CAAC,CAAC;oBACI,yEAAyE,iBAAiB,IAAI,MAAM,IAAI;oBACxG,wGAAwG;iBAC3G;gBACH,CAAC,CAAC,EAAE,CAAC;YACb,OAAO;gBACH,0HAA0H;gBAC1H,oCAAoC,iBAAiB,IAAI,MAAM,IAAI;gBACnE,GAAG,MAAM;gBACT,GAAG,QAAQ;aACd,CAAC;QACN,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACT,OAAO;gBACH,wHAAwH;gBACxH,oCAAoC,iBAAiB,IAAI,MAAM,IAAI;gBACnE,sEAAsE;gBACtE,GAAG,MAAM;aACZ,CAAC;QACN,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,OAAO;gBACH,yCAAyC;gBACzC,gHAAgH;gBAChH,GAAG,CAAC,OAAO,KAAK,IAAI;oBAChB,CAAC,CAAC,CAAC,yEAAyE,CAAC;oBAC7E,CAAC,CAAC,EAAE,CAAC;gBACT,oCAAoC,iBAAiB,IAAI,MAAM,IAAI;gBACnE,GAAG,MAAM;aACZ,CAAC;QACN,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACb,OAAO;gBACH,wIAAwI;gBACxI,oCAAoC,iBAAiB,IAAI,MAAM,IAAI;gBACnE,GAAG,MAAM;aACZ,CAAC;QACN,CAAC;QACD;YACI,MAAM,IAAI,iBAAW,CAAC,OAAI,EAAE,uBAAuB,MAAM,EAAE,CAAC,CAAC;IACrE,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc,EAAE,QAAgB;IACvD,MAAM,IAAI,GAAG,8BAA8B,QAAQ,GAAG,CAAC;IACvD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,oBAAoB,IAAI,mBAAmB,IAAI,GAAG,CAAC;IAC9D,CAAC;SAAM,CAAC;QACJ,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CACrB,MAAc,EACd,UAAkB,EAClB,QAAgB,EAChB,QAAiB,EACjB,QAAiB,EACjB,OAAwB;IAExB,IAAI,MAAM,GAAG,IAAA,kBAAK,EAAC,MAAM,CAAC;SACrB,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAChB,QAAQ;QACJ,CAAC,CAAC,OAAO,KAAK,IAAI;YACd,CAAC,CAAC,gCAAgC,UAAU,aAAa,QAAQ,gBAAgB;YACjF,CAAC,CAAC,WACI,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAC5B,wBAAwB,UAAU,0BAA0B,QAAQ,sCAAsC;QAChH,CAAC,CAAC,WAAW,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,gBAAgB,UAAU,aAAa,QAAQ,gBAAgB,CAC7G;SACA,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;QACd,MAAM,UAAU,GAAG,QAAQ;YACvB,CAAC,CAAC,gCAAgC,UAAU,0BAA0B,QAAQ,sCAAsC;YACpH,CAAC,CAAC,OAAO,KAAK,IAAI;gBAClB,CAAC,CAAC,wBAAwB,UAAU,aAAa,QAAQ,gBAAgB;gBACzE,CAAC,CAAC,kCAAkC,UAAU,aAAa,QAAQ,iBAAiB,CAAC;QACzF,OAAO,oBAAoB,UAAU,mBAAmB,UAAU,GAAG,CAAC;IAC1E,CAAC,CAAC;SACD,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CACjB,QAAQ;QACJ,CAAC,CAAC,OAAO,KAAK,IAAI;YACd,CAAC,CAAC,mCAAmC,UAAU,aAAa,QAAQ,gBAAgB;YACpF,CAAC,CAAC,8CAA8C,UAAU,0BAA0B,QAAQ,uCAAuC;QACvI,CAAC,CAAC,OAAO,KAAK,IAAI;YAClB,CAAC,CAAC,2BAA2B,UAAU,aAAa,QAAQ,gBAAgB;YAC5E,CAAC,CAAC,sCAAsC,UAAU,aAAa,QAAQ,iBAAiB,CAC/F;SACA,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAClB,QAAQ;QACJ,CAAC,CAAC,mCAAmC,UAAU,0BAA0B,QAAQ,sCAAsC;QACvH,CAAC,CAAC,2BAA2B,UAAU,aAAa,QAAQ,gBAAgB,CACnF;SACA,SAAS,CAAC,GAAG,EAAE;QACZ,MAAM,IAAI,iBAAW,CAAC,OAAI,EAAE,uBAAuB,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEP,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,qEAAqE;QACrE,MAAM,GAAG,IAAI,MAAM,uBAAuB,CAAC;IAC/C,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc,EAAE,UAAkB,EAAE,QAAgB;IAC7E,IAAI,MAAM,GAAG,IAAA,kBAAK,EAAC,MAAM,CAAC;SACrB,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,sBAAsB,UAAU,mBAAmB,QAAQ,GAAG,CAAC;SACnF,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;QACd,MAAM,UAAU,GAAG,sBAAsB,UAAU,mBAAmB,QAAQ,YAAY,CAAC;QAC3F,OAAO,oBAAoB,UAAU,mBAAmB,UAAU,GAAG,CAAC;IAC1E,CAAC,CAAC;SACD,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,mBAAmB,UAAU,mBAAmB,QAAQ,GAAG,CAAC;SACjF,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,yBAAyB,UAAU,mBAAmB,QAAQ,GAAG,CAAC;SACxF,SAAS,CAAC,GAAG,EAAE;QACZ,MAAM,IAAI,iBAAW,CAAC,OAAI,EAAE,uBAAuB,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEP,MAAM,GAAG,IAAI,MAAM,0BAA0B,CAAC;IAE9C,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAwB;IACnD,OAAO,qCAAqC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAChF,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB,EAAE,MAAc,EAAE,OAAsB;IAClF,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAC/B,MAAM,IAAI,iBAAW,CAAC,OAAI,EAAE,wDAAwD,CAAC,CAAC;IAC1F,CAAC;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IACtE,OAAO,CAAC,gBAAgB,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1F,gGAAgG;IAChG,wFAAwF;IACxF,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACnG,IAAI,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,CAAC,gBAAgB,CAAC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzG,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenstackhq/tanstack-query",
|
|
3
3
|
"displayName": "ZenStack plugin for generating tanstack-query hooks",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.19.0",
|
|
5
5
|
"description": "ZenStack plugin for generating tanstack-query hooks",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"exports": {
|
|
@@ -82,8 +82,8 @@
|
|
|
82
82
|
"semver": "^7.5.2",
|
|
83
83
|
"ts-morph": "^26.0.0",
|
|
84
84
|
"ts-pattern": "^4.3.0",
|
|
85
|
-
"@zenstackhq/runtime": "2.
|
|
86
|
-
"@zenstackhq/sdk": "2.
|
|
85
|
+
"@zenstackhq/runtime": "2.19.0",
|
|
86
|
+
"@zenstackhq/sdk": "2.19.0"
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
89
|
"@angular/core": "^20.0.0",
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"typescript": "^5.0.0",
|
|
112
112
|
"vue": "^3.3.4",
|
|
113
113
|
"zone.js": "^0.15.0",
|
|
114
|
-
"@zenstackhq/testtools": "2.
|
|
114
|
+
"@zenstackhq/testtools": "2.19.0"
|
|
115
115
|
},
|
|
116
116
|
"scripts": {
|
|
117
117
|
"clean": "rimraf dist",
|
package/runtime-v5/angular.d.mts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken } from '@angular/core';
|
|
3
1
|
import * as _tanstack_angular_query_v5 from '@tanstack/angular-query-experimental';
|
|
4
|
-
import { CreateQueryOptions, CreateInfiniteQueryOptions, InfiniteData,
|
|
2
|
+
import { CreateQueryOptions, CreateInfiniteQueryOptions, InfiniteData, CreateMutationOptions } from '@tanstack/angular-query-experimental';
|
|
5
3
|
import { ModelMeta } from '@zenstackhq/runtime/cross';
|
|
4
|
+
import { InjectionToken } from '@angular/core';
|
|
6
5
|
import { A as APIContext, F as FetchFn, a as ExtraQueryOptions, E as ExtraMutationOptions } from './common-CXlL7vTW.mjs';
|
|
7
6
|
|
|
8
7
|
declare const AngularQueryContextKey: InjectionToken<APIContext>;
|
|
@@ -31,38 +30,7 @@ declare function getHooksContext(): {
|
|
|
31
30
|
* @param fetch The fetch function to use for sending the HTTP request
|
|
32
31
|
* @returns injectQuery hook
|
|
33
32
|
*/
|
|
34
|
-
declare function useModelQuery<TQueryFnData, TData, TError>(model: string, url: string, args?: unknown, options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData>, 'queryKey'> & ExtraQueryOptions, fetch?: FetchFn):
|
|
35
|
-
isSuccess: (this: _tanstack_angular_query_v5.CreateBaseQueryResult<TData, TError, _tanstack_angular_query_v5.QueryObserverResult<TData, TError>>) => this is _tanstack_angular_query_v5.CreateBaseQueryResult<TData, TError, _tanstack_angular_query_v5.QueryObserverSuccessResult<TData, TError> | _tanstack_angular_query_v5.QueryObserverPlaceholderResult<TData, TError>>;
|
|
36
|
-
isError: (this: _tanstack_angular_query_v5.CreateBaseQueryResult<TData, TError, _tanstack_angular_query_v5.QueryObserverResult<TData, TError>>) => this is _tanstack_angular_query_v5.CreateBaseQueryResult<TData, TError, _tanstack_angular_query_v5.QueryObserverRefetchErrorResult<TData, TError> | _tanstack_angular_query_v5.QueryObserverLoadingErrorResult<TData, TError>>;
|
|
37
|
-
isPending: (this: _tanstack_angular_query_v5.CreateBaseQueryResult<TData, TError, _tanstack_angular_query_v5.QueryObserverResult<TData, TError>>) => this is _tanstack_angular_query_v5.CreateBaseQueryResult<TData, TError, _tanstack_angular_query_v5.QueryObserverLoadingResult<TData, TError> | _tanstack_angular_query_v5.QueryObserverPendingResult<TData, TError>>;
|
|
38
|
-
data: TData | undefined extends Function ? Function & TData : _angular_core.Signal<TData | undefined>;
|
|
39
|
-
error: TError | null extends Function ? Function & TError : _angular_core.Signal<TError | null>;
|
|
40
|
-
isLoading: _angular_core.Signal<boolean>;
|
|
41
|
-
isLoadingError: _angular_core.Signal<boolean>;
|
|
42
|
-
isRefetchError: _angular_core.Signal<boolean>;
|
|
43
|
-
status: _angular_core.Signal<"error" | "success" | "pending">;
|
|
44
|
-
dataUpdatedAt: _angular_core.Signal<number>;
|
|
45
|
-
errorUpdatedAt: _angular_core.Signal<number>;
|
|
46
|
-
failureCount: _angular_core.Signal<number>;
|
|
47
|
-
failureReason: TError | null extends Function ? Function & TError : _angular_core.Signal<TError | null>;
|
|
48
|
-
errorUpdateCount: _angular_core.Signal<number>;
|
|
49
|
-
isFetched: _angular_core.Signal<boolean>;
|
|
50
|
-
isFetchedAfterMount: _angular_core.Signal<boolean>;
|
|
51
|
-
isFetching: _angular_core.Signal<boolean>;
|
|
52
|
-
isInitialLoading: _angular_core.Signal<boolean>;
|
|
53
|
-
isPaused: _angular_core.Signal<boolean>;
|
|
54
|
-
isPlaceholderData: _angular_core.Signal<boolean>;
|
|
55
|
-
isRefetching: _angular_core.Signal<boolean>;
|
|
56
|
-
isStale: _angular_core.Signal<boolean>;
|
|
57
|
-
refetch: (options?: _tanstack_angular_query_v5.RefetchOptions) => Promise<_tanstack_angular_query_v5.QueryObserverResult<TData, TError>>;
|
|
58
|
-
fetchStatus: _angular_core.Signal<_tanstack_angular_query_v5.FetchStatus>;
|
|
59
|
-
isEnabled: _angular_core.Signal<boolean>;
|
|
60
|
-
promise: _angular_core.Signal<Promise<TData>>;
|
|
61
|
-
queryKey: [string, string, string, unknown, {
|
|
62
|
-
infinite: boolean;
|
|
63
|
-
optimisticUpdate: boolean;
|
|
64
|
-
}];
|
|
65
|
-
};
|
|
33
|
+
declare function useModelQuery<TQueryFnData, TData, TError>(model: string, url: string, args?: unknown, options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData>, 'queryKey'> & ExtraQueryOptions, fetch?: FetchFn): _tanstack_angular_query_v5.CreateQueryResult<TData, TError>;
|
|
66
34
|
/**
|
|
67
35
|
* Creates an Angular TanStack Query infinite query.
|
|
68
36
|
*
|
|
@@ -73,9 +41,7 @@ declare function useModelQuery<TQueryFnData, TData, TError>(model: string, url:
|
|
|
73
41
|
* @param fetch The fetch function to use for sending the HTTP request
|
|
74
42
|
* @returns injectInfiniteQuery hook
|
|
75
43
|
*/
|
|
76
|
-
declare function useInfiniteModelQuery<TQueryFnData, TData, TError>(model: string, url: string, args: unknown, options: Omit<CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>, 'queryKey' | 'initialPageParam'>, fetch?: FetchFn): CreateInfiniteQueryResult<InfiniteData<TData>, TError
|
|
77
|
-
queryKey: QueryKey;
|
|
78
|
-
};
|
|
44
|
+
declare function useInfiniteModelQuery<TQueryFnData, TData, TError>(model: string, url: string, args: unknown, options: Omit<CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>, 'queryKey' | 'initialPageParam'>, fetch?: FetchFn): _tanstack_angular_query_v5.CreateInfiniteQueryResult<InfiniteData<TData, unknown>, TError>;
|
|
79
45
|
/**
|
|
80
46
|
* Creates an Angular TanStack Query mutation.
|
|
81
47
|
*
|
package/runtime-v5/angular.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken } from '@angular/core';
|
|
3
1
|
import * as _tanstack_angular_query_v5 from '@tanstack/angular-query-experimental';
|
|
4
|
-
import { CreateQueryOptions, CreateInfiniteQueryOptions, InfiniteData,
|
|
2
|
+
import { CreateQueryOptions, CreateInfiniteQueryOptions, InfiniteData, CreateMutationOptions } from '@tanstack/angular-query-experimental';
|
|
5
3
|
import { ModelMeta } from '@zenstackhq/runtime/cross';
|
|
4
|
+
import { InjectionToken } from '@angular/core';
|
|
6
5
|
import { A as APIContext, F as FetchFn, a as ExtraQueryOptions, E as ExtraMutationOptions } from './common-CXlL7vTW.js';
|
|
7
6
|
|
|
8
7
|
declare const AngularQueryContextKey: InjectionToken<APIContext>;
|
|
@@ -31,38 +30,7 @@ declare function getHooksContext(): {
|
|
|
31
30
|
* @param fetch The fetch function to use for sending the HTTP request
|
|
32
31
|
* @returns injectQuery hook
|
|
33
32
|
*/
|
|
34
|
-
declare function useModelQuery<TQueryFnData, TData, TError>(model: string, url: string, args?: unknown, options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData>, 'queryKey'> & ExtraQueryOptions, fetch?: FetchFn):
|
|
35
|
-
isSuccess: (this: _tanstack_angular_query_v5.CreateBaseQueryResult<TData, TError, _tanstack_angular_query_v5.QueryObserverResult<TData, TError>>) => this is _tanstack_angular_query_v5.CreateBaseQueryResult<TData, TError, _tanstack_angular_query_v5.QueryObserverSuccessResult<TData, TError> | _tanstack_angular_query_v5.QueryObserverPlaceholderResult<TData, TError>>;
|
|
36
|
-
isError: (this: _tanstack_angular_query_v5.CreateBaseQueryResult<TData, TError, _tanstack_angular_query_v5.QueryObserverResult<TData, TError>>) => this is _tanstack_angular_query_v5.CreateBaseQueryResult<TData, TError, _tanstack_angular_query_v5.QueryObserverRefetchErrorResult<TData, TError> | _tanstack_angular_query_v5.QueryObserverLoadingErrorResult<TData, TError>>;
|
|
37
|
-
isPending: (this: _tanstack_angular_query_v5.CreateBaseQueryResult<TData, TError, _tanstack_angular_query_v5.QueryObserverResult<TData, TError>>) => this is _tanstack_angular_query_v5.CreateBaseQueryResult<TData, TError, _tanstack_angular_query_v5.QueryObserverLoadingResult<TData, TError> | _tanstack_angular_query_v5.QueryObserverPendingResult<TData, TError>>;
|
|
38
|
-
data: TData | undefined extends Function ? Function & TData : _angular_core.Signal<TData | undefined>;
|
|
39
|
-
error: TError | null extends Function ? Function & TError : _angular_core.Signal<TError | null>;
|
|
40
|
-
isLoading: _angular_core.Signal<boolean>;
|
|
41
|
-
isLoadingError: _angular_core.Signal<boolean>;
|
|
42
|
-
isRefetchError: _angular_core.Signal<boolean>;
|
|
43
|
-
status: _angular_core.Signal<"error" | "success" | "pending">;
|
|
44
|
-
dataUpdatedAt: _angular_core.Signal<number>;
|
|
45
|
-
errorUpdatedAt: _angular_core.Signal<number>;
|
|
46
|
-
failureCount: _angular_core.Signal<number>;
|
|
47
|
-
failureReason: TError | null extends Function ? Function & TError : _angular_core.Signal<TError | null>;
|
|
48
|
-
errorUpdateCount: _angular_core.Signal<number>;
|
|
49
|
-
isFetched: _angular_core.Signal<boolean>;
|
|
50
|
-
isFetchedAfterMount: _angular_core.Signal<boolean>;
|
|
51
|
-
isFetching: _angular_core.Signal<boolean>;
|
|
52
|
-
isInitialLoading: _angular_core.Signal<boolean>;
|
|
53
|
-
isPaused: _angular_core.Signal<boolean>;
|
|
54
|
-
isPlaceholderData: _angular_core.Signal<boolean>;
|
|
55
|
-
isRefetching: _angular_core.Signal<boolean>;
|
|
56
|
-
isStale: _angular_core.Signal<boolean>;
|
|
57
|
-
refetch: (options?: _tanstack_angular_query_v5.RefetchOptions) => Promise<_tanstack_angular_query_v5.QueryObserverResult<TData, TError>>;
|
|
58
|
-
fetchStatus: _angular_core.Signal<_tanstack_angular_query_v5.FetchStatus>;
|
|
59
|
-
isEnabled: _angular_core.Signal<boolean>;
|
|
60
|
-
promise: _angular_core.Signal<Promise<TData>>;
|
|
61
|
-
queryKey: [string, string, string, unknown, {
|
|
62
|
-
infinite: boolean;
|
|
63
|
-
optimisticUpdate: boolean;
|
|
64
|
-
}];
|
|
65
|
-
};
|
|
33
|
+
declare function useModelQuery<TQueryFnData, TData, TError>(model: string, url: string, args?: unknown, options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData>, 'queryKey'> & ExtraQueryOptions, fetch?: FetchFn): _tanstack_angular_query_v5.CreateQueryResult<TData, TError>;
|
|
66
34
|
/**
|
|
67
35
|
* Creates an Angular TanStack Query infinite query.
|
|
68
36
|
*
|
|
@@ -73,9 +41,7 @@ declare function useModelQuery<TQueryFnData, TData, TError>(model: string, url:
|
|
|
73
41
|
* @param fetch The fetch function to use for sending the HTTP request
|
|
74
42
|
* @returns injectInfiniteQuery hook
|
|
75
43
|
*/
|
|
76
|
-
declare function useInfiniteModelQuery<TQueryFnData, TData, TError>(model: string, url: string, args: unknown, options: Omit<CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>, 'queryKey' | 'initialPageParam'>, fetch?: FetchFn): CreateInfiniteQueryResult<InfiniteData<TData>, TError
|
|
77
|
-
queryKey: QueryKey;
|
|
78
|
-
};
|
|
44
|
+
declare function useInfiniteModelQuery<TQueryFnData, TData, TError>(model: string, url: string, args: unknown, options: Omit<CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>, 'queryKey' | 'initialPageParam'>, fetch?: FetchFn): _tanstack_angular_query_v5.CreateInfiniteQueryResult<InfiniteData<TData, unknown>, TError>;
|
|
79
45
|
/**
|
|
80
46
|
* Creates an Angular TanStack Query mutation.
|
|
81
47
|
*
|
package/runtime-v5/angular.js
CHANGED
|
@@ -317,6 +317,7 @@ function isZenStackQueryKey(queryKey) {
|
|
|
317
317
|
}
|
|
318
318
|
|
|
319
319
|
// src/runtime-v5/angular.ts
|
|
320
|
+
var isFn = (v) => typeof v === "function";
|
|
320
321
|
var AngularQueryContextKey = new import_core.InjectionToken("zenstack-angular-query-context");
|
|
321
322
|
function provideAngularQueryContext(context) {
|
|
322
323
|
return {
|
|
@@ -336,29 +337,33 @@ function getHooksContext() {
|
|
|
336
337
|
return __spreadValues({ endpoint: endpoint != null ? endpoint : DEFAULT_QUERY_ENDPOINT }, rest);
|
|
337
338
|
}
|
|
338
339
|
function useModelQuery(model, url, args, options, fetch2) {
|
|
339
|
-
const
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
340
|
+
const query = (0, import_angular_query_v5.injectQuery)(() => {
|
|
341
|
+
const resolvedArgs = isFn(args) ? args() : args;
|
|
342
|
+
const reqUrl = makeUrl(url, resolvedArgs);
|
|
343
|
+
const queryKey = getQueryKey(model, url, resolvedArgs, {
|
|
344
|
+
infinite: false,
|
|
345
|
+
optimisticUpdate: (options == null ? void 0 : options.optimisticUpdate) !== false
|
|
346
|
+
});
|
|
347
|
+
return __spreadValues({
|
|
348
|
+
queryKey,
|
|
349
|
+
queryFn: ({ signal }) => fetcher(reqUrl, { signal }, fetch2, false)
|
|
350
|
+
}, options);
|
|
343
351
|
});
|
|
344
|
-
return
|
|
345
|
-
queryKey
|
|
346
|
-
}, (0, import_angular_query_v5.injectQuery)(() => __spreadValues({
|
|
347
|
-
queryKey,
|
|
348
|
-
queryFn: ({ signal }) => fetcher(reqUrl, { signal }, fetch2, false)
|
|
349
|
-
}, options)));
|
|
352
|
+
return query;
|
|
350
353
|
}
|
|
351
354
|
function useInfiniteModelQuery(model, url, args, options, fetch2) {
|
|
352
|
-
const
|
|
353
|
-
|
|
354
|
-
queryKey
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
355
|
+
const query = (0, import_angular_query_v5.injectInfiniteQuery)(() => {
|
|
356
|
+
const resolvedArgs = isFn(args) ? args() : args;
|
|
357
|
+
const queryKey = getQueryKey(model, url, resolvedArgs, { infinite: true, optimisticUpdate: false });
|
|
358
|
+
return __spreadValues({
|
|
359
|
+
queryKey,
|
|
360
|
+
queryFn: ({ pageParam, signal }) => {
|
|
361
|
+
return fetcher(makeUrl(url, pageParam != null ? pageParam : resolvedArgs), { signal }, fetch2, false);
|
|
362
|
+
},
|
|
363
|
+
initialPageParam: resolvedArgs
|
|
364
|
+
}, options);
|
|
365
|
+
});
|
|
366
|
+
return query;
|
|
362
367
|
}
|
|
363
368
|
function useModelMutation(model, method, url, modelMeta, options, fetch2, checkReadBack) {
|
|
364
369
|
const queryClient = (0, import_core.inject)(import_angular_query_v5.QueryClient);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime-v5/angular.ts","../../src/runtime/common.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n injectQuery,\n injectMutation,\n injectInfiniteQuery,\n QueryClient,\n type CreateQueryOptions,\n type CreateMutationOptions,\n type CreateInfiniteQueryOptions,\n type InfiniteData,\n CreateInfiniteQueryResult,\n QueryKey,\n} from '@tanstack/angular-query-v5';\nimport type { ModelMeta } from '@zenstackhq/runtime/cross';\nimport { inject, InjectionToken } from '@angular/core';\nimport {\n APIContext,\n DEFAULT_QUERY_ENDPOINT,\n fetcher,\n getQueryKey,\n makeUrl,\n marshal,\n setupInvalidation,\n setupOptimisticUpdate,\n type ExtraMutationOptions,\n type ExtraQueryOptions,\n type FetchFn,\n} from '../runtime/common';\n\nexport { APIContext as RequestHandlerContext } from '../runtime/common';\n\nexport const AngularQueryContextKey = new InjectionToken<APIContext>('zenstack-angular-query-context');\n\n/**\n * Provide context for the generated TanStack Query hooks.\n */\nexport function provideAngularQueryContext(context: APIContext) {\n return {\n provide: AngularQueryContextKey,\n useValue: context,\n };\n}\n\n/**\n * Hooks context.\n */\nexport function getHooksContext() {\n const context = inject(AngularQueryContextKey, {\n optional: true,\n }) || {\n endpoint: DEFAULT_QUERY_ENDPOINT,\n fetch: undefined,\n logging: false,\n };\n\n const { endpoint, ...rest } = context;\n return { endpoint: endpoint ?? DEFAULT_QUERY_ENDPOINT, ...rest };\n}\n\n/**\n * Creates an Angular TanStack Query query.\n *\n * @param model The name of the model under query.\n * @param url The request URL.\n * @param args The request args object, URL-encoded and appended as \"?q=\" parameter\n * @param options The Angular query options object\n * @param fetch The fetch function to use for sending the HTTP request\n * @returns injectQuery hook\n */\nexport function useModelQuery<TQueryFnData, TData, TError>(\n model: string,\n url: string,\n args?: unknown,\n options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData>, 'queryKey'> & ExtraQueryOptions,\n fetch?: FetchFn\n) {\n const reqUrl = makeUrl(url, args);\n const queryKey = getQueryKey(model, url, args, {\n infinite: false,\n optimisticUpdate: options?.optimisticUpdate !== false,\n });\n return {\n queryKey,\n ...injectQuery(() => ({\n queryKey,\n queryFn: ({ signal }) => fetcher<TQueryFnData, false>(reqUrl, { signal }, fetch, false),\n ...options,\n })),\n };\n}\n\n/**\n * Creates an Angular TanStack Query infinite query.\n *\n * @param model The name of the model under query.\n * @param url The request URL.\n * @param args The initial request args object, URL-encoded and appended as \"?q=\" parameter\n * @param options The Angular infinite query options object\n * @param fetch The fetch function to use for sending the HTTP request\n * @returns injectInfiniteQuery hook\n */\nexport function useInfiniteModelQuery<TQueryFnData, TData, TError>(\n model: string,\n url: string,\n args: unknown,\n options: Omit<\n CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>,\n 'queryKey' | 'initialPageParam'\n >,\n fetch?: FetchFn\n): CreateInfiniteQueryResult<InfiniteData<TData>, TError> & { queryKey: QueryKey } {\n const queryKey = getQueryKey(model, url, args, { infinite: true, optimisticUpdate: false });\n return {\n queryKey,\n ...injectInfiniteQuery(() => ({\n queryKey,\n queryFn: ({ pageParam, signal }) => {\n return fetcher<TQueryFnData, false>(makeUrl(url, pageParam ?? args), { signal }, fetch, false);\n },\n initialPageParam: args,\n ...options,\n })),\n };\n}\n\n/**\n * Creates an Angular TanStack Query mutation.\n *\n * @param model The name of the model under mutation.\n * @param method The HTTP method.\n * @param url The request URL.\n * @param modelMeta The model metadata.\n * @param options The Angular mutation options.\n * @param fetch The fetch function to use for sending the HTTP request\n * @param checkReadBack Whether to check for read back errors and return undefined if found.\n * @returns injectMutation hook\n */\nexport function useModelMutation<\n TArgs,\n TError,\n R = any,\n C extends boolean = boolean,\n Result = C extends true ? R | undefined : R\n>(\n model: string,\n method: 'POST' | 'PUT' | 'DELETE',\n url: string,\n modelMeta: ModelMeta,\n options?: Omit<CreateMutationOptions<Result, TError, TArgs>, 'mutationFn'> & ExtraMutationOptions,\n fetch?: FetchFn,\n checkReadBack?: C\n) {\n const queryClient = inject(QueryClient);\n const mutationFn = (data: unknown) => {\n const reqUrl = method === 'DELETE' ? makeUrl(url, data) : url;\n const fetchInit: RequestInit = {\n method,\n ...(method !== 'DELETE' && {\n headers: {\n 'content-type': 'application/json',\n },\n body: marshal(data),\n }),\n };\n return fetcher<R, C>(reqUrl, fetchInit, fetch, checkReadBack) as Promise<Result>;\n };\n\n const finalOptions = { ...options, mutationFn };\n const operation = url.split('/').pop();\n const invalidateQueries = options?.invalidateQueries !== false;\n const optimisticUpdate = !!options?.optimisticUpdate;\n\n if (operation) {\n const { logging } = getHooksContext();\n if (invalidateQueries) {\n setupInvalidation(\n model,\n operation,\n modelMeta,\n finalOptions,\n (predicate) => queryClient.invalidateQueries({ predicate }),\n logging\n );\n }\n\n if (optimisticUpdate) {\n setupOptimisticUpdate(\n model,\n operation,\n modelMeta,\n finalOptions,\n queryClient.getQueryCache().getAll(),\n (queryKey, data) => {\n // update query cache\n queryClient.setQueryData<unknown>(queryKey, data);\n // cancel on-flight queries to avoid redundant cache updates,\n // the settlement of the current mutation will trigger a new revalidation\n queryClient.cancelQueries({ queryKey }, { revert: false, silent: true });\n },\n invalidateQueries ? (predicate) => queryClient.invalidateQueries({ predicate }) : undefined,\n logging\n );\n }\n }\n\n return injectMutation(() => finalOptions);\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { deserialize, serialize } from '@zenstackhq/runtime/browser';\nimport {\n applyMutation,\n getMutatedModels,\n getReadModels,\n type ModelMeta,\n type PrismaWriteActionType,\n} from '@zenstackhq/runtime/cross';\n\n/**\n * The default query endpoint.\n */\nexport const DEFAULT_QUERY_ENDPOINT = '/api/model';\n\n/**\n * Prefix for react-query keys.\n */\nexport const QUERY_KEY_PREFIX = 'zenstack';\n\n/**\n * Function signature for `fetch`.\n */\nexport type FetchFn = (url: string, options?: RequestInit) => Promise<Response>;\n\n/**\n * Type for query and mutation errors.\n */\nexport type QueryError = Error & {\n /**\n * Additional error information.\n */\n info?: unknown;\n\n /**\n * HTTP status code.\n */\n status?: number;\n};\n\n/**\n * Result of optimistic data provider.\n */\nexport type OptimisticDataProviderResult = {\n /**\n * Kind of the result.\n * - Update: use the `data` field to update the query cache.\n * - Skip: skip the optimistic update for this query.\n * - ProceedDefault: proceed with the default optimistic update.\n */\n kind: 'Update' | 'Skip' | 'ProceedDefault';\n\n /**\n * Data to update the query cache. Only applicable if `kind` is 'Update'.\n *\n * If the data is an object with fields updated, it should have a `$optimistic`\n * field set to `true`. If it's an array and an element object is created or updated,\n * the element should have a `$optimistic` field set to `true`.\n */\n data?: any;\n};\n\n/**\n * Optimistic data provider.\n *\n * @param args Arguments.\n * @param args.queryModel The model of the query.\n * @param args.queryOperation The operation of the query, `findMany`, `count`, etc.\n * @param args.queryArgs The arguments of the query.\n * @param args.currentData The current cache data for the query.\n * @param args.mutationArgs The arguments of the mutation.\n */\nexport type OptimisticDataProvider = (args: {\n queryModel: string;\n queryOperation: string;\n queryArgs: any;\n currentData: any;\n mutationArgs: any;\n}) => OptimisticDataProviderResult | Promise<OptimisticDataProviderResult>;\n\n/**\n * Extra mutation options.\n */\nexport type ExtraMutationOptions = {\n /**\n * Whether to automatically invalidate queries potentially affected by the mutation. Defaults to `true`.\n */\n invalidateQueries?: boolean;\n\n /**\n * Whether to optimistically update queries potentially affected by the mutation. Defaults to `false`.\n */\n optimisticUpdate?: boolean;\n\n /**\n * A callback for computing optimistic update data for each query cache entry.\n */\n optimisticDataProvider?: OptimisticDataProvider;\n};\n\n/**\n * Extra query options.\n */\nexport type ExtraQueryOptions = {\n /**\n * Whether to opt-in to optimistic updates for this query. Defaults to `true`.\n */\n optimisticUpdate?: boolean;\n};\n\n/**\n * Context type for configuring the hooks.\n */\nexport type APIContext = {\n /**\n * The endpoint to use for the queries.\n */\n endpoint?: string;\n\n /**\n * A custom fetch function for sending the HTTP requests.\n */\n fetch?: FetchFn;\n\n /**\n * If logging is enabled.\n */\n logging?: boolean;\n};\n\nexport async function fetcher<R, C extends boolean>(\n url: string,\n options?: RequestInit,\n customFetch?: FetchFn,\n checkReadBack?: C\n): Promise<C extends true ? R | undefined : R> {\n // Note: 'cross-fetch' is supposed to handle fetch compatibility\n // but it doesn't work for cloudflare workers\n const _fetch =\n customFetch ??\n // check if fetch is available globally\n (typeof fetch === 'function'\n ? fetch\n : // fallback to 'cross-fetch' if otherwise\n (await import('cross-fetch')).default);\n\n const res = await _fetch(url, options);\n if (!res.ok) {\n const errData = unmarshal(await res.text());\n if (\n checkReadBack !== false &&\n errData.error?.prisma &&\n errData.error?.code === 'P2004' &&\n errData.error?.reason === 'RESULT_NOT_READABLE'\n ) {\n // policy doesn't allow mutation result to be read back, just return undefined\n return undefined as any;\n }\n const error: QueryError = new Error('An error occurred while fetching the data.');\n error.info = errData.error;\n error.status = res.status;\n throw error;\n }\n\n const textResult = await res.text();\n try {\n return unmarshal(textResult).data as R;\n } catch (err) {\n console.error(`Unable to deserialize data:`, textResult);\n throw err;\n }\n}\n\ntype QueryKey = [\n string /* prefix */,\n string /* model */,\n string /* operation */,\n unknown /* args */,\n {\n infinite: boolean;\n optimisticUpdate: boolean;\n } /* flags */\n];\n\n/**\n * Computes query key for the given model, operation and query args.\n * @param model Model name.\n * @param urlOrOperation Prisma operation (e.g, `findMany`) or request URL. If it's a URL, the last path segment will be used as the operation name.\n * @param args Prisma query arguments.\n * @param options Query options, including `infinite` indicating if it's an infinite query (defaults to false), and `optimisticUpdate` indicating if optimistic updates are enabled (defaults to true).\n * @returns Query key\n */\nexport function getQueryKey(\n model: string,\n urlOrOperation: string,\n args: unknown,\n options: { infinite: boolean; optimisticUpdate: boolean } = { infinite: false, optimisticUpdate: true }\n): QueryKey {\n if (!urlOrOperation) {\n throw new Error('Invalid urlOrOperation');\n }\n const operation = urlOrOperation.split('/').pop();\n\n const infinite = options.infinite;\n // infinite query doesn't support optimistic updates\n const optimisticUpdate = options.infinite ? false : options.optimisticUpdate;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return [QUERY_KEY_PREFIX, model, operation!, args, { infinite, optimisticUpdate }];\n}\n\nexport function marshal(value: unknown) {\n const { data, meta } = serialize(value);\n if (meta) {\n return JSON.stringify({ ...(data as any), meta: { serialization: meta } });\n } else {\n return JSON.stringify(data);\n }\n}\n\nexport function unmarshal(value: string) {\n const parsed = JSON.parse(value);\n if (typeof parsed === 'object' && parsed?.data && parsed?.meta?.serialization) {\n const deserializedData = deserialize(parsed.data, parsed.meta.serialization);\n return { ...parsed, data: deserializedData };\n } else {\n return parsed;\n }\n}\n\nexport function makeUrl(url: string, args: unknown) {\n if (!args) {\n return url;\n }\n\n const { data, meta } = serialize(args);\n let result = `${url}?q=${encodeURIComponent(JSON.stringify(data))}`;\n if (meta) {\n result += `&meta=${encodeURIComponent(JSON.stringify({ serialization: meta }))}`;\n }\n return result;\n}\n\ntype InvalidationPredicate = ({ queryKey }: { queryKey: readonly unknown[] }) => boolean;\ntype InvalidateFunc = (predicate: InvalidationPredicate) => Promise<void>;\ntype MutationOptions = {\n onMutate?: (...args: any[]) => any;\n onSuccess?: (...args: any[]) => any;\n onSettled?: (...args: any[]) => any;\n};\n\n// sets up invalidation hook for a mutation\nexport function setupInvalidation(\n model: string,\n operation: string,\n modelMeta: ModelMeta,\n options: MutationOptions,\n invalidate: InvalidateFunc,\n logging = false\n) {\n const origOnSuccess = options?.onSuccess;\n options.onSuccess = async (...args: unknown[]) => {\n const [_, variables] = args;\n const predicate = await getInvalidationPredicate(\n model,\n operation as PrismaWriteActionType,\n variables,\n modelMeta,\n logging\n );\n await invalidate(predicate);\n return origOnSuccess?.(...args);\n };\n}\n\n// gets a predicate for evaluating whether a query should be invalidated\nasync function getInvalidationPredicate(\n model: string,\n operation: PrismaWriteActionType,\n mutationArgs: any,\n modelMeta: ModelMeta,\n logging = false\n) {\n const mutatedModels = await getMutatedModels(model, operation, mutationArgs, modelMeta);\n\n return ({ queryKey }: { queryKey: readonly unknown[] }) => {\n const [_, queryModel, , args] = queryKey as QueryKey;\n\n if (mutatedModels.includes(queryModel)) {\n // direct match\n if (logging) {\n console.log(`Invalidating query ${JSON.stringify(queryKey)} due to mutation \"${model}.${operation}\"`);\n }\n return true;\n }\n\n if (args) {\n // traverse query args to find nested reads that match the model under mutation\n if (findNestedRead(queryModel, mutatedModels, modelMeta, args)) {\n if (logging) {\n console.log(\n `Invalidating query ${JSON.stringify(queryKey)} due to mutation \"${model}.${operation}\"`\n );\n }\n return true;\n }\n }\n\n return false;\n };\n}\n\n// find nested reads that match the given models\nfunction findNestedRead(visitingModel: string, targetModels: string[], modelMeta: ModelMeta, args: any) {\n const modelsRead = getReadModels(visitingModel, modelMeta, args);\n return targetModels.some((m) => modelsRead.includes(m));\n}\n\ntype QueryCache = {\n queryKey: readonly unknown[];\n state: {\n data: unknown;\n error: unknown;\n };\n}[];\n\ntype SetCacheFunc = (queryKey: readonly unknown[], data: unknown) => void;\n\n/**\n * Sets up optimistic update and invalidation (after settled) for a mutation.\n */\nexport function setupOptimisticUpdate(\n model: string,\n operation: string,\n modelMeta: ModelMeta,\n options: MutationOptions & ExtraMutationOptions,\n queryCache: QueryCache,\n setCache: SetCacheFunc,\n invalidate?: InvalidateFunc,\n logging = false\n) {\n const origOnMutate = options?.onMutate;\n const origOnSettled = options?.onSettled;\n\n // optimistic update on mutate\n options.onMutate = async (...args: unknown[]) => {\n const [variables] = args;\n await optimisticUpdate(\n model,\n operation as PrismaWriteActionType,\n variables,\n options,\n modelMeta,\n queryCache,\n setCache,\n logging\n );\n return origOnMutate?.(...args);\n };\n\n // invalidate on settled\n options.onSettled = async (...args: unknown[]) => {\n if (invalidate) {\n const [, , variables] = args;\n const predicate = await getInvalidationPredicate(\n model,\n operation as PrismaWriteActionType,\n variables,\n modelMeta,\n logging\n );\n await invalidate(predicate);\n }\n return origOnSettled?.(...args);\n };\n}\n\n// optimistically updates query cache\nasync function optimisticUpdate(\n mutationModel: string,\n mutationOp: string,\n mutationArgs: any,\n options: MutationOptions & ExtraMutationOptions,\n modelMeta: ModelMeta,\n queryCache: QueryCache,\n setCache: SetCacheFunc,\n logging = false\n) {\n for (const cacheItem of queryCache) {\n const {\n queryKey,\n state: { data, error },\n } = cacheItem;\n\n if (!isZenStackQueryKey(queryKey)) {\n // skip non-zenstack queries\n continue;\n }\n\n if (error) {\n if (logging) {\n console.warn(`Skipping optimistic update for ${JSON.stringify(queryKey)} due to error:`, error);\n }\n continue;\n }\n\n const [_, queryModel, queryOperation, queryArgs, queryOptions] = queryKey;\n if (!queryOptions?.optimisticUpdate) {\n if (logging) {\n console.log(`Skipping optimistic update for ${JSON.stringify(queryKey)} due to opt-out`);\n }\n continue;\n }\n\n if (options.optimisticDataProvider) {\n const providerResult = await options.optimisticDataProvider({\n queryModel,\n queryOperation,\n queryArgs,\n currentData: data,\n mutationArgs,\n });\n\n if (providerResult?.kind === 'Skip') {\n // skip\n if (logging) {\n console.log(`Skipping optimistic update for ${JSON.stringify(queryKey)} due to provider`);\n }\n continue;\n } else if (providerResult?.kind === 'Update') {\n // update cache\n if (logging) {\n console.log(`Optimistically updating query ${JSON.stringify(queryKey)} due to provider`);\n }\n setCache(queryKey, providerResult.data);\n continue;\n }\n }\n\n // proceed with default optimistic update\n const mutatedData = await applyMutation(\n queryModel,\n queryOperation,\n data,\n mutationModel,\n mutationOp as PrismaWriteActionType,\n mutationArgs,\n modelMeta,\n logging\n );\n\n if (mutatedData !== undefined) {\n // mutation applicable to this query, update cache\n if (logging) {\n console.log(\n `Optimistically updating query ${JSON.stringify(\n queryKey\n )} due to mutation \"${mutationModel}.${mutationOp}\"`\n );\n }\n setCache(queryKey, mutatedData);\n }\n }\n}\n\nfunction isZenStackQueryKey(queryKey: readonly unknown[]): queryKey is QueryKey {\n if (queryKey.length < 5) {\n return false;\n }\n\n if (queryKey[0] !== QUERY_KEY_PREFIX) {\n return false;\n }\n\n return true;\n}\n"],"mappings":"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","names":["optimisticUpdate","fetch","optimisticUpdate"]}
|
|
1
|
+
{"version":3,"sources":["../../src/runtime-v5/angular.ts","../../src/runtime/common.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n injectQuery,\n injectMutation,\n injectInfiniteQuery,\n QueryClient,\n type CreateQueryOptions,\n type CreateMutationOptions,\n type CreateInfiniteQueryOptions,\n type InfiniteData,\n} from '@tanstack/angular-query-v5';\nimport type { ModelMeta } from '@zenstackhq/runtime/cross';\nimport { inject, InjectionToken } from '@angular/core';\nimport {\n APIContext,\n DEFAULT_QUERY_ENDPOINT,\n fetcher,\n getQueryKey,\n makeUrl,\n marshal,\n setupInvalidation,\n setupOptimisticUpdate,\n type ExtraMutationOptions,\n type ExtraQueryOptions,\n type FetchFn,\n} from '../runtime/common';\n\nexport { APIContext as RequestHandlerContext } from '../runtime/common';\n\ntype AnyFn = (...a: unknown[]) => unknown;\nconst isFn = (v: unknown): v is AnyFn => typeof v === 'function';\n\nexport const AngularQueryContextKey = new InjectionToken<APIContext>('zenstack-angular-query-context');\n\n/**\n * Provide context for the generated TanStack Query hooks.\n */\nexport function provideAngularQueryContext(context: APIContext) {\n return {\n provide: AngularQueryContextKey,\n useValue: context,\n };\n}\n\n/**\n * Hooks context.\n */\nexport function getHooksContext() {\n const context = inject(AngularQueryContextKey, {\n optional: true,\n }) || {\n endpoint: DEFAULT_QUERY_ENDPOINT,\n fetch: undefined,\n logging: false,\n };\n\n const { endpoint, ...rest } = context;\n return { endpoint: endpoint ?? DEFAULT_QUERY_ENDPOINT, ...rest };\n}\n\n/**\n * Creates an Angular TanStack Query query.\n *\n * @param model The name of the model under query.\n * @param url The request URL.\n * @param args The request args object, URL-encoded and appended as \"?q=\" parameter\n * @param options The Angular query options object\n * @param fetch The fetch function to use for sending the HTTP request\n * @returns injectQuery hook\n */\nexport function useModelQuery<TQueryFnData, TData, TError>(\n model: string,\n url: string,\n args?: unknown,\n options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData>, 'queryKey'> & ExtraQueryOptions,\n fetch?: FetchFn\n) {\n const query = injectQuery(() => {\n const resolvedArgs = isFn(args) ? args() : args;\n\n const reqUrl = makeUrl(url, resolvedArgs);\n const queryKey = getQueryKey(model, url, resolvedArgs, {\n infinite: false,\n optimisticUpdate: options?.optimisticUpdate !== false,\n });\n return {\n queryKey,\n queryFn: ({ signal }) => fetcher<TQueryFnData, false>(reqUrl, { signal }, fetch, false),\n ...options,\n };\n });\n return query;\n}\n\n/**\n * Creates an Angular TanStack Query infinite query.\n *\n * @param model The name of the model under query.\n * @param url The request URL.\n * @param args The initial request args object, URL-encoded and appended as \"?q=\" parameter\n * @param options The Angular infinite query options object\n * @param fetch The fetch function to use for sending the HTTP request\n * @returns injectInfiniteQuery hook\n */\nexport function useInfiniteModelQuery<TQueryFnData, TData, TError>(\n model: string,\n url: string,\n args: unknown,\n options: Omit<\n CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>,\n 'queryKey' | 'initialPageParam'\n >,\n fetch?: FetchFn\n) {\n const query = injectInfiniteQuery(() => {\n const resolvedArgs = isFn(args) ? args() : args;\n\n const queryKey = getQueryKey(model, url, resolvedArgs, { infinite: true, optimisticUpdate: false });\n\n return {\n queryKey,\n queryFn: ({ pageParam, signal }) => {\n return fetcher<TQueryFnData, false>(makeUrl(url, pageParam ?? resolvedArgs), { signal }, fetch, false);\n },\n initialPageParam: resolvedArgs,\n ...options,\n };\n });\n return query;\n}\n\n/**\n * Creates an Angular TanStack Query mutation.\n *\n * @param model The name of the model under mutation.\n * @param method The HTTP method.\n * @param url The request URL.\n * @param modelMeta The model metadata.\n * @param options The Angular mutation options.\n * @param fetch The fetch function to use for sending the HTTP request\n * @param checkReadBack Whether to check for read back errors and return undefined if found.\n * @returns injectMutation hook\n */\nexport function useModelMutation<\n TArgs,\n TError,\n R = any,\n C extends boolean = boolean,\n Result = C extends true ? R | undefined : R\n>(\n model: string,\n method: 'POST' | 'PUT' | 'DELETE',\n url: string,\n modelMeta: ModelMeta,\n options?: Omit<CreateMutationOptions<Result, TError, TArgs>, 'mutationFn'> & ExtraMutationOptions,\n fetch?: FetchFn,\n checkReadBack?: C\n) {\n const queryClient = inject(QueryClient);\n const mutationFn = (data: unknown) => {\n const reqUrl = method === 'DELETE' ? makeUrl(url, data) : url;\n const fetchInit: RequestInit = {\n method,\n ...(method !== 'DELETE' && {\n headers: {\n 'content-type': 'application/json',\n },\n body: marshal(data),\n }),\n };\n return fetcher<R, C>(reqUrl, fetchInit, fetch, checkReadBack) as Promise<Result>;\n };\n\n const finalOptions = { ...options, mutationFn };\n const operation = url.split('/').pop();\n const invalidateQueries = options?.invalidateQueries !== false;\n const optimisticUpdate = !!options?.optimisticUpdate;\n\n if (operation) {\n const { logging } = getHooksContext();\n if (invalidateQueries) {\n setupInvalidation(\n model,\n operation,\n modelMeta,\n finalOptions,\n (predicate) => queryClient.invalidateQueries({ predicate }),\n logging\n );\n }\n\n if (optimisticUpdate) {\n setupOptimisticUpdate(\n model,\n operation,\n modelMeta,\n finalOptions,\n queryClient.getQueryCache().getAll(),\n (queryKey, data) => {\n // update query cache\n queryClient.setQueryData<unknown>(queryKey, data);\n // cancel on-flight queries to avoid redundant cache updates,\n // the settlement of the current mutation will trigger a new revalidation\n queryClient.cancelQueries({ queryKey }, { revert: false, silent: true });\n },\n invalidateQueries ? (predicate) => queryClient.invalidateQueries({ predicate }) : undefined,\n logging\n );\n }\n }\n\n return injectMutation(() => finalOptions);\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { deserialize, serialize } from '@zenstackhq/runtime/browser';\nimport {\n applyMutation,\n getMutatedModels,\n getReadModels,\n type ModelMeta,\n type PrismaWriteActionType,\n} from '@zenstackhq/runtime/cross';\n\n/**\n * The default query endpoint.\n */\nexport const DEFAULT_QUERY_ENDPOINT = '/api/model';\n\n/**\n * Prefix for react-query keys.\n */\nexport const QUERY_KEY_PREFIX = 'zenstack';\n\n/**\n * Function signature for `fetch`.\n */\nexport type FetchFn = (url: string, options?: RequestInit) => Promise<Response>;\n\n/**\n * Type for query and mutation errors.\n */\nexport type QueryError = Error & {\n /**\n * Additional error information.\n */\n info?: unknown;\n\n /**\n * HTTP status code.\n */\n status?: number;\n};\n\n/**\n * Result of optimistic data provider.\n */\nexport type OptimisticDataProviderResult = {\n /**\n * Kind of the result.\n * - Update: use the `data` field to update the query cache.\n * - Skip: skip the optimistic update for this query.\n * - ProceedDefault: proceed with the default optimistic update.\n */\n kind: 'Update' | 'Skip' | 'ProceedDefault';\n\n /**\n * Data to update the query cache. Only applicable if `kind` is 'Update'.\n *\n * If the data is an object with fields updated, it should have a `$optimistic`\n * field set to `true`. If it's an array and an element object is created or updated,\n * the element should have a `$optimistic` field set to `true`.\n */\n data?: any;\n};\n\n/**\n * Optimistic data provider.\n *\n * @param args Arguments.\n * @param args.queryModel The model of the query.\n * @param args.queryOperation The operation of the query, `findMany`, `count`, etc.\n * @param args.queryArgs The arguments of the query.\n * @param args.currentData The current cache data for the query.\n * @param args.mutationArgs The arguments of the mutation.\n */\nexport type OptimisticDataProvider = (args: {\n queryModel: string;\n queryOperation: string;\n queryArgs: any;\n currentData: any;\n mutationArgs: any;\n}) => OptimisticDataProviderResult | Promise<OptimisticDataProviderResult>;\n\n/**\n * Extra mutation options.\n */\nexport type ExtraMutationOptions = {\n /**\n * Whether to automatically invalidate queries potentially affected by the mutation. Defaults to `true`.\n */\n invalidateQueries?: boolean;\n\n /**\n * Whether to optimistically update queries potentially affected by the mutation. Defaults to `false`.\n */\n optimisticUpdate?: boolean;\n\n /**\n * A callback for computing optimistic update data for each query cache entry.\n */\n optimisticDataProvider?: OptimisticDataProvider;\n};\n\n/**\n * Extra query options.\n */\nexport type ExtraQueryOptions = {\n /**\n * Whether to opt-in to optimistic updates for this query. Defaults to `true`.\n */\n optimisticUpdate?: boolean;\n};\n\n/**\n * Context type for configuring the hooks.\n */\nexport type APIContext = {\n /**\n * The endpoint to use for the queries.\n */\n endpoint?: string;\n\n /**\n * A custom fetch function for sending the HTTP requests.\n */\n fetch?: FetchFn;\n\n /**\n * If logging is enabled.\n */\n logging?: boolean;\n};\n\nexport async function fetcher<R, C extends boolean>(\n url: string,\n options?: RequestInit,\n customFetch?: FetchFn,\n checkReadBack?: C\n): Promise<C extends true ? R | undefined : R> {\n // Note: 'cross-fetch' is supposed to handle fetch compatibility\n // but it doesn't work for cloudflare workers\n const _fetch =\n customFetch ??\n // check if fetch is available globally\n (typeof fetch === 'function'\n ? fetch\n : // fallback to 'cross-fetch' if otherwise\n (await import('cross-fetch')).default);\n\n const res = await _fetch(url, options);\n if (!res.ok) {\n const errData = unmarshal(await res.text());\n if (\n checkReadBack !== false &&\n errData.error?.prisma &&\n errData.error?.code === 'P2004' &&\n errData.error?.reason === 'RESULT_NOT_READABLE'\n ) {\n // policy doesn't allow mutation result to be read back, just return undefined\n return undefined as any;\n }\n const error: QueryError = new Error('An error occurred while fetching the data.');\n error.info = errData.error;\n error.status = res.status;\n throw error;\n }\n\n const textResult = await res.text();\n try {\n return unmarshal(textResult).data as R;\n } catch (err) {\n console.error(`Unable to deserialize data:`, textResult);\n throw err;\n }\n}\n\ntype QueryKey = [\n string /* prefix */,\n string /* model */,\n string /* operation */,\n unknown /* args */,\n {\n infinite: boolean;\n optimisticUpdate: boolean;\n } /* flags */\n];\n\n/**\n * Computes query key for the given model, operation and query args.\n * @param model Model name.\n * @param urlOrOperation Prisma operation (e.g, `findMany`) or request URL. If it's a URL, the last path segment will be used as the operation name.\n * @param args Prisma query arguments.\n * @param options Query options, including `infinite` indicating if it's an infinite query (defaults to false), and `optimisticUpdate` indicating if optimistic updates are enabled (defaults to true).\n * @returns Query key\n */\nexport function getQueryKey(\n model: string,\n urlOrOperation: string,\n args: unknown,\n options: { infinite: boolean; optimisticUpdate: boolean } = { infinite: false, optimisticUpdate: true }\n): QueryKey {\n if (!urlOrOperation) {\n throw new Error('Invalid urlOrOperation');\n }\n const operation = urlOrOperation.split('/').pop();\n\n const infinite = options.infinite;\n // infinite query doesn't support optimistic updates\n const optimisticUpdate = options.infinite ? false : options.optimisticUpdate;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return [QUERY_KEY_PREFIX, model, operation!, args, { infinite, optimisticUpdate }];\n}\n\nexport function marshal(value: unknown) {\n const { data, meta } = serialize(value);\n if (meta) {\n return JSON.stringify({ ...(data as any), meta: { serialization: meta } });\n } else {\n return JSON.stringify(data);\n }\n}\n\nexport function unmarshal(value: string) {\n const parsed = JSON.parse(value);\n if (typeof parsed === 'object' && parsed?.data && parsed?.meta?.serialization) {\n const deserializedData = deserialize(parsed.data, parsed.meta.serialization);\n return { ...parsed, data: deserializedData };\n } else {\n return parsed;\n }\n}\n\nexport function makeUrl(url: string, args: unknown) {\n if (!args) {\n return url;\n }\n\n const { data, meta } = serialize(args);\n let result = `${url}?q=${encodeURIComponent(JSON.stringify(data))}`;\n if (meta) {\n result += `&meta=${encodeURIComponent(JSON.stringify({ serialization: meta }))}`;\n }\n return result;\n}\n\ntype InvalidationPredicate = ({ queryKey }: { queryKey: readonly unknown[] }) => boolean;\ntype InvalidateFunc = (predicate: InvalidationPredicate) => Promise<void>;\ntype MutationOptions = {\n onMutate?: (...args: any[]) => any;\n onSuccess?: (...args: any[]) => any;\n onSettled?: (...args: any[]) => any;\n};\n\n// sets up invalidation hook for a mutation\nexport function setupInvalidation(\n model: string,\n operation: string,\n modelMeta: ModelMeta,\n options: MutationOptions,\n invalidate: InvalidateFunc,\n logging = false\n) {\n const origOnSuccess = options?.onSuccess;\n options.onSuccess = async (...args: unknown[]) => {\n const [_, variables] = args;\n const predicate = await getInvalidationPredicate(\n model,\n operation as PrismaWriteActionType,\n variables,\n modelMeta,\n logging\n );\n await invalidate(predicate);\n return origOnSuccess?.(...args);\n };\n}\n\n// gets a predicate for evaluating whether a query should be invalidated\nasync function getInvalidationPredicate(\n model: string,\n operation: PrismaWriteActionType,\n mutationArgs: any,\n modelMeta: ModelMeta,\n logging = false\n) {\n const mutatedModels = await getMutatedModels(model, operation, mutationArgs, modelMeta);\n\n return ({ queryKey }: { queryKey: readonly unknown[] }) => {\n const [_, queryModel, , args] = queryKey as QueryKey;\n\n if (mutatedModels.includes(queryModel)) {\n // direct match\n if (logging) {\n console.log(`Invalidating query ${JSON.stringify(queryKey)} due to mutation \"${model}.${operation}\"`);\n }\n return true;\n }\n\n if (args) {\n // traverse query args to find nested reads that match the model under mutation\n if (findNestedRead(queryModel, mutatedModels, modelMeta, args)) {\n if (logging) {\n console.log(\n `Invalidating query ${JSON.stringify(queryKey)} due to mutation \"${model}.${operation}\"`\n );\n }\n return true;\n }\n }\n\n return false;\n };\n}\n\n// find nested reads that match the given models\nfunction findNestedRead(visitingModel: string, targetModels: string[], modelMeta: ModelMeta, args: any) {\n const modelsRead = getReadModels(visitingModel, modelMeta, args);\n return targetModels.some((m) => modelsRead.includes(m));\n}\n\ntype QueryCache = {\n queryKey: readonly unknown[];\n state: {\n data: unknown;\n error: unknown;\n };\n}[];\n\ntype SetCacheFunc = (queryKey: readonly unknown[], data: unknown) => void;\n\n/**\n * Sets up optimistic update and invalidation (after settled) for a mutation.\n */\nexport function setupOptimisticUpdate(\n model: string,\n operation: string,\n modelMeta: ModelMeta,\n options: MutationOptions & ExtraMutationOptions,\n queryCache: QueryCache,\n setCache: SetCacheFunc,\n invalidate?: InvalidateFunc,\n logging = false\n) {\n const origOnMutate = options?.onMutate;\n const origOnSettled = options?.onSettled;\n\n // optimistic update on mutate\n options.onMutate = async (...args: unknown[]) => {\n const [variables] = args;\n await optimisticUpdate(\n model,\n operation as PrismaWriteActionType,\n variables,\n options,\n modelMeta,\n queryCache,\n setCache,\n logging\n );\n return origOnMutate?.(...args);\n };\n\n // invalidate on settled\n options.onSettled = async (...args: unknown[]) => {\n if (invalidate) {\n const [, , variables] = args;\n const predicate = await getInvalidationPredicate(\n model,\n operation as PrismaWriteActionType,\n variables,\n modelMeta,\n logging\n );\n await invalidate(predicate);\n }\n return origOnSettled?.(...args);\n };\n}\n\n// optimistically updates query cache\nasync function optimisticUpdate(\n mutationModel: string,\n mutationOp: string,\n mutationArgs: any,\n options: MutationOptions & ExtraMutationOptions,\n modelMeta: ModelMeta,\n queryCache: QueryCache,\n setCache: SetCacheFunc,\n logging = false\n) {\n for (const cacheItem of queryCache) {\n const {\n queryKey,\n state: { data, error },\n } = cacheItem;\n\n if (!isZenStackQueryKey(queryKey)) {\n // skip non-zenstack queries\n continue;\n }\n\n if (error) {\n if (logging) {\n console.warn(`Skipping optimistic update for ${JSON.stringify(queryKey)} due to error:`, error);\n }\n continue;\n }\n\n const [_, queryModel, queryOperation, queryArgs, queryOptions] = queryKey;\n if (!queryOptions?.optimisticUpdate) {\n if (logging) {\n console.log(`Skipping optimistic update for ${JSON.stringify(queryKey)} due to opt-out`);\n }\n continue;\n }\n\n if (options.optimisticDataProvider) {\n const providerResult = await options.optimisticDataProvider({\n queryModel,\n queryOperation,\n queryArgs,\n currentData: data,\n mutationArgs,\n });\n\n if (providerResult?.kind === 'Skip') {\n // skip\n if (logging) {\n console.log(`Skipping optimistic update for ${JSON.stringify(queryKey)} due to provider`);\n }\n continue;\n } else if (providerResult?.kind === 'Update') {\n // update cache\n if (logging) {\n console.log(`Optimistically updating query ${JSON.stringify(queryKey)} due to provider`);\n }\n setCache(queryKey, providerResult.data);\n continue;\n }\n }\n\n // proceed with default optimistic update\n const mutatedData = await applyMutation(\n queryModel,\n queryOperation,\n data,\n mutationModel,\n mutationOp as PrismaWriteActionType,\n mutationArgs,\n modelMeta,\n logging\n );\n\n if (mutatedData !== undefined) {\n // mutation applicable to this query, update cache\n if (logging) {\n console.log(\n `Optimistically updating query ${JSON.stringify(\n queryKey\n )} due to mutation \"${mutationModel}.${mutationOp}\"`\n );\n }\n setCache(queryKey, mutatedData);\n }\n }\n}\n\nfunction isZenStackQueryKey(queryKey: readonly unknown[]): queryKey is QueryKey {\n if (queryKey.length < 5) {\n return false;\n }\n\n if (queryKey[0] !== QUERY_KEY_PREFIX) {\n return false;\n }\n\n return true;\n}\n"],"mappings":"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","names":["optimisticUpdate","fetch","optimisticUpdate"]}
|
package/runtime-v5/angular.mjs
CHANGED
|
@@ -290,6 +290,7 @@ function isZenStackQueryKey(queryKey) {
|
|
|
290
290
|
}
|
|
291
291
|
|
|
292
292
|
// src/runtime-v5/angular.ts
|
|
293
|
+
var isFn = (v) => typeof v === "function";
|
|
293
294
|
var AngularQueryContextKey = new InjectionToken("zenstack-angular-query-context");
|
|
294
295
|
function provideAngularQueryContext(context) {
|
|
295
296
|
return {
|
|
@@ -309,29 +310,33 @@ function getHooksContext() {
|
|
|
309
310
|
return __spreadValues({ endpoint: endpoint != null ? endpoint : DEFAULT_QUERY_ENDPOINT }, rest);
|
|
310
311
|
}
|
|
311
312
|
function useModelQuery(model, url, args, options, fetch2) {
|
|
312
|
-
const
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
313
|
+
const query = injectQuery(() => {
|
|
314
|
+
const resolvedArgs = isFn(args) ? args() : args;
|
|
315
|
+
const reqUrl = makeUrl(url, resolvedArgs);
|
|
316
|
+
const queryKey = getQueryKey(model, url, resolvedArgs, {
|
|
317
|
+
infinite: false,
|
|
318
|
+
optimisticUpdate: (options == null ? void 0 : options.optimisticUpdate) !== false
|
|
319
|
+
});
|
|
320
|
+
return __spreadValues({
|
|
321
|
+
queryKey,
|
|
322
|
+
queryFn: ({ signal }) => fetcher(reqUrl, { signal }, fetch2, false)
|
|
323
|
+
}, options);
|
|
316
324
|
});
|
|
317
|
-
return
|
|
318
|
-
queryKey
|
|
319
|
-
}, injectQuery(() => __spreadValues({
|
|
320
|
-
queryKey,
|
|
321
|
-
queryFn: ({ signal }) => fetcher(reqUrl, { signal }, fetch2, false)
|
|
322
|
-
}, options)));
|
|
325
|
+
return query;
|
|
323
326
|
}
|
|
324
327
|
function useInfiniteModelQuery(model, url, args, options, fetch2) {
|
|
325
|
-
const
|
|
326
|
-
|
|
327
|
-
queryKey
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
328
|
+
const query = injectInfiniteQuery(() => {
|
|
329
|
+
const resolvedArgs = isFn(args) ? args() : args;
|
|
330
|
+
const queryKey = getQueryKey(model, url, resolvedArgs, { infinite: true, optimisticUpdate: false });
|
|
331
|
+
return __spreadValues({
|
|
332
|
+
queryKey,
|
|
333
|
+
queryFn: ({ pageParam, signal }) => {
|
|
334
|
+
return fetcher(makeUrl(url, pageParam != null ? pageParam : resolvedArgs), { signal }, fetch2, false);
|
|
335
|
+
},
|
|
336
|
+
initialPageParam: resolvedArgs
|
|
337
|
+
}, options);
|
|
338
|
+
});
|
|
339
|
+
return query;
|
|
335
340
|
}
|
|
336
341
|
function useModelMutation(model, method, url, modelMeta, options, fetch2, checkReadBack) {
|
|
337
342
|
const queryClient = inject(QueryClient);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime-v5/angular.ts","../../src/runtime/common.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n injectQuery,\n injectMutation,\n injectInfiniteQuery,\n QueryClient,\n type CreateQueryOptions,\n type CreateMutationOptions,\n type CreateInfiniteQueryOptions,\n type InfiniteData,\n CreateInfiniteQueryResult,\n QueryKey,\n} from '@tanstack/angular-query-v5';\nimport type { ModelMeta } from '@zenstackhq/runtime/cross';\nimport { inject, InjectionToken } from '@angular/core';\nimport {\n APIContext,\n DEFAULT_QUERY_ENDPOINT,\n fetcher,\n getQueryKey,\n makeUrl,\n marshal,\n setupInvalidation,\n setupOptimisticUpdate,\n type ExtraMutationOptions,\n type ExtraQueryOptions,\n type FetchFn,\n} from '../runtime/common';\n\nexport { APIContext as RequestHandlerContext } from '../runtime/common';\n\nexport const AngularQueryContextKey = new InjectionToken<APIContext>('zenstack-angular-query-context');\n\n/**\n * Provide context for the generated TanStack Query hooks.\n */\nexport function provideAngularQueryContext(context: APIContext) {\n return {\n provide: AngularQueryContextKey,\n useValue: context,\n };\n}\n\n/**\n * Hooks context.\n */\nexport function getHooksContext() {\n const context = inject(AngularQueryContextKey, {\n optional: true,\n }) || {\n endpoint: DEFAULT_QUERY_ENDPOINT,\n fetch: undefined,\n logging: false,\n };\n\n const { endpoint, ...rest } = context;\n return { endpoint: endpoint ?? DEFAULT_QUERY_ENDPOINT, ...rest };\n}\n\n/**\n * Creates an Angular TanStack Query query.\n *\n * @param model The name of the model under query.\n * @param url The request URL.\n * @param args The request args object, URL-encoded and appended as \"?q=\" parameter\n * @param options The Angular query options object\n * @param fetch The fetch function to use for sending the HTTP request\n * @returns injectQuery hook\n */\nexport function useModelQuery<TQueryFnData, TData, TError>(\n model: string,\n url: string,\n args?: unknown,\n options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData>, 'queryKey'> & ExtraQueryOptions,\n fetch?: FetchFn\n) {\n const reqUrl = makeUrl(url, args);\n const queryKey = getQueryKey(model, url, args, {\n infinite: false,\n optimisticUpdate: options?.optimisticUpdate !== false,\n });\n return {\n queryKey,\n ...injectQuery(() => ({\n queryKey,\n queryFn: ({ signal }) => fetcher<TQueryFnData, false>(reqUrl, { signal }, fetch, false),\n ...options,\n })),\n };\n}\n\n/**\n * Creates an Angular TanStack Query infinite query.\n *\n * @param model The name of the model under query.\n * @param url The request URL.\n * @param args The initial request args object, URL-encoded and appended as \"?q=\" parameter\n * @param options The Angular infinite query options object\n * @param fetch The fetch function to use for sending the HTTP request\n * @returns injectInfiniteQuery hook\n */\nexport function useInfiniteModelQuery<TQueryFnData, TData, TError>(\n model: string,\n url: string,\n args: unknown,\n options: Omit<\n CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>,\n 'queryKey' | 'initialPageParam'\n >,\n fetch?: FetchFn\n): CreateInfiniteQueryResult<InfiniteData<TData>, TError> & { queryKey: QueryKey } {\n const queryKey = getQueryKey(model, url, args, { infinite: true, optimisticUpdate: false });\n return {\n queryKey,\n ...injectInfiniteQuery(() => ({\n queryKey,\n queryFn: ({ pageParam, signal }) => {\n return fetcher<TQueryFnData, false>(makeUrl(url, pageParam ?? args), { signal }, fetch, false);\n },\n initialPageParam: args,\n ...options,\n })),\n };\n}\n\n/**\n * Creates an Angular TanStack Query mutation.\n *\n * @param model The name of the model under mutation.\n * @param method The HTTP method.\n * @param url The request URL.\n * @param modelMeta The model metadata.\n * @param options The Angular mutation options.\n * @param fetch The fetch function to use for sending the HTTP request\n * @param checkReadBack Whether to check for read back errors and return undefined if found.\n * @returns injectMutation hook\n */\nexport function useModelMutation<\n TArgs,\n TError,\n R = any,\n C extends boolean = boolean,\n Result = C extends true ? R | undefined : R\n>(\n model: string,\n method: 'POST' | 'PUT' | 'DELETE',\n url: string,\n modelMeta: ModelMeta,\n options?: Omit<CreateMutationOptions<Result, TError, TArgs>, 'mutationFn'> & ExtraMutationOptions,\n fetch?: FetchFn,\n checkReadBack?: C\n) {\n const queryClient = inject(QueryClient);\n const mutationFn = (data: unknown) => {\n const reqUrl = method === 'DELETE' ? makeUrl(url, data) : url;\n const fetchInit: RequestInit = {\n method,\n ...(method !== 'DELETE' && {\n headers: {\n 'content-type': 'application/json',\n },\n body: marshal(data),\n }),\n };\n return fetcher<R, C>(reqUrl, fetchInit, fetch, checkReadBack) as Promise<Result>;\n };\n\n const finalOptions = { ...options, mutationFn };\n const operation = url.split('/').pop();\n const invalidateQueries = options?.invalidateQueries !== false;\n const optimisticUpdate = !!options?.optimisticUpdate;\n\n if (operation) {\n const { logging } = getHooksContext();\n if (invalidateQueries) {\n setupInvalidation(\n model,\n operation,\n modelMeta,\n finalOptions,\n (predicate) => queryClient.invalidateQueries({ predicate }),\n logging\n );\n }\n\n if (optimisticUpdate) {\n setupOptimisticUpdate(\n model,\n operation,\n modelMeta,\n finalOptions,\n queryClient.getQueryCache().getAll(),\n (queryKey, data) => {\n // update query cache\n queryClient.setQueryData<unknown>(queryKey, data);\n // cancel on-flight queries to avoid redundant cache updates,\n // the settlement of the current mutation will trigger a new revalidation\n queryClient.cancelQueries({ queryKey }, { revert: false, silent: true });\n },\n invalidateQueries ? (predicate) => queryClient.invalidateQueries({ predicate }) : undefined,\n logging\n );\n }\n }\n\n return injectMutation(() => finalOptions);\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { deserialize, serialize } from '@zenstackhq/runtime/browser';\nimport {\n applyMutation,\n getMutatedModels,\n getReadModels,\n type ModelMeta,\n type PrismaWriteActionType,\n} from '@zenstackhq/runtime/cross';\n\n/**\n * The default query endpoint.\n */\nexport const DEFAULT_QUERY_ENDPOINT = '/api/model';\n\n/**\n * Prefix for react-query keys.\n */\nexport const QUERY_KEY_PREFIX = 'zenstack';\n\n/**\n * Function signature for `fetch`.\n */\nexport type FetchFn = (url: string, options?: RequestInit) => Promise<Response>;\n\n/**\n * Type for query and mutation errors.\n */\nexport type QueryError = Error & {\n /**\n * Additional error information.\n */\n info?: unknown;\n\n /**\n * HTTP status code.\n */\n status?: number;\n};\n\n/**\n * Result of optimistic data provider.\n */\nexport type OptimisticDataProviderResult = {\n /**\n * Kind of the result.\n * - Update: use the `data` field to update the query cache.\n * - Skip: skip the optimistic update for this query.\n * - ProceedDefault: proceed with the default optimistic update.\n */\n kind: 'Update' | 'Skip' | 'ProceedDefault';\n\n /**\n * Data to update the query cache. Only applicable if `kind` is 'Update'.\n *\n * If the data is an object with fields updated, it should have a `$optimistic`\n * field set to `true`. If it's an array and an element object is created or updated,\n * the element should have a `$optimistic` field set to `true`.\n */\n data?: any;\n};\n\n/**\n * Optimistic data provider.\n *\n * @param args Arguments.\n * @param args.queryModel The model of the query.\n * @param args.queryOperation The operation of the query, `findMany`, `count`, etc.\n * @param args.queryArgs The arguments of the query.\n * @param args.currentData The current cache data for the query.\n * @param args.mutationArgs The arguments of the mutation.\n */\nexport type OptimisticDataProvider = (args: {\n queryModel: string;\n queryOperation: string;\n queryArgs: any;\n currentData: any;\n mutationArgs: any;\n}) => OptimisticDataProviderResult | Promise<OptimisticDataProviderResult>;\n\n/**\n * Extra mutation options.\n */\nexport type ExtraMutationOptions = {\n /**\n * Whether to automatically invalidate queries potentially affected by the mutation. Defaults to `true`.\n */\n invalidateQueries?: boolean;\n\n /**\n * Whether to optimistically update queries potentially affected by the mutation. Defaults to `false`.\n */\n optimisticUpdate?: boolean;\n\n /**\n * A callback for computing optimistic update data for each query cache entry.\n */\n optimisticDataProvider?: OptimisticDataProvider;\n};\n\n/**\n * Extra query options.\n */\nexport type ExtraQueryOptions = {\n /**\n * Whether to opt-in to optimistic updates for this query. Defaults to `true`.\n */\n optimisticUpdate?: boolean;\n};\n\n/**\n * Context type for configuring the hooks.\n */\nexport type APIContext = {\n /**\n * The endpoint to use for the queries.\n */\n endpoint?: string;\n\n /**\n * A custom fetch function for sending the HTTP requests.\n */\n fetch?: FetchFn;\n\n /**\n * If logging is enabled.\n */\n logging?: boolean;\n};\n\nexport async function fetcher<R, C extends boolean>(\n url: string,\n options?: RequestInit,\n customFetch?: FetchFn,\n checkReadBack?: C\n): Promise<C extends true ? R | undefined : R> {\n // Note: 'cross-fetch' is supposed to handle fetch compatibility\n // but it doesn't work for cloudflare workers\n const _fetch =\n customFetch ??\n // check if fetch is available globally\n (typeof fetch === 'function'\n ? fetch\n : // fallback to 'cross-fetch' if otherwise\n (await import('cross-fetch')).default);\n\n const res = await _fetch(url, options);\n if (!res.ok) {\n const errData = unmarshal(await res.text());\n if (\n checkReadBack !== false &&\n errData.error?.prisma &&\n errData.error?.code === 'P2004' &&\n errData.error?.reason === 'RESULT_NOT_READABLE'\n ) {\n // policy doesn't allow mutation result to be read back, just return undefined\n return undefined as any;\n }\n const error: QueryError = new Error('An error occurred while fetching the data.');\n error.info = errData.error;\n error.status = res.status;\n throw error;\n }\n\n const textResult = await res.text();\n try {\n return unmarshal(textResult).data as R;\n } catch (err) {\n console.error(`Unable to deserialize data:`, textResult);\n throw err;\n }\n}\n\ntype QueryKey = [\n string /* prefix */,\n string /* model */,\n string /* operation */,\n unknown /* args */,\n {\n infinite: boolean;\n optimisticUpdate: boolean;\n } /* flags */\n];\n\n/**\n * Computes query key for the given model, operation and query args.\n * @param model Model name.\n * @param urlOrOperation Prisma operation (e.g, `findMany`) or request URL. If it's a URL, the last path segment will be used as the operation name.\n * @param args Prisma query arguments.\n * @param options Query options, including `infinite` indicating if it's an infinite query (defaults to false), and `optimisticUpdate` indicating if optimistic updates are enabled (defaults to true).\n * @returns Query key\n */\nexport function getQueryKey(\n model: string,\n urlOrOperation: string,\n args: unknown,\n options: { infinite: boolean; optimisticUpdate: boolean } = { infinite: false, optimisticUpdate: true }\n): QueryKey {\n if (!urlOrOperation) {\n throw new Error('Invalid urlOrOperation');\n }\n const operation = urlOrOperation.split('/').pop();\n\n const infinite = options.infinite;\n // infinite query doesn't support optimistic updates\n const optimisticUpdate = options.infinite ? false : options.optimisticUpdate;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return [QUERY_KEY_PREFIX, model, operation!, args, { infinite, optimisticUpdate }];\n}\n\nexport function marshal(value: unknown) {\n const { data, meta } = serialize(value);\n if (meta) {\n return JSON.stringify({ ...(data as any), meta: { serialization: meta } });\n } else {\n return JSON.stringify(data);\n }\n}\n\nexport function unmarshal(value: string) {\n const parsed = JSON.parse(value);\n if (typeof parsed === 'object' && parsed?.data && parsed?.meta?.serialization) {\n const deserializedData = deserialize(parsed.data, parsed.meta.serialization);\n return { ...parsed, data: deserializedData };\n } else {\n return parsed;\n }\n}\n\nexport function makeUrl(url: string, args: unknown) {\n if (!args) {\n return url;\n }\n\n const { data, meta } = serialize(args);\n let result = `${url}?q=${encodeURIComponent(JSON.stringify(data))}`;\n if (meta) {\n result += `&meta=${encodeURIComponent(JSON.stringify({ serialization: meta }))}`;\n }\n return result;\n}\n\ntype InvalidationPredicate = ({ queryKey }: { queryKey: readonly unknown[] }) => boolean;\ntype InvalidateFunc = (predicate: InvalidationPredicate) => Promise<void>;\ntype MutationOptions = {\n onMutate?: (...args: any[]) => any;\n onSuccess?: (...args: any[]) => any;\n onSettled?: (...args: any[]) => any;\n};\n\n// sets up invalidation hook for a mutation\nexport function setupInvalidation(\n model: string,\n operation: string,\n modelMeta: ModelMeta,\n options: MutationOptions,\n invalidate: InvalidateFunc,\n logging = false\n) {\n const origOnSuccess = options?.onSuccess;\n options.onSuccess = async (...args: unknown[]) => {\n const [_, variables] = args;\n const predicate = await getInvalidationPredicate(\n model,\n operation as PrismaWriteActionType,\n variables,\n modelMeta,\n logging\n );\n await invalidate(predicate);\n return origOnSuccess?.(...args);\n };\n}\n\n// gets a predicate for evaluating whether a query should be invalidated\nasync function getInvalidationPredicate(\n model: string,\n operation: PrismaWriteActionType,\n mutationArgs: any,\n modelMeta: ModelMeta,\n logging = false\n) {\n const mutatedModels = await getMutatedModels(model, operation, mutationArgs, modelMeta);\n\n return ({ queryKey }: { queryKey: readonly unknown[] }) => {\n const [_, queryModel, , args] = queryKey as QueryKey;\n\n if (mutatedModels.includes(queryModel)) {\n // direct match\n if (logging) {\n console.log(`Invalidating query ${JSON.stringify(queryKey)} due to mutation \"${model}.${operation}\"`);\n }\n return true;\n }\n\n if (args) {\n // traverse query args to find nested reads that match the model under mutation\n if (findNestedRead(queryModel, mutatedModels, modelMeta, args)) {\n if (logging) {\n console.log(\n `Invalidating query ${JSON.stringify(queryKey)} due to mutation \"${model}.${operation}\"`\n );\n }\n return true;\n }\n }\n\n return false;\n };\n}\n\n// find nested reads that match the given models\nfunction findNestedRead(visitingModel: string, targetModels: string[], modelMeta: ModelMeta, args: any) {\n const modelsRead = getReadModels(visitingModel, modelMeta, args);\n return targetModels.some((m) => modelsRead.includes(m));\n}\n\ntype QueryCache = {\n queryKey: readonly unknown[];\n state: {\n data: unknown;\n error: unknown;\n };\n}[];\n\ntype SetCacheFunc = (queryKey: readonly unknown[], data: unknown) => void;\n\n/**\n * Sets up optimistic update and invalidation (after settled) for a mutation.\n */\nexport function setupOptimisticUpdate(\n model: string,\n operation: string,\n modelMeta: ModelMeta,\n options: MutationOptions & ExtraMutationOptions,\n queryCache: QueryCache,\n setCache: SetCacheFunc,\n invalidate?: InvalidateFunc,\n logging = false\n) {\n const origOnMutate = options?.onMutate;\n const origOnSettled = options?.onSettled;\n\n // optimistic update on mutate\n options.onMutate = async (...args: unknown[]) => {\n const [variables] = args;\n await optimisticUpdate(\n model,\n operation as PrismaWriteActionType,\n variables,\n options,\n modelMeta,\n queryCache,\n setCache,\n logging\n );\n return origOnMutate?.(...args);\n };\n\n // invalidate on settled\n options.onSettled = async (...args: unknown[]) => {\n if (invalidate) {\n const [, , variables] = args;\n const predicate = await getInvalidationPredicate(\n model,\n operation as PrismaWriteActionType,\n variables,\n modelMeta,\n logging\n );\n await invalidate(predicate);\n }\n return origOnSettled?.(...args);\n };\n}\n\n// optimistically updates query cache\nasync function optimisticUpdate(\n mutationModel: string,\n mutationOp: string,\n mutationArgs: any,\n options: MutationOptions & ExtraMutationOptions,\n modelMeta: ModelMeta,\n queryCache: QueryCache,\n setCache: SetCacheFunc,\n logging = false\n) {\n for (const cacheItem of queryCache) {\n const {\n queryKey,\n state: { data, error },\n } = cacheItem;\n\n if (!isZenStackQueryKey(queryKey)) {\n // skip non-zenstack queries\n continue;\n }\n\n if (error) {\n if (logging) {\n console.warn(`Skipping optimistic update for ${JSON.stringify(queryKey)} due to error:`, error);\n }\n continue;\n }\n\n const [_, queryModel, queryOperation, queryArgs, queryOptions] = queryKey;\n if (!queryOptions?.optimisticUpdate) {\n if (logging) {\n console.log(`Skipping optimistic update for ${JSON.stringify(queryKey)} due to opt-out`);\n }\n continue;\n }\n\n if (options.optimisticDataProvider) {\n const providerResult = await options.optimisticDataProvider({\n queryModel,\n queryOperation,\n queryArgs,\n currentData: data,\n mutationArgs,\n });\n\n if (providerResult?.kind === 'Skip') {\n // skip\n if (logging) {\n console.log(`Skipping optimistic update for ${JSON.stringify(queryKey)} due to provider`);\n }\n continue;\n } else if (providerResult?.kind === 'Update') {\n // update cache\n if (logging) {\n console.log(`Optimistically updating query ${JSON.stringify(queryKey)} due to provider`);\n }\n setCache(queryKey, providerResult.data);\n continue;\n }\n }\n\n // proceed with default optimistic update\n const mutatedData = await applyMutation(\n queryModel,\n queryOperation,\n data,\n mutationModel,\n mutationOp as PrismaWriteActionType,\n mutationArgs,\n modelMeta,\n logging\n );\n\n if (mutatedData !== undefined) {\n // mutation applicable to this query, update cache\n if (logging) {\n console.log(\n `Optimistically updating query ${JSON.stringify(\n queryKey\n )} due to mutation \"${mutationModel}.${mutationOp}\"`\n );\n }\n setCache(queryKey, mutatedData);\n }\n }\n}\n\nfunction isZenStackQueryKey(queryKey: readonly unknown[]): queryKey is QueryKey {\n if (queryKey.length < 5) {\n return false;\n }\n\n if (queryKey[0] !== QUERY_KEY_PREFIX) {\n return false;\n }\n\n return true;\n}\n"],"mappings":"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","names":["optimisticUpdate","fetch","optimisticUpdate"]}
|
|
1
|
+
{"version":3,"sources":["../../src/runtime-v5/angular.ts","../../src/runtime/common.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n injectQuery,\n injectMutation,\n injectInfiniteQuery,\n QueryClient,\n type CreateQueryOptions,\n type CreateMutationOptions,\n type CreateInfiniteQueryOptions,\n type InfiniteData,\n} from '@tanstack/angular-query-v5';\nimport type { ModelMeta } from '@zenstackhq/runtime/cross';\nimport { inject, InjectionToken } from '@angular/core';\nimport {\n APIContext,\n DEFAULT_QUERY_ENDPOINT,\n fetcher,\n getQueryKey,\n makeUrl,\n marshal,\n setupInvalidation,\n setupOptimisticUpdate,\n type ExtraMutationOptions,\n type ExtraQueryOptions,\n type FetchFn,\n} from '../runtime/common';\n\nexport { APIContext as RequestHandlerContext } from '../runtime/common';\n\ntype AnyFn = (...a: unknown[]) => unknown;\nconst isFn = (v: unknown): v is AnyFn => typeof v === 'function';\n\nexport const AngularQueryContextKey = new InjectionToken<APIContext>('zenstack-angular-query-context');\n\n/**\n * Provide context for the generated TanStack Query hooks.\n */\nexport function provideAngularQueryContext(context: APIContext) {\n return {\n provide: AngularQueryContextKey,\n useValue: context,\n };\n}\n\n/**\n * Hooks context.\n */\nexport function getHooksContext() {\n const context = inject(AngularQueryContextKey, {\n optional: true,\n }) || {\n endpoint: DEFAULT_QUERY_ENDPOINT,\n fetch: undefined,\n logging: false,\n };\n\n const { endpoint, ...rest } = context;\n return { endpoint: endpoint ?? DEFAULT_QUERY_ENDPOINT, ...rest };\n}\n\n/**\n * Creates an Angular TanStack Query query.\n *\n * @param model The name of the model under query.\n * @param url The request URL.\n * @param args The request args object, URL-encoded and appended as \"?q=\" parameter\n * @param options The Angular query options object\n * @param fetch The fetch function to use for sending the HTTP request\n * @returns injectQuery hook\n */\nexport function useModelQuery<TQueryFnData, TData, TError>(\n model: string,\n url: string,\n args?: unknown,\n options?: Omit<CreateQueryOptions<TQueryFnData, TError, TData>, 'queryKey'> & ExtraQueryOptions,\n fetch?: FetchFn\n) {\n const query = injectQuery(() => {\n const resolvedArgs = isFn(args) ? args() : args;\n\n const reqUrl = makeUrl(url, resolvedArgs);\n const queryKey = getQueryKey(model, url, resolvedArgs, {\n infinite: false,\n optimisticUpdate: options?.optimisticUpdate !== false,\n });\n return {\n queryKey,\n queryFn: ({ signal }) => fetcher<TQueryFnData, false>(reqUrl, { signal }, fetch, false),\n ...options,\n };\n });\n return query;\n}\n\n/**\n * Creates an Angular TanStack Query infinite query.\n *\n * @param model The name of the model under query.\n * @param url The request URL.\n * @param args The initial request args object, URL-encoded and appended as \"?q=\" parameter\n * @param options The Angular infinite query options object\n * @param fetch The fetch function to use for sending the HTTP request\n * @returns injectInfiniteQuery hook\n */\nexport function useInfiniteModelQuery<TQueryFnData, TData, TError>(\n model: string,\n url: string,\n args: unknown,\n options: Omit<\n CreateInfiniteQueryOptions<TQueryFnData, TError, InfiniteData<TData>>,\n 'queryKey' | 'initialPageParam'\n >,\n fetch?: FetchFn\n) {\n const query = injectInfiniteQuery(() => {\n const resolvedArgs = isFn(args) ? args() : args;\n\n const queryKey = getQueryKey(model, url, resolvedArgs, { infinite: true, optimisticUpdate: false });\n\n return {\n queryKey,\n queryFn: ({ pageParam, signal }) => {\n return fetcher<TQueryFnData, false>(makeUrl(url, pageParam ?? resolvedArgs), { signal }, fetch, false);\n },\n initialPageParam: resolvedArgs,\n ...options,\n };\n });\n return query;\n}\n\n/**\n * Creates an Angular TanStack Query mutation.\n *\n * @param model The name of the model under mutation.\n * @param method The HTTP method.\n * @param url The request URL.\n * @param modelMeta The model metadata.\n * @param options The Angular mutation options.\n * @param fetch The fetch function to use for sending the HTTP request\n * @param checkReadBack Whether to check for read back errors and return undefined if found.\n * @returns injectMutation hook\n */\nexport function useModelMutation<\n TArgs,\n TError,\n R = any,\n C extends boolean = boolean,\n Result = C extends true ? R | undefined : R\n>(\n model: string,\n method: 'POST' | 'PUT' | 'DELETE',\n url: string,\n modelMeta: ModelMeta,\n options?: Omit<CreateMutationOptions<Result, TError, TArgs>, 'mutationFn'> & ExtraMutationOptions,\n fetch?: FetchFn,\n checkReadBack?: C\n) {\n const queryClient = inject(QueryClient);\n const mutationFn = (data: unknown) => {\n const reqUrl = method === 'DELETE' ? makeUrl(url, data) : url;\n const fetchInit: RequestInit = {\n method,\n ...(method !== 'DELETE' && {\n headers: {\n 'content-type': 'application/json',\n },\n body: marshal(data),\n }),\n };\n return fetcher<R, C>(reqUrl, fetchInit, fetch, checkReadBack) as Promise<Result>;\n };\n\n const finalOptions = { ...options, mutationFn };\n const operation = url.split('/').pop();\n const invalidateQueries = options?.invalidateQueries !== false;\n const optimisticUpdate = !!options?.optimisticUpdate;\n\n if (operation) {\n const { logging } = getHooksContext();\n if (invalidateQueries) {\n setupInvalidation(\n model,\n operation,\n modelMeta,\n finalOptions,\n (predicate) => queryClient.invalidateQueries({ predicate }),\n logging\n );\n }\n\n if (optimisticUpdate) {\n setupOptimisticUpdate(\n model,\n operation,\n modelMeta,\n finalOptions,\n queryClient.getQueryCache().getAll(),\n (queryKey, data) => {\n // update query cache\n queryClient.setQueryData<unknown>(queryKey, data);\n // cancel on-flight queries to avoid redundant cache updates,\n // the settlement of the current mutation will trigger a new revalidation\n queryClient.cancelQueries({ queryKey }, { revert: false, silent: true });\n },\n invalidateQueries ? (predicate) => queryClient.invalidateQueries({ predicate }) : undefined,\n logging\n );\n }\n }\n\n return injectMutation(() => finalOptions);\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { deserialize, serialize } from '@zenstackhq/runtime/browser';\nimport {\n applyMutation,\n getMutatedModels,\n getReadModels,\n type ModelMeta,\n type PrismaWriteActionType,\n} from '@zenstackhq/runtime/cross';\n\n/**\n * The default query endpoint.\n */\nexport const DEFAULT_QUERY_ENDPOINT = '/api/model';\n\n/**\n * Prefix for react-query keys.\n */\nexport const QUERY_KEY_PREFIX = 'zenstack';\n\n/**\n * Function signature for `fetch`.\n */\nexport type FetchFn = (url: string, options?: RequestInit) => Promise<Response>;\n\n/**\n * Type for query and mutation errors.\n */\nexport type QueryError = Error & {\n /**\n * Additional error information.\n */\n info?: unknown;\n\n /**\n * HTTP status code.\n */\n status?: number;\n};\n\n/**\n * Result of optimistic data provider.\n */\nexport type OptimisticDataProviderResult = {\n /**\n * Kind of the result.\n * - Update: use the `data` field to update the query cache.\n * - Skip: skip the optimistic update for this query.\n * - ProceedDefault: proceed with the default optimistic update.\n */\n kind: 'Update' | 'Skip' | 'ProceedDefault';\n\n /**\n * Data to update the query cache. Only applicable if `kind` is 'Update'.\n *\n * If the data is an object with fields updated, it should have a `$optimistic`\n * field set to `true`. If it's an array and an element object is created or updated,\n * the element should have a `$optimistic` field set to `true`.\n */\n data?: any;\n};\n\n/**\n * Optimistic data provider.\n *\n * @param args Arguments.\n * @param args.queryModel The model of the query.\n * @param args.queryOperation The operation of the query, `findMany`, `count`, etc.\n * @param args.queryArgs The arguments of the query.\n * @param args.currentData The current cache data for the query.\n * @param args.mutationArgs The arguments of the mutation.\n */\nexport type OptimisticDataProvider = (args: {\n queryModel: string;\n queryOperation: string;\n queryArgs: any;\n currentData: any;\n mutationArgs: any;\n}) => OptimisticDataProviderResult | Promise<OptimisticDataProviderResult>;\n\n/**\n * Extra mutation options.\n */\nexport type ExtraMutationOptions = {\n /**\n * Whether to automatically invalidate queries potentially affected by the mutation. Defaults to `true`.\n */\n invalidateQueries?: boolean;\n\n /**\n * Whether to optimistically update queries potentially affected by the mutation. Defaults to `false`.\n */\n optimisticUpdate?: boolean;\n\n /**\n * A callback for computing optimistic update data for each query cache entry.\n */\n optimisticDataProvider?: OptimisticDataProvider;\n};\n\n/**\n * Extra query options.\n */\nexport type ExtraQueryOptions = {\n /**\n * Whether to opt-in to optimistic updates for this query. Defaults to `true`.\n */\n optimisticUpdate?: boolean;\n};\n\n/**\n * Context type for configuring the hooks.\n */\nexport type APIContext = {\n /**\n * The endpoint to use for the queries.\n */\n endpoint?: string;\n\n /**\n * A custom fetch function for sending the HTTP requests.\n */\n fetch?: FetchFn;\n\n /**\n * If logging is enabled.\n */\n logging?: boolean;\n};\n\nexport async function fetcher<R, C extends boolean>(\n url: string,\n options?: RequestInit,\n customFetch?: FetchFn,\n checkReadBack?: C\n): Promise<C extends true ? R | undefined : R> {\n // Note: 'cross-fetch' is supposed to handle fetch compatibility\n // but it doesn't work for cloudflare workers\n const _fetch =\n customFetch ??\n // check if fetch is available globally\n (typeof fetch === 'function'\n ? fetch\n : // fallback to 'cross-fetch' if otherwise\n (await import('cross-fetch')).default);\n\n const res = await _fetch(url, options);\n if (!res.ok) {\n const errData = unmarshal(await res.text());\n if (\n checkReadBack !== false &&\n errData.error?.prisma &&\n errData.error?.code === 'P2004' &&\n errData.error?.reason === 'RESULT_NOT_READABLE'\n ) {\n // policy doesn't allow mutation result to be read back, just return undefined\n return undefined as any;\n }\n const error: QueryError = new Error('An error occurred while fetching the data.');\n error.info = errData.error;\n error.status = res.status;\n throw error;\n }\n\n const textResult = await res.text();\n try {\n return unmarshal(textResult).data as R;\n } catch (err) {\n console.error(`Unable to deserialize data:`, textResult);\n throw err;\n }\n}\n\ntype QueryKey = [\n string /* prefix */,\n string /* model */,\n string /* operation */,\n unknown /* args */,\n {\n infinite: boolean;\n optimisticUpdate: boolean;\n } /* flags */\n];\n\n/**\n * Computes query key for the given model, operation and query args.\n * @param model Model name.\n * @param urlOrOperation Prisma operation (e.g, `findMany`) or request URL. If it's a URL, the last path segment will be used as the operation name.\n * @param args Prisma query arguments.\n * @param options Query options, including `infinite` indicating if it's an infinite query (defaults to false), and `optimisticUpdate` indicating if optimistic updates are enabled (defaults to true).\n * @returns Query key\n */\nexport function getQueryKey(\n model: string,\n urlOrOperation: string,\n args: unknown,\n options: { infinite: boolean; optimisticUpdate: boolean } = { infinite: false, optimisticUpdate: true }\n): QueryKey {\n if (!urlOrOperation) {\n throw new Error('Invalid urlOrOperation');\n }\n const operation = urlOrOperation.split('/').pop();\n\n const infinite = options.infinite;\n // infinite query doesn't support optimistic updates\n const optimisticUpdate = options.infinite ? false : options.optimisticUpdate;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return [QUERY_KEY_PREFIX, model, operation!, args, { infinite, optimisticUpdate }];\n}\n\nexport function marshal(value: unknown) {\n const { data, meta } = serialize(value);\n if (meta) {\n return JSON.stringify({ ...(data as any), meta: { serialization: meta } });\n } else {\n return JSON.stringify(data);\n }\n}\n\nexport function unmarshal(value: string) {\n const parsed = JSON.parse(value);\n if (typeof parsed === 'object' && parsed?.data && parsed?.meta?.serialization) {\n const deserializedData = deserialize(parsed.data, parsed.meta.serialization);\n return { ...parsed, data: deserializedData };\n } else {\n return parsed;\n }\n}\n\nexport function makeUrl(url: string, args: unknown) {\n if (!args) {\n return url;\n }\n\n const { data, meta } = serialize(args);\n let result = `${url}?q=${encodeURIComponent(JSON.stringify(data))}`;\n if (meta) {\n result += `&meta=${encodeURIComponent(JSON.stringify({ serialization: meta }))}`;\n }\n return result;\n}\n\ntype InvalidationPredicate = ({ queryKey }: { queryKey: readonly unknown[] }) => boolean;\ntype InvalidateFunc = (predicate: InvalidationPredicate) => Promise<void>;\ntype MutationOptions = {\n onMutate?: (...args: any[]) => any;\n onSuccess?: (...args: any[]) => any;\n onSettled?: (...args: any[]) => any;\n};\n\n// sets up invalidation hook for a mutation\nexport function setupInvalidation(\n model: string,\n operation: string,\n modelMeta: ModelMeta,\n options: MutationOptions,\n invalidate: InvalidateFunc,\n logging = false\n) {\n const origOnSuccess = options?.onSuccess;\n options.onSuccess = async (...args: unknown[]) => {\n const [_, variables] = args;\n const predicate = await getInvalidationPredicate(\n model,\n operation as PrismaWriteActionType,\n variables,\n modelMeta,\n logging\n );\n await invalidate(predicate);\n return origOnSuccess?.(...args);\n };\n}\n\n// gets a predicate for evaluating whether a query should be invalidated\nasync function getInvalidationPredicate(\n model: string,\n operation: PrismaWriteActionType,\n mutationArgs: any,\n modelMeta: ModelMeta,\n logging = false\n) {\n const mutatedModels = await getMutatedModels(model, operation, mutationArgs, modelMeta);\n\n return ({ queryKey }: { queryKey: readonly unknown[] }) => {\n const [_, queryModel, , args] = queryKey as QueryKey;\n\n if (mutatedModels.includes(queryModel)) {\n // direct match\n if (logging) {\n console.log(`Invalidating query ${JSON.stringify(queryKey)} due to mutation \"${model}.${operation}\"`);\n }\n return true;\n }\n\n if (args) {\n // traverse query args to find nested reads that match the model under mutation\n if (findNestedRead(queryModel, mutatedModels, modelMeta, args)) {\n if (logging) {\n console.log(\n `Invalidating query ${JSON.stringify(queryKey)} due to mutation \"${model}.${operation}\"`\n );\n }\n return true;\n }\n }\n\n return false;\n };\n}\n\n// find nested reads that match the given models\nfunction findNestedRead(visitingModel: string, targetModels: string[], modelMeta: ModelMeta, args: any) {\n const modelsRead = getReadModels(visitingModel, modelMeta, args);\n return targetModels.some((m) => modelsRead.includes(m));\n}\n\ntype QueryCache = {\n queryKey: readonly unknown[];\n state: {\n data: unknown;\n error: unknown;\n };\n}[];\n\ntype SetCacheFunc = (queryKey: readonly unknown[], data: unknown) => void;\n\n/**\n * Sets up optimistic update and invalidation (after settled) for a mutation.\n */\nexport function setupOptimisticUpdate(\n model: string,\n operation: string,\n modelMeta: ModelMeta,\n options: MutationOptions & ExtraMutationOptions,\n queryCache: QueryCache,\n setCache: SetCacheFunc,\n invalidate?: InvalidateFunc,\n logging = false\n) {\n const origOnMutate = options?.onMutate;\n const origOnSettled = options?.onSettled;\n\n // optimistic update on mutate\n options.onMutate = async (...args: unknown[]) => {\n const [variables] = args;\n await optimisticUpdate(\n model,\n operation as PrismaWriteActionType,\n variables,\n options,\n modelMeta,\n queryCache,\n setCache,\n logging\n );\n return origOnMutate?.(...args);\n };\n\n // invalidate on settled\n options.onSettled = async (...args: unknown[]) => {\n if (invalidate) {\n const [, , variables] = args;\n const predicate = await getInvalidationPredicate(\n model,\n operation as PrismaWriteActionType,\n variables,\n modelMeta,\n logging\n );\n await invalidate(predicate);\n }\n return origOnSettled?.(...args);\n };\n}\n\n// optimistically updates query cache\nasync function optimisticUpdate(\n mutationModel: string,\n mutationOp: string,\n mutationArgs: any,\n options: MutationOptions & ExtraMutationOptions,\n modelMeta: ModelMeta,\n queryCache: QueryCache,\n setCache: SetCacheFunc,\n logging = false\n) {\n for (const cacheItem of queryCache) {\n const {\n queryKey,\n state: { data, error },\n } = cacheItem;\n\n if (!isZenStackQueryKey(queryKey)) {\n // skip non-zenstack queries\n continue;\n }\n\n if (error) {\n if (logging) {\n console.warn(`Skipping optimistic update for ${JSON.stringify(queryKey)} due to error:`, error);\n }\n continue;\n }\n\n const [_, queryModel, queryOperation, queryArgs, queryOptions] = queryKey;\n if (!queryOptions?.optimisticUpdate) {\n if (logging) {\n console.log(`Skipping optimistic update for ${JSON.stringify(queryKey)} due to opt-out`);\n }\n continue;\n }\n\n if (options.optimisticDataProvider) {\n const providerResult = await options.optimisticDataProvider({\n queryModel,\n queryOperation,\n queryArgs,\n currentData: data,\n mutationArgs,\n });\n\n if (providerResult?.kind === 'Skip') {\n // skip\n if (logging) {\n console.log(`Skipping optimistic update for ${JSON.stringify(queryKey)} due to provider`);\n }\n continue;\n } else if (providerResult?.kind === 'Update') {\n // update cache\n if (logging) {\n console.log(`Optimistically updating query ${JSON.stringify(queryKey)} due to provider`);\n }\n setCache(queryKey, providerResult.data);\n continue;\n }\n }\n\n // proceed with default optimistic update\n const mutatedData = await applyMutation(\n queryModel,\n queryOperation,\n data,\n mutationModel,\n mutationOp as PrismaWriteActionType,\n mutationArgs,\n modelMeta,\n logging\n );\n\n if (mutatedData !== undefined) {\n // mutation applicable to this query, update cache\n if (logging) {\n console.log(\n `Optimistically updating query ${JSON.stringify(\n queryKey\n )} due to mutation \"${mutationModel}.${mutationOp}\"`\n );\n }\n setCache(queryKey, mutatedData);\n }\n }\n}\n\nfunction isZenStackQueryKey(queryKey: readonly unknown[]): queryKey is QueryKey {\n if (queryKey.length < 5) {\n return false;\n }\n\n if (queryKey[0] !== QUERY_KEY_PREFIX) {\n return false;\n }\n\n return true;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKG;AAEP,SAAS,QAAQ,sBAAsB;;;ACVvC,SAAS,aAAa,iBAAiB;AACvC;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,OAGG;AAKA,IAAM,yBAAyB;AAK/B,IAAM,mBAAmB;AAgHhC,SAAsB,QAClB,KACA,SACA,aACA,eAC2C;AAAA;AAxI/C;AA2II,UAAM,SACF;AAAA;AAAA,MAEC,OAAO,UAAU,aACZ;AAAA;AAAA,SAEC,MAAM,OAAO,aAAa,GAAG;AAAA;AAAA;AAExC,UAAM,MAAM,MAAM,OAAO,KAAK,OAAO;AACrC,QAAI,CAAC,IAAI,IAAI;AACT,YAAM,UAAU,UAAU,MAAM,IAAI,KAAK,CAAC;AAC1C,UACI,kBAAkB,WAClB,aAAQ,UAAR,mBAAe,aACf,aAAQ,UAAR,mBAAe,UAAS,aACxB,aAAQ,UAAR,mBAAe,YAAW,uBAC5B;AAEE,eAAO;AAAA,MACX;AACA,YAAM,QAAoB,IAAI,MAAM,4CAA4C;AAChF,YAAM,OAAO,QAAQ;AACrB,YAAM,SAAS,IAAI;AACnB,YAAM;AAAA,IACV;AAEA,UAAM,aAAa,MAAM,IAAI,KAAK;AAClC,QAAI;AACA,aAAO,UAAU,UAAU,EAAE;AAAA,IACjC,SAAS,KAAK;AACV,cAAQ,MAAM,+BAA+B,UAAU;AACvD,YAAM;AAAA,IACV;AAAA,EACJ;AAAA;AAqBO,SAAS,YACZ,OACA,gBACA,MACA,UAA4D,EAAE,UAAU,OAAO,kBAAkB,KAAK,GAC9F;AACR,MAAI,CAAC,gBAAgB;AACjB,UAAM,IAAI,MAAM,wBAAwB;AAAA,EAC5C;AACA,QAAM,YAAY,eAAe,MAAM,GAAG,EAAE,IAAI;AAEhD,QAAM,WAAW,QAAQ;AAEzB,QAAMA,oBAAmB,QAAQ,WAAW,QAAQ,QAAQ;AAG5D,SAAO,CAAC,kBAAkB,OAAO,WAAY,MAAM,EAAE,UAAU,kBAAAA,kBAAiB,CAAC;AACrF;AAEO,SAAS,QAAQ,OAAgB;AACpC,QAAM,EAAE,MAAM,KAAK,IAAI,UAAU,KAAK;AACtC,MAAI,MAAM;AACN,WAAO,KAAK,UAAU,iCAAM,OAAN,EAAoB,MAAM,EAAE,eAAe,KAAK,EAAE,EAAC;AAAA,EAC7E,OAAO;AACH,WAAO,KAAK,UAAU,IAAI;AAAA,EAC9B;AACJ;AAEO,SAAS,UAAU,OAAe;AA7NzC;AA8NI,QAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,MAAI,OAAO,WAAW,aAAY,iCAAQ,WAAQ,sCAAQ,SAAR,mBAAc,gBAAe;AAC3E,UAAM,mBAAmB,YAAY,OAAO,MAAM,OAAO,KAAK,aAAa;AAC3E,WAAO,iCAAK,SAAL,EAAa,MAAM,iBAAiB;AAAA,EAC/C,OAAO;AACH,WAAO;AAAA,EACX;AACJ;AAEO,SAAS,QAAQ,KAAa,MAAe;AAChD,MAAI,CAAC,MAAM;AACP,WAAO;AAAA,EACX;AAEA,QAAM,EAAE,MAAM,KAAK,IAAI,UAAU,IAAI;AACrC,MAAI,SAAS,GAAG,GAAG,MAAM,mBAAmB,KAAK,UAAU,IAAI,CAAC,CAAC;AACjE,MAAI,MAAM;AACN,cAAU,SAAS,mBAAmB,KAAK,UAAU,EAAE,eAAe,KAAK,CAAC,CAAC,CAAC;AAAA,EAClF;AACA,SAAO;AACX;AAWO,SAAS,kBACZ,OACA,WACA,WACA,SACA,YACA,UAAU,OACZ;AACE,QAAM,gBAAgB,mCAAS;AAC/B,UAAQ,YAAY,IAAU,SAAoB;AAC9C,UAAM,CAAC,GAAG,SAAS,IAAI;AACvB,UAAM,YAAY,MAAM;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AACA,UAAM,WAAW,SAAS;AAC1B,WAAO,+CAAgB,GAAG;AAAA,EAC9B;AACJ;AAGA,SAAe,yBACX,OACA,WACA,cACA,WACA,UAAU,OACZ;AAAA;AACE,UAAM,gBAAgB,MAAM,iBAAiB,OAAO,WAAW,cAAc,SAAS;AAEtF,WAAO,CAAC,EAAE,SAAS,MAAwC;AACvD,YAAM,CAAC,GAAG,YAAY,EAAE,IAAI,IAAI;AAEhC,UAAI,cAAc,SAAS,UAAU,GAAG;AAEpC,YAAI,SAAS;AACT,kBAAQ,IAAI,sBAAsB,KAAK,UAAU,QAAQ,CAAC,qBAAqB,KAAK,IAAI,SAAS,GAAG;AAAA,QACxG;AACA,eAAO;AAAA,MACX;AAEA,UAAI,MAAM;AAEN,YAAI,eAAe,YAAY,eAAe,WAAW,IAAI,GAAG;AAC5D,cAAI,SAAS;AACT,oBAAQ;AAAA,cACJ,sBAAsB,KAAK,UAAU,QAAQ,CAAC,qBAAqB,KAAK,IAAI,SAAS;AAAA,YACzF;AAAA,UACJ;AACA,iBAAO;AAAA,QACX;AAAA,MACJ;AAEA,aAAO;AAAA,IACX;AAAA,EACJ;AAAA;AAGA,SAAS,eAAe,eAAuB,cAAwB,WAAsB,MAAW;AACpG,QAAM,aAAa,cAAc,eAAe,WAAW,IAAI;AAC/D,SAAO,aAAa,KAAK,CAAC,MAAM,WAAW,SAAS,CAAC,CAAC;AAC1D;AAeO,SAAS,sBACZ,OACA,WACA,WACA,SACA,YACA,UACA,YACA,UAAU,OACZ;AACE,QAAM,eAAe,mCAAS;AAC9B,QAAM,gBAAgB,mCAAS;AAG/B,UAAQ,WAAW,IAAU,SAAoB;AAC7C,UAAM,CAAC,SAAS,IAAI;AACpB,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AACA,WAAO,6CAAe,GAAG;AAAA,EAC7B;AAGA,UAAQ,YAAY,IAAU,SAAoB;AAC9C,QAAI,YAAY;AACZ,YAAM,CAAC,EAAE,EAAE,SAAS,IAAI;AACxB,YAAM,YAAY,MAAM;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AACA,YAAM,WAAW,SAAS;AAAA,IAC9B;AACA,WAAO,+CAAgB,GAAG;AAAA,EAC9B;AACJ;AAGA,SAAe,iBACX,eACA,YACA,cACA,SACA,WACA,YACA,UACA,UAAU,OACZ;AAAA;AACE,eAAW,aAAa,YAAY;AAChC,YAAM;AAAA,QACF;AAAA,QACA,OAAO,EAAE,MAAM,MAAM;AAAA,MACzB,IAAI;AAEJ,UAAI,CAAC,mBAAmB,QAAQ,GAAG;AAE/B;AAAA,MACJ;AAEA,UAAI,OAAO;AACP,YAAI,SAAS;AACT,kBAAQ,KAAK,kCAAkC,KAAK,UAAU,QAAQ,CAAC,kBAAkB,KAAK;AAAA,QAClG;AACA;AAAA,MACJ;AAEA,YAAM,CAAC,GAAG,YAAY,gBAAgB,WAAW,YAAY,IAAI;AACjE,UAAI,EAAC,6CAAc,mBAAkB;AACjC,YAAI,SAAS;AACT,kBAAQ,IAAI,kCAAkC,KAAK,UAAU,QAAQ,CAAC,iBAAiB;AAAA,QAC3F;AACA;AAAA,MACJ;AAEA,UAAI,QAAQ,wBAAwB;AAChC,cAAM,iBAAiB,MAAM,QAAQ,uBAAuB;AAAA,UACxD;AAAA,UACA;AAAA,UACA;AAAA,UACA,aAAa;AAAA,UACb;AAAA,QACJ,CAAC;AAED,aAAI,iDAAgB,UAAS,QAAQ;AAEjC,cAAI,SAAS;AACT,oBAAQ,IAAI,kCAAkC,KAAK,UAAU,QAAQ,CAAC,kBAAkB;AAAA,UAC5F;AACA;AAAA,QACJ,YAAW,iDAAgB,UAAS,UAAU;AAE1C,cAAI,SAAS;AACT,oBAAQ,IAAI,iCAAiC,KAAK,UAAU,QAAQ,CAAC,kBAAkB;AAAA,UAC3F;AACA,mBAAS,UAAU,eAAe,IAAI;AACtC;AAAA,QACJ;AAAA,MACJ;AAGA,YAAM,cAAc,MAAM;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAEA,UAAI,gBAAgB,QAAW;AAE3B,YAAI,SAAS;AACT,kBAAQ;AAAA,YACJ,iCAAiC,KAAK;AAAA,cAClC;AAAA,YACJ,CAAC,qBAAqB,aAAa,IAAI,UAAU;AAAA,UACrD;AAAA,QACJ;AACA,iBAAS,UAAU,WAAW;AAAA,MAClC;AAAA,IACJ;AAAA,EACJ;AAAA;AAEA,SAAS,mBAAmB,UAAoD;AAC5E,MAAI,SAAS,SAAS,GAAG;AACrB,WAAO;AAAA,EACX;AAEA,MAAI,SAAS,CAAC,MAAM,kBAAkB;AAClC,WAAO;AAAA,EACX;AAEA,SAAO;AACX;;;AD9bA,IAAM,OAAO,CAAC,MAA2B,OAAO,MAAM;AAE/C,IAAM,yBAAyB,IAAI,eAA2B,gCAAgC;AAK9F,SAAS,2BAA2B,SAAqB;AAC5D,SAAO;AAAA,IACH,SAAS;AAAA,IACT,UAAU;AAAA,EACd;AACJ;AAKO,SAAS,kBAAkB;AAC9B,QAAM,UAAU,OAAO,wBAAwB;AAAA,IAC3C,UAAU;AAAA,EACd,CAAC,KAAK;AAAA,IACF,UAAU;AAAA,IACV,OAAO;AAAA,IACP,SAAS;AAAA,EACb;AAEA,QAA8B,cAAtB,WAxDZ,IAwDkC,IAAT,iBAAS,IAAT,CAAb;AACR,SAAO,iBAAE,UAAU,8BAAY,0BAA2B;AAC9D;AAYO,SAAS,cACZ,OACA,KACA,MACA,SACAC,QACF;AACE,QAAM,QAAQ,YAAY,MAAM;AAC5B,UAAM,eAAe,KAAK,IAAI,IAAI,KAAK,IAAI;AAE3C,UAAM,SAAS,QAAQ,KAAK,YAAY;AACxC,UAAM,WAAW,YAAY,OAAO,KAAK,cAAc;AAAA,MACnD,UAAU;AAAA,MACV,mBAAkB,mCAAS,sBAAqB;AAAA,IACpD,CAAC;AACD,WAAO;AAAA,MACH;AAAA,MACA,SAAS,CAAC,EAAE,OAAO,MAAM,QAA6B,QAAQ,EAAE,OAAO,GAAGA,QAAO,KAAK;AAAA,OACnF;AAAA,EAEX,CAAC;AACD,SAAO;AACX;AAYO,SAAS,sBACZ,OACA,KACA,MACA,SAIAA,QACF;AACE,QAAM,QAAQ,oBAAoB,MAAM;AACpC,UAAM,eAAe,KAAK,IAAI,IAAI,KAAK,IAAI;AAE3C,UAAM,WAAW,YAAY,OAAO,KAAK,cAAc,EAAE,UAAU,MAAM,kBAAkB,MAAM,CAAC;AAElG,WAAO;AAAA,MACH;AAAA,MACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAAM;AAChC,eAAO,QAA6B,QAAQ,KAAK,gCAAa,YAAY,GAAG,EAAE,OAAO,GAAGA,QAAO,KAAK;AAAA,MACzG;AAAA,MACA,kBAAkB;AAAA,OACf;AAAA,EAEX,CAAC;AACD,SAAO;AACX;AAcO,SAAS,iBAOZ,OACA,QACA,KACA,WACA,SACAA,QACA,eACF;AACE,QAAM,cAAc,OAAO,WAAW;AACtC,QAAM,aAAa,CAAC,SAAkB;AAClC,UAAM,SAAS,WAAW,WAAW,QAAQ,KAAK,IAAI,IAAI;AAC1D,UAAM,YAAyB;AAAA,MAC3B;AAAA,OACI,WAAW,YAAY;AAAA,MACvB,SAAS;AAAA,QACL,gBAAgB;AAAA,MACpB;AAAA,MACA,MAAM,QAAQ,IAAI;AAAA,IACtB;AAEJ,WAAO,QAAc,QAAQ,WAAWA,QAAO,aAAa;AAAA,EAChE;AAEA,QAAM,eAAe,iCAAK,UAAL,EAAc,WAAW;AAC9C,QAAM,YAAY,IAAI,MAAM,GAAG,EAAE,IAAI;AACrC,QAAM,qBAAoB,mCAAS,uBAAsB;AACzD,QAAMC,oBAAmB,CAAC,EAAC,mCAAS;AAEpC,MAAI,WAAW;AACX,UAAM,EAAE,QAAQ,IAAI,gBAAgB;AACpC,QAAI,mBAAmB;AACnB;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,CAAC,cAAc,YAAY,kBAAkB,EAAE,UAAU,CAAC;AAAA,QAC1D;AAAA,MACJ;AAAA,IACJ;AAEA,QAAIA,mBAAkB;AAClB;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY,cAAc,EAAE,OAAO;AAAA,QACnC,CAAC,UAAU,SAAS;AAEhB,sBAAY,aAAsB,UAAU,IAAI;AAGhD,sBAAY,cAAc,EAAE,SAAS,GAAG,EAAE,QAAQ,OAAO,QAAQ,KAAK,CAAC;AAAA,QAC3E;AAAA,QACA,oBAAoB,CAAC,cAAc,YAAY,kBAAkB,EAAE,UAAU,CAAC,IAAI;AAAA,QAClF;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO,eAAe,MAAM,YAAY;AAC5C;","names":["optimisticUpdate","fetch","optimisticUpdate"]}
|
package/runtime-v5/react.d.mts
CHANGED
|
@@ -190,6 +190,7 @@ declare function useSuspenseModelQuery<TQueryFnData, TData, TError>(model: strin
|
|
|
190
190
|
data: TData;
|
|
191
191
|
error: TError | null;
|
|
192
192
|
isError: boolean;
|
|
193
|
+
isPending: false;
|
|
193
194
|
isLoading: false;
|
|
194
195
|
isLoadingError: false;
|
|
195
196
|
isRefetchError: boolean;
|
|
@@ -209,7 +210,6 @@ declare function useSuspenseModelQuery<TQueryFnData, TData, TError>(model: strin
|
|
|
209
210
|
isStale: boolean;
|
|
210
211
|
refetch: (options?: _tanstack_react_query_v5.RefetchOptions) => Promise<_tanstack_react_query_v5.QueryObserverResult<TData, TError>>;
|
|
211
212
|
fetchStatus: _tanstack_react_query_v5.FetchStatus;
|
|
212
|
-
isPending: false;
|
|
213
213
|
queryKey: [string, string, string, unknown, {
|
|
214
214
|
infinite: boolean;
|
|
215
215
|
optimisticUpdate: boolean;
|
|
@@ -425,6 +425,7 @@ declare function useSuspenseInfiniteModelQuery<TQueryFnData, TData, TError>(mode
|
|
|
425
425
|
data: InfiniteData<TData, unknown>;
|
|
426
426
|
error: TError | null;
|
|
427
427
|
isError: boolean;
|
|
428
|
+
isPending: false;
|
|
428
429
|
isLoading: false;
|
|
429
430
|
isLoadingError: false;
|
|
430
431
|
isRefetchError: boolean;
|
|
@@ -448,11 +449,10 @@ declare function useSuspenseInfiniteModelQuery<TQueryFnData, TData, TError>(mode
|
|
|
448
449
|
fetchPreviousPage: (options?: _tanstack_react_query_v5.FetchPreviousPageOptions) => Promise<_tanstack_react_query_v5.InfiniteQueryObserverResult<InfiniteData<TData, unknown>, TError>>;
|
|
449
450
|
hasNextPage: boolean;
|
|
450
451
|
hasPreviousPage: boolean;
|
|
451
|
-
isFetchingNextPage: boolean;
|
|
452
|
-
isFetchingPreviousPage: boolean;
|
|
453
|
-
isPending: false;
|
|
454
452
|
isFetchNextPageError: boolean;
|
|
453
|
+
isFetchingNextPage: boolean;
|
|
455
454
|
isFetchPreviousPageError: boolean;
|
|
455
|
+
isFetchingPreviousPage: boolean;
|
|
456
456
|
queryKey: [string, string, string, unknown, {
|
|
457
457
|
infinite: boolean;
|
|
458
458
|
optimisticUpdate: boolean;
|
package/runtime-v5/react.d.ts
CHANGED
|
@@ -190,6 +190,7 @@ declare function useSuspenseModelQuery<TQueryFnData, TData, TError>(model: strin
|
|
|
190
190
|
data: TData;
|
|
191
191
|
error: TError | null;
|
|
192
192
|
isError: boolean;
|
|
193
|
+
isPending: false;
|
|
193
194
|
isLoading: false;
|
|
194
195
|
isLoadingError: false;
|
|
195
196
|
isRefetchError: boolean;
|
|
@@ -209,7 +210,6 @@ declare function useSuspenseModelQuery<TQueryFnData, TData, TError>(model: strin
|
|
|
209
210
|
isStale: boolean;
|
|
210
211
|
refetch: (options?: _tanstack_react_query_v5.RefetchOptions) => Promise<_tanstack_react_query_v5.QueryObserverResult<TData, TError>>;
|
|
211
212
|
fetchStatus: _tanstack_react_query_v5.FetchStatus;
|
|
212
|
-
isPending: false;
|
|
213
213
|
queryKey: [string, string, string, unknown, {
|
|
214
214
|
infinite: boolean;
|
|
215
215
|
optimisticUpdate: boolean;
|
|
@@ -425,6 +425,7 @@ declare function useSuspenseInfiniteModelQuery<TQueryFnData, TData, TError>(mode
|
|
|
425
425
|
data: InfiniteData<TData, unknown>;
|
|
426
426
|
error: TError | null;
|
|
427
427
|
isError: boolean;
|
|
428
|
+
isPending: false;
|
|
428
429
|
isLoading: false;
|
|
429
430
|
isLoadingError: false;
|
|
430
431
|
isRefetchError: boolean;
|
|
@@ -448,11 +449,10 @@ declare function useSuspenseInfiniteModelQuery<TQueryFnData, TData, TError>(mode
|
|
|
448
449
|
fetchPreviousPage: (options?: _tanstack_react_query_v5.FetchPreviousPageOptions) => Promise<_tanstack_react_query_v5.InfiniteQueryObserverResult<InfiniteData<TData, unknown>, TError>>;
|
|
449
450
|
hasNextPage: boolean;
|
|
450
451
|
hasPreviousPage: boolean;
|
|
451
|
-
isFetchingNextPage: boolean;
|
|
452
|
-
isFetchingPreviousPage: boolean;
|
|
453
|
-
isPending: false;
|
|
454
452
|
isFetchNextPageError: boolean;
|
|
453
|
+
isFetchingNextPage: boolean;
|
|
455
454
|
isFetchPreviousPageError: boolean;
|
|
455
|
+
isFetchingPreviousPage: boolean;
|
|
456
456
|
queryKey: [string, string, string, unknown, {
|
|
457
457
|
infinite: boolean;
|
|
458
458
|
optimisticUpdate: boolean;
|