yayson 3.0.0 → 4.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 (57) hide show
  1. package/README.md +586 -67
  2. package/build/legacy.cjs +331 -0
  3. package/build/legacy.d.cts +113 -0
  4. package/build/legacy.d.cts.map +1 -0
  5. package/build/legacy.d.mts +113 -0
  6. package/build/legacy.d.mts.map +1 -0
  7. package/build/legacy.mjs +332 -0
  8. package/build/legacy.mjs.map +1 -0
  9. package/build/symbols-DSjKJ8vh.mjs +26 -0
  10. package/build/symbols-DSjKJ8vh.mjs.map +1 -0
  11. package/build/symbols-nFs99aEX.cjs +61 -0
  12. package/build/types-Do2flKZX.d.mts +129 -0
  13. package/build/types-Do2flKZX.d.mts.map +1 -0
  14. package/build/types-NiKV-lj-.d.cts +129 -0
  15. package/build/types-NiKV-lj-.d.cts.map +1 -0
  16. package/build/utils.cjs +31 -0
  17. package/build/utils.d.cts +11 -0
  18. package/build/utils.d.cts.map +1 -0
  19. package/build/utils.d.mts +11 -0
  20. package/build/utils.d.mts.map +1 -0
  21. package/build/utils.mjs +22 -0
  22. package/build/utils.mjs.map +1 -0
  23. package/build/yayson-3UYKq2H5.d.cts +81 -0
  24. package/build/yayson-3UYKq2H5.d.cts.map +1 -0
  25. package/build/yayson-Ce5uGpgU.d.mts +81 -0
  26. package/build/yayson-Ce5uGpgU.d.mts.map +1 -0
  27. package/build/yayson-CwZg5FNt.mjs +452 -0
  28. package/build/yayson-CwZg5FNt.mjs.map +1 -0
  29. package/build/yayson-l2JKseMH.cjs +468 -0
  30. package/build/yayson.cjs +3 -0
  31. package/build/yayson.d.cts +3 -0
  32. package/build/yayson.d.mts +3 -0
  33. package/build/yayson.mjs +3 -0
  34. package/package.json +72 -28
  35. package/skill/yayson/SKILL.md +233 -0
  36. package/skill/yayson/references/api.md +266 -0
  37. package/.eslintrc.json +0 -28
  38. package/.github/workflows/node.js.yml +0 -30
  39. package/.mocharc.js +0 -15
  40. package/.nvmrc +0 -1
  41. package/RELEASE.md +0 -3
  42. package/babel.config.json +0 -4
  43. package/legacy.js +0 -2
  44. package/prettier.config.js +0 -5
  45. package/src/legacy.js +0 -14
  46. package/src/yayson/adapter.js +0 -18
  47. package/src/yayson/adapters/index.js +0 -1
  48. package/src/yayson/adapters/sequelize.js +0 -11
  49. package/src/yayson/legacy-presenter.js +0 -121
  50. package/src/yayson/legacy-store.js +0 -156
  51. package/src/yayson/presenter.js +0 -198
  52. package/src/yayson/store.js +0 -194
  53. package/src/yayson.js +0 -23
  54. package/tags +0 -59
  55. package/webpack.browser.js +0 -27
  56. package/webpack.common.js +0 -39
  57. package/webpack.dist.js +0 -21
