@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.
- package/LICENSE +674 -0
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +3 -3
- package/dist/cjs/1-api.js.map +2 -2
- package/dist/cjs/2-types.js.map +1 -1
- package/dist/cjs/4-utilities.js +1 -1
- package/dist/cjs/4-utilities.js.map +2 -2
- package/dist/cjs/5-runtime-types.js +16 -26
- package/dist/cjs/5-runtime-types.js.map +2 -2
- package/dist/esm/1-api.js.map +2 -2
- package/dist/esm/2-types.js.map +1 -1
- package/dist/esm/4-utilities.js +1 -1
- package/dist/esm/4-utilities.js.map +2 -2
- package/dist/esm/5-runtime-types.js +16 -26
- package/dist/esm/5-runtime-types.js.map +2 -2
- package/dist/src/1-api.d.ts +2 -2
- package/dist/src/1-api.d.ts.map +1 -1
- package/dist/src/2-types.d.ts +9 -27
- package/dist/src/2-types.d.ts.map +1 -1
- package/dist/src/5-runtime-types.d.ts +1 -3
- package/dist/src/5-runtime-types.d.ts.map +1 -1
- package/dist/tests/crud.d.ts.map +1 -1
- package/dist/tests/discover.d.ts.map +1 -1
- package/dist/tests/utils.d.ts +2 -2
- package/dist/tests/utils.d.ts.map +1 -1
- package/dist/tests.mjs +20 -2
- package/dist/tests.mjs.map +2 -2
- package/package.json +2 -1
- package/src/1-api.ts +1 -2
- package/src/2-types.ts +11 -37
- package/src/4-utilities.ts +1 -1
- package/src/5-runtime-types.ts +18 -44
- package/tests/crud.ts +24 -0
- package/tests/discover.ts +1 -3
- package/tests/utils.ts +2 -3
|
@@ -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,
|
|
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
|
-
|
|
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(
|
|
108
|
-
return
|
|
109
|
-
|
|
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(
|
|
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(
|
|
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
|
|
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 {
|
|
5
|
-
"mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;
|
|
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
|
}
|
package/dist/src/1-api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GraffitiObjectUrl, GraffitiObject, GraffitiObjectBase, GraffitiSession, GraffitiPostObject, GraffitiObjectStream,
|
|
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):
|
|
264
|
+
abstract continueDiscover(cursor: string, session?: GraffitiSession | null): GraffitiObjectStream<{}>;
|
|
265
265
|
/**
|
|
266
266
|
* Uploads media data, such as an image or video.
|
|
267
267
|
*
|
package/dist/src/1-api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1-api.d.ts","sourceRoot":"","sources":["../../src/1-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"1-api.d.ts","sourceRoot":"","sources":["../../src/1-api.ts"],"names":[],"mappings":"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"}
|
package/dist/src/2-types.d.ts
CHANGED
|
@@ -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
|
|
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}
|
|
257
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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) =>
|
|
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,
|
|
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
|
|
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;
|
|
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"}
|
package/dist/tests/crud.d.ts.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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"}
|
package/dist/tests/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GraffitiPostObject, GraffitiObjectStream, JSONSchema, GraffitiObject, GraffitiObjectStreamReturn,
|
|
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):
|
|
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,
|
|
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,
|