@iamjulianacosta/mobx-data 1.0.1 → 1.1.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.
Files changed (61) hide show
  1. package/dist/{JsonApiSerializer-CC5HXp4b.js → JsonApiSerializer-BLoE046A.js} +2 -2
  2. package/dist/{JsonApiSerializer-CC5HXp4b.js.map → JsonApiSerializer-BLoE046A.js.map} +1 -1
  3. package/dist/{JsonApiSerializer-CKB02AgP.cjs → JsonApiSerializer-DKemcyw-.cjs} +2 -2
  4. package/dist/{JsonApiSerializer-CKB02AgP.cjs.map → JsonApiSerializer-DKemcyw-.cjs.map} +1 -1
  5. package/dist/{MemoryAdapter-Bx1e7ndV.js → MemoryAdapter-Bp-BGHH3.js} +2 -2
  6. package/dist/{MemoryAdapter-Bx1e7ndV.js.map → MemoryAdapter-Bp-BGHH3.js.map} +1 -1
  7. package/dist/{MemoryAdapter-D1cTyydm.cjs → MemoryAdapter-DH-gzSSl.cjs} +2 -2
  8. package/dist/{MemoryAdapter-D1cTyydm.cjs.map → MemoryAdapter-DH-gzSSl.cjs.map} +1 -1
  9. package/dist/{ODataAdapter-DyyF1sdA.cjs → ODataAdapter-CrDFvBEZ.cjs} +2 -2
  10. package/dist/{ODataAdapter-DyyF1sdA.cjs.map → ODataAdapter-CrDFvBEZ.cjs.map} +1 -1
  11. package/dist/{ODataAdapter-C4IHK4BK.js → ODataAdapter-RQUjVTcf.js} +2 -2
  12. package/dist/{ODataAdapter-C4IHK4BK.js.map → ODataAdapter-RQUjVTcf.js.map} +1 -1
  13. package/dist/RestAdapter-CSoJg7D2.cjs +2 -0
  14. package/dist/{RestAdapter-CJOwTsKK.cjs.map → RestAdapter-CSoJg7D2.cjs.map} +1 -1
  15. package/dist/{RestAdapter-B4aRvs4m.js → RestAdapter-D6bGIHZT.js} +32 -23
  16. package/dist/{RestAdapter-B4aRvs4m.js.map → RestAdapter-D6bGIHZT.js.map} +1 -1
  17. package/dist/{Store-CZ7Z-Nme.js → Store-Bm5JivTc.js} +195 -150
  18. package/dist/Store-Bm5JivTc.js.map +1 -0
  19. package/dist/Store-DX9D0Mmy.cjs +2 -0
  20. package/dist/Store-DX9D0Mmy.cjs.map +1 -0
  21. package/dist/adapter/RestAdapter.d.ts.map +1 -1
  22. package/dist/adapter/index.cjs +1 -1
  23. package/dist/adapter/index.js +2 -2
  24. package/dist/cache/IndexedDBCache.d.ts +22 -0
  25. package/dist/cache/IndexedDBCache.d.ts.map +1 -0
  26. package/dist/cache/cache-utils.d.ts +4 -0
  27. package/dist/cache/cache-utils.d.ts.map +1 -0
  28. package/dist/cache/index.d.ts +4 -0
  29. package/dist/cache/index.d.ts.map +1 -0
  30. package/dist/cache/types.d.ts +25 -0
  31. package/dist/cache/types.d.ts.map +1 -0
  32. package/dist/cache-utils-B2wFhisx.js +39 -0
  33. package/dist/cache-utils-B2wFhisx.js.map +1 -0
  34. package/dist/cache-utils-CSwsqOi3.cjs +2 -0
  35. package/dist/cache-utils-CSwsqOi3.cjs.map +1 -0
  36. package/dist/index.cjs +1 -1
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +144 -49
  41. package/dist/index.js.map +1 -1
  42. package/dist/json-api/index.cjs +1 -1
  43. package/dist/json-api/index.js +1 -1
  44. package/dist/odata/index.cjs +1 -1
  45. package/dist/odata/index.js +1 -1
  46. package/dist/store/Store.d.ts +6 -0
  47. package/dist/store/Store.d.ts.map +1 -1
  48. package/dist/store/index.cjs +1 -1
  49. package/dist/store/index.js +1 -1
  50. package/package.json +2 -1
  51. package/src/adapter/RestAdapter.ts +12 -2
  52. package/src/cache/IndexedDBCache.ts +171 -0
  53. package/src/cache/cache-utils.ts +57 -0
  54. package/src/cache/index.ts +12 -0
  55. package/src/cache/types.ts +33 -0
  56. package/src/index.ts +1 -0
  57. package/src/store/Store.ts +100 -0
  58. package/dist/RestAdapter-CJOwTsKK.cjs +0 -2
  59. package/dist/Store-BdwMrbDi.cjs +0 -2
  60. package/dist/Store-BdwMrbDi.cjs.map +0 -1
  61. package/dist/Store-CZ7Z-Nme.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-utils-B2wFhisx.js","sources":["../src/cache/types.ts","../src/cache/cache-utils.ts"],"sourcesContent":["import type { RelationshipRef } from '@mobx-data/model';\n\nexport const RESPONSE_HEADERS: unique symbol = Symbol('response-headers');\n\nexport interface CacheEntryData {\n modelName: string;\n id: string;\n attributes: Record<string, unknown>;\n relationships?: Record<string, RelationshipRef>;\n cachedAt: number;\n expiresAt: number;\n}\n\nexport interface IndexedDBCacheOptions {\n databaseName?: string;\n defaultTTL?: number;\n}\n\nexport interface CacheLike {\n get(modelName: string, id: string): Promise<CacheEntryData | null>;\n set(\n modelName: string,\n id: string,\n attributes: Record<string, unknown>,\n options?: {\n relationships?: Record<string, RelationshipRef>;\n ttl?: number;\n },\n ): Promise<void>;\n has(modelName: string, id: string): Promise<boolean>;\n invalidate(modelName: string, id: string): Promise<void>;\n invalidateAll(modelName?: string): Promise<void>;\n}\n","import { RESPONSE_HEADERS } from './types.js';\n\nexport function parseCacheTTLFromHeaders(\n headers: Record<string, string>,\n): number | null {\n const cacheControl = headers['cache-control'];\n if (cacheControl) {\n if (/no-store/i.test(cacheControl) || /no-cache/i.test(cacheControl)) {\n return 0;\n }\n const sMaxAge = /s-maxage=(\\d+)/i.exec(cacheControl);\n if (sMaxAge) {\n return parseInt(sMaxAge[1]!, 10) * 1000;\n }\n const maxAge = /max-age=(\\d+)/i.exec(cacheControl);\n if (maxAge) {\n return parseInt(maxAge[1]!, 10) * 1000;\n }\n }\n\n const expires = headers['expires'];\n if (expires) {\n const expiresMilliseconds = new Date(expires).getTime();\n if (!Number.isNaN(expiresMilliseconds)) {\n return Math.max(0, expiresMilliseconds - Date.now());\n }\n }\n\n return null;\n}\n\nexport function extractResponseHeaders(\n payload: unknown,\n): Record<string, string> | null {\n if (payload !== null && typeof payload === 'object') {\n return (\n (payload as Record<symbol, unknown>)[RESPONSE_HEADERS] as\n | Record<string, string>\n | undefined\n ) ?? null;\n }\n return null;\n}\n\nexport function attachResponseHeaders(\n payload: unknown,\n headers: Record<string, string>,\n): void {\n if (payload !== null && typeof payload === 'object') {\n Object.defineProperty(payload, RESPONSE_HEADERS, {\n value: headers,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n }\n}\n"],"names":["RESPONSE_HEADERS","parseCacheTTLFromHeaders","headers","cacheControl","sMaxAge","maxAge","expires","expiresMilliseconds","extractResponseHeaders","payload","attachResponseHeaders"],"mappings":"AAEO,MAAMA,IAAkC,OAAO,kBAAkB;ACAjE,SAASC,EACdC,GACe;AACf,QAAMC,IAAeD,EAAQ,eAAe;AAC5C,MAAIC,GAAc;AAChB,QAAI,YAAY,KAAKA,CAAY,KAAK,YAAY,KAAKA,CAAY;AACjE,aAAO;AAET,UAAMC,IAAU,kBAAkB,KAAKD,CAAY;AACnD,QAAIC;AACF,aAAO,SAASA,EAAQ,CAAC,GAAI,EAAE,IAAI;AAErC,UAAMC,IAAS,iBAAiB,KAAKF,CAAY;AACjD,QAAIE;AACF,aAAO,SAASA,EAAO,CAAC,GAAI,EAAE,IAAI;AAAA,EAEtC;AAEA,QAAMC,IAAUJ,EAAQ;AACxB,MAAII,GAAS;AACX,UAAMC,IAAsB,IAAI,KAAKD,CAAO,EAAE,QAAA;AAC9C,QAAI,CAAC,OAAO,MAAMC,CAAmB;AACnC,aAAO,KAAK,IAAI,GAAGA,IAAsB,KAAK,KAAK;AAAA,EAEvD;AAEA,SAAO;AACT;AAEO,SAASC,EACdC,GAC+B;AAC/B,SAAIA,MAAY,QAAQ,OAAOA,KAAY,WAEtCA,EAAoCT,CAAgB,KAGlD,OAEA;AACT;AAEO,SAASU,EACdD,GACAP,GACM;AACN,EAAIO,MAAY,QAAQ,OAAOA,KAAY,YACzC,OAAO,eAAeA,GAAST,GAAkB;AAAA,IAC/C,OAAOE;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,cAAc;AAAA,EAAA,CACf;AAEL;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const s=Symbol("response-headers");function c(e){const t=e["cache-control"];if(t){if(/no-store/i.test(t)||/no-cache/i.test(t))return 0;const r=/s-maxage=(\d+)/i.exec(t);if(r)return parseInt(r[1],10)*1e3;const a=/max-age=(\d+)/i.exec(t);if(a)return parseInt(a[1],10)*1e3}const n=e.expires;if(n){const r=new Date(n).getTime();if(!Number.isNaN(r))return Math.max(0,r-Date.now())}return null}function o(e){return e!==null&&typeof e=="object"?e[s]??null:null}function i(e,t){e!==null&&typeof e=="object"&&Object.defineProperty(e,s,{value:t,enumerable:!1,writable:!1,configurable:!1})}exports.RESPONSE_HEADERS=s;exports.attachResponseHeaders=i;exports.extractResponseHeaders=o;exports.parseCacheTTLFromHeaders=c;
2
+ //# sourceMappingURL=cache-utils-CSwsqOi3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-utils-CSwsqOi3.cjs","sources":["../src/cache/types.ts","../src/cache/cache-utils.ts"],"sourcesContent":["import type { RelationshipRef } from '@mobx-data/model';\n\nexport const RESPONSE_HEADERS: unique symbol = Symbol('response-headers');\n\nexport interface CacheEntryData {\n modelName: string;\n id: string;\n attributes: Record<string, unknown>;\n relationships?: Record<string, RelationshipRef>;\n cachedAt: number;\n expiresAt: number;\n}\n\nexport interface IndexedDBCacheOptions {\n databaseName?: string;\n defaultTTL?: number;\n}\n\nexport interface CacheLike {\n get(modelName: string, id: string): Promise<CacheEntryData | null>;\n set(\n modelName: string,\n id: string,\n attributes: Record<string, unknown>,\n options?: {\n relationships?: Record<string, RelationshipRef>;\n ttl?: number;\n },\n ): Promise<void>;\n has(modelName: string, id: string): Promise<boolean>;\n invalidate(modelName: string, id: string): Promise<void>;\n invalidateAll(modelName?: string): Promise<void>;\n}\n","import { RESPONSE_HEADERS } from './types.js';\n\nexport function parseCacheTTLFromHeaders(\n headers: Record<string, string>,\n): number | null {\n const cacheControl = headers['cache-control'];\n if (cacheControl) {\n if (/no-store/i.test(cacheControl) || /no-cache/i.test(cacheControl)) {\n return 0;\n }\n const sMaxAge = /s-maxage=(\\d+)/i.exec(cacheControl);\n if (sMaxAge) {\n return parseInt(sMaxAge[1]!, 10) * 1000;\n }\n const maxAge = /max-age=(\\d+)/i.exec(cacheControl);\n if (maxAge) {\n return parseInt(maxAge[1]!, 10) * 1000;\n }\n }\n\n const expires = headers['expires'];\n if (expires) {\n const expiresMilliseconds = new Date(expires).getTime();\n if (!Number.isNaN(expiresMilliseconds)) {\n return Math.max(0, expiresMilliseconds - Date.now());\n }\n }\n\n return null;\n}\n\nexport function extractResponseHeaders(\n payload: unknown,\n): Record<string, string> | null {\n if (payload !== null && typeof payload === 'object') {\n return (\n (payload as Record<symbol, unknown>)[RESPONSE_HEADERS] as\n | Record<string, string>\n | undefined\n ) ?? null;\n }\n return null;\n}\n\nexport function attachResponseHeaders(\n payload: unknown,\n headers: Record<string, string>,\n): void {\n if (payload !== null && typeof payload === 'object') {\n Object.defineProperty(payload, RESPONSE_HEADERS, {\n value: headers,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n }\n}\n"],"names":["RESPONSE_HEADERS","parseCacheTTLFromHeaders","headers","cacheControl","sMaxAge","maxAge","expires","expiresMilliseconds","extractResponseHeaders","payload","attachResponseHeaders"],"mappings":"aAEO,MAAMA,EAAkC,OAAO,kBAAkB,ECAjE,SAASC,EACdC,EACe,CACf,MAAMC,EAAeD,EAAQ,eAAe,EAC5C,GAAIC,EAAc,CAChB,GAAI,YAAY,KAAKA,CAAY,GAAK,YAAY,KAAKA,CAAY,EACjE,MAAO,GAET,MAAMC,EAAU,kBAAkB,KAAKD,CAAY,EACnD,GAAIC,EACF,OAAO,SAASA,EAAQ,CAAC,EAAI,EAAE,EAAI,IAErC,MAAMC,EAAS,iBAAiB,KAAKF,CAAY,EACjD,GAAIE,EACF,OAAO,SAASA,EAAO,CAAC,EAAI,EAAE,EAAI,GAEtC,CAEA,MAAMC,EAAUJ,EAAQ,QACxB,GAAII,EAAS,CACX,MAAMC,EAAsB,IAAI,KAAKD,CAAO,EAAE,QAAA,EAC9C,GAAI,CAAC,OAAO,MAAMC,CAAmB,EACnC,OAAO,KAAK,IAAI,EAAGA,EAAsB,KAAK,KAAK,CAEvD,CAEA,OAAO,IACT,CAEO,SAASC,EACdC,EAC+B,CAC/B,OAAIA,IAAY,MAAQ,OAAOA,GAAY,SAEtCA,EAAoCT,CAAgB,GAGlD,KAEA,IACT,CAEO,SAASU,EACdD,EACAP,EACM,CACFO,IAAY,MAAQ,OAAOA,GAAY,UACzC,OAAO,eAAeA,EAAST,EAAkB,CAC/C,MAAOE,EACP,WAAY,GACZ,SAAU,GACV,aAAc,EAAA,CACf,CAEL"}
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./types-uWOXMPWW.cjs"),n=require("./decorators-HQ1KnRdh.cjs"),c=require("./SchemaService-Di_yjVzU.cjs"),e=require("./relationships-B55LBaCW.cjs"),t=require("./Store-BdwMrbDi.cjs"),s=require("./RestAdapter-CJOwTsKK.cjs"),u=require("./MemoryAdapter-D1cTyydm.cjs"),l=require("./Serializer-95gi5edy.cjs"),o=require("./EmbeddedRecordsMixin-CBvqNdgC.cjs"),r=require("./date-CRCe-9gf.cjs"),i=require("./CacheHandler-CXgY9IJo.cjs"),d=require("./JsonApiSerializer-CKB02AgP.cjs"),p=require("./ODataAdapter-DyyF1sdA.cjs");exports.ATTRIBUTES_META_KEY=a.ATTRIBUTES_META_KEY;exports.MODEL_NAME_META_KEY=a.MODEL_NAME_META_KEY;exports.RELATIONSHIPS_META_KEY=a.RELATIONSHIPS_META_KEY;exports.attr=n.attr;exports.belongsTo=n.belongsTo;exports.hasMany=n.hasMany;Object.defineProperty(exports,"SchemaService",{enumerable:!0,get:()=>c.SchemaService});exports.AsyncBelongsTo=e.AsyncBelongsTo;exports.AsyncHasMany=e.AsyncHasMany;Object.defineProperty(exports,"Errors",{enumerable:!0,get:()=>e.Errors});exports.ManyArray=e.ManyArray;exports.Model=e.Model;exports.Snapshot=e.Snapshot;exports.StateMachine=e.StateMachine;exports.AdapterPopulatedRecordArray=t.AdapterPopulatedRecordArray;exports.IdentityMap=t.IdentityMap;exports.RecordArray=t.RecordArray;Object.defineProperty(exports,"Store",{enumerable:!0,get:()=>t.Store});exports.Adapter=s.Adapter;Object.defineProperty(exports,"RestAdapter",{enumerable:!0,get:()=>s.RestAdapter});Object.defineProperty(exports,"MemoryAdapter",{enumerable:!0,get:()=>u.MemoryAdapter});exports.Serializer=l.Serializer;exports.EmbeddedRecordsMixin=o.EmbeddedRecordsMixin;Object.defineProperty(exports,"JsonSerializer",{enumerable:!0,get:()=>o.JsonSerializer});Object.defineProperty(exports,"RestSerializer",{enumerable:!0,get:()=>o.RestSerializer});exports.BaseTransform=r.BaseTransform;Object.defineProperty(exports,"BooleanTransform",{enumerable:!0,get:()=>r.BooleanTransform});Object.defineProperty(exports,"DateTransform",{enumerable:!0,get:()=>r.DateTransform});Object.defineProperty(exports,"NumberTransform",{enumerable:!0,get:()=>r.NumberTransform});Object.defineProperty(exports,"StringTransform",{enumerable:!0,get:()=>r.StringTransform});Object.defineProperty(exports,"CacheHandler",{enumerable:!0,get:()=>i.CacheHandler});Object.defineProperty(exports,"FetchHandler",{enumerable:!0,get:()=>i.FetchHandler});Object.defineProperty(exports,"RequestManager",{enumerable:!0,get:()=>i.RequestManager});Object.defineProperty(exports,"JsonApiAdapter",{enumerable:!0,get:()=>d.JsonApiAdapter});Object.defineProperty(exports,"JsonApiSerializer",{enumerable:!0,get:()=>d.JsonApiSerializer});Object.defineProperty(exports,"ODataAdapter",{enumerable:!0,get:()=>p.ODataAdapter});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("./types-uWOXMPWW.cjs"),A=require("./decorators-HQ1KnRdh.cjs"),_=require("./SchemaService-Di_yjVzU.cjs"),u=require("./relationships-B55LBaCW.cjs"),b=require("./Store-DX9D0Mmy.cjs"),f=require("./RestAdapter-CSoJg7D2.cjs"),g=require("./MemoryAdapter-DH-gzSSl.cjs"),M=require("./Serializer-95gi5edy.cjs"),S=require("./EmbeddedRecordsMixin-CBvqNdgC.cjs"),p=require("./date-CRCe-9gf.cjs"),T=require("./CacheHandler-CXgY9IJo.cjs"),E=require("./JsonApiSerializer-DKemcyw-.cjs"),O=require("./ODataAdapter-CrDFvBEZ.cjs"),y=require("./cache-utils-CSwsqOi3.cjs"),s="cache-entries",R=1,j=36e5;class l{constructor(e={}){this._database=null,this._openPromise=null,this._databaseName=e.databaseName??"mobx-data-cache",this._defaultTTL=e.defaultTTL??j}get defaultTTL(){return this._defaultTTL}async open(){return this._database?this._database:this._openPromise?this._openPromise:(this._openPromise=new Promise((e,t)=>{const r=indexedDB.open(this._databaseName,R);r.onupgradeneeded=()=>{const a=r.result;if(!a.objectStoreNames.contains(s)){const o=a.createObjectStore(s,{keyPath:"key"});o.createIndex("modelName","modelName",{unique:!1}),o.createIndex("expiresAt","expiresAt",{unique:!1})}},r.onsuccess=()=>{this._database=r.result,e(this._database)},r.onerror=()=>{this._openPromise=null,t(r.error)}}),this._openPromise)}static cacheKey(e,t){return`${e}:${t}`}async get(e,t){const r=await this.open();return new Promise((a,o)=>{const n=r.transaction(s,"readonly").objectStore(s).get(l.cacheKey(e,t));n.onsuccess=()=>{const i=n.result;if(!i){a(null);return}if(Date.now()>i.expiresAt){this.invalidate(e,t),a(null);return}a(i)},n.onerror=()=>o(n.error)})}async set(e,t,r,a={}){const o=await this.open(),d=Date.now(),c=a.ttl??this._defaultTTL,n={key:l.cacheKey(e,t),modelName:e,id:t,attributes:r,relationships:a.relationships,cachedAt:d,expiresAt:d+c};return new Promise((i,P)=>{const m=o.transaction(s,"readwrite").objectStore(s).put(n);m.onsuccess=()=>i(),m.onerror=()=>P(m.error)})}async has(e,t){return await this.get(e,t)!==null}async invalidate(e,t){const r=await this.open();return new Promise((a,o)=>{const n=r.transaction(s,"readwrite").objectStore(s).delete(l.cacheKey(e,t));n.onsuccess=()=>a(),n.onerror=()=>o(n.error)})}async invalidateAll(e){const t=await this.open();return e?new Promise((r,a)=>{const n=t.transaction(s,"readwrite").objectStore(s).index("modelName").openCursor(IDBKeyRange.only(e));n.onsuccess=()=>{const i=n.result;i?(i.delete(),i.continue()):r()},n.onerror=()=>a(n.error)}):new Promise((r,a)=>{const c=t.transaction(s,"readwrite").objectStore(s).clear();c.onsuccess=()=>r(),c.onerror=()=>a(c.error)})}async close(){this._database&&(this._database.close(),this._database=null,this._openPromise=null)}}exports.ATTRIBUTES_META_KEY=h.ATTRIBUTES_META_KEY;exports.MODEL_NAME_META_KEY=h.MODEL_NAME_META_KEY;exports.RELATIONSHIPS_META_KEY=h.RELATIONSHIPS_META_KEY;exports.attr=A.attr;exports.belongsTo=A.belongsTo;exports.hasMany=A.hasMany;Object.defineProperty(exports,"SchemaService",{enumerable:!0,get:()=>_.SchemaService});exports.AsyncBelongsTo=u.AsyncBelongsTo;exports.AsyncHasMany=u.AsyncHasMany;Object.defineProperty(exports,"Errors",{enumerable:!0,get:()=>u.Errors});exports.ManyArray=u.ManyArray;exports.Model=u.Model;exports.Snapshot=u.Snapshot;exports.StateMachine=u.StateMachine;exports.AdapterPopulatedRecordArray=b.AdapterPopulatedRecordArray;exports.IdentityMap=b.IdentityMap;exports.RecordArray=b.RecordArray;Object.defineProperty(exports,"Store",{enumerable:!0,get:()=>b.Store});exports.Adapter=f.Adapter;Object.defineProperty(exports,"RestAdapter",{enumerable:!0,get:()=>f.RestAdapter});Object.defineProperty(exports,"MemoryAdapter",{enumerable:!0,get:()=>g.MemoryAdapter});exports.Serializer=M.Serializer;exports.EmbeddedRecordsMixin=S.EmbeddedRecordsMixin;Object.defineProperty(exports,"JsonSerializer",{enumerable:!0,get:()=>S.JsonSerializer});Object.defineProperty(exports,"RestSerializer",{enumerable:!0,get:()=>S.RestSerializer});exports.BaseTransform=p.BaseTransform;Object.defineProperty(exports,"BooleanTransform",{enumerable:!0,get:()=>p.BooleanTransform});Object.defineProperty(exports,"DateTransform",{enumerable:!0,get:()=>p.DateTransform});Object.defineProperty(exports,"NumberTransform",{enumerable:!0,get:()=>p.NumberTransform});Object.defineProperty(exports,"StringTransform",{enumerable:!0,get:()=>p.StringTransform});Object.defineProperty(exports,"CacheHandler",{enumerable:!0,get:()=>T.CacheHandler});Object.defineProperty(exports,"FetchHandler",{enumerable:!0,get:()=>T.FetchHandler});Object.defineProperty(exports,"RequestManager",{enumerable:!0,get:()=>T.RequestManager});Object.defineProperty(exports,"JsonApiAdapter",{enumerable:!0,get:()=>E.JsonApiAdapter});Object.defineProperty(exports,"JsonApiSerializer",{enumerable:!0,get:()=>E.JsonApiSerializer});Object.defineProperty(exports,"ODataAdapter",{enumerable:!0,get:()=>O.ODataAdapter});exports.RESPONSE_HEADERS=y.RESPONSE_HEADERS;exports.attachResponseHeaders=y.attachResponseHeaders;exports.extractResponseHeaders=y.extractResponseHeaders;exports.parseCacheTTLFromHeaders=y.parseCacheTTLFromHeaders;exports.IndexedDBCache=l;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.cjs","sources":["../src/cache/IndexedDBCache.ts"],"sourcesContent":["import type { RelationshipRef } from '@mobx-data/model';\nimport type { CacheEntryData, IndexedDBCacheOptions, CacheLike } from './types.js';\n\nconst STORE_NAME = 'cache-entries';\nconst DATABASE_VERSION = 1;\nconst DEFAULT_TTL = 3_600_000;\n\ninterface StoredEntry extends CacheEntryData {\n key: string;\n}\n\nexport class IndexedDBCache implements CacheLike {\n private _databaseName: string;\n\n private _defaultTTL: number;\n\n private _database: IDBDatabase | null = null;\n\n private _openPromise: Promise<IDBDatabase> | null = null;\n\n constructor(options: IndexedDBCacheOptions = {}) {\n this._databaseName = options.databaseName ?? 'mobx-data-cache';\n this._defaultTTL = options.defaultTTL ?? DEFAULT_TTL;\n }\n\n get defaultTTL(): number {\n return this._defaultTTL;\n }\n\n private async open(): Promise<IDBDatabase> {\n if (this._database) {\n return this._database;\n }\n if (this._openPromise) {\n return this._openPromise;\n }\n\n this._openPromise = new Promise<IDBDatabase>((resolve, reject) => {\n const request = indexedDB.open(this._databaseName, DATABASE_VERSION);\n request.onupgradeneeded = () => {\n const database = request.result;\n if (!database.objectStoreNames.contains(STORE_NAME)) {\n const store = database.createObjectStore(STORE_NAME, {\n keyPath: 'key',\n });\n store.createIndex('modelName', 'modelName', { unique: false });\n store.createIndex('expiresAt', 'expiresAt', { unique: false });\n }\n };\n request.onsuccess = () => {\n this._database = request.result;\n resolve(this._database);\n };\n request.onerror = () => {\n this._openPromise = null;\n reject(request.error);\n };\n });\n return this._openPromise;\n }\n\n static cacheKey(modelName: string, id: string): string {\n return `${modelName}:${id}`;\n }\n\n async get(modelName: string, id: string): Promise<CacheEntryData | null> {\n const database = await this.open();\n return new Promise((resolve, reject) => {\n const transaction = database.transaction(STORE_NAME, 'readonly');\n const store = transaction.objectStore(STORE_NAME);\n const request = store.get(IndexedDBCache.cacheKey(modelName, id));\n request.onsuccess = () => {\n const entry = request.result as StoredEntry | undefined;\n if (!entry) {\n resolve(null);\n return;\n }\n if (Date.now() > entry.expiresAt) {\n this.invalidate(modelName, id);\n resolve(null);\n return;\n }\n resolve(entry);\n };\n request.onerror = () => reject(request.error);\n });\n }\n\n async set(\n modelName: string,\n id: string,\n attributes: Record<string, unknown>,\n options: {\n relationships?: Record<string, RelationshipRef>;\n ttl?: number;\n } = {},\n ): Promise<void> {\n const database = await this.open();\n const now = Date.now();\n const ttl = options.ttl ?? this._defaultTTL;\n const entry: StoredEntry = {\n key: IndexedDBCache.cacheKey(modelName, id),\n modelName,\n id,\n attributes,\n relationships: options.relationships,\n cachedAt: now,\n expiresAt: now + ttl,\n };\n return new Promise((resolve, reject) => {\n const transaction = database.transaction(STORE_NAME, 'readwrite');\n const store = transaction.objectStore(STORE_NAME);\n const request = store.put(entry);\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n\n async has(modelName: string, id: string): Promise<boolean> {\n const entry = await this.get(modelName, id);\n return entry !== null;\n }\n\n async invalidate(modelName: string, id: string): Promise<void> {\n const database = await this.open();\n return new Promise((resolve, reject) => {\n const transaction = database.transaction(STORE_NAME, 'readwrite');\n const store = transaction.objectStore(STORE_NAME);\n const request = store.delete(IndexedDBCache.cacheKey(modelName, id));\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n\n async invalidateAll(modelName?: string): Promise<void> {\n const database = await this.open();\n if (!modelName) {\n return new Promise((resolve, reject) => {\n const transaction = database.transaction(STORE_NAME, 'readwrite');\n const store = transaction.objectStore(STORE_NAME);\n const request = store.clear();\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n return new Promise((resolve, reject) => {\n const transaction = database.transaction(STORE_NAME, 'readwrite');\n const store = transaction.objectStore(STORE_NAME);\n const index = store.index('modelName');\n const cursorRequest = index.openCursor(IDBKeyRange.only(modelName));\n cursorRequest.onsuccess = () => {\n const cursor = cursorRequest.result;\n if (cursor) {\n cursor.delete();\n cursor.continue();\n } else {\n resolve();\n }\n };\n cursorRequest.onerror = () => reject(cursorRequest.error);\n });\n }\n\n async close(): Promise<void> {\n if (this._database) {\n this._database.close();\n this._database = null;\n this._openPromise = null;\n }\n }\n}\n"],"names":["STORE_NAME","DATABASE_VERSION","DEFAULT_TTL","IndexedDBCache","options","resolve","reject","request","database","store","modelName","id","entry","attributes","now","ttl","cursorRequest","cursor"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,4 +7,5 @@ export * from './transforms/index.js';
7
7
  export * from './request/index.js';
8
8
  export * from './json-api/index.js';
9
9
  export * from './odata/index.js';
10
+ export * from './cache/index.js';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,WAAW,EACX,WAAW,EACX,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,WAAW,EACX,WAAW,EACX,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,52 +1,147 @@
1
- import { A as e, M as s, R as o } from "./types-C9NB2gRj.js";
2
- import { a as n, b as p, h as A } from "./decorators-Zr35qr6A.js";
3
- import { S as f } from "./SchemaService-DZwkFgZu.js";
4
- import { A as d, a as M, E as i, M as x, b as E, S as T, c as R } from "./relationships-BEXANmWg.js";
5
- import { A as l, I as y, R as h, S as _ } from "./Store-CZ7Z-Nme.js";
6
- import { A as B, R as I } from "./RestAdapter-B4aRvs4m.js";
7
- import { M as g } from "./MemoryAdapter-Bx1e7ndV.js";
8
- import { S as D } from "./Serializer-FxJbsZ50.js";
9
- import { E as N, J as O, R as u } from "./EmbeddedRecordsMixin-VoHluHCT.js";
10
- import { B as Y, a as C, D as F, N as L, S as P } from "./date-Bj4O2W1F.js";
11
- import { C as v, F as U, R as j } from "./CacheHandler-BTU_rYkv.js";
12
- import { J as w, a as G } from "./JsonApiSerializer-CC5HXp4b.js";
13
- import { O as V } from "./ODataAdapter-C4IHK4BK.js";
1
+ import { A as T, M as b, R as _ } from "./types-C9NB2gRj.js";
2
+ import { a as E, b as R, h as w } from "./decorators-Zr35qr6A.js";
3
+ import { S as P } from "./SchemaService-DZwkFgZu.js";
4
+ import { A as g, a as L, E as q, M as D, b as H, S as K, c as O } from "./relationships-BEXANmWg.js";
5
+ import { A as I, I as B, R as J, S as z } from "./Store-Bm5JivTc.js";
6
+ import { A as k, R as Y } from "./RestAdapter-D6bGIHZT.js";
7
+ import { M as C } from "./MemoryAdapter-Bp-BGHH3.js";
8
+ import { S as $ } from "./Serializer-FxJbsZ50.js";
9
+ import { E as G, J as Q, R as W } from "./EmbeddedRecordsMixin-VoHluHCT.js";
10
+ import { B as Z, a as ee, D as te, N as se, S as ae } from "./date-Bj4O2W1F.js";
11
+ import { C as oe, F as ne, R as ce } from "./CacheHandler-BTU_rYkv.js";
12
+ import { J as de, a as ue } from "./JsonApiSerializer-BLoE046A.js";
13
+ import { O as pe } from "./ODataAdapter-RQUjVTcf.js";
14
+ import { R as me, a as Ae, e as fe, p as ye } from "./cache-utils-B2wFhisx.js";
15
+ const o = "cache-entries", h = 1, m = 36e5;
16
+ class u {
17
+ constructor(e = {}) {
18
+ this._database = null, this._openPromise = null, this._databaseName = e.databaseName ?? "mobx-data-cache", this._defaultTTL = e.defaultTTL ?? m;
19
+ }
20
+ get defaultTTL() {
21
+ return this._defaultTTL;
22
+ }
23
+ async open() {
24
+ return this._database ? this._database : this._openPromise ? this._openPromise : (this._openPromise = new Promise((e, s) => {
25
+ const t = indexedDB.open(this._databaseName, h);
26
+ t.onupgradeneeded = () => {
27
+ const a = t.result;
28
+ if (!a.objectStoreNames.contains(o)) {
29
+ const n = a.createObjectStore(o, {
30
+ keyPath: "key"
31
+ });
32
+ n.createIndex("modelName", "modelName", { unique: !1 }), n.createIndex("expiresAt", "expiresAt", { unique: !1 });
33
+ }
34
+ }, t.onsuccess = () => {
35
+ this._database = t.result, e(this._database);
36
+ }, t.onerror = () => {
37
+ this._openPromise = null, s(t.error);
38
+ };
39
+ }), this._openPromise);
40
+ }
41
+ static cacheKey(e, s) {
42
+ return `${e}:${s}`;
43
+ }
44
+ async get(e, s) {
45
+ const t = await this.open();
46
+ return new Promise((a, n) => {
47
+ const r = t.transaction(o, "readonly").objectStore(o).get(u.cacheKey(e, s));
48
+ r.onsuccess = () => {
49
+ const c = r.result;
50
+ if (!c) {
51
+ a(null);
52
+ return;
53
+ }
54
+ if (Date.now() > c.expiresAt) {
55
+ this.invalidate(e, s), a(null);
56
+ return;
57
+ }
58
+ a(c);
59
+ }, r.onerror = () => n(r.error);
60
+ });
61
+ }
62
+ async set(e, s, t, a = {}) {
63
+ const n = await this.open(), d = Date.now(), i = a.ttl ?? this._defaultTTL, r = {
64
+ key: u.cacheKey(e, s),
65
+ modelName: e,
66
+ id: s,
67
+ attributes: t,
68
+ relationships: a.relationships,
69
+ cachedAt: d,
70
+ expiresAt: d + i
71
+ };
72
+ return new Promise((c, p) => {
73
+ const l = n.transaction(o, "readwrite").objectStore(o).put(r);
74
+ l.onsuccess = () => c(), l.onerror = () => p(l.error);
75
+ });
76
+ }
77
+ async has(e, s) {
78
+ return await this.get(e, s) !== null;
79
+ }
80
+ async invalidate(e, s) {
81
+ const t = await this.open();
82
+ return new Promise((a, n) => {
83
+ const r = t.transaction(o, "readwrite").objectStore(o).delete(u.cacheKey(e, s));
84
+ r.onsuccess = () => a(), r.onerror = () => n(r.error);
85
+ });
86
+ }
87
+ async invalidateAll(e) {
88
+ const s = await this.open();
89
+ return e ? new Promise((t, a) => {
90
+ const r = s.transaction(o, "readwrite").objectStore(o).index("modelName").openCursor(IDBKeyRange.only(e));
91
+ r.onsuccess = () => {
92
+ const c = r.result;
93
+ c ? (c.delete(), c.continue()) : t();
94
+ }, r.onerror = () => a(r.error);
95
+ }) : new Promise((t, a) => {
96
+ const i = s.transaction(o, "readwrite").objectStore(o).clear();
97
+ i.onsuccess = () => t(), i.onerror = () => a(i.error);
98
+ });
99
+ }
100
+ async close() {
101
+ this._database && (this._database.close(), this._database = null, this._openPromise = null);
102
+ }
103
+ }
14
104
  export {
15
- e as ATTRIBUTES_META_KEY,
16
- B as Adapter,
17
- l as AdapterPopulatedRecordArray,
18
- d as AsyncBelongsTo,
19
- M as AsyncHasMany,
20
- Y as BaseTransform,
21
- C as BooleanTransform,
22
- v as CacheHandler,
23
- F as DateTransform,
24
- N as EmbeddedRecordsMixin,
25
- i as Errors,
26
- U as FetchHandler,
27
- y as IdentityMap,
28
- w as JsonApiAdapter,
29
- G as JsonApiSerializer,
30
- O as JsonSerializer,
31
- s as MODEL_NAME_META_KEY,
32
- x as ManyArray,
33
- g as MemoryAdapter,
34
- E as Model,
35
- L as NumberTransform,
36
- V as ODataAdapter,
37
- o as RELATIONSHIPS_META_KEY,
38
- h as RecordArray,
39
- j as RequestManager,
40
- I as RestAdapter,
41
- u as RestSerializer,
42
- f as SchemaService,
43
- D as Serializer,
44
- T as Snapshot,
45
- R as StateMachine,
46
- _ as Store,
47
- P as StringTransform,
48
- n as attr,
49
- p as belongsTo,
50
- A as hasMany
105
+ T as ATTRIBUTES_META_KEY,
106
+ k as Adapter,
107
+ I as AdapterPopulatedRecordArray,
108
+ g as AsyncBelongsTo,
109
+ L as AsyncHasMany,
110
+ Z as BaseTransform,
111
+ ee as BooleanTransform,
112
+ oe as CacheHandler,
113
+ te as DateTransform,
114
+ G as EmbeddedRecordsMixin,
115
+ q as Errors,
116
+ ne as FetchHandler,
117
+ B as IdentityMap,
118
+ u as IndexedDBCache,
119
+ de as JsonApiAdapter,
120
+ ue as JsonApiSerializer,
121
+ Q as JsonSerializer,
122
+ b as MODEL_NAME_META_KEY,
123
+ D as ManyArray,
124
+ C as MemoryAdapter,
125
+ H as Model,
126
+ se as NumberTransform,
127
+ pe as ODataAdapter,
128
+ _ as RELATIONSHIPS_META_KEY,
129
+ me as RESPONSE_HEADERS,
130
+ J as RecordArray,
131
+ ce as RequestManager,
132
+ Y as RestAdapter,
133
+ W as RestSerializer,
134
+ P as SchemaService,
135
+ $ as Serializer,
136
+ K as Snapshot,
137
+ O as StateMachine,
138
+ z as Store,
139
+ ae as StringTransform,
140
+ Ae as attachResponseHeaders,
141
+ E as attr,
142
+ R as belongsTo,
143
+ fe as extractResponseHeaders,
144
+ w as hasMany,
145
+ ye as parseCacheTTLFromHeaders
51
146
  };
52
147
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/cache/IndexedDBCache.ts"],"sourcesContent":["import type { RelationshipRef } from '@mobx-data/model';\nimport type { CacheEntryData, IndexedDBCacheOptions, CacheLike } from './types.js';\n\nconst STORE_NAME = 'cache-entries';\nconst DATABASE_VERSION = 1;\nconst DEFAULT_TTL = 3_600_000;\n\ninterface StoredEntry extends CacheEntryData {\n key: string;\n}\n\nexport class IndexedDBCache implements CacheLike {\n private _databaseName: string;\n\n private _defaultTTL: number;\n\n private _database: IDBDatabase | null = null;\n\n private _openPromise: Promise<IDBDatabase> | null = null;\n\n constructor(options: IndexedDBCacheOptions = {}) {\n this._databaseName = options.databaseName ?? 'mobx-data-cache';\n this._defaultTTL = options.defaultTTL ?? DEFAULT_TTL;\n }\n\n get defaultTTL(): number {\n return this._defaultTTL;\n }\n\n private async open(): Promise<IDBDatabase> {\n if (this._database) {\n return this._database;\n }\n if (this._openPromise) {\n return this._openPromise;\n }\n\n this._openPromise = new Promise<IDBDatabase>((resolve, reject) => {\n const request = indexedDB.open(this._databaseName, DATABASE_VERSION);\n request.onupgradeneeded = () => {\n const database = request.result;\n if (!database.objectStoreNames.contains(STORE_NAME)) {\n const store = database.createObjectStore(STORE_NAME, {\n keyPath: 'key',\n });\n store.createIndex('modelName', 'modelName', { unique: false });\n store.createIndex('expiresAt', 'expiresAt', { unique: false });\n }\n };\n request.onsuccess = () => {\n this._database = request.result;\n resolve(this._database);\n };\n request.onerror = () => {\n this._openPromise = null;\n reject(request.error);\n };\n });\n return this._openPromise;\n }\n\n static cacheKey(modelName: string, id: string): string {\n return `${modelName}:${id}`;\n }\n\n async get(modelName: string, id: string): Promise<CacheEntryData | null> {\n const database = await this.open();\n return new Promise((resolve, reject) => {\n const transaction = database.transaction(STORE_NAME, 'readonly');\n const store = transaction.objectStore(STORE_NAME);\n const request = store.get(IndexedDBCache.cacheKey(modelName, id));\n request.onsuccess = () => {\n const entry = request.result as StoredEntry | undefined;\n if (!entry) {\n resolve(null);\n return;\n }\n if (Date.now() > entry.expiresAt) {\n this.invalidate(modelName, id);\n resolve(null);\n return;\n }\n resolve(entry);\n };\n request.onerror = () => reject(request.error);\n });\n }\n\n async set(\n modelName: string,\n id: string,\n attributes: Record<string, unknown>,\n options: {\n relationships?: Record<string, RelationshipRef>;\n ttl?: number;\n } = {},\n ): Promise<void> {\n const database = await this.open();\n const now = Date.now();\n const ttl = options.ttl ?? this._defaultTTL;\n const entry: StoredEntry = {\n key: IndexedDBCache.cacheKey(modelName, id),\n modelName,\n id,\n attributes,\n relationships: options.relationships,\n cachedAt: now,\n expiresAt: now + ttl,\n };\n return new Promise((resolve, reject) => {\n const transaction = database.transaction(STORE_NAME, 'readwrite');\n const store = transaction.objectStore(STORE_NAME);\n const request = store.put(entry);\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n\n async has(modelName: string, id: string): Promise<boolean> {\n const entry = await this.get(modelName, id);\n return entry !== null;\n }\n\n async invalidate(modelName: string, id: string): Promise<void> {\n const database = await this.open();\n return new Promise((resolve, reject) => {\n const transaction = database.transaction(STORE_NAME, 'readwrite');\n const store = transaction.objectStore(STORE_NAME);\n const request = store.delete(IndexedDBCache.cacheKey(modelName, id));\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n\n async invalidateAll(modelName?: string): Promise<void> {\n const database = await this.open();\n if (!modelName) {\n return new Promise((resolve, reject) => {\n const transaction = database.transaction(STORE_NAME, 'readwrite');\n const store = transaction.objectStore(STORE_NAME);\n const request = store.clear();\n request.onsuccess = () => resolve();\n request.onerror = () => reject(request.error);\n });\n }\n return new Promise((resolve, reject) => {\n const transaction = database.transaction(STORE_NAME, 'readwrite');\n const store = transaction.objectStore(STORE_NAME);\n const index = store.index('modelName');\n const cursorRequest = index.openCursor(IDBKeyRange.only(modelName));\n cursorRequest.onsuccess = () => {\n const cursor = cursorRequest.result;\n if (cursor) {\n cursor.delete();\n cursor.continue();\n } else {\n resolve();\n }\n };\n cursorRequest.onerror = () => reject(cursorRequest.error);\n });\n }\n\n async close(): Promise<void> {\n if (this._database) {\n this._database.close();\n this._database = null;\n this._openPromise = null;\n }\n }\n}\n"],"names":["STORE_NAME","DATABASE_VERSION","DEFAULT_TTL","IndexedDBCache","options","resolve","reject","request","database","store","modelName","id","entry","attributes","now","ttl","cursorRequest","cursor"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../JsonApiSerializer-CKB02AgP.cjs");Object.defineProperty(exports,"JsonApiAdapter",{enumerable:!0,get:()=>e.JsonApiAdapter});Object.defineProperty(exports,"JsonApiSerializer",{enumerable:!0,get:()=>e.JsonApiSerializer});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../JsonApiSerializer-DKemcyw-.cjs");Object.defineProperty(exports,"JsonApiAdapter",{enumerable:!0,get:()=>e.JsonApiAdapter});Object.defineProperty(exports,"JsonApiSerializer",{enumerable:!0,get:()=>e.JsonApiSerializer});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- import { J as e, a as i } from "../JsonApiSerializer-CC5HXp4b.js";
1
+ import { J as e, a as i } from "../JsonApiSerializer-BLoE046A.js";
2
2
  export {
3
3
  e as JsonApiAdapter,
4
4
  i as JsonApiSerializer
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../ODataAdapter-DyyF1sdA.cjs");Object.defineProperty(exports,"ODataAdapter",{enumerable:!0,get:()=>e.ODataAdapter});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../ODataAdapter-CrDFvBEZ.cjs");Object.defineProperty(exports,"ODataAdapter",{enumerable:!0,get:()=>e.ODataAdapter});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- import { O as t } from "../ODataAdapter-C4IHK4BK.js";
1
+ import { O as t } from "../ODataAdapter-RQUjVTcf.js";
2
2
  export {
3
3
  t as ODataAdapter
4
4
  };
@@ -36,6 +36,7 @@
36
36
  */
37
37
  import { SchemaService, type RelationshipDef, type AttributeDef } from '@mobx-data/schema';
38
38
  import { Model, type RelationshipRef, type ModelStoreLike, type SaveOptions } from '@mobx-data/model';
39
+ import type { CacheLike } from '../cache/types.js';
39
40
  import { IdentityMap } from './IdentityMap.js';
40
41
  import { RecordArray, AdapterPopulatedRecordArray } from './RecordArray.js';
41
42
  /** Options forwarded from the Store to adapter fetch methods. */
@@ -127,11 +128,15 @@ export declare class Store implements ModelStoreLike {
127
128
  private relationshipCache;
128
129
  /** Tracks new records that have been appended to a hasMany but not yet saved. */
129
130
  private pendingMembers;
131
+ /** Optional persistent cache layer (e.g. IndexedDB). */
132
+ private _cache;
130
133
  constructor(schema: SchemaService);
131
134
  /** Registers an adapter for a given model name (or `'application'` as a fallback). */
132
135
  registerAdapter(modelName: string, adapter: AdapterLike): void;
133
136
  /** Registers a serializer for a given model name (or `'application'` as a fallback). */
134
137
  registerSerializer(modelName: string, serializer: SerializerLike): void;
138
+ /** Registers a persistent cache layer (e.g. IndexedDB) for offline-first reads. */
139
+ registerCache(cache: CacheLike): void;
135
140
  /**
136
141
  * Returns the adapter for `modelName`, falling back to `'application'`.
137
142
  * @throws when no adapter is registered.
@@ -305,6 +310,7 @@ export declare class Store implements ModelStoreLike {
305
310
  * the inverse. Pending members are removed from the pending set.
306
311
  */
307
312
  _hasManyRemove(record: Model, name: string, meta: RelationshipDef, value: Model): void;
313
+ private cacheNormalizedDocument;
308
314
  private coalescePending;
309
315
  private coalesceScheduled;
310
316
  private scheduleCoalescedFind;
@@ -1 +1 @@
1
- {"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../src/store/Store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../src/store/Store.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../Store-BdwMrbDi.cjs");exports.AdapterPopulatedRecordArray=e.AdapterPopulatedRecordArray;exports.IdentityMap=e.IdentityMap;exports.RecordArray=e.RecordArray;Object.defineProperty(exports,"Store",{enumerable:!0,get:()=>e.Store});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../Store-DX9D0Mmy.cjs");exports.AdapterPopulatedRecordArray=e.AdapterPopulatedRecordArray;exports.IdentityMap=e.IdentityMap;exports.RecordArray=e.RecordArray;Object.defineProperty(exports,"Store",{enumerable:!0,get:()=>e.Store});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,4 +1,4 @@
1
- import { A as e, I as o, R as t, S as d } from "../Store-CZ7Z-Nme.js";
1
+ import { A as e, I as o, R as t, S as d } from "../Store-Bm5JivTc.js";
2
2
  export {
3
3
  e as AdapterPopulatedRecordArray,
4
4
  o as IdentityMap,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iamjulianacosta/mobx-data",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "Ember Data feature-complete clone for MobX",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -123,6 +123,7 @@
123
123
  "eslint-config-airbnb-typescript": "^18.0.0",
124
124
  "eslint-import-resolver-typescript": "^3.7.0",
125
125
  "eslint-plugin-import": "^2.31.0",
126
+ "fake-indexeddb": "^6.2.5",
126
127
  "mobx": "^6.13.5",
127
128
  "nyc": "^18.0.0",
128
129
  "reflect-metadata": "^0.2.2",
@@ -22,6 +22,7 @@
22
22
 
23
23
  import { injectable } from 'tsyringe';
24
24
  import { Adapter, type AdapterSnapshot } from './Adapter.js';
25
+ import { attachResponseHeaders } from '../cache/cache-utils.js';
25
26
 
26
27
  @injectable()
27
28
  export class RestAdapter extends Adapter {
@@ -104,11 +105,20 @@ export class RestAdapter extends Adapter {
104
105
  if (!text) {
105
106
  return null;
106
107
  }
108
+ let result: unknown;
107
109
  try {
108
- return JSON.parse(text);
110
+ result = JSON.parse(text);
109
111
  } catch {
110
- return text;
112
+ result = text;
111
113
  }
114
+ if (result !== null && typeof result === 'object') {
115
+ const headers: Record<string, string> = {};
116
+ response.headers.forEach((value, key) => {
117
+ headers[key.toLowerCase()] = value;
118
+ });
119
+ attachResponseHeaders(result, headers);
120
+ }
121
+ return result;
112
122
  }
113
123
 
114
124
  override async findRecord(