@@ -0,0 +1,129 @@
1
+ //#region src/yayson/adapter.d.ts
2
+ type ModelLike = object;
3
+ declare class Adapter {
4
+ static get(model: ModelLike): Record<string, unknown>;
5
+ static get(model: ModelLike, key: string): unknown;
6
+ static id(model: ModelLike): string | undefined;
7
+ }
8
+ //#endregion
9
+ //#region src/yayson/symbols.d.ts
10
+ declare const TYPE: unique symbol;
11
+ declare const LINKS: unique symbol;
12
+ declare const META: unique symbol;
13
+ declare const REL_LINKS: unique symbol;
14
+ declare const REL_META: unique symbol;
15
+ //#endregion
16
+ //#region src/yayson/schema.d.ts
17
+ /**
18
+ * Interface for Zod-like schema objects.
19
+ * Any schema library that implements `parse` and `safeParse` methods will work.
20
+ */
21
+ interface ZodLikeSchema {
22
+ parse: (data: unknown) => unknown;
23
+ safeParse: (data: unknown) => {
24
+ success: true;
25
+ data: unknown;
26
+ } | {
27
+ success: false;
28
+ error: unknown;
29
+ };
30
+ }
31
+ //#endregion
32
+ //#region src/yayson/types.d.ts
33
+ interface JsonApiLink extends Record<string, unknown> {
34
+ self?: string;
35
+ related?: string;
36
+ }
37
+ interface JsonApiLinks {
38
+ [key: string]: JsonApiLink | string | undefined;
39
+ }
40
+ interface JsonApiResourceIdentifier {
41
+ id: string | number;
42
+ type: string;
43
+ }
44
+ interface JsonApiRelationship {
45
+ data?: JsonApiResourceIdentifier | JsonApiResourceIdentifier[] | null;
46
+ links?: JsonApiLink;
47
+ meta?: Record<string, unknown>;
48
+ }
49
+ interface JsonApiRelationships {
50
+ [key: string]: JsonApiRelationship;
51
+ }
52
+ interface JsonApiResource {
53
+ id?: string | number;
54
+ type: string;
55
+ attributes?: Record<string, unknown> | null;
56
+ relationships?: JsonApiRelationships | null;
57
+ links?: JsonApiLink;
58
+ meta?: Record<string, unknown>;
59
+ }
60
+ interface JsonApiDocument {
61
+ data: JsonApiResource | JsonApiResource[] | null;
62
+ included?: JsonApiResource[];
63
+ links?: JsonApiLinks;
64
+ meta?: Record<string, unknown>;
65
+ }
66
+ interface PresenterOptions {
67
+ meta?: Record<string, unknown>;
68
+ links?: JsonApiLinks;
69
+ include?: boolean;
70
+ }
71
+ interface LegacyPresenterOptions extends PresenterOptions {
72
+ defaultPlural?: boolean;
73
+ }
74
+ interface StoreRecord {
75
+ id: string | number;
76
+ type: string;
77
+ attributes?: Record<string, unknown>;
78
+ relationships?: JsonApiRelationships;
79
+ links?: JsonApiLink;
80
+ meta?: Record<string, unknown>;
81
+ }
82
+ interface StoreModel extends Record<string, unknown> {
83
+ id: string | number;
84
+ [TYPE]?: string;
85
+ [LINKS]?: JsonApiLink;
86
+ [META]?: Record<string, unknown>;
87
+ [REL_LINKS]?: JsonApiLink;
88
+ [REL_META]?: Record<string, unknown>;
89
+ }
90
+ /** Model type for create payloads where id may be absent */
91
+ interface StoreModelWithOptionalId extends Record<string, unknown> {
92
+ id?: string | number;
93
+ [TYPE]?: string;
94
+ [LINKS]?: JsonApiLink;
95
+ [META]?: Record<string, unknown>;
96
+ }
97
+ interface StoreModels {
98
+ [type: string]: {
99
+ [id: string]: StoreModel;
100
+ };
101
+ }
102
+ interface SchemaRegistry {
103
+ [type: string]: ZodLikeSchema;
104
+ }
105
+ type InferSchemaType<Schema> = Schema extends {
106
+ parse: (data: unknown) => infer ParsedType;
107
+ safeParse: (data: unknown) => unknown;
108
+ } ? ParsedType : unknown;
109
+ type InferModelType<Registry, TypeName extends string> = Registry extends SchemaRegistry ? TypeName extends keyof Registry ? InferSchemaType<Registry[TypeName]> : StoreModel : StoreModel;
110
+ interface StoreResult<T = StoreModel> extends Array<T> {
111
+ [META]?: Record<string, unknown>;
112
+ }
113
+ interface StoreOptions<S extends SchemaRegistry = SchemaRegistry> {
114
+ schemas?: S;
115
+ strict?: boolean;
116
+ }
117
+ interface ValidationError {
118
+ type: string;
119
+ id: string | number;
120
+ error: unknown;
121
+ }
122
+ interface LegacyStoreOptions<S extends SchemaRegistry = SchemaRegistry> {
123
+ types?: Record<string, string>;
124
+ schemas?: S;
125
+ strict?: boolean;
126
+ }
127
+ //#endregion
128
+ export { REL_META as C, ModelLike as E, REL_LINKS as S, Adapter as T, StoreResult as _, JsonApiRelationship as a, LINKS as b, LegacyPresenterOptions as c, SchemaRegistry as d, StoreModel as f, StoreRecord as g, StoreOptions as h, JsonApiLinks as i, LegacyStoreOptions as l, StoreModels as m, JsonApiDocument as n, JsonApiRelationships as o, StoreModelWithOptionalId as p, JsonApiLink as r, JsonApiResource as s, InferModelType as t, PresenterOptions as u, ValidationError as v, TYPE as w, META as x, ZodLikeSchema as y };
129
+ //# sourceMappingURL=types-NiKV-lj-.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-NiKV-lj-.d.cts","names":[],"sources":["../../../../../../yayson/adapter.ts","../../../../../../yayson/symbols.ts","../../../../../../yayson/schema.ts","../../../../../../yayson/types.ts"],"mappings":";KAAY,SAAA;AAAA,cAEN,OAAA;EAAA,OACG,GAAA,CAAI,KAAA,EAAO,SAAA,GAAY,MAAA;EAAA,OACvB,GAAA,CAAI,KAAA,EAAO,SAAA,EAAW,GAAA;EAAA,OAUtB,EAAA,CAAG,KAAA,EAAO,SAAA;AAAA;;;cCdN,IAAA;AAAA,cACA,KAAA;AAAA,cACA,IAAA;AAAA,cACA,SAAA;AAAA,cACA,QAAA;;;;ADJb;;;UEIiB,aAAA;EACf,KAAA,GAAQ,IAAA;EACR,SAAA,GAAY,IAAA;IAAoB,OAAA;IAAe,IAAA;EAAA;IAAoB,OAAA;IAAgB,KAAA;EAAA;AAAA;;;UCHpE,WAAA,SAAoB,MAAA;EACnC,IAAA;EACA,OAAA;AAAA;AAAA,UAGe,YAAA;EAAA,CACd,GAAA,WAAc,WAAA;AAAA;AAAA,UAGA,yBAAA;EACf,EAAA;EACA,IAAA;AAAA;AAAA,UAGe,mBAAA;EACf,IAAA,GAAO,yBAAA,GAA4B,yBAAA;EACnC,KAAA,GAAQ,WAAA;EACR,IAAA,GAAO,MAAA;AAAA;AAAA,UAGQ,oBAAA;EAAA,CACd,GAAA,WAAc,mBAAA;AAAA;AAAA,UAGA,eAAA;EACf,EAAA;EACA,IAAA;EACA,UAAA,GAAa,MAAA;EACb,aAAA,GAAgB,oBAAA;EAChB,KAAA,GAAQ,WAAA;EACR,IAAA,GAAO,MAAA;AAAA;AAAA,UAGQ,eAAA;EACf,IAAA,EAAM,eAAA,GAAkB,eAAA;EACxB,QAAA,GAAW,eAAA;EACX,KAAA,GAAQ,YAAA;EACR,IAAA,GAAO,MAAA;AAAA;AAAA,UAGQ,gBAAA;EACf,IAAA,GAAO,MAAA;EACP,KAAA,GAAQ,YAAA;EACR,OAAA;AAAA;AAAA,UAGe,sBAAA,SAA+B,gBAAA;EAC9C,aAAA;AAAA;AAAA,UAGe,WAAA;EACf,EAAA;EACA,IAAA;EACA,UAAA,GAAa,MAAA;EACb,aAAA,GAAgB,oBAAA;EAChB,KAAA,GAAQ,WAAA;EACR,IAAA,GAAO,MAAA;AAAA;AAAA,UAGQ,UAAA,SAAmB,MAAA;EAClC,EAAA;EAAA,CACC,IAAA;EAAA,CACA,KAAA,IAAS,WAAA;EAAA,CACT,IAAA,IAAQ,MAAA;EAAA,CACR,SAAA,IAAa,WAAA;EAAA,CACb,QAAA,IAAY,MAAA;AAAA;ADhEf;AAAA,UCoEiB,wBAAA,SAAiC,MAAA;EAChD,EAAA;EAAA,CACC,IAAA;EAAA,CACA,KAAA,IAAS,WAAA;EAAA,CACT,IAAA,IAAQ,MAAA;AAAA;AAAA,UAGM,WAAA;EAAA,CACd,IAAA;IAAA,CACE,EAAA,WAAa,UAAA;EAAA;AAAA;AAAA,UAID,cAAA;EAAA,CACd,IAAA,WAAe,aAAA;AAAA;AAAA,KAIN,eAAA,WAA0B,MAAA;EACpC,KAAA,GAAQ,IAAA;EACR,SAAA,GAAY,IAAA;AAAA,IAEV,UAAA;AAAA,KAGQ,cAAA,sCAAoD,QAAA,SAAiB,cAAA,GAC7E,QAAA,eAAuB,QAAA,GACrB,eAAA,CAAgB,QAAA,CAAS,QAAA,KACzB,UAAA,GACF,UAAA;AAAA,UAEa,WAAA,KAAgB,UAAA,UAAoB,KAAA,CAAM,CAAA;EAAA,CACxD,IAAA,IAAQ,MAAA;AAAA;AAAA,UAGM,YAAA,WAAuB,cAAA,GAAiB,cAAA;EACvD,OAAA,GAAU,CAAA;EACV,MAAA;AAAA;AAAA,UAGe,eAAA;EACf,IAAA;EACA,EAAA;EACA,KAAA;AAAA;AAAA,UAGe,kBAAA,WAA6B,cAAA,GAAiB,cAAA;EAC7D,KAAA,GAAQ,MAAA;EACR,OAAA,GAAU,CAAA;EACV,MAAA;AAAA"}
@@ -0,0 +1,31 @@
1
+ const require_symbols = require('./symbols-nFs99aEX.cjs');
2
+
3
+ //#region src/utils.ts
4
+ function getType(model) {
5
+ return model[require_symbols.TYPE];
6
+ }
7
+ function getLinks(model) {
8
+ return model[require_symbols.LINKS];
9
+ }
10
+ function getMeta(model) {
11
+ return model[require_symbols.META];
12
+ }
13
+ function getRelationshipLinks(model) {
14
+ return model[require_symbols.REL_LINKS];
15
+ }
16
+ function getRelationshipMeta(model) {
17
+ return model[require_symbols.REL_META];
18
+ }
19
+
20
+ //#endregion
21
+ exports.Adapter = require_symbols.adapter_default;
22
+ exports.LINKS = require_symbols.LINKS;
23
+ exports.META = require_symbols.META;
24
+ exports.REL_LINKS = require_symbols.REL_LINKS;
25
+ exports.REL_META = require_symbols.REL_META;
26
+ exports.TYPE = require_symbols.TYPE;
27
+ exports.getLinks = getLinks;
28
+ exports.getMeta = getMeta;
29
+ exports.getRelationshipLinks = getRelationshipLinks;
30
+ exports.getRelationshipMeta = getRelationshipMeta;
31
+ exports.getType = getType;
@@ -0,0 +1,11 @@
1
+ import { C as REL_META, E as ModelLike, S as REL_LINKS, T as Adapter, b as LINKS, f as StoreModel, r as JsonApiLink, w as TYPE, x as META } from "./types-NiKV-lj-.cjs";
2
+
3
+ //#region src/utils.d.ts
4
+ declare function getType(model: StoreModel): string | undefined;
5
+ declare function getLinks(model: StoreModel): JsonApiLink | undefined;
6
+ declare function getMeta(model: StoreModel): Record<string, unknown> | undefined;
7
+ declare function getRelationshipLinks(model: StoreModel): JsonApiLink | undefined;
8
+ declare function getRelationshipMeta(model: StoreModel): Record<string, unknown> | undefined;
9
+ //#endregion
10
+ export { Adapter, LINKS, META, type ModelLike, REL_LINKS, REL_META, TYPE, getLinks, getMeta, getRelationshipLinks, getRelationshipMeta, getType };
11
+ //# sourceMappingURL=utils.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.cts","names":[],"sources":["../../../../../../utils.ts"],"mappings":";;;iBAMgB,OAAA,CAAQ,KAAA,EAAO,UAAA;AAAA,iBAIf,QAAA,CAAS,KAAA,EAAO,UAAA,GAAa,WAAA;AAAA,iBAI7B,OAAA,CAAQ,KAAA,EAAO,UAAA,GAAa,MAAA;AAAA,iBAI5B,oBAAA,CAAqB,KAAA,EAAO,UAAA,GAAa,WAAA;AAAA,iBAIzC,mBAAA,CAAoB,KAAA,EAAO,UAAA,GAAa,MAAA"}
@@ -0,0 +1,11 @@
1
+ import { C as REL_META, E as ModelLike, S as REL_LINKS, T as Adapter, b as LINKS, f as StoreModel, r as JsonApiLink, w as TYPE, x as META } from "./types-Do2flKZX.mjs";
2
+
3
+ //#region src/utils.d.ts
4
+ declare function getType(model: StoreModel): string | undefined;
5
+ declare function getLinks(model: StoreModel): JsonApiLink | undefined;
6
+ declare function getMeta(model: StoreModel): Record<string, unknown> | undefined;
7
+ declare function getRelationshipLinks(model: StoreModel): JsonApiLink | undefined;
8
+ declare function getRelationshipMeta(model: StoreModel): Record<string, unknown> | undefined;
9
+ //#endregion
10
+ export { Adapter, LINKS, META, type ModelLike, REL_LINKS, REL_META, TYPE, getLinks, getMeta, getRelationshipLinks, getRelationshipMeta, getType };
11
+ //# sourceMappingURL=utils.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.mts","names":[],"sources":["../../../../../../utils.ts"],"mappings":";;;iBAMgB,OAAA,CAAQ,KAAA,EAAO,UAAA;AAAA,iBAIf,QAAA,CAAS,KAAA,EAAO,UAAA,GAAa,WAAA;AAAA,iBAI7B,OAAA,CAAQ,KAAA,EAAO,UAAA,GAAa,MAAA;AAAA,iBAI5B,oBAAA,CAAqB,KAAA,EAAO,UAAA,GAAa,WAAA;AAAA,iBAIzC,mBAAA,CAAoB,KAAA,EAAO,UAAA,GAAa,MAAA"}
@@ -0,0 +1,22 @@
1
+ import { a as TYPE, i as REL_META, n as META, o as adapter_default, r as REL_LINKS, t as LINKS } from "./symbols-DSjKJ8vh.mjs";
2
+
3
+ //#region src/utils.ts
4
+ function getType(model) {
5
+ return model[TYPE];
6
+ }
7
+ function getLinks(model) {
8
+ return model[LINKS];
9
+ }
10
+ function getMeta(model) {
11
+ return model[META];
12
+ }
13
+ function getRelationshipLinks(model) {
14
+ return model[REL_LINKS];
15
+ }
16
+ function getRelationshipMeta(model) {
17
+ return model[REL_META];
18
+ }
19
+
20
+ //#endregion
21
+ export { adapter_default as Adapter, LINKS, META, REL_LINKS, REL_META, TYPE, getLinks, getMeta, getRelationshipLinks, getRelationshipMeta, getType };
22
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.mjs","names":[],"sources":["../src/utils.ts"],"sourcesContent":["import { TYPE, LINKS, META, REL_LINKS, REL_META } from './yayson/symbols.js'\nimport type { StoreModel, JsonApiLink } from './yayson/types.js'\n\nexport { default as Adapter, type ModelLike } from './yayson/adapter.js'\nexport { TYPE, LINKS, META, REL_LINKS, REL_META }\n\nexport function getType(model: StoreModel): string | undefined {\n return model[TYPE]\n}\n\nexport function getLinks(model: StoreModel): JsonApiLink | undefined {\n return model[LINKS]\n}\n\nexport function getMeta(model: StoreModel): Record<string, unknown> | undefined {\n return model[META]\n}\n\nexport function getRelationshipLinks(model: StoreModel): JsonApiLink | undefined {\n return model[REL_LINKS]\n}\n\nexport function getRelationshipMeta(model: StoreModel): Record<string, unknown> | undefined {\n return model[REL_META]\n}\n"],"mappings":";;;AAMA,SAAgB,QAAQ,OAAuC;AAC7D,QAAO,MAAM;;AAGf,SAAgB,SAAS,OAA4C;AACnE,QAAO,MAAM;;AAGf,SAAgB,QAAQ,OAAwD;AAC9E,QAAO,MAAM;;AAGf,SAAgB,qBAAqB,OAA4C;AAC/E,QAAO,MAAM;;AAGf,SAAgB,oBAAoB,OAAwD;AAC1F,QAAO,MAAM"}
@@ -0,0 +1,81 @@
1
+ import { E as ModelLike, T as Adapter, _ as StoreResult, d as SchemaRegistry, f as StoreModel, g as StoreRecord$1, h as StoreOptions, i as JsonApiLinks, m as StoreModels, n as JsonApiDocument, o as JsonApiRelationships, p as StoreModelWithOptionalId, r as JsonApiLink, t as InferModelType, u as PresenterOptions, v as ValidationError } from "./types-NiKV-lj-.cjs";
2
+
3
+ //#region src/yayson/presenter.d.ts
4
+ declare function createPresenter(adapter: typeof Adapter): {
5
+ new (scope?: JsonApiDocument): {
6
+ constructor: /*elided*/any;
7
+ scope: JsonApiDocument;
8
+ id(instance: ModelLike): string | undefined;
9
+ selfLinks(_instance: ModelLike): JsonApiLink | string | undefined;
10
+ links(_instance?: ModelLike): JsonApiLinks | undefined;
11
+ relationships(): Record<string, /*elided*/any>;
12
+ attributes(instance: ModelLike | null): Record<string, unknown>;
13
+ includeRelationships(scope: JsonApiDocument, instance: ModelLike): unknown[];
14
+ buildRelationships(instance: ModelLike | null): JsonApiRelationships | null;
15
+ buildSelfLink(instance: ModelLike): JsonApiLink | undefined;
16
+ toJSON(instanceOrCollection: ModelLike | ModelLike[] | null | undefined, options?: PresenterOptions): JsonApiDocument;
17
+ payload(instance: ModelLike, options?: PresenterOptions): JsonApiDocument;
18
+ render(instanceOrCollection: ModelLike | ModelLike[] | null, options?: PresenterOptions): JsonApiDocument;
19
+ };
20
+ adapter: typeof Adapter;
21
+ type: string;
22
+ fields?: string[];
23
+ toJSON(instanceOrCollection: ModelLike | ModelLike[] | null, options?: PresenterOptions): JsonApiDocument;
24
+ render(instanceOrCollection: ModelLike | ModelLike[] | null, options?: PresenterOptions): JsonApiDocument;
25
+ payload(instance: ModelLike, options?: PresenterOptions): JsonApiDocument;
26
+ };
27
+ type Presenter = ReturnType<typeof createPresenter>;
28
+ //#endregion
29
+ //#region src/yayson/store.d.ts
30
+ declare class StoreRecord implements StoreRecord$1 {
31
+ id: string | number;
32
+ type: string;
33
+ attributes?: Record<string, unknown>;
34
+ relationships?: JsonApiRelationships;
35
+ links?: JsonApiLink;
36
+ meta?: Record<string, unknown>;
37
+ constructor(options: StoreRecord$1);
38
+ }
39
+ declare class Store<S extends SchemaRegistry = SchemaRegistry> {
40
+ #private;
41
+ records: StoreRecord[];
42
+ schemas?: S;
43
+ strict: boolean;
44
+ validationErrors: ValidationError[];
45
+ constructor(options?: StoreOptions<S>);
46
+ reset(): void;
47
+ toModel(rec: StoreRecord, type: string, models: StoreModels): StoreModel;
48
+ findRecord(type: string, id: string | number): StoreRecord | undefined;
49
+ findRecords(type: string): StoreRecord[];
50
+ find<T extends string>(type: T, id: string | number, models?: StoreModels): InferModelType<S, T> | null;
51
+ findAll<T extends string>(type: T, models?: StoreModels): InferModelType<S, T>[];
52
+ remove(type: string, id?: string | number): void;
53
+ syncAll(body: JsonApiDocument): StoreResult;
54
+ sync(body: JsonApiDocument): StoreModel | StoreResult;
55
+ /**
56
+ * Build a model from a JSON:API document without storing it.
57
+ * Useful for create payloads where id may be absent.
58
+ *
59
+ * Per JSON:API spec: "The id member is not required when the resource object
60
+ * originates at the client and represents a new resource to be created on the server."
61
+ */
62
+ static build(body: JsonApiDocument): StoreModelWithOptionalId;
63
+ build(body: JsonApiDocument): StoreModelWithOptionalId;
64
+ retrieve<T extends string>(type: T, body: JsonApiDocument): InferModelType<S, T> | null;
65
+ retrieveAll<T extends string>(type: T, body: JsonApiDocument): StoreResult<InferModelType<S, T>>;
66
+ }
67
+ //#endregion
68
+ //#region src/yayson.d.ts
69
+ type AdapterOption = string | typeof Adapter;
70
+ interface YaysonOptions {
71
+ adapter?: AdapterOption;
72
+ }
73
+ interface YaysonResult {
74
+ Store: typeof Store;
75
+ Presenter: Presenter;
76
+ Adapter: typeof Adapter;
77
+ }
78
+ declare function yayson(options?: YaysonOptions): YaysonResult;
79
+ //#endregion
80
+ export { Presenter as i, YaysonResult as n, yayson as r, YaysonOptions as t };
81
+ //# sourceMappingURL=yayson-3UYKq2H5.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yayson-3UYKq2H5.d.cts","names":[],"sources":["../../../../../../yayson/presenter.ts","../../../../../../yayson/store.ts","../../../../../../yayson.ts"],"mappings":";;;iBAyBwB,eAAA,CAAgB,OAAA,SAAgB,OAAA;EAAA,aAUhC,eAAA;iBAVe;WAQ5B,eAAA;iBAMM,SAAA;yBAIQ,SAAA,GAAY,WAAA;sBAIf,SAAA,GAAY,YAAA;qBAIb,MAAA,SAZJ;yBAgBQ,SAAA,UAAmB,MAAA;gCAiBZ,eAAA,EAAe,QAAA,EAAY,SAAA;iCAoB1B,SAAA,UAAmB,oBAAA;4BA0DxB,SAAA,GAAY,WAAA;iCAKZ,SAAA,GAAY,SAAA,uBAA8B,OAAA,GACtD,gBAAA,GACT,eAAA;sBA8Ee,SAAA,EAAS,OAAA,GAAY,gBAAA,GAAmB,eAAA;iCA0B7B,SAAA,GAAY,SAAA,WAAkB,OAAA,GAAY,gBAAA,GAAmB,eAAA;EAAA;;;;+BAItD,SAAA,GAAY,SAAA,WAAkB,OAAA,GAAY,gBAAA,GAAmB,eAAA;+BAI7D,SAAA,GAAY,SAAA,WAAkB,OAAA,GAAY,gBAAA,GAAmB,eAAA;oBAIxE,SAAA,EAAS,OAAA,GAAY,gBAAA,GAAmB,eAAA;AAAA;AAAA,KAQzD,SAAA,GAAY,UAAA,QAAkB,eAAA;;;cCnQpC,WAAA,YAAuB,aAAA;EAC3B,EAAA;EACA,IAAA;EACA,UAAA,GAAa,MAAA;EACb,aAAA,GAAgB,oBAAA;EAChB,KAAA,GAAQ,WAAA;EACR,IAAA,GAAO,MAAA;cAEK,OAAA,EAAS,aAAA;AAAA;AAAA,cAUF,KAAA,WAAgB,cAAA,GAAiB,cAAA;EAAA;EACpD,OAAA,EAAS,WAAA;EACT,OAAA,GAAU,CAAA;EACV,MAAA;EACA,gBAAA,EAAkB,eAAA;cAEN,OAAA,GAAU,YAAA,CAAa,CAAA;EAMnC,KAAA,CAAA;EAmGA,OAAA,CAAQ,GAAA,EAAK,WAAA,EAAa,IAAA,UAAc,MAAA,EAAQ,WAAA,GAAc,UAAA;EA+B9D,UAAA,CAAW,IAAA,UAAc,EAAA,oBAAsB,WAAA;EAK/C,WAAA,CAAY,IAAA,WAAe,WAAA;EAiB3B,IAAA,kBAAA,CAAuB,IAAA,EAAM,CAAA,EAAG,EAAA,mBAAqB,MAAA,GAAS,WAAA,GAAc,cAAA,CAAe,CAAA,EAAG,CAAA;EAM9F,OAAA,kBAAA,CAA0B,IAAA,EAAM,CAAA,EAAG,MAAA,GAAS,WAAA,GAAc,cAAA,CAAe,CAAA,EAAG,CAAA;EAgB5E,MAAA,CAAO,IAAA,UAAc,EAAA;EAkBrB,OAAA,CAAQ,IAAA,EAAM,eAAA,GAAkB,WAAA;EA8DhC,IAAA,CAAK,IAAA,EAAM,eAAA,GAAkB,UAAA,GAAa,WAAA;EDrJrC;;;;;;;EAAA,OCwKE,KAAA,CAAM,IAAA,EAAM,eAAA,GAAkB,wBAAA;EAIrC,KAAA,CAAM,IAAA,EAAM,eAAA,GAAkB,wBAAA;EAQ9B,QAAA,kBAAA,CAA2B,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,eAAA,GAAkB,cAAA,CAAe,CAAA,EAAG,CAAA;EAW9E,WAAA,kBAAA,CAA8B,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,eAAA,GAAkB,WAAA,CAAY,cAAA,CAAe,CAAA,EAAG,CAAA;AAAA;;;KCzU1F,aAAA,mBAAgC,OAAA;AAAA,UAE3B,aAAA;EACR,OAAA,GAAU,aAAA;AAAA;AAAA,UAGF,YAAA;EACR,KAAA,SAAc,KAAA;EACd,SAAA,EAAW,SAAA;EACX,OAAA,SAAgB,OAAA;AAAA;AAAA,iBAgBT,MAAA,CAAO,OAAA,GAAU,aAAA,GAAgB,YAAA"}
@@ -0,0 +1,81 @@
1
+ import { E as ModelLike, T as Adapter, _ as StoreResult, d as SchemaRegistry, f as StoreModel, g as StoreRecord$1, h as StoreOptions, i as JsonApiLinks, m as StoreModels, n as JsonApiDocument, o as JsonApiRelationships, p as StoreModelWithOptionalId, r as JsonApiLink, t as InferModelType, u as PresenterOptions, v as ValidationError } from "./types-Do2flKZX.mjs";
2
+
3
+ //#region src/yayson/presenter.d.ts
4
+ declare function createPresenter(adapter: typeof Adapter): {
5
+ new (scope?: JsonApiDocument): {
6
+ constructor: /*elided*/any;
7
+ scope: JsonApiDocument;
8
+ id(instance: ModelLike): string | undefined;
9
+ selfLinks(_instance: ModelLike): JsonApiLink | string | undefined;
10
+ links(_instance?: ModelLike): JsonApiLinks | undefined;
11
+ relationships(): Record<string, /*elided*/any>;
12
+ attributes(instance: ModelLike | null): Record<string, unknown>;
13
+ includeRelationships(scope: JsonApiDocument, instance: ModelLike): unknown[];
14
+ buildRelationships(instance: ModelLike | null): JsonApiRelationships | null;
15
+ buildSelfLink(instance: ModelLike): JsonApiLink | undefined;
16
+ toJSON(instanceOrCollection: ModelLike | ModelLike[] | null | undefined, options?: PresenterOptions): JsonApiDocument;
17
+ payload(instance: ModelLike, options?: PresenterOptions): JsonApiDocument;
18
+ render(instanceOrCollection: ModelLike | ModelLike[] | null, options?: PresenterOptions): JsonApiDocument;
19
+ };
20
+ adapter: typeof Adapter;
21
+ type: string;
22
+ fields?: string[];
23
+ toJSON(instanceOrCollection: ModelLike | ModelLike[] | null, options?: PresenterOptions): JsonApiDocument;
24
+ render(instanceOrCollection: ModelLike | ModelLike[] | null, options?: PresenterOptions): JsonApiDocument;
25
+ payload(instance: ModelLike, options?: PresenterOptions): JsonApiDocument;
26
+ };
27
+ type Presenter = ReturnType<typeof createPresenter>;
28
+ //#endregion
29
+ //#region src/yayson/store.d.ts
30
+ declare class StoreRecord implements StoreRecord$1 {
31
+ id: string | number;
32
+ type: string;
33
+ attributes?: Record<string, unknown>;
34
+ relationships?: JsonApiRelationships;
35
+ links?: JsonApiLink;
36
+ meta?: Record<string, unknown>;
37
+ constructor(options: StoreRecord$1);
38
+ }
39
+ declare class Store<S extends SchemaRegistry = SchemaRegistry> {
40
+ #private;
41
+ records: StoreRecord[];
42
+ schemas?: S;
43
+ strict: boolean;
44
+ validationErrors: ValidationError[];
45
+ constructor(options?: StoreOptions<S>);
46
+ reset(): void;
47
+ toModel(rec: StoreRecord, type: string, models: StoreModels): StoreModel;
48
+ findRecord(type: string, id: string | number): StoreRecord | undefined;
49
+ findRecords(type: string): StoreRecord[];
50
+ find<T extends string>(type: T, id: string | number, models?: StoreModels): InferModelType<S, T> | null;
51
+ findAll<T extends string>(type: T, models?: StoreModels): InferModelType<S, T>[];
52
+ remove(type: string, id?: string | number): void;
53
+ syncAll(body: JsonApiDocument): StoreResult;
54
+ sync(body: JsonApiDocument): StoreModel | StoreResult;
55
+ /**
56
+ * Build a model from a JSON:API document without storing it.
57
+ * Useful for create payloads where id may be absent.
58
+ *
59
+ * Per JSON:API spec: "The id member is not required when the resource object
60
+ * originates at the client and represents a new resource to be created on the server."
61
+ */
62
+ static build(body: JsonApiDocument): StoreModelWithOptionalId;
63
+ build(body: JsonApiDocument): StoreModelWithOptionalId;
64
+ retrieve<T extends string>(type: T, body: JsonApiDocument): InferModelType<S, T> | null;
65
+ retrieveAll<T extends string>(type: T, body: JsonApiDocument): StoreResult<InferModelType<S, T>>;
66
+ }
67
+ //#endregion
68
+ //#region src/yayson.d.ts
69
+ type AdapterOption = string | typeof Adapter;
70
+ interface YaysonOptions {
71
+ adapter?: AdapterOption;
72
+ }
73
+ interface YaysonResult {
74
+ Store: typeof Store;
75
+ Presenter: Presenter;
76
+ Adapter: typeof Adapter;
77
+ }
78
+ declare function yayson(options?: YaysonOptions): YaysonResult;
79
+ //#endregion
80
+ export { Presenter as i, YaysonResult as n, yayson as r, YaysonOptions as t };
81
+ //# sourceMappingURL=yayson-Ce5uGpgU.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yayson-Ce5uGpgU.d.mts","names":[],"sources":["../../../../../../yayson/presenter.ts","../../../../../../yayson/store.ts","../../../../../../yayson.ts"],"mappings":";;;iBAyBwB,eAAA,CAAgB,OAAA,SAAgB,OAAA;EAAA,aAUhC,eAAA;iBAVe;WAQ5B,eAAA;iBAMM,SAAA;yBAIQ,SAAA,GAAY,WAAA;sBAIf,SAAA,GAAY,YAAA;qBAIb,MAAA,SAZJ;yBAgBQ,SAAA,UAAmB,MAAA;gCAiBZ,eAAA,EAAe,QAAA,EAAY,SAAA;iCAoB1B,SAAA,UAAmB,oBAAA;4BA0DxB,SAAA,GAAY,WAAA;iCAKZ,SAAA,GAAY,SAAA,uBAA8B,OAAA,GACtD,gBAAA,GACT,eAAA;sBA8Ee,SAAA,EAAS,OAAA,GAAY,gBAAA,GAAmB,eAAA;iCA0B7B,SAAA,GAAY,SAAA,WAAkB,OAAA,GAAY,gBAAA,GAAmB,eAAA;EAAA;;;;+BAItD,SAAA,GAAY,SAAA,WAAkB,OAAA,GAAY,gBAAA,GAAmB,eAAA;+BAI7D,SAAA,GAAY,SAAA,WAAkB,OAAA,GAAY,gBAAA,GAAmB,eAAA;oBAIxE,SAAA,EAAS,OAAA,GAAY,gBAAA,GAAmB,eAAA;AAAA;AAAA,KAQzD,SAAA,GAAY,UAAA,QAAkB,eAAA;;;cCnQpC,WAAA,YAAuB,aAAA;EAC3B,EAAA;EACA,IAAA;EACA,UAAA,GAAa,MAAA;EACb,aAAA,GAAgB,oBAAA;EAChB,KAAA,GAAQ,WAAA;EACR,IAAA,GAAO,MAAA;cAEK,OAAA,EAAS,aAAA;AAAA;AAAA,cAUF,KAAA,WAAgB,cAAA,GAAiB,cAAA;EAAA;EACpD,OAAA,EAAS,WAAA;EACT,OAAA,GAAU,CAAA;EACV,MAAA;EACA,gBAAA,EAAkB,eAAA;cAEN,OAAA,GAAU,YAAA,CAAa,CAAA;EAMnC,KAAA,CAAA;EAmGA,OAAA,CAAQ,GAAA,EAAK,WAAA,EAAa,IAAA,UAAc,MAAA,EAAQ,WAAA,GAAc,UAAA;EA+B9D,UAAA,CAAW,IAAA,UAAc,EAAA,oBAAsB,WAAA;EAK/C,WAAA,CAAY,IAAA,WAAe,WAAA;EAiB3B,IAAA,kBAAA,CAAuB,IAAA,EAAM,CAAA,EAAG,EAAA,mBAAqB,MAAA,GAAS,WAAA,GAAc,cAAA,CAAe,CAAA,EAAG,CAAA;EAM9F,OAAA,kBAAA,CAA0B,IAAA,EAAM,CAAA,EAAG,MAAA,GAAS,WAAA,GAAc,cAAA,CAAe,CAAA,EAAG,CAAA;EAgB5E,MAAA,CAAO,IAAA,UAAc,EAAA;EAkBrB,OAAA,CAAQ,IAAA,EAAM,eAAA,GAAkB,WAAA;EA8DhC,IAAA,CAAK,IAAA,EAAM,eAAA,GAAkB,UAAA,GAAa,WAAA;EDrJrC;;;;;;;EAAA,OCwKE,KAAA,CAAM,IAAA,EAAM,eAAA,GAAkB,wBAAA;EAIrC,KAAA,CAAM,IAAA,EAAM,eAAA,GAAkB,wBAAA;EAQ9B,QAAA,kBAAA,CAA2B,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,eAAA,GAAkB,cAAA,CAAe,CAAA,EAAG,CAAA;EAW9E,WAAA,kBAAA,CAA8B,IAAA,EAAM,CAAA,EAAG,IAAA,EAAM,eAAA,GAAkB,WAAA,CAAY,cAAA,CAAe,CAAA,EAAG,CAAA;AAAA;;;KCzU1F,aAAA,mBAAgC,OAAA;AAAA,UAE3B,aAAA;EACR,OAAA,GAAU,aAAA;AAAA;AAAA,UAGF,YAAA;EACR,KAAA,SAAc,KAAA;EACd,SAAA,EAAW,SAAA;EACX,OAAA,SAAgB,OAAA;AAAA;AAAA,iBAgBT,MAAA,CAAO,OAAA,GAAU,aAAA,GAAgB,YAAA"}