@graffiti-garden/api 1.0.8 → 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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/4-utilities.ts"],
4
- "sourcesContent": ["import type {\n GraffitiObject,\n GraffitiObjectBase,\n GraffitiObjectUrl,\n GraffitiSession,\n} from \"./2-types.js\";\nimport { GraffitiErrorInvalidSchema } from \"./3-errors.js\";\nimport type { JSONSchema } from \"json-schema-to-ts\";\nimport type Ajv from \"ajv\";\n\nexport function unpackObjectUrl(url: string | GraffitiObjectUrl) {\n return typeof url === \"string\" ? url : url.url;\n}\n\nexport function isActorAllowedGraffitiObject(\n object: GraffitiObjectBase,\n session?: GraffitiSession | null,\n) {\n return (\n // If there is no allowed list, the actor is allowed.\n !Array.isArray(object.allowed) ||\n // Otherwise...\n (typeof session?.actor === \"string\" &&\n // The actor must be the creator of the object\n (object.actor === session.actor ||\n // Or be on the allowed list\n object.allowed.includes(session.actor)))\n );\n}\n\nexport function maskGraffitiObject(\n object: GraffitiObjectBase,\n channels: string[],\n actor?: string | null,\n): GraffitiObjectBase {\n // If the actor is the creator, return the object as is\n if (actor === object.actor) return object;\n\n // If there is an allowed list, mask it to only include the actor\n // (This assumes the actor is already allowed to access the object)\n const allowedMasked = object.allowed && actor ? [actor] : undefined;\n // Mask the channels to only include the channels that are being queried\n const channelsMasked = object.channels.filter((c) => channels.includes(c));\n\n return {\n ...object,\n allowed: allowedMasked,\n channels: channelsMasked,\n };\n}\n\nexport function isMediaAcceptable(\n mediaType: string,\n acceptableMediaTypes: string[],\n): boolean {\n const [type, subtype] = mediaType.toLowerCase().split(\";\")[0].split(\"/\");\n\n if (!type || !subtype) return false;\n\n return acceptableMediaTypes.some((acceptable) => {\n const [accType, accSubtype] = acceptable\n .toLowerCase()\n .split(\";\")[0]\n .split(\"/\");\n\n if (!accType || !accSubtype) return false;\n\n return (\n (accType === type || accType === \"*\") &&\n (accSubtype === subtype || accSubtype === \"*\")\n );\n });\n}\n\nlet ajv: Ajv | undefined = undefined;\nexport async function compileGraffitiObjectSchema<Schema extends JSONSchema>(\n schema: Schema,\n) {\n if (!ajv) {\n const { default: Ajv } = await import(\"ajv\");\n ajv = new Ajv({ strict: false });\n }\n\n try {\n // Force the validation guard because\n // it is too big for the type checker.\n // Fortunately json-schema-to-ts is\n // well tested against ajv.\n return ajv.compile(schema) as (\n data: GraffitiObjectBase,\n ) => data is GraffitiObject<Schema>;\n } catch (error) {\n throw new GraffitiErrorInvalidSchema(\n error instanceof Error ? error.message : String(error),\n );\n }\n}\n"],
5
- "mappings": "AAMA,SAAS,kCAAkC;AAIpC,SAAS,gBAAgB,KAAiC;AAC/D,SAAO,OAAO,QAAQ,WAAW,MAAM,IAAI;AAC7C;AAEO,SAAS,6BACd,QACA,SACA;AACA;AAAA;AAAA,IAEE,CAAC,MAAM,QAAQ,OAAO,OAAO;AAAA,IAE5B,OAAO,SAAS,UAAU;AAAA,KAExB,OAAO,UAAU,QAAQ;AAAA,IAExB,OAAO,QAAQ,SAAS,QAAQ,KAAK;AAAA;AAE7C;AAEO,SAAS,mBACd,QACA,UACA,OACoB;AAEpB,MAAI,UAAU,OAAO,MAAO,QAAO;AAInC,QAAM,gBAAgB,OAAO,WAAW,QAAQ,CAAC,KAAK,IAAI;AAE1D,QAAM,iBAAiB,OAAO,SAAS,OAAO,CAAC,MAAM,SAAS,SAAS,CAAC,CAAC;AAEzE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AACF;AAEO,SAAS,kBACd,WACA,sBACS;AACT,QAAM,CAAC,MAAM,OAAO,IAAI,UAAU,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG;AAEvE,MAAI,CAAC,QAAQ,CAAC,QAAS,QAAO;AAE9B,SAAO,qBAAqB,KAAK,CAAC,eAAe;AAC/C,UAAM,CAAC,SAAS,UAAU,IAAI,WAC3B,YAAY,EACZ,MAAM,GAAG,EAAE,CAAC,EACZ,MAAM,GAAG;AAEZ,QAAI,CAAC,WAAW,CAAC,WAAY,QAAO;AAEpC,YACG,YAAY,QAAQ,YAAY,SAChC,eAAe,WAAW,eAAe;AAAA,EAE9C,CAAC;AACH;AAEA,IAAI,MAAuB;AAC3B,eAAsB,4BACpB,QACA;AACA,MAAI,CAAC,KAAK;AACR,UAAM,EAAE,SAAS,IAAI,IAAI,MAAM,OAAO,KAAK;AAC3C,UAAM,IAAI,IAAI,EAAE,QAAQ,MAAM,CAAC;AAAA,EACjC;AAEA,MAAI;AAKF,WAAO,IAAI,QAAQ,MAAM;AAAA,EAG3B,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IACvD;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["import type {\n GraffitiObject,\n GraffitiObjectBase,\n GraffitiObjectUrl,\n GraffitiSession,\n} from \"./2-types.js\";\nimport { GraffitiErrorInvalidSchema } from \"./3-errors.js\";\nimport type { JSONSchema } from \"json-schema-to-ts\";\nimport type Ajv from \"ajv\";\n\nexport function unpackObjectUrl(url: string | GraffitiObjectUrl) {\n return typeof url === \"string\" ? url : url.url;\n}\n\nexport function isActorAllowedGraffitiObject(\n object: GraffitiObjectBase,\n session?: GraffitiSession | null,\n) {\n return (\n // If there is no allowed list, the actor is allowed.\n !Array.isArray(object.allowed) ||\n // Otherwise...\n (typeof session?.actor === \"string\" &&\n // The actor must be the creator of the object\n (object.actor === session.actor ||\n // Or be on the allowed list\n object.allowed.includes(session.actor)))\n );\n}\n\nexport function maskGraffitiObject(\n object: GraffitiObjectBase,\n channels: string[],\n actor?: string | null,\n): GraffitiObjectBase {\n // If the actor is the creator, return the object as is\n if (actor === object.actor) return object;\n\n // If there is an allowed list, mask it to only include the actor\n // (This assumes the actor is already allowed to access the object)\n const allowedMasked = object.allowed && actor ? [actor] : undefined;\n // Mask the channels to only include the channels that are being queried\n const channelsMasked = object.channels.filter((c) => channels.includes(c));\n\n return {\n ...object,\n ...(allowedMasked ? { allowed: allowedMasked } : {}),\n channels: channelsMasked,\n };\n}\n\nexport function isMediaAcceptable(\n mediaType: string,\n acceptableMediaTypes: string[],\n): boolean {\n const [type, subtype] = mediaType.toLowerCase().split(\";\")[0].split(\"/\");\n\n if (!type || !subtype) return false;\n\n return acceptableMediaTypes.some((acceptable) => {\n const [accType, accSubtype] = acceptable\n .toLowerCase()\n .split(\";\")[0]\n .split(\"/\");\n\n if (!accType || !accSubtype) return false;\n\n return (\n (accType === type || accType === \"*\") &&\n (accSubtype === subtype || accSubtype === \"*\")\n );\n });\n}\n\nlet ajv: Ajv | undefined = undefined;\nexport async function compileGraffitiObjectSchema<Schema extends JSONSchema>(\n schema: Schema,\n) {\n if (!ajv) {\n const { default: Ajv } = await import(\"ajv\");\n ajv = new Ajv({ strict: false });\n }\n\n try {\n // Force the validation guard because\n // it is too big for the type checker.\n // Fortunately json-schema-to-ts is\n // well tested against ajv.\n return ajv.compile(schema) as (\n data: GraffitiObjectBase,\n ) => data is GraffitiObject<Schema>;\n } catch (error) {\n throw new GraffitiErrorInvalidSchema(\n error instanceof Error ? error.message : String(error),\n );\n }\n}\n"],
5
+ "mappings": "AAMA,SAAS,kCAAkC;AAIpC,SAAS,gBAAgB,KAAiC;AAC/D,SAAO,OAAO,QAAQ,WAAW,MAAM,IAAI;AAC7C;AAEO,SAAS,6BACd,QACA,SACA;AACA;AAAA;AAAA,IAEE,CAAC,MAAM,QAAQ,OAAO,OAAO;AAAA,IAE5B,OAAO,SAAS,UAAU;AAAA,KAExB,OAAO,UAAU,QAAQ;AAAA,IAExB,OAAO,QAAQ,SAAS,QAAQ,KAAK;AAAA;AAE7C;AAEO,SAAS,mBACd,QACA,UACA,OACoB;AAEpB,MAAI,UAAU,OAAO,MAAO,QAAO;AAInC,QAAM,gBAAgB,OAAO,WAAW,QAAQ,CAAC,KAAK,IAAI;AAE1D,QAAM,iBAAiB,OAAO,SAAS,OAAO,CAAC,MAAM,SAAS,SAAS,CAAC,CAAC;AAEzE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAI,gBAAgB,EAAE,SAAS,cAAc,IAAI,CAAC;AAAA,IAClD,UAAU;AAAA,EACZ;AACF;AAEO,SAAS,kBACd,WACA,sBACS;AACT,QAAM,CAAC,MAAM,OAAO,IAAI,UAAU,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG;AAEvE,MAAI,CAAC,QAAQ,CAAC,QAAS,QAAO;AAE9B,SAAO,qBAAqB,KAAK,CAAC,eAAe;AAC/C,UAAM,CAAC,SAAS,UAAU,IAAI,WAC3B,YAAY,EACZ,MAAM,GAAG,EAAE,CAAC,EACZ,MAAM,GAAG;AAEZ,QAAI,CAAC,WAAW,CAAC,WAAY,QAAO;AAEpC,YACG,YAAY,QAAQ,YAAY,SAChC,eAAe,WAAW,eAAe;AAAA,EAE9C,CAAC;AACH;AAEA,IAAI,MAAuB;AAC3B,eAAsB,4BACpB,QACA;AACA,MAAI,CAAC,KAAK;AACR,UAAM,EAAE,SAAS,IAAI,IAAI,MAAM,OAAO,KAAK;AAC3C,UAAM,IAAI,IAAI,EAAE,QAAQ,MAAM,CAAC;AAAA,EACjC;AAEA,MAAI;AAKF,WAAO,IAAI,QAAQ,MAAM;AAAA,EAG3B,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IACvD;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -61,23 +61,6 @@ async function* wrapGraffitiStream(stream) {
61
61
  }
62
62
  }
63
63
  }
64
- async function* wrapGraffitiContinueStream(stream) {
65
- while (true) {
66
- const next = await stream.next();
67
- if (next.done) {
68
- const { cursor, continue: continue_ } = next.value;
69
- return {
70
- cursor,
71
- continue: (...args) => {
72
- const typedArgs = tuple([GraffitiOptionalSessionSchema]).parse(args);
73
- return continue_(...typedArgs);
74
- }
75
- };
76
- } else {
77
- yield next.value;
78
- }
79
- }
80
- }
81
64
  class GraffitiRuntimeTypes {
82
65
  constructor(graffiti) {
83
66
  this.graffiti = graffiti;
@@ -100,22 +83,25 @@ class GraffitiRuntimeTypes {
100
83
  const typedArgs = tuple([url()]).parse(args);
101
84
  return this.graffiti.actorToHandle(...typedArgs);
102
85
  };
103
- async post(partialObject, session) {
86
+ // @ts-ignore - inferred types on post do not effect output
87
+ post = (...args) => {
104
88
  const typedArgs = tuple([
105
89
  GraffitiPostObjectSchema,
106
90
  GraffitiSessionSchema
107
- ]).parse([partialObject, session]);
108
- return await this.graffiti.post(
109
- ...typedArgs
110
- );
111
- }
91
+ ]).parse(args);
92
+ return this.graffiti.post(...typedArgs);
93
+ };
112
94
  get = (...args) => {
113
95
  const typedArgs = tuple([
114
96
  GraffitiObjectUrlSchema,
115
97
  looseObject({}),
116
98
  GraffitiOptionalSessionSchema
117
99
  ]).parse(args);
118
- return this.graffiti.get(...typedArgs);
100
+ return this.graffiti.get(
101
+ typedArgs[0],
102
+ typedArgs[1],
103
+ typedArgs[2]
104
+ );
119
105
  };
120
106
  delete = (...args) => {
121
107
  const typedArgs = tuple([
@@ -149,7 +135,11 @@ class GraffitiRuntimeTypes {
149
135
  looseObject({}),
150
136
  GraffitiOptionalSessionSchema
151
137
  ]).parse(args);
152
- const stream = this.graffiti.discover(...typedArgs);
138
+ const stream = this.graffiti.discover(
139
+ typedArgs[0],
140
+ typedArgs[1],
141
+ typedArgs[2]
142
+ );
153
143
  return wrapGraffitiStream(stream);
154
144
  };
155
145
  continueDiscover = (...args) => {
@@ -157,7 +147,7 @@ class GraffitiRuntimeTypes {
157
147
  args
158
148
  );
159
149
  const stream = this.graffiti.continueDiscover(...typedArgs);
160
- return wrapGraffitiContinueStream(stream);
150
+ return wrapGraffitiStream(stream);
161
151
  };
162
152
  }
163
153
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/5-runtime-types.ts"],
4
- "sourcesContent": ["import {\n looseObject,\n array,\n string,\n url,\n union,\n instanceof as instanceof_,\n int,\n tuple,\n nullable,\n optional,\n nonnegative,\n extend,\n} from \"zod/mini\";\nimport type { Graffiti } from \"./1-api.js\";\nimport type {\n GraffitiObject,\n GraffitiObjectStream,\n GraffitiObjectStreamContinue,\n GraffitiPostObject,\n GraffitiSession,\n} from \"./2-types.js\";\nimport type { JSONSchema } from \"json-schema-to-ts\";\n\nexport const GraffitiPostObjectSchema = looseObject({\n value: looseObject({}),\n channels: array(string()),\n allowed: optional(nullable(array(url()))),\n});\nexport const GraffitiObjectSchema = extend(GraffitiPostObjectSchema, {\n url: url(),\n actor: url(),\n});\n\nexport const GraffitiObjectUrlSchema = union([\n looseObject({\n url: url(),\n }),\n url(),\n]);\n\nexport const GraffitiSessionSchema = looseObject({\n actor: url(),\n});\nexport const GraffitiOptionalSessionSchema = optional(\n nullable(GraffitiSessionSchema),\n);\n\nexport const GraffitiPostMediaSchema = looseObject({\n data: instanceof_(Blob),\n allowed: optional(nullable(array(url()))),\n});\nexport const GraffitiMediaSchema = extend(GraffitiPostMediaSchema, {\n actor: url(),\n});\nexport const GraffitiMediaAcceptSchema = looseObject({\n types: optional(array(string())),\n maxBytes: optional(int().check(nonnegative())),\n});\n\nasync function* wrapGraffitiStream<Schema extends JSONSchema>(\n stream: GraffitiObjectStream<Schema>,\n): GraffitiObjectStream<Schema> {\n while (true) {\n const next = await stream.next();\n if (next.done) {\n const { cursor, continue: continue_ } = next.value;\n return {\n cursor,\n continue: (...args) => {\n const typedArgs = tuple([GraffitiOptionalSessionSchema]).parse(args);\n return continue_(...typedArgs);\n },\n };\n } else {\n yield next.value;\n }\n }\n}\nasync function* wrapGraffitiContinueStream<Schema extends JSONSchema>(\n stream: GraffitiObjectStreamContinue<Schema>,\n): GraffitiObjectStreamContinue<Schema> {\n while (true) {\n const next = await stream.next();\n if (next.done) {\n const { cursor, continue: continue_ } = next.value;\n return {\n cursor,\n continue: (...args) => {\n const typedArgs = tuple([GraffitiOptionalSessionSchema]).parse(args);\n return continue_(...typedArgs);\n },\n };\n } else {\n yield next.value;\n }\n }\n}\n\n// @ts-ignore - infinite nesting issue\nexport class GraffitiRuntimeTypes implements Graffiti {\n sessionEvents: Graffiti[\"sessionEvents\"];\n constructor(protected readonly graffiti: Graffiti) {\n this.sessionEvents = this.graffiti.sessionEvents;\n }\n\n login: Graffiti[\"login\"] = (...args) => {\n const typedArgs = tuple([optional(url())]).parse(args);\n return this.graffiti.login(...typedArgs);\n };\n\n logout: Graffiti[\"logout\"] = (...args) => {\n const typedArgs = tuple([GraffitiSessionSchema]).parse(args);\n return this.graffiti.logout(...typedArgs);\n };\n\n handleToActor: Graffiti[\"handleToActor\"] = (...args) => {\n const typedArgs = tuple([string()]).parse(args);\n return this.graffiti.handleToActor(...typedArgs);\n };\n\n actorToHandle: Graffiti[\"actorToHandle\"] = (...args) => {\n const typedArgs = tuple([url()]).parse(args);\n return this.graffiti.actorToHandle(...typedArgs);\n };\n\n async post<Schema extends JSONSchema>(\n partialObject: GraffitiPostObject<Schema>,\n session: GraffitiSession,\n ): Promise<GraffitiObject<Schema>> {\n const typedArgs = tuple([\n GraffitiPostObjectSchema,\n GraffitiSessionSchema,\n ]).parse([partialObject, session]);\n\n return (await this.graffiti.post<{}>(\n ...typedArgs,\n )) as GraffitiObject<Schema>;\n }\n\n get: Graffiti[\"get\"] = (...args) => {\n const typedArgs = tuple([\n GraffitiObjectUrlSchema,\n looseObject({}),\n GraffitiOptionalSessionSchema,\n ]).parse(args);\n\n return this.graffiti.get(...typedArgs) as Promise<\n GraffitiObject<(typeof args)[1]>\n >;\n };\n\n delete: Graffiti[\"delete\"] = (...args) => {\n const typedArgs = tuple([\n GraffitiObjectUrlSchema,\n GraffitiSessionSchema,\n ]).parse(args);\n return this.graffiti.delete(...typedArgs);\n };\n\n postMedia: Graffiti[\"postMedia\"] = (...args) => {\n const typedArgs = tuple([\n GraffitiPostMediaSchema,\n GraffitiSessionSchema,\n ]).parse(args);\n return this.graffiti.postMedia(...typedArgs);\n };\n\n getMedia: Graffiti[\"getMedia\"] = (...args) => {\n const typedArgs = tuple([\n url(),\n GraffitiMediaAcceptSchema,\n GraffitiOptionalSessionSchema,\n ]).parse(args);\n\n return this.graffiti.getMedia(...typedArgs);\n };\n\n deleteMedia: Graffiti[\"deleteMedia\"] = (...args) => {\n const typedArgs = tuple([url(), GraffitiSessionSchema]).parse(args);\n\n return this.graffiti.deleteMedia(...typedArgs);\n };\n\n discover: Graffiti[\"discover\"] = (...args) => {\n const typedArgs = tuple([\n array(string()),\n looseObject({}),\n GraffitiOptionalSessionSchema,\n ]).parse(args);\n const stream = this.graffiti.discover(...typedArgs) as GraffitiObjectStream<\n (typeof args)[1]\n >;\n return wrapGraffitiStream(stream);\n };\n\n continueDiscover: Graffiti[\"continueDiscover\"] = (...args) => {\n const typedArgs = tuple([string(), GraffitiOptionalSessionSchema]).parse(\n args,\n );\n\n const stream = this.graffiti.continueDiscover(...typedArgs);\n return wrapGraffitiContinueStream(stream);\n };\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n looseObject,\n array,\n string,\n url,\n union,\n instanceof as instanceof_,\n int,\n tuple,\n nullable,\n optional,\n nonnegative,\n extend,\n} from \"zod/mini\";\nimport type { Graffiti } from \"./1-api.js\";\nimport type { GraffitiObjectStream } from \"./2-types.js\";\nimport type { JSONSchema } from \"json-schema-to-ts\";\n\nexport const GraffitiPostObjectSchema = looseObject({\n value: looseObject({}),\n channels: array(string()),\n allowed: optional(nullable(array(url()))),\n});\nexport const GraffitiObjectSchema = extend(GraffitiPostObjectSchema, {\n url: url(),\n actor: url(),\n});\n\nexport const GraffitiObjectUrlSchema = union([\n looseObject({\n url: url(),\n }),\n url(),\n]);\n\nexport const GraffitiSessionSchema = looseObject({\n actor: url(),\n});\nexport const GraffitiOptionalSessionSchema = optional(\n nullable(GraffitiSessionSchema),\n);\n\nexport const GraffitiPostMediaSchema = looseObject({\n data: instanceof_(Blob),\n allowed: optional(nullable(array(url()))),\n});\nexport const GraffitiMediaSchema = extend(GraffitiPostMediaSchema, {\n actor: url(),\n});\nexport const GraffitiMediaAcceptSchema = looseObject({\n types: optional(array(string())),\n maxBytes: optional(int().check(nonnegative())),\n});\n\nasync function* wrapGraffitiStream<Schema extends JSONSchema>(\n stream: GraffitiObjectStream<Schema>,\n): GraffitiObjectStream<Schema> {\n while (true) {\n const next = await stream.next();\n if (next.done) {\n const { cursor, continue: continue_ } = next.value;\n return {\n cursor,\n continue: (...args) => {\n const typedArgs = tuple([GraffitiOptionalSessionSchema]).parse(args);\n return continue_(...typedArgs);\n },\n };\n } else {\n yield next.value;\n }\n }\n}\n\nexport class GraffitiRuntimeTypes implements Graffiti {\n sessionEvents: Graffiti[\"sessionEvents\"];\n constructor(protected readonly graffiti: Graffiti) {\n this.sessionEvents = this.graffiti.sessionEvents;\n }\n\n login: Graffiti[\"login\"] = (...args) => {\n const typedArgs = tuple([optional(url())]).parse(args);\n return this.graffiti.login(...typedArgs);\n };\n\n logout: Graffiti[\"logout\"] = (...args) => {\n const typedArgs = tuple([GraffitiSessionSchema]).parse(args);\n return this.graffiti.logout(...typedArgs);\n };\n\n handleToActor: Graffiti[\"handleToActor\"] = (...args) => {\n const typedArgs = tuple([string()]).parse(args);\n return this.graffiti.handleToActor(...typedArgs);\n };\n\n actorToHandle: Graffiti[\"actorToHandle\"] = (...args) => {\n const typedArgs = tuple([url()]).parse(args);\n return this.graffiti.actorToHandle(...typedArgs);\n };\n\n // @ts-ignore - inferred types on post do not effect output\n post: Graffiti[\"post\"] = (...args) => {\n const typedArgs = tuple([\n GraffitiPostObjectSchema,\n GraffitiSessionSchema,\n ]).parse(args);\n\n return this.graffiti.post<{}>(...typedArgs);\n };\n\n get: Graffiti[\"get\"] = (...args) => {\n const typedArgs = tuple([\n GraffitiObjectUrlSchema,\n looseObject({}),\n GraffitiOptionalSessionSchema,\n ]).parse(args);\n\n return this.graffiti.get<(typeof args)[1]>(\n typedArgs[0],\n typedArgs[1] as (typeof args)[1],\n typedArgs[2],\n );\n };\n\n delete: Graffiti[\"delete\"] = (...args) => {\n const typedArgs = tuple([\n GraffitiObjectUrlSchema,\n GraffitiSessionSchema,\n ]).parse(args);\n return this.graffiti.delete(...typedArgs);\n };\n\n postMedia: Graffiti[\"postMedia\"] = (...args) => {\n const typedArgs = tuple([\n GraffitiPostMediaSchema,\n GraffitiSessionSchema,\n ]).parse(args);\n return this.graffiti.postMedia(...typedArgs);\n };\n\n getMedia: Graffiti[\"getMedia\"] = (...args) => {\n const typedArgs = tuple([\n url(),\n GraffitiMediaAcceptSchema,\n GraffitiOptionalSessionSchema,\n ]).parse(args);\n\n return this.graffiti.getMedia(...typedArgs);\n };\n\n deleteMedia: Graffiti[\"deleteMedia\"] = (...args) => {\n const typedArgs = tuple([url(), GraffitiSessionSchema]).parse(args);\n\n return this.graffiti.deleteMedia(...typedArgs);\n };\n\n discover: Graffiti[\"discover\"] = (...args) => {\n const typedArgs = tuple([\n array(string()),\n looseObject({}),\n GraffitiOptionalSessionSchema,\n ]).parse(args);\n const stream = this.graffiti.discover<(typeof args)[1]>(\n typedArgs[0],\n typedArgs[1] as (typeof args)[1],\n typedArgs[2],\n );\n return wrapGraffitiStream<(typeof args)[1]>(stream);\n };\n\n continueDiscover: Graffiti[\"continueDiscover\"] = (...args) => {\n const typedArgs = tuple([string(), GraffitiOptionalSessionSchema]).parse(\n args,\n );\n\n const stream = this.graffiti.continueDiscover(...typedArgs);\n return wrapGraffitiStream<{}>(stream);\n };\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- import type { GraffitiObjectUrl, GraffitiObject, GraffitiObjectBase, GraffitiSession, GraffitiPostObject, GraffitiObjectStream, GraffitiObjectStreamContinue, GraffitiMedia, GraffitiPostMedia, GraffitiMediaAccept } from "./2-types.js";
1
+ import type { GraffitiObjectUrl, GraffitiObject, GraffitiObjectBase, GraffitiSession, GraffitiPostObject, GraffitiObjectStream, GraffitiMedia, GraffitiPostMedia, GraffitiMediaAccept } from "./2-types.js";
2
2
  import type { JSONSchema } from "json-schema-to-ts";
3
3
  /**
4
4
  * This API describes a small but powerful set of methods that
@@ -261,7 +261,7 @@ export declare abstract class Graffiti {
261
261
  *
262
262
  * @group 2 - Multi-Object Methods
263
263
  */
264
- abstract continueDiscover(cursor: string, session?: GraffitiSession | null): GraffitiObjectStreamContinue<{}>;
264
+ abstract continueDiscover(cursor: string, session?: GraffitiSession | null): GraffitiObjectStream<{}>;
265
265
  /**
266
266
  * Uploads media data, such as an image or video.
267
267
  *
@@ -1 +1 @@
1
- {"version":3,"file":"1-api.d.ts","sourceRoot":"","sources":["../../src/1-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"1-api.d.ts","sourceRoot":"","sources":["../../src/1-api.ts"],"names":[],"mappings":"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"}
@@ -234,7 +234,7 @@ export interface GraffitiSession {
234
234
  * function and a {@link GraffitiObjectStreamReturn.cursor | `cursor`} string,
235
235
  * each of which can be used to resume the stream from where it left off.
236
236
  */
237
- export type GraffitiObjectStream<Schema extends JSONSchema> = AsyncGenerator<GraffitiObjectStreamError | GraffitiObjectStreamEntry<Schema>, GraffitiObjectStreamReturn<Schema>>;
237
+ export type GraffitiObjectStream<Schema extends JSONSchema> = AsyncGenerator<GraffitiObjectStreamError | GraffitiObjectStreamEntry<Schema> | GraffitiObjectStreamTombstone, GraffitiObjectStreamReturn<Schema>>;
238
238
  /**
239
239
  * An error that can occur in a {@link GraffitiObjectStream}.
240
240
  *
@@ -253,8 +253,8 @@ export interface GraffitiObjectStreamError {
253
253
  origin: string;
254
254
  }
255
255
  /**
256
- * A successful result from a {@link GraffitiObjectStream} or
257
- * {@link GraffitiObjectStreamContinue} that includes an object.
256
+ * A successful result from a {@link GraffitiObjectStream}
257
+ * that includes an object.
258
258
  *
259
259
  * @internal
260
260
  */
@@ -264,7 +264,7 @@ export interface GraffitiObjectStreamEntry<Schema extends JSONSchema> {
264
264
  */
265
265
  error?: undefined;
266
266
  /**
267
- * Empty property for compatibility with {@link GraffitiObjectStreamContinueTombstone}
267
+ * Empty property for compatibility with {@link GraffitiObjectStreamTombstone}
268
268
  */
269
269
  tombstone?: undefined;
270
270
  /**
@@ -273,14 +273,14 @@ export interface GraffitiObjectStreamEntry<Schema extends JSONSchema> {
273
273
  object: GraffitiObject<Schema>;
274
274
  }
275
275
  /**
276
- * A result from a {@link GraffitiObjectStreamContinue} that indicated
276
+ * A result from a {@link GraffitiObjectStream} that indicated
277
277
  * an object has been deleted since the original stream was run.
278
278
  * Only sparse metadata about the deleted object is returned to respect
279
279
  * the deleting actor's privacy.
280
280
  *
281
281
  * @internal
282
282
  */
283
- export interface GraffitiObjectStreamContinueTombstone {
283
+ export interface GraffitiObjectStreamTombstone {
284
284
  /**
285
285
  * Empty property for compatibility with {@link GraffitiObjectStreamError}
286
286
  */
@@ -302,14 +302,7 @@ export interface GraffitiObjectStreamContinueTombstone {
302
302
  };
303
303
  }
304
304
  /**
305
- * A continuation of the {@link GraffitiObjectStream} type can include
306
- * both objects and tombstones of deleted objects.
307
- *
308
- * @internal
309
- */
310
- export type GraffitiObjectStreamContinueEntry<Schema extends JSONSchema> = GraffitiObjectStreamEntry<Schema> | GraffitiObjectStreamContinueTombstone;
311
- /**
312
- * The output of a {@link GraffitiObjectStream} or a {@link GraffitiObjectStreamContinue}
305
+ * The output of a {@link GraffitiObjectStream}
313
306
  * that allows the stream to be continued from where it left off.
314
307
  *
315
308
  * The {@link continue} function preserves the typing of the original stream,
@@ -317,7 +310,7 @@ export type GraffitiObjectStreamContinueEntry<Schema extends JSONSchema> = Graff
317
310
  * has closed and reopened an application.
318
311
  *
319
312
  * The continued stream may include `tombstone`s of objects that have been
320
- * deleted since the original stream was run. See {@link GraffitiObjectStreamContinueTombstone}.
313
+ * deleted since the original stream was run. See {@link GraffitiObjectStreamTombstone}.
321
314
  * The continued stream may also return some objects that were already
322
315
  * returned by the original stream, depending on how much state the
323
316
  * underlying implementation is able to preserve.
@@ -329,7 +322,7 @@ export interface GraffitiObjectStreamReturn<Schema extends JSONSchema> {
329
322
  * @returns A function that creates new stream that continues from where the original stream left off.
330
323
  * It preserves the typing of the original stream.
331
324
  */
332
- continue: (session?: GraffitiSession | null) => GraffitiObjectStreamContinue<Schema>;
325
+ continue: (session?: GraffitiSession | null) => GraffitiObjectStream<Schema>;
333
326
  /**
334
327
  * A string that can be serialized and stored to resume the stream later.
335
328
  * It must be passed to the {@link Graffiti.continueDiscover} method
@@ -337,17 +330,6 @@ export interface GraffitiObjectStreamReturn<Schema extends JSONSchema> {
337
330
  */
338
331
  cursor: string;
339
332
  }
340
- /**
341
- * A continutation of the {@link GraffitiObjectStream} type, as returned by
342
- * the {@link GraffitiObjectStreamReturn.continue} or by using
343
- * {@link GraffitiObjectStreamReturn.cursor} with {@link Graffiti.continueDiscover}.
344
- *
345
- * The continued stream may include `tombstone`s of objects that have been
346
- * deleted since the original stream was run. See {@link GraffitiObjectStreamContinueTombstone}.
347
- *
348
- * @internal
349
- */
350
- export type GraffitiObjectStreamContinue<Schema extends JSONSchema> = AsyncGenerator<GraffitiObjectStreamError | GraffitiObjectStreamContinueEntry<Schema>, GraffitiObjectStreamReturn<Schema>>;
351
333
  /**
352
334
  * The event type produced in {@link Graffiti.sessionEvents}
353
335
  * when a actor logs in manually from {@link Graffiti.login}
@@ -1 +1 @@
1
- {"version":3,"file":"2-types.d.ts","sourceRoot":"","sources":["../../src/2-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,KAAK,EAAE,EAAE,CAAC;IAEV;;;;;;;;;;;;OAYG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE1B;;;;;;;;;;;;;OAaG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;;;OAcG;IACH,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,CAAC,MAAM,SAAS,UAAU,IAAI,kBAAkB,GACxE,UAAU,CAAC,MAAM,GAAG,OAAO,4BAA4B,CAAC,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWN,CAAC;AAEhC;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAEhE;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,CAAC,MAAM,SAAS,UAAU,IAAI,IAAI,CAC9D,kBAAkB,EAClB,OAAO,GAAG,UAAU,GAAG,SAAS,CACjC,GACC,UAAU,CAAC,MAAM,GAAG,OAAO,4BAA4B,CAAC,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGV,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,oBAAoB,CAAC,MAAM,SAAS,UAAU,IAAI,cAAc,CAC1E,yBAAyB,GAAG,yBAAyB,CAAC,MAAM,CAAC,EAC7D,0BAA0B,CAAC,MAAM,CAAC,CACnC,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IACb;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB,CAAC,MAAM,SAAS,UAAU;IAClE;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qCAAqC;IACpD;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,SAAS,EAAE,IAAI,CAAC;IAChB;;;OAGG;IACH,MAAM,EAAE;QACN;;WAEG;QACH,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,MAAM,iCAAiC,CAAC,MAAM,SAAS,UAAU,IACnE,yBAAyB,CAAC,MAAM,CAAC,GACjC,qCAAqC,CAAC;AAE1C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,0BAA0B,CAAC,MAAM,SAAS,UAAU;IACnE;;;OAGG;IACH,QAAQ,EAAE,CACR,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,KAC7B,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAC1C;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,4BAA4B,CAAC,MAAM,SAAS,UAAU,IAChE,cAAc,CACZ,yBAAyB,GAAG,iCAAiC,CAAC,MAAM,CAAC,EACrE,0BAA0B,CAAC,MAAM,CAAC,CACnC,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,CACxC;IACE,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B,GACD;IACE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,eAAe,CAAC;CAC1B,CACJ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,CACzC;IACE,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACD;IACE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,CACJ,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,+BAA+B,GAAG,WAAW,CACrD;IACE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACD,IAAI,GACJ,SAAS,CACZ,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;OAIG;IACH,IAAI,EAAE,IAAI,CAAC;IACX;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"}
1
+ {"version":3,"file":"2-types.d.ts","sourceRoot":"","sources":["../../src/2-types.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,4 @@
1
1
  import type { Graffiti } from "./1-api.js";
2
- import type { GraffitiObject, GraffitiPostObject, GraffitiSession } from "./2-types.js";
3
- import type { JSONSchema } from "json-schema-to-ts";
4
2
  export declare const GraffitiPostObjectSchema: import("zod/mini").ZodMiniObject<{
5
3
  value: import("zod/mini").ZodMiniObject<{}, import("zod/v4/core").$loose>;
6
4
  channels: import("zod/mini").ZodMiniArray<import("zod/mini").ZodMiniString<string>>;
@@ -43,7 +41,7 @@ export declare class GraffitiRuntimeTypes implements Graffiti {
43
41
  logout: Graffiti["logout"];
44
42
  handleToActor: Graffiti["handleToActor"];
45
43
  actorToHandle: Graffiti["actorToHandle"];
46
- post<Schema extends JSONSchema>(partialObject: GraffitiPostObject<Schema>, session: GraffitiSession): Promise<GraffitiObject<Schema>>;
44
+ post: Graffiti["post"];
47
45
  get: Graffiti["get"];
48
46
  delete: Graffiti["delete"];
49
47
  postMedia: Graffiti["postMedia"];
@@ -1 +1 @@
1
- {"version":3,"file":"5-runtime-types.d.ts","sourceRoot":"","sources":["../../src/5-runtime-types.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EACV,cAAc,EAGd,kBAAkB,EAClB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,wBAAwB;;;;gCAInC,CAAC;AACH,eAAO,MAAM,oBAAoB;;;;;;gCAG/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;iEAKlC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;gCAEhC,CAAC;AACH,eAAO,MAAM,6BAA6B;;kCAEzC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;gCAGlC,CAAC;AACH,eAAO,MAAM,mBAAmB;;;;gCAE9B,CAAC;AACH,eAAO,MAAM,yBAAyB;;;gCAGpC,CAAC;AA0CH,qBAAa,oBAAqB,YAAW,QAAQ;IAEvC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IADjD,aAAa,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBACV,QAAQ,EAAE,QAAQ;IAIjD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAGtB;IAEF,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAGxB;IAEF,aAAa,EAAE,QAAQ,CAAC,eAAe,CAAC,CAGtC;IAEF,aAAa,EAAE,QAAQ,CAAC,eAAe,CAAC,CAGtC;IAEI,IAAI,CAAC,MAAM,SAAS,UAAU,EAClC,aAAa,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACzC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAWlC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAUlB;IAEF,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAMxB;IAEF,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,CAM9B;IAEF,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAQ5B;IAEF,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC,CAIlC;IAEF,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAU5B;IAEF,gBAAgB,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAO5C;CACH"}
1
+ {"version":3,"file":"5-runtime-types.d.ts","sourceRoot":"","sources":["../../src/5-runtime-types.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,eAAO,MAAM,wBAAwB;;;;gCAInC,CAAC;AACH,eAAO,MAAM,oBAAoB;;;;;;gCAG/B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;iEAKlC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;gCAEhC,CAAC;AACH,eAAO,MAAM,6BAA6B;;kCAEzC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;gCAGlC,CAAC;AACH,eAAO,MAAM,mBAAmB;;;;gCAE9B,CAAC;AACH,eAAO,MAAM,yBAAyB;;;gCAGpC,CAAC;AAsBH,qBAAa,oBAAqB,YAAW,QAAQ;IAEvC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IADjD,aAAa,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;gBACV,QAAQ,EAAE,QAAQ;IAIjD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAGtB;IAEF,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAGxB;IAEF,aAAa,EAAE,QAAQ,CAAC,eAAe,CAAC,CAGtC;IAEF,aAAa,EAAE,QAAQ,CAAC,eAAe,CAAC,CAGtC;IAGF,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAOpB;IAEF,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAYlB;IAEF,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAMxB;IAEF,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,CAM9B;IAEF,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAQ5B;IAEF,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC,CAIlC;IAEF,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAY5B;IAEF,gBAAgB,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAO5C;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../tests/crud.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EAEhB,MAAM,sBAAsB,CAAC;AAS9B,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,EAC5D,aAAa,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,EAC7D,aAAa,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,SAgP9D,CAAC"}
1
+ {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../tests/crud.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EAEhB,MAAM,sBAAsB,CAAC;AAS9B,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC,EAC5D,aAAa,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,EAC7D,aAAa,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,SAwQ9D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../tests/discover.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EAEhB,MAAM,sBAAsB,CAAC;AAc9B,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,IAAI,CACrB,QAAQ,EACR,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,kBAAkB,CACpD,EACD,aAAa,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,EAC7D,aAAa,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,SAkb9D,CAAC"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../tests/discover.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EAEhB,MAAM,sBAAsB,CAAC;AAc9B,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,IAAI,CACrB,QAAQ,EACR,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,kBAAkB,CACpD,EACD,aAAa,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,EAC7D,aAAa,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,SAgb9D,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { GraffitiPostObject, GraffitiObjectStream, JSONSchema, GraffitiObject, GraffitiObjectStreamReturn, GraffitiObjectStreamContinue, Graffiti, GraffitiSession } from "@graffiti-garden/api";
1
+ import type { GraffitiPostObject, GraffitiObjectStream, JSONSchema, GraffitiObject, GraffitiObjectStreamReturn, Graffiti, GraffitiSession } from "@graffiti-garden/api";
2
2
  export declare function randomString(): string;
3
3
  export declare function randomUrl(): string;
4
4
  export declare function randomValue(): {
@@ -6,5 +6,5 @@ export declare function randomValue(): {
6
6
  };
7
7
  export declare function randomPostObject(): GraffitiPostObject<{}>;
8
8
  export declare function nextStreamValue<Schema extends JSONSchema>(iterator: GraffitiObjectStream<Schema>): Promise<GraffitiObject<Schema>>;
9
- export declare function continueStream<Schema extends JSONSchema>(graffiti: Pick<Graffiti, "continueDiscover">, streamReturn: GraffitiObjectStreamReturn<Schema>, type: "cursor" | "continue", session?: GraffitiSession | null): GraffitiObjectStreamContinue<Schema>;
9
+ export declare function continueStream<Schema extends JSONSchema>(graffiti: Pick<Graffiti, "continueDiscover">, streamReturn: GraffitiObjectStreamReturn<Schema>, type: "cursor" | "continue", session?: GraffitiSession | null): GraffitiObjectStream<Schema>;
10
10
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,0BAA0B,EAC1B,4BAA4B,EAC5B,QAAQ,EACR,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,wBAAgB,YAAY,IAAI,MAAM,CASrC;AACD,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,WAAW;;EAI1B;AAED,wBAAgB,gBAAgB,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAKzD;AAED,wBAAsB,eAAe,CAAC,MAAM,SAAS,UAAU,EAC7D,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAKjC;AAED,wBAAgB,cAAc,CAAC,MAAM,SAAS,UAAU,EACtD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAC5C,YAAY,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAChD,IAAI,EAAE,QAAQ,GAAG,UAAU,EAC3B,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,GAC/B,4BAA4B,CAAC,MAAM,CAAC,CAStC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,0BAA0B,EAC1B,QAAQ,EACR,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAE9B,wBAAgB,YAAY,IAAI,MAAM,CASrC;AACD,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,WAAW;;EAI1B;AAED,wBAAgB,gBAAgB,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAKzD;AAED,wBAAsB,eAAe,CAAC,MAAM,SAAS,UAAU,EAC7D,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAKjC;AAED,wBAAgB,cAAc,CAAC,MAAM,SAAS,UAAU,EACtD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAC5C,YAAY,EAAE,0BAA0B,CAAC,MAAM,CAAC,EAChD,IAAI,EAAE,QAAQ,GAAG,UAAU,EAC3B,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,GAC/B,oBAAoB,CAAC,MAAM,CAAC,CAS9B"}
package/dist/tests.mjs CHANGED
@@ -248,6 +248,25 @@ var graffitiCRUDTests = (useGraffiti, useSession1, useSession2) => {
248
248
  expect(gotten2.allowed).toEqual([session2.actor]);
249
249
  expect(gotten2.channels).toEqual([]);
250
250
  });
251
+ it("post and get with extra values", async () => {
252
+ const value = {
253
+ something: "hello, world~ c:"
254
+ };
255
+ const channels = [randomString(), randomString()];
256
+ const post = {
257
+ value,
258
+ channels,
259
+ extra: "extra value"
260
+ };
261
+ const output = await graffiti.post(post, session);
262
+ expect(output.actor).toEqual(session1.actor);
263
+ expect(output.value).toEqual(value);
264
+ expect(output.allowed).toBeUndefined();
265
+ expect(output.channels).toEqual(channels);
266
+ expect(output).not.toHaveProperty("extra");
267
+ const gotten = await graffiti.get(output, {}, session1);
268
+ expect(gotten).toEqual(output);
269
+ });
251
270
  }
252
271
  );
253
272
  };
@@ -579,6 +598,7 @@ var graffitiDiscoverTests = (useGraffiti, useSession1, useSession2) => {
579
598
  }
580
599
  })) {
581
600
  assert2(!result.error, "result has error");
601
+ assert2(!result.tombstone, "result is tombstone");
582
602
  if (property in result.object.value) {
583
603
  count++;
584
604
  }
@@ -600,8 +620,6 @@ var graffitiDiscoverTests = (useGraffiti, useSession1, useSession2) => {
600
620
  const returnValue = await iterator1.next();
601
621
  assert2(returnValue.done, "value2 is not done");
602
622
  await graffiti.delete(posted, session);
603
- const iterator = graffiti.discover(object.channels, {});
604
- await expect2(iterator.next()).resolves.toHaveProperty("done", true);
605
623
  const tombIterator = continueStream(
606
624
  graffiti,
607
625
  returnValue.value,