@qiankunjs/shared 0.0.1-rc.11 → 0.0.1-rc.13

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.
Files changed (65) hide show
  1. package/dist/cjs/assets-transpilers/index.js +1 -1
  2. package/dist/cjs/assets-transpilers/link.js +3 -3
  3. package/dist/cjs/assets-transpilers/link.js.map +1 -1
  4. package/dist/cjs/assets-transpilers/script.js +6 -6
  5. package/dist/cjs/assets-transpilers/script.js.map +1 -1
  6. package/dist/cjs/assets-transpilers/utils.js +1 -1
  7. package/dist/cjs/fetch-utils/makeFetchCacheable.d.ts +2 -0
  8. package/dist/cjs/fetch-utils/{wrapFetchWithCache.js → makeFetchCacheable.js} +10 -11
  9. package/dist/cjs/fetch-utils/makeFetchCacheable.js.map +1 -0
  10. package/dist/cjs/fetch-utils/makeFetchRetryable.d.ts +6 -0
  11. package/dist/cjs/fetch-utils/makeFetchRetryable.js +57 -0
  12. package/dist/cjs/fetch-utils/makeFetchRetryable.js.map +1 -0
  13. package/dist/cjs/fetch-utils/makeFetchThrowable.d.ts +7 -0
  14. package/dist/cjs/fetch-utils/makeFetchThrowable.js +65 -0
  15. package/dist/cjs/fetch-utils/makeFetchThrowable.js.map +1 -0
  16. package/dist/cjs/fetch-utils/miniLruCache.js +1 -1
  17. package/dist/cjs/fetch-utils/utils.d.ts +2 -0
  18. package/dist/cjs/fetch-utils/utils.js +10 -0
  19. package/dist/cjs/fetch-utils/utils.js.map +1 -0
  20. package/dist/cjs/index.d.ts +3 -1
  21. package/dist/cjs/index.js +26 -4
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/module-resolver/index.js +3 -3
  24. package/dist/cjs/module-resolver/index.js.map +1 -1
  25. package/dist/cjs/module-resolver/satisfies.d.ts +8 -0
  26. package/dist/cjs/module-resolver/satisfies.js +42 -0
  27. package/dist/cjs/module-resolver/satisfies.js.map +1 -0
  28. package/dist/cjs/reporter/QiankunError.js +1 -1
  29. package/dist/cjs/typings.d.ts +0 -4
  30. package/dist/cjs/utils.d.ts +1 -1
  31. package/dist/cjs/utils.js +16 -12
  32. package/dist/cjs/utils.js.map +1 -1
  33. package/dist/esm/assets-transpilers/link.js +3 -3
  34. package/dist/esm/assets-transpilers/link.js.map +1 -1
  35. package/dist/esm/assets-transpilers/script.js +6 -6
  36. package/dist/esm/assets-transpilers/script.js.map +1 -1
  37. package/dist/esm/fetch-utils/makeFetchCacheable.d.ts +2 -0
  38. package/dist/esm/fetch-utils/{wrapFetchWithCache.js → makeFetchCacheable.js} +8 -9
  39. package/dist/esm/fetch-utils/makeFetchCacheable.js.map +1 -0
  40. package/dist/esm/fetch-utils/makeFetchRetryable.d.ts +6 -0
  41. package/dist/esm/fetch-utils/makeFetchRetryable.js +50 -0
  42. package/dist/esm/fetch-utils/makeFetchRetryable.js.map +1 -0
  43. package/dist/esm/fetch-utils/makeFetchThrowable.d.ts +7 -0
  44. package/dist/esm/fetch-utils/makeFetchThrowable.js +58 -0
  45. package/dist/esm/fetch-utils/makeFetchThrowable.js.map +1 -0
  46. package/dist/esm/fetch-utils/utils.d.ts +2 -0
  47. package/dist/esm/fetch-utils/utils.js +4 -0
  48. package/dist/esm/fetch-utils/utils.js.map +1 -0
  49. package/dist/esm/index.d.ts +3 -1
  50. package/dist/esm/index.js +3 -1
  51. package/dist/esm/index.js.map +1 -1
  52. package/dist/esm/module-resolver/index.js +1 -1
  53. package/dist/esm/module-resolver/index.js.map +1 -1
  54. package/dist/esm/module-resolver/satisfies.d.ts +8 -0
  55. package/dist/esm/module-resolver/satisfies.js +37 -0
  56. package/dist/esm/module-resolver/satisfies.js.map +1 -0
  57. package/dist/esm/typings.d.ts +0 -4
  58. package/dist/esm/utils.d.ts +1 -1
  59. package/dist/esm/utils.js +12 -7
  60. package/dist/esm/utils.js.map +1 -1
  61. package/package.json +8 -4
  62. package/dist/cjs/fetch-utils/wrapFetchWithCache.d.ts +0 -3
  63. package/dist/cjs/fetch-utils/wrapFetchWithCache.js.map +0 -1
  64. package/dist/esm/fetch-utils/wrapFetchWithCache.d.ts +0 -3
  65. package/dist/esm/fetch-utils/wrapFetchWithCache.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-05-06\n */\nexport * from './assets-transpilers';\nexport * from './utils';\nexport * from './module-resolver';\nexport * from './common';\nexport * from './reporter';\nexport * from './fetch-utils/wrapFetchWithCache';\nexport * from './deferred-queue';\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-05-06\n */\nexport * from './assets-transpilers';\nexport * from './utils';\nexport * from './module-resolver';\nexport * from './common';\nexport * from './reporter';\nexport * from './fetch-utils/makeFetchCacheable';\nexport * from './fetch-utils/makeFetchRetryable';\nexport * from './fetch-utils/makeFetchThrowable';\nexport * from './deferred-queue';\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -1,5 +1,5 @@
1
1
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
- import satisfies from 'semver/functions/satisfies';
2
+ import { satisfies } from "./satisfies";
3
3
  export function moduleResolver(url, microAppContainer, mainAppContainer) {
4
4
  var _microAppContainer$qu;
5
5
  var dependencyMapSelector = 'script[type=dependencymap]';
@@ -1 +1 @@
1
- {"version":3,"names":["satisfies","moduleResolver","url","microAppContainer","mainAppContainer","_microAppContainer$qu","dependencyMapSelector","microAppDependenciesString","querySelector","innerHTML","_ref","JSON","parse","dependencies","normalizedDependencies","normalizeDependencies","microAppDependency","find","v","_mainAppContainer$que","mainAppDependencyMapString","_microAppContainer$__","mainAppDependencyMap","matchedDeps","__matched_deps__","matchedDep","findDependency","push","name","undefined","dependency","mainAppDependencies","matchedDependencies","matched","mainAppDependency","version","range","peerDeps","every","peerDep","indexOf","Object","keys","map","_objectSpread"],"sources":["../../../src/module-resolver/index.ts"],"sourcesContent":["import satisfies from 'semver/functions/satisfies';\nimport type { MatchResult } from './types';\n\ndeclare global {\n interface HTMLElement {\n __matched_deps__?: string[];\n }\n}\n\ntype Dependency = {\n url: string;\n version: string;\n range: string;\n peerDeps?: string[];\n};\n\ntype NormalizedDependency = {\n name: string;\n} & Dependency;\n\ntype DependencyMap = {\n dependencies: Record<string, Dependency>;\n};\n\nexport type { MatchResult } from './types';\n\nexport function moduleResolver(\n url: string,\n microAppContainer: HTMLElement,\n mainAppContainer: HTMLElement,\n): MatchResult | undefined {\n const dependencyMapSelector = 'script[type=dependencymap]';\n\n const microAppDependenciesString = microAppContainer.querySelector(dependencyMapSelector)?.innerHTML;\n if (microAppDependenciesString) {\n const { dependencies } = JSON.parse(microAppDependenciesString) as DependencyMap;\n const normalizedDependencies = normalizeDependencies(dependencies);\n const microAppDependency = normalizedDependencies.find((v) => v.url === url);\n\n if (microAppDependency) {\n const mainAppDependencyMapString = mainAppContainer.querySelector(dependencyMapSelector)?.innerHTML;\n\n if (mainAppDependencyMapString) {\n const mainAppDependencyMap = JSON.parse(mainAppDependencyMapString) as DependencyMap;\n const matchedDeps = (microAppContainer.__matched_deps__ ??= []);\n const matchedDep = findDependency(\n microAppDependency,\n normalizeDependencies(mainAppDependencyMap.dependencies),\n matchedDeps,\n );\n\n if (matchedDep) {\n matchedDeps.push(matchedDep.name);\n return matchedDep;\n }\n }\n }\n }\n\n return undefined;\n}\n\nfunction findDependency(\n dependency: NormalizedDependency,\n mainAppDependencies: NormalizedDependency[],\n matchedDependencies: string[],\n): MatchResult | undefined {\n const matched = mainAppDependencies.find(\n (mainAppDependency) =>\n mainAppDependency.name === dependency.name &&\n satisfies(mainAppDependency.version, dependency.range) &&\n // peer dependencies must be cached before\n (dependency.peerDeps || []).every((peerDep) => matchedDependencies.indexOf(peerDep) !== -1),\n );\n\n if (matched) {\n return {\n name: matched.name,\n version: matched.version,\n url: matched.url,\n };\n }\n\n return undefined;\n}\n\nfunction normalizeDependencies(dependencies: DependencyMap['dependencies']): NormalizedDependency[] {\n return Object.keys(dependencies).map((name) => ({\n name,\n ...dependencies[name],\n }));\n}\n"],"mappings":";AAAA,OAAOA,SAAS,MAAM,4BAA4B;AA0BlD,OAAO,SAASC,cAAcA,CAC5BC,GAAW,EACXC,iBAA8B,EAC9BC,gBAA6B,EACJ;EAAA,IAAAC,qBAAA;EACzB,IAAMC,qBAAqB,GAAG,4BAA4B;EAE1D,IAAMC,0BAA0B,IAAAF,qBAAA,GAAGF,iBAAiB,CAACK,aAAa,CAACF,qBAAqB,CAAC,cAAAD,qBAAA,uBAAtDA,qBAAA,CAAwDI,SAAS;EACpG,IAAIF,0BAA0B,EAAE;IAC9B,IAAAG,IAAA,GAAyBC,IAAI,CAACC,KAAK,CAACL,0BAA0B,CAAC;MAAvDM,YAAY,GAAAH,IAAA,CAAZG,YAAY;IACpB,IAAMC,sBAAsB,GAAGC,qBAAqB,CAACF,YAAY,CAAC;IAClE,IAAMG,kBAAkB,GAAGF,sBAAsB,CAACG,IAAI,CAAC,UAACC,CAAC;MAAA,OAAKA,CAAC,CAAChB,GAAG,KAAKA,GAAG;IAAA,EAAC;IAE5E,IAAIc,kBAAkB,EAAE;MAAA,IAAAG,qBAAA;MACtB,IAAMC,0BAA0B,IAAAD,qBAAA,GAAGf,gBAAgB,CAACI,aAAa,CAACF,qBAAqB,CAAC,cAAAa,qBAAA,uBAArDA,qBAAA,CAAuDV,SAAS;MAEnG,IAAIW,0BAA0B,EAAE;QAAA,IAAAC,qBAAA;QAC9B,IAAMC,oBAAoB,GAAGX,IAAI,CAACC,KAAK,CAACQ,0BAA0B,CAAkB;QACpF,IAAMG,WAAW,IAAAF,qBAAA,GAAIlB,iBAAiB,CAACqB,gBAAgB,cAAAH,qBAAA,cAAAA,qBAAA,GAAlClB,iBAAiB,CAACqB,gBAAgB,GAAK,EAAG;QAC/D,IAAMC,UAAU,GAAGC,cAAc,CAC/BV,kBAAkB,EAClBD,qBAAqB,CAACO,oBAAoB,CAACT,YAAY,CAAC,EACxDU,WACF,CAAC;QAED,IAAIE,UAAU,EAAE;UACdF,WAAW,CAACI,IAAI,CAACF,UAAU,CAACG,IAAI,CAAC;UACjC,OAAOH,UAAU;QACnB;MACF;IACF;EACF;EAEA,OAAOI,SAAS;AAClB;AAEA,SAASH,cAAcA,CACrBI,UAAgC,EAChCC,mBAA2C,EAC3CC,mBAA6B,EACJ;EACzB,IAAMC,OAAO,GAAGF,mBAAmB,CAACd,IAAI,CACtC,UAACiB,iBAAiB;IAAA,OAChBA,iBAAiB,CAACN,IAAI,KAAKE,UAAU,CAACF,IAAI,IAC1C5B,SAAS,CAACkC,iBAAiB,CAACC,OAAO,EAAEL,UAAU,CAACM,KAAK,CAAC;IACtD;IACA,CAACN,UAAU,CAACO,QAAQ,IAAI,EAAE,EAAEC,KAAK,CAAC,UAACC,OAAO;MAAA,OAAKP,mBAAmB,CAACQ,OAAO,CAACD,OAAO,CAAC,KAAK,CAAC,CAAC;IAAA,EAAC;EAAA,CAC/F,CAAC;EAED,IAAIN,OAAO,EAAE;IACX,OAAO;MACLL,IAAI,EAAEK,OAAO,CAACL,IAAI;MAClBO,OAAO,EAAEF,OAAO,CAACE,OAAO;MACxBjC,GAAG,EAAE+B,OAAO,CAAC/B;IACf,CAAC;EACH;EAEA,OAAO2B,SAAS;AAClB;AAEA,SAASd,qBAAqBA,CAACF,YAA2C,EAA0B;EAClG,OAAO4B,MAAM,CAACC,IAAI,CAAC7B,YAAY,CAAC,CAAC8B,GAAG,CAAC,UAACf,IAAI;IAAA,OAAAgB,aAAA;MACxChB,IAAI,EAAJA;IAAI,GACDf,YAAY,CAACe,IAAI,CAAC;EAAA,CACrB,CAAC;AACL"}
1
+ {"version":3,"names":["satisfies","moduleResolver","url","microAppContainer","mainAppContainer","_microAppContainer$qu","dependencyMapSelector","microAppDependenciesString","querySelector","innerHTML","_ref","JSON","parse","dependencies","normalizedDependencies","normalizeDependencies","microAppDependency","find","v","_mainAppContainer$que","mainAppDependencyMapString","_microAppContainer$__","mainAppDependencyMap","matchedDeps","__matched_deps__","matchedDep","findDependency","push","name","undefined","dependency","mainAppDependencies","matchedDependencies","matched","mainAppDependency","version","range","peerDeps","every","peerDep","indexOf","Object","keys","map","_objectSpread"],"sources":["../../../src/module-resolver/index.ts"],"sourcesContent":["import { satisfies } from './satisfies';\nimport type { MatchResult } from './types';\n\ndeclare global {\n interface HTMLElement {\n __matched_deps__?: string[];\n }\n}\n\ntype Dependency = {\n url: string;\n version: string;\n range: string;\n peerDeps?: string[];\n};\n\ntype NormalizedDependency = {\n name: string;\n} & Dependency;\n\ntype DependencyMap = {\n dependencies: Record<string, Dependency>;\n};\n\nexport type { MatchResult } from './types';\n\nexport function moduleResolver(\n url: string,\n microAppContainer: HTMLElement,\n mainAppContainer: HTMLElement,\n): MatchResult | undefined {\n const dependencyMapSelector = 'script[type=dependencymap]';\n\n const microAppDependenciesString = microAppContainer.querySelector(dependencyMapSelector)?.innerHTML;\n if (microAppDependenciesString) {\n const { dependencies } = JSON.parse(microAppDependenciesString) as DependencyMap;\n const normalizedDependencies = normalizeDependencies(dependencies);\n const microAppDependency = normalizedDependencies.find((v) => v.url === url);\n\n if (microAppDependency) {\n const mainAppDependencyMapString = mainAppContainer.querySelector(dependencyMapSelector)?.innerHTML;\n\n if (mainAppDependencyMapString) {\n const mainAppDependencyMap = JSON.parse(mainAppDependencyMapString) as DependencyMap;\n const matchedDeps = (microAppContainer.__matched_deps__ ??= []);\n const matchedDep = findDependency(\n microAppDependency,\n normalizeDependencies(mainAppDependencyMap.dependencies),\n matchedDeps,\n );\n\n if (matchedDep) {\n matchedDeps.push(matchedDep.name);\n return matchedDep;\n }\n }\n }\n }\n\n return undefined;\n}\n\nfunction findDependency(\n dependency: NormalizedDependency,\n mainAppDependencies: NormalizedDependency[],\n matchedDependencies: string[],\n): MatchResult | undefined {\n const matched = mainAppDependencies.find(\n (mainAppDependency) =>\n mainAppDependency.name === dependency.name &&\n satisfies(mainAppDependency.version, dependency.range) &&\n // peer dependencies must be cached before\n (dependency.peerDeps || []).every((peerDep) => matchedDependencies.indexOf(peerDep) !== -1),\n );\n\n if (matched) {\n return {\n name: matched.name,\n version: matched.version,\n url: matched.url,\n };\n }\n\n return undefined;\n}\n\nfunction normalizeDependencies(dependencies: DependencyMap['dependencies']): NormalizedDependency[] {\n return Object.keys(dependencies).map((name) => ({\n name,\n ...dependencies[name],\n }));\n}\n"],"mappings":";AAAA,SAASA,SAAS;AA0BlB,OAAO,SAASC,cAAcA,CAC5BC,GAAW,EACXC,iBAA8B,EAC9BC,gBAA6B,EACJ;EAAA,IAAAC,qBAAA;EACzB,IAAMC,qBAAqB,GAAG,4BAA4B;EAE1D,IAAMC,0BAA0B,IAAAF,qBAAA,GAAGF,iBAAiB,CAACK,aAAa,CAACF,qBAAqB,CAAC,cAAAD,qBAAA,uBAAtDA,qBAAA,CAAwDI,SAAS;EACpG,IAAIF,0BAA0B,EAAE;IAC9B,IAAAG,IAAA,GAAyBC,IAAI,CAACC,KAAK,CAACL,0BAA0B,CAAC;MAAvDM,YAAY,GAAAH,IAAA,CAAZG,YAAY;IACpB,IAAMC,sBAAsB,GAAGC,qBAAqB,CAACF,YAAY,CAAC;IAClE,IAAMG,kBAAkB,GAAGF,sBAAsB,CAACG,IAAI,CAAC,UAACC,CAAC;MAAA,OAAKA,CAAC,CAAChB,GAAG,KAAKA,GAAG;IAAA,EAAC;IAE5E,IAAIc,kBAAkB,EAAE;MAAA,IAAAG,qBAAA;MACtB,IAAMC,0BAA0B,IAAAD,qBAAA,GAAGf,gBAAgB,CAACI,aAAa,CAACF,qBAAqB,CAAC,cAAAa,qBAAA,uBAArDA,qBAAA,CAAuDV,SAAS;MAEnG,IAAIW,0BAA0B,EAAE;QAAA,IAAAC,qBAAA;QAC9B,IAAMC,oBAAoB,GAAGX,IAAI,CAACC,KAAK,CAACQ,0BAA0B,CAAkB;QACpF,IAAMG,WAAW,IAAAF,qBAAA,GAAIlB,iBAAiB,CAACqB,gBAAgB,cAAAH,qBAAA,cAAAA,qBAAA,GAAlClB,iBAAiB,CAACqB,gBAAgB,GAAK,EAAG;QAC/D,IAAMC,UAAU,GAAGC,cAAc,CAC/BV,kBAAkB,EAClBD,qBAAqB,CAACO,oBAAoB,CAACT,YAAY,CAAC,EACxDU,WACF,CAAC;QAED,IAAIE,UAAU,EAAE;UACdF,WAAW,CAACI,IAAI,CAACF,UAAU,CAACG,IAAI,CAAC;UACjC,OAAOH,UAAU;QACnB;MACF;IACF;EACF;EAEA,OAAOI,SAAS;AAClB;AAEA,SAASH,cAAcA,CACrBI,UAAgC,EAChCC,mBAA2C,EAC3CC,mBAA6B,EACJ;EACzB,IAAMC,OAAO,GAAGF,mBAAmB,CAACd,IAAI,CACtC,UAACiB,iBAAiB;IAAA,OAChBA,iBAAiB,CAACN,IAAI,KAAKE,UAAU,CAACF,IAAI,IAC1C5B,SAAS,CAACkC,iBAAiB,CAACC,OAAO,EAAEL,UAAU,CAACM,KAAK,CAAC;IACtD;IACA,CAACN,UAAU,CAACO,QAAQ,IAAI,EAAE,EAAEC,KAAK,CAAC,UAACC,OAAO;MAAA,OAAKP,mBAAmB,CAACQ,OAAO,CAACD,OAAO,CAAC,KAAK,CAAC,CAAC;IAAA,EAAC;EAAA,CAC/F,CAAC;EAED,IAAIN,OAAO,EAAE;IACX,OAAO;MACLL,IAAI,EAAEK,OAAO,CAACL,IAAI;MAClBO,OAAO,EAAEF,OAAO,CAACE,OAAO;MACxBjC,GAAG,EAAE+B,OAAO,CAAC/B;IACf,CAAC;EACH;EAEA,OAAO2B,SAAS;AAClB;AAEA,SAASd,qBAAqBA,CAACF,YAA2C,EAA0B;EAClG,OAAO4B,MAAM,CAACC,IAAI,CAAC7B,YAAY,CAAC,CAAC8B,GAAG,CAAC,UAACf,IAAI;IAAA,OAAAgB,aAAA;MACxChB,IAAI,EAAJA;IAAI,GACDf,YAAY,CAACe,IAAI,CAAC;EAAA,CACrB,CAAC;AACL"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Semver-compatible satisfies check using compare-versions.
3
+ * Handles edge cases that compare-versions doesn't support:
4
+ * - Full wildcards (*, x, X)
5
+ * - Short wildcards (1.x, 1.*)
6
+ * - Prerelease version behavior
7
+ */
8
+ export declare function satisfies(version: string, range: string): boolean;
@@ -0,0 +1,37 @@
1
+ import { satisfies as compareSatisfies } from 'compare-versions';
2
+
3
+ /**
4
+ * Semver-compatible satisfies check using compare-versions.
5
+ * Handles edge cases that compare-versions doesn't support:
6
+ * - Full wildcards (*, x, X)
7
+ * - Short wildcards (1.x, 1.*)
8
+ * - Prerelease version behavior
9
+ */
10
+ export function satisfies(version, range) {
11
+ var trimmed = range.trim();
12
+ var hasPrerelease = version.includes('-');
13
+ var rangeHasPrerelease = /-[0-9A-Za-z]/.test(trimmed);
14
+
15
+ // Full wildcards: *, x, X
16
+ if (trimmed === '*' || trimmed.toLowerCase() === 'x') {
17
+ return !hasPrerelease;
18
+ }
19
+
20
+ // Short wildcards: N.x, N.*, N.X (without third segment)
21
+ var shortMatch = trimmed.match(/^(\d+)\.[xX*]$/);
22
+ if (shortMatch) {
23
+ var major = parseInt(shortMatch[1], 10);
24
+ if (hasPrerelease && !rangeHasPrerelease) {
25
+ return false;
26
+ }
27
+ return compareSatisfies(version, ">=".concat(major, ".0.0")) && compareSatisfies(version, "<".concat(major + 1, ".0.0"));
28
+ }
29
+
30
+ // Prerelease compatibility: if version is prerelease but range doesn't
31
+ // include prerelease identifier, return false (matching semver behavior)
32
+ if (hasPrerelease && !rangeHasPrerelease) {
33
+ return false;
34
+ }
35
+ return compareSatisfies(version, range);
36
+ }
37
+ //# sourceMappingURL=satisfies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["satisfies","compareSatisfies","version","range","trimmed","trim","hasPrerelease","includes","rangeHasPrerelease","test","toLowerCase","shortMatch","match","major","parseInt","concat"],"sources":["../../../src/module-resolver/satisfies.ts"],"sourcesContent":["import { satisfies as compareSatisfies } from 'compare-versions';\n\n/**\n * Semver-compatible satisfies check using compare-versions.\n * Handles edge cases that compare-versions doesn't support:\n * - Full wildcards (*, x, X)\n * - Short wildcards (1.x, 1.*)\n * - Prerelease version behavior\n */\nexport function satisfies(version: string, range: string): boolean {\n const trimmed = range.trim();\n const hasPrerelease = version.includes('-');\n const rangeHasPrerelease = /-[0-9A-Za-z]/.test(trimmed);\n\n // Full wildcards: *, x, X\n if (trimmed === '*' || trimmed.toLowerCase() === 'x') {\n return !hasPrerelease;\n }\n\n // Short wildcards: N.x, N.*, N.X (without third segment)\n const shortMatch = trimmed.match(/^(\\d+)\\.[xX*]$/);\n if (shortMatch) {\n const major = parseInt(shortMatch[1], 10);\n if (hasPrerelease && !rangeHasPrerelease) {\n return false;\n }\n return compareSatisfies(version, `>=${major}.0.0`) && compareSatisfies(version, `<${major + 1}.0.0`);\n }\n\n // Prerelease compatibility: if version is prerelease but range doesn't\n // include prerelease identifier, return false (matching semver behavior)\n if (hasPrerelease && !rangeHasPrerelease) {\n return false;\n }\n\n return compareSatisfies(version, range);\n}\n"],"mappings":"AAAA,SAASA,SAAS,IAAIC,gBAAgB,QAAQ,kBAAkB;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASD,SAASA,CAACE,OAAe,EAAEC,KAAa,EAAW;EACjE,IAAMC,OAAO,GAAGD,KAAK,CAACE,IAAI,CAAC,CAAC;EAC5B,IAAMC,aAAa,GAAGJ,OAAO,CAACK,QAAQ,CAAC,GAAG,CAAC;EAC3C,IAAMC,kBAAkB,GAAG,cAAc,CAACC,IAAI,CAACL,OAAO,CAAC;;EAEvD;EACA,IAAIA,OAAO,KAAK,GAAG,IAAIA,OAAO,CAACM,WAAW,CAAC,CAAC,KAAK,GAAG,EAAE;IACpD,OAAO,CAACJ,aAAa;EACvB;;EAEA;EACA,IAAMK,UAAU,GAAGP,OAAO,CAACQ,KAAK,CAAC,gBAAgB,CAAC;EAClD,IAAID,UAAU,EAAE;IACd,IAAME,KAAK,GAAGC,QAAQ,CAACH,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACzC,IAAIL,aAAa,IAAI,CAACE,kBAAkB,EAAE;MACxC,OAAO,KAAK;IACd;IACA,OAAOP,gBAAgB,CAACC,OAAO,OAAAa,MAAA,CAAOF,KAAK,SAAM,CAAC,IAAIZ,gBAAgB,CAACC,OAAO,MAAAa,MAAA,CAAMF,KAAK,GAAG,CAAC,SAAM,CAAC;EACtG;;EAEA;EACA;EACA,IAAIP,aAAa,IAAI,CAACE,kBAAkB,EAAE;IACxC,OAAO,KAAK;EACd;EAEA,OAAOP,gBAAgB,CAACC,OAAO,EAAEC,KAAK,CAAC;AACzC"}
@@ -1,7 +1,3 @@
1
- declare module 'semver/functions/satisfies' {
2
- export default function satisfies(version: string, range: string): boolean;
3
- }
4
-
5
1
  type Priority = 'high' | 'low' | 'auto';
6
2
 
7
3
  interface HTMLScriptElement {
@@ -25,7 +25,7 @@ export declare class Deferred<T> {
25
25
  isSettled(): boolean;
26
26
  }
27
27
  export declare function waitUntilSettled(promise: Promise<void>): Promise<void>;
28
- export declare function getEntireUrl(uri: string, baseURI: string): string;
28
+ export declare function resolveUrl(uri: string, baseURI: string): string;
29
29
  /**
30
30
  * Check if the running environment support qiankun 3.0
31
31
  *
package/dist/esm/utils.js CHANGED
@@ -1,12 +1,11 @@
1
+ import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
1
2
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
2
3
  import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
4
  import _createClass from "@babel/runtime/helpers/esm/createClass";
5
+ import _classPrivateFieldInitSpec from "@babel/runtime/helpers/esm/classPrivateFieldInitSpec";
4
6
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
7
  import _classPrivateFieldGet from "@babel/runtime/helpers/esm/classPrivateFieldGet";
6
8
  import _classPrivateFieldSet from "@babel/runtime/helpers/esm/classPrivateFieldSet";
7
- import _regeneratorRuntime from "@babel/runtime/regenerator";
8
- function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
9
- function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
10
9
  /**
11
10
  * @author Kuitos
12
11
  * @since 2023-04-26
@@ -58,8 +57,8 @@ export function waitUntilSettled(_x) {
58
57
  return _waitUntilSettled.apply(this, arguments);
59
58
  }
60
59
  function _waitUntilSettled() {
61
- _waitUntilSettled = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(promise) {
62
- return _regeneratorRuntime.wrap(function _callee$(_context) {
60
+ _waitUntilSettled = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(promise) {
61
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
63
62
  while (1) switch (_context.prev = _context.next) {
64
63
  case 0:
65
64
  _context.prev = 0;
@@ -82,9 +81,15 @@ function _waitUntilSettled() {
82
81
  }));
83
82
  return _waitUntilSettled.apply(this, arguments);
84
83
  }
85
- export function getEntireUrl(uri, baseURI) {
84
+ export function resolveUrl(uri, baseURI) {
85
+ // should not handle an entire url especially protocol-relative url, e.g. //example.com/foo.js
86
+ // otherwise it may occur that the user previously stored the script src as //example.com/foo.js,
87
+ // resulting in a conversion to http://example.com/foo.js which does not match the original stored key.
88
+ if (uri.startsWith('//') || uri.startsWith('http://') || uri.startsWith('https://')) {
89
+ return uri;
90
+ }
86
91
  var publicPath = new URL(baseURI, window.location.href);
87
- var entireUrl = new URL(uri, publicPath.toString());
92
+ var entireUrl = new URL(uri, publicPath);
88
93
  return entireUrl.toString();
89
94
  }
90
95
 
@@ -1 +1 @@
1
- {"version":3,"names":["create","Object","defineProperty","getOwnPropertyDescriptor","getOwnPropertyNames","freeze","keys","hasOwnProperty","caller","p","prototype","call","_status","WeakMap","Deferred","_this","_classCallCheck","_defineProperty","_classPrivateFieldInitSpec","writable","value","promise","Promise","resolve","reject","_classPrivateFieldSet","reason","_createClass","key","isSettled","_classPrivateFieldGet","waitUntilSettled","_x","_waitUntilSettled","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","t0","process","env","NODE_ENV","console","warn","stop","getEntireUrl","uri","baseURI","publicPath","URL","window","location","href","entireUrl","toString","isRuntimeCompatible","_URL","Proxy","TransformStream","createObjectURL"],"sources":["../../src/utils.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-04-26\n */\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nexport const { create, defineProperty, getOwnPropertyDescriptor, getOwnPropertyNames, freeze, keys } = Object;\nexport const hasOwnProperty = (caller: unknown, p: PropertyKey) => Object.prototype.hasOwnProperty.call(caller, p);\n\nexport class Deferred<T> {\n promise: Promise<T>;\n\n #status: 'pending' | 'fulfilled' | 'rejected' = 'pending';\n\n resolve!: (value: T | PromiseLike<T>) => void;\n\n reject!: (reason?: unknown) => void;\n\n constructor() {\n this.promise = new Promise<T>((resolve, reject) => {\n this.resolve = (value) => {\n this.#status = 'fulfilled';\n resolve(value);\n };\n this.reject = (reason) => {\n this.#status = 'rejected';\n reject(reason);\n };\n });\n }\n\n isSettled(): boolean {\n return this.#status !== 'pending';\n }\n}\n\nexport async function waitUntilSettled(promise: Promise<void>): Promise<void> {\n try {\n await promise;\n } catch (e) {\n if (process.env.NODE_ENV === 'development') {\n console.warn('waitUntilSettled error', e);\n }\n }\n}\n\nexport function getEntireUrl(uri: string, baseURI: string): string {\n const publicPath = new URL(baseURI, window.location.href);\n const entireUrl = new URL(uri, publicPath.toString());\n return entireUrl.toString();\n}\n\n/**\n * Check if the running environment support qiankun 3.0\n *\n */\nexport function isRuntimeCompatible(): boolean {\n return (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n typeof Proxy === 'function' && typeof TransformStream === 'function' && typeof URL?.createObjectURL === 'function'\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["create","Object","defineProperty","getOwnPropertyDescriptor","getOwnPropertyNames","freeze","keys","hasOwnProperty","caller","p","prototype","call","_status","WeakMap","Deferred","_this","_classCallCheck","_defineProperty","_classPrivateFieldInitSpec","writable","value","promise","Promise","resolve","reject","_classPrivateFieldSet","reason","_createClass","key","isSettled","_classPrivateFieldGet","waitUntilSettled","_x","_waitUntilSettled","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","t0","process","env","NODE_ENV","console","warn","stop","resolveUrl","uri","baseURI","startsWith","publicPath","URL","window","location","href","entireUrl","toString","isRuntimeCompatible","_URL","Proxy","TransformStream","createObjectURL"],"sources":["../../src/utils.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-04-26\n */\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nexport const { create, defineProperty, getOwnPropertyDescriptor, getOwnPropertyNames, freeze, keys } = Object;\nexport const hasOwnProperty = (caller: unknown, p: PropertyKey) => Object.prototype.hasOwnProperty.call(caller, p);\n\nexport class Deferred<T> {\n promise: Promise<T>;\n\n #status: 'pending' | 'fulfilled' | 'rejected' = 'pending';\n\n resolve!: (value: T | PromiseLike<T>) => void;\n\n reject!: (reason?: unknown) => void;\n\n constructor() {\n this.promise = new Promise<T>((resolve, reject) => {\n this.resolve = (value) => {\n this.#status = 'fulfilled';\n resolve(value);\n };\n this.reject = (reason) => {\n this.#status = 'rejected';\n reject(reason);\n };\n });\n }\n\n isSettled(): boolean {\n return this.#status !== 'pending';\n }\n}\n\nexport async function waitUntilSettled(promise: Promise<void>): Promise<void> {\n try {\n await promise;\n } catch (e) {\n if (process.env.NODE_ENV === 'development') {\n console.warn('waitUntilSettled error', e);\n }\n }\n}\n\nexport function resolveUrl(uri: string, baseURI: string): string {\n // should not handle an entire url especially protocol-relative url, e.g. //example.com/foo.js\n // otherwise it may occur that the user previously stored the script src as //example.com/foo.js,\n // resulting in a conversion to http://example.com/foo.js which does not match the original stored key.\n if (uri.startsWith('//') || uri.startsWith('http://') || uri.startsWith('https://')) {\n return uri;\n }\n\n const publicPath = new URL(baseURI, window.location.href);\n const entireUrl = new URL(uri, publicPath);\n return entireUrl.toString();\n}\n\n/**\n * Check if the running environment support qiankun 3.0\n *\n */\nexport function isRuntimeCompatible(): boolean {\n return (\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n typeof Proxy === 'function' && typeof TransformStream === 'function' && typeof URL?.createObjectURL === 'function'\n );\n}\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;;AAEA;AACO,IAAQA,MAAM,GAAkFC,MAAM,CAA9FD,MAAM;EAAEE,cAAc,GAAkED,MAAM,CAAtFC,cAAc;EAAEC,wBAAwB,GAAwCF,MAAM,CAAtEE,wBAAwB;EAAEC,mBAAmB,GAAmBH,MAAM,CAA5CG,mBAAmB;EAAEC,MAAM,GAAWJ,MAAM,CAAvBI,MAAM;EAAEC,IAAI,GAAKL,MAAM,CAAfK,IAAI;AAAY,SAAAN,MAAA,EAAAE,cAAA,EAAAC,wBAAA,EAAAC,mBAAA,EAAAC,MAAA,EAAAC,IAAA;AAC9G,OAAO,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,MAAe,EAAEC,CAAc;EAAA,OAAKR,MAAM,CAACS,SAAS,CAACH,cAAc,CAACI,IAAI,CAACH,MAAM,EAAEC,CAAC,CAAC;AAAA;AAAC,IAAAG,OAAA,oBAAAC,OAAA;AAEnH,WAAaC,QAAQ;EASnB,SAAAA,SAAA,EAAc;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAF,QAAA;IAAAG,eAAA;IAAAC,0BAAA,OAAAN,OAAA;MAAAO,QAAA;MAAAC,KAAA,EANkC;IAAS;IAAAH,eAAA;IAAAA,eAAA;IAOvD,IAAI,CAACI,OAAO,GAAG,IAAIC,OAAO,CAAI,UAACC,OAAO,EAAEC,MAAM,EAAK;MACjDT,KAAI,CAACQ,OAAO,GAAG,UAACH,KAAK,EAAK;QACxBK,qBAAA,CAAAV,KAAI,EAAAH,OAAA,EAAW,WAAW;QAC1BW,OAAO,CAACH,KAAK,CAAC;MAChB,CAAC;MACDL,KAAI,CAACS,MAAM,GAAG,UAACE,MAAM,EAAK;QACxBD,qBAAA,CAAAV,KAAI,EAAAH,OAAA,EAAW,UAAU;QACzBY,MAAM,CAACE,MAAM,CAAC;MAChB,CAAC;IACH,CAAC,CAAC;EACJ;EAACC,YAAA,CAAAb,QAAA;IAAAc,GAAA;IAAAR,KAAA,EAED,SAAAS,UAAA,EAAqB;MACnB,OAAOC,qBAAA,KAAI,EAAAlB,OAAA,MAAa,SAAS;IACnC;EAAC;EAAA,OAAAE,QAAA;AAAA;AAGH,gBAAsBiB,gBAAgBA,CAAAC,EAAA;EAAA,OAAAC,iBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAQrC,SAAAF,kBAAA;EAAAA,iBAAA,GAAAG,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CARM,SAAAC,QAAgClB,OAAsB;IAAA,OAAAgB,mBAAA,GAAAG,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAE,IAAA;UAAA,OAEnDvB,OAAO;QAAA;UAAAqB,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAG,EAAA,GAAAH,QAAA;UAEb,IAAII,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;YAC1CC,OAAO,CAACC,IAAI,CAAC,wBAAwB,EAAAR,QAAA,CAAAG,EAAG,CAAC;UAC3C;QAAC;QAAA;UAAA,OAAAH,QAAA,CAAAS,IAAA;MAAA;IAAA,GAAAZ,OAAA;EAAA,CAEJ;EAAA,OAAAN,iBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAED,OAAO,SAASiB,UAAUA,CAACC,GAAW,EAAEC,OAAe,EAAU;EAC/D;EACA;EACA;EACA,IAAID,GAAG,CAACE,UAAU,CAAC,IAAI,CAAC,IAAIF,GAAG,CAACE,UAAU,CAAC,SAAS,CAAC,IAAIF,GAAG,CAACE,UAAU,CAAC,UAAU,CAAC,EAAE;IACnF,OAAOF,GAAG;EACZ;EAEA,IAAMG,UAAU,GAAG,IAAIC,GAAG,CAACH,OAAO,EAAEI,MAAM,CAACC,QAAQ,CAACC,IAAI,CAAC;EACzD,IAAMC,SAAS,GAAG,IAAIJ,GAAG,CAACJ,GAAG,EAAEG,UAAU,CAAC;EAC1C,OAAOK,SAAS,CAACC,QAAQ,CAAC,CAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAAA,EAAY;EAAA,IAAAC,IAAA;EAC7C;IACE;IACA,OAAOC,KAAK,KAAK,UAAU,IAAI,OAAOC,eAAe,KAAK,UAAU,IAAI,SAAAF,IAAA,GAAOP,GAAG,cAAAO,IAAA,uBAAHA,IAAA,CAAKG,eAAe,MAAK;EAAU;AAEtH"}
package/package.json CHANGED
@@ -1,7 +1,11 @@
1
1
  {
2
2
  "name": "@qiankunjs/shared",
3
- "version": "0.0.1-rc.11",
3
+ "version": "0.0.1-rc.13",
4
4
  "description": "internal shared package for qiankun",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/umijs/qiankun.git"
8
+ },
5
9
  "main": "./dist/cjs/index.js",
6
10
  "module": "./dist/esm/index.js",
7
11
  "types": "./dist/esm/index.d.ts",
@@ -9,9 +13,9 @@
9
13
  "author": "Kuitos",
10
14
  "license": "MIT",
11
15
  "dependencies": {
12
- "@babel/runtime": "^7.10.5",
13
- "lodash": "^4.17.11",
14
- "semver": "^7.5.3"
16
+ "@babel/runtime": "^7.26.10",
17
+ "compare-versions": "^6.1.0",
18
+ "lodash": "^4.17.11"
15
19
  },
16
20
  "files": [
17
21
  "dist"
@@ -1,3 +0,0 @@
1
- type Fetch = typeof window.fetch;
2
- export declare const wrapFetchWithCache: (fetch: Fetch) => Fetch;
3
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"names":["_miniLruCache","require","getCacheKey","input","url","href","getGlobalCache","_once2","default","LRUCache","isValidaResponse","status","wrapFetchWithCache","exports","fetch","lruCache","cachedFetch","init","fetchInput","cacheKey","wrapFetchPromise","_ref","_asyncToGenerator2","_regenerator","mark","_callee","promise","res","wrap","_callee$","_context","prev","next","sent","delete","abrupt","clone","t0","stop","_x","apply","arguments","cachedFetchPromise","get","fetchPromise","set"],"sources":["../../../src/fetch-utils/wrapFetchWithCache.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-11-06\n */\nimport { once } from 'lodash';\nimport { LRUCache } from './miniLruCache';\n\ntype Fetch = typeof window.fetch;\n\nconst getCacheKey = (input: Parameters<Fetch>[0]): string => {\n return typeof input === 'string' ? input : 'url' in input ? input.url : input.href;\n};\n\nconst getGlobalCache = once(() => {\n return new LRUCache<string, Promise<Response>>(50);\n});\n\nconst isValidaResponse = (status: number): boolean => {\n return status >= 200 && status < 400;\n};\n\nexport const wrapFetchWithCache: (fetch: Fetch) => Fetch = (fetch) => {\n const lruCache = getGlobalCache();\n\n const cachedFetch: Fetch = (input, init) => {\n const fetchInput = input;\n const cacheKey = getCacheKey(fetchInput);\n const wrapFetchPromise = async (promise: Promise<Response>): Promise<Response> => {\n try {\n const res = await promise;\n\n const { status } = res;\n if (!isValidaResponse(status)) {\n lruCache.delete(cacheKey);\n }\n\n // must clone the response as one response body can only be read once as a stream\n return res.clone();\n } catch (e) {\n lruCache.delete(cacheKey);\n throw e;\n }\n };\n\n const cachedFetchPromise = lruCache.get(cacheKey);\n if (cachedFetchPromise) {\n return wrapFetchPromise(cachedFetchPromise);\n }\n\n const fetchPromise = fetch(fetchInput, init);\n lruCache.set(cacheKey, fetchPromise);\n\n return wrapFetchPromise(fetchPromise);\n };\n\n return cachedFetch;\n};\n"],"mappings":";;;;;;;;;;AAKA,IAAAA,aAAA,GAAAC,OAAA;AALA;AACA;AACA;AACA;;AAMA,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,KAA2B,EAAa;EAC3D,OAAO,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,KAAK,IAAIA,KAAK,GAAGA,KAAK,CAACC,GAAG,GAAGD,KAAK,CAACE,IAAI;AACpF,CAAC;AAED,IAAMC,cAAc,GAAG,IAAAC,MAAA,CAAAC,OAAA,EAAK,YAAM;EAChC,OAAO,IAAIC,sBAAQ,CAA4B,EAAE,CAAC;AACpD,CAAC,CAAC;AAEF,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,MAAc,EAAc;EACpD,OAAOA,MAAM,IAAI,GAAG,IAAIA,MAAM,GAAG,GAAG;AACtC,CAAC;AAEM,IAAMC,kBAA2C,GAAAC,OAAA,CAAAD,kBAAA,GAAG,SAA9CA,kBAA2CA,CAAIE,KAAK,EAAK;EACpE,IAAMC,QAAQ,GAAGT,cAAc,CAAC,CAAC;EAEjC,IAAMU,WAAkB,GAAG,SAArBA,WAAkBA,CAAIb,KAAK,EAAEc,IAAI,EAAK;IAC1C,IAAMC,UAAU,GAAGf,KAAK;IACxB,IAAMgB,QAAQ,GAAGjB,WAAW,CAACgB,UAAU,CAAC;IACxC,IAAME,gBAAgB;MAAA,IAAAC,IAAA,OAAAC,kBAAA,CAAAd,OAAA,gBAAAe,YAAA,CAAAf,OAAA,CAAAgB,IAAA,CAAG,SAAAC,QAAOC,OAA0B;QAAA,IAAAC,GAAA,EAAAhB,MAAA;QAAA,OAAAY,YAAA,CAAAf,OAAA,CAAAoB,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAAAF,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAE,IAAA;cAAA,OAEpCN,OAAO;YAAA;cAAnBC,GAAG,GAAAG,QAAA,CAAAG,IAAA;cAEDtB,MAAM,GAAKgB,GAAG,CAAdhB,MAAM;cACd,IAAI,CAACD,gBAAgB,CAACC,MAAM,CAAC,EAAE;gBAC7BI,QAAQ,CAACmB,MAAM,CAACf,QAAQ,CAAC;cAC3B;;cAEA;cAAA,OAAAW,QAAA,CAAAK,MAAA,WACOR,GAAG,CAACS,KAAK,CAAC,CAAC;YAAA;cAAAN,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAO,EAAA,GAAAP,QAAA;cAElBf,QAAQ,CAACmB,MAAM,CAACf,QAAQ,CAAC;cAAC,MAAAW,QAAA,CAAAO,EAAA;YAAA;YAAA;cAAA,OAAAP,QAAA,CAAAQ,IAAA;UAAA;QAAA,GAAAb,OAAA;MAAA,CAG7B;MAAA,gBAfKL,gBAAgBA,CAAAmB,EAAA;QAAA,OAAAlB,IAAA,CAAAmB,KAAA,OAAAC,SAAA;MAAA;IAAA,GAerB;IAED,IAAMC,kBAAkB,GAAG3B,QAAQ,CAAC4B,GAAG,CAACxB,QAAQ,CAAC;IACjD,IAAIuB,kBAAkB,EAAE;MACtB,OAAOtB,gBAAgB,CAACsB,kBAAkB,CAAC;IAC7C;IAEA,IAAME,YAAY,GAAG9B,KAAK,CAACI,UAAU,EAAED,IAAI,CAAC;IAC5CF,QAAQ,CAAC8B,GAAG,CAAC1B,QAAQ,EAAEyB,YAAY,CAAC;IAEpC,OAAOxB,gBAAgB,CAACwB,YAAY,CAAC;EACvC,CAAC;EAED,OAAO5B,WAAW;AACpB,CAAC"}
@@ -1,3 +0,0 @@
1
- type Fetch = typeof window.fetch;
2
- export declare const wrapFetchWithCache: (fetch: Fetch) => Fetch;
3
- export {};
@@ -1 +0,0 @@
1
- {"version":3,"names":["_regeneratorRuntime","LRUCache","getCacheKey","input","url","href","getGlobalCache","_once","isValidaResponse","status","wrapFetchWithCache","fetch","lruCache","cachedFetch","init","fetchInput","cacheKey","wrapFetchPromise","_ref","_asyncToGenerator","mark","_callee","promise","res","wrap","_callee$","_context","prev","next","sent","delete","abrupt","clone","t0","stop","_x","apply","arguments","cachedFetchPromise","get","fetchPromise","set"],"sources":["../../../src/fetch-utils/wrapFetchWithCache.ts"],"sourcesContent":["/**\n * @author Kuitos\n * @since 2023-11-06\n */\nimport { once } from 'lodash';\nimport { LRUCache } from './miniLruCache';\n\ntype Fetch = typeof window.fetch;\n\nconst getCacheKey = (input: Parameters<Fetch>[0]): string => {\n return typeof input === 'string' ? input : 'url' in input ? input.url : input.href;\n};\n\nconst getGlobalCache = once(() => {\n return new LRUCache<string, Promise<Response>>(50);\n});\n\nconst isValidaResponse = (status: number): boolean => {\n return status >= 200 && status < 400;\n};\n\nexport const wrapFetchWithCache: (fetch: Fetch) => Fetch = (fetch) => {\n const lruCache = getGlobalCache();\n\n const cachedFetch: Fetch = (input, init) => {\n const fetchInput = input;\n const cacheKey = getCacheKey(fetchInput);\n const wrapFetchPromise = async (promise: Promise<Response>): Promise<Response> => {\n try {\n const res = await promise;\n\n const { status } = res;\n if (!isValidaResponse(status)) {\n lruCache.delete(cacheKey);\n }\n\n // must clone the response as one response body can only be read once as a stream\n return res.clone();\n } catch (e) {\n lruCache.delete(cacheKey);\n throw e;\n }\n };\n\n const cachedFetchPromise = lruCache.get(cacheKey);\n if (cachedFetchPromise) {\n return wrapFetchPromise(cachedFetchPromise);\n }\n\n const fetchPromise = fetch(fetchInput, init);\n lruCache.set(cacheKey, fetchPromise);\n\n return wrapFetchPromise(fetchPromise);\n };\n\n return cachedFetch;\n};\n"],"mappings":";;AAAA;AACA;AACA;AACA;AAHA,OAAAA,mBAAA;AAKA,SAASC,QAAQ;AAIjB,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAIC,KAA2B,EAAa;EAC3D,OAAO,OAAOA,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,KAAK,IAAIA,KAAK,GAAGA,KAAK,CAACC,GAAG,GAAGD,KAAK,CAACE,IAAI;AACpF,CAAC;AAED,IAAMC,cAAc,GAAGC,KAAA,CAAK,YAAM;EAChC,OAAO,IAAIN,QAAQ,CAA4B,EAAE,CAAC;AACpD,CAAC,CAAC;AAEF,IAAMO,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIC,MAAc,EAAc;EACpD,OAAOA,MAAM,IAAI,GAAG,IAAIA,MAAM,GAAG,GAAG;AACtC,CAAC;AAED,OAAO,IAAMC,kBAA2C,GAAG,SAA9CA,kBAA2CA,CAAIC,KAAK,EAAK;EACpE,IAAMC,QAAQ,GAAGN,cAAc,CAAC,CAAC;EAEjC,IAAMO,WAAkB,GAAG,SAArBA,WAAkBA,CAAIV,KAAK,EAAEW,IAAI,EAAK;IAC1C,IAAMC,UAAU,GAAGZ,KAAK;IACxB,IAAMa,QAAQ,GAAGd,WAAW,CAACa,UAAU,CAAC;IACxC,IAAME,gBAAgB;MAAA,IAAAC,IAAA,GAAAC,iBAAA,eAAAnB,mBAAA,CAAAoB,IAAA,CAAG,SAAAC,QAAOC,OAA0B;QAAA,IAAAC,GAAA,EAAAd,MAAA;QAAA,OAAAT,mBAAA,CAAAwB,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAAAF,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAE,IAAA;cAAA,OAEpCN,OAAO;YAAA;cAAnBC,GAAG,GAAAG,QAAA,CAAAG,IAAA;cAEDpB,MAAM,GAAKc,GAAG,CAAdd,MAAM;cACd,IAAI,CAACD,gBAAgB,CAACC,MAAM,CAAC,EAAE;gBAC7BG,QAAQ,CAACkB,MAAM,CAACd,QAAQ,CAAC;cAC3B;;cAEA;cAAA,OAAAU,QAAA,CAAAK,MAAA,WACOR,GAAG,CAACS,KAAK,CAAC,CAAC;YAAA;cAAAN,QAAA,CAAAC,IAAA;cAAAD,QAAA,CAAAO,EAAA,GAAAP,QAAA;cAElBd,QAAQ,CAACkB,MAAM,CAACd,QAAQ,CAAC;cAAC,MAAAU,QAAA,CAAAO,EAAA;YAAA;YAAA;cAAA,OAAAP,QAAA,CAAAQ,IAAA;UAAA;QAAA,GAAAb,OAAA;MAAA,CAG7B;MAAA,gBAfKJ,gBAAgBA,CAAAkB,EAAA;QAAA,OAAAjB,IAAA,CAAAkB,KAAA,OAAAC,SAAA;MAAA;IAAA,GAerB;IAED,IAAMC,kBAAkB,GAAG1B,QAAQ,CAAC2B,GAAG,CAACvB,QAAQ,CAAC;IACjD,IAAIsB,kBAAkB,EAAE;MACtB,OAAOrB,gBAAgB,CAACqB,kBAAkB,CAAC;IAC7C;IAEA,IAAME,YAAY,GAAG7B,KAAK,CAACI,UAAU,EAAED,IAAI,CAAC;IAC5CF,QAAQ,CAAC6B,GAAG,CAACzB,QAAQ,EAAEwB,YAAY,CAAC;IAEpC,OAAOvB,gBAAgB,CAACuB,YAAY,CAAC;EACvC,CAAC;EAED,OAAO3B,WAAW;AACpB,CAAC"}