@hugomrdias/foxer 0.0.6 → 0.1.3
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/CHANGELOG.md +41 -0
- package/README.md +93 -17
- package/dist/src/bin/create.js +1 -1
- package/dist/src/bin/create.js.map +1 -1
- package/dist/src/bin/flags.d.ts +2 -2
- package/dist/src/config/config.d.ts +1 -1
- package/dist/src/config/config.d.ts.map +1 -1
- package/dist/src/config/env.d.ts +2 -2
- package/dist/src/db/client.d.ts +3 -3
- package/dist/src/db/migrate.d.ts.map +1 -1
- package/dist/src/db/migrate.js +14 -9
- package/dist/src/db/migrate.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +15 -7
- package/src/bin/create.ts +1 -1
- package/src/db/migrate.ts +8 -4
- package/dist/src/client/index.d.ts +0 -18
- package/dist/src/client/index.d.ts.map +0 -1
- package/dist/src/client/index.js +0 -150
- package/dist/src/client/index.js.map +0 -1
- package/dist/src/hooks/default-hooks.d.ts +0 -2
- package/dist/src/hooks/default-hooks.d.ts.map +0 -1
- package/dist/src/hooks/default-hooks.js +0 -107
- package/dist/src/hooks/default-hooks.js.map +0 -1
- /package/template/{biome.json → biome.template.json} +0 -0
package/package.json
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hugomrdias/foxer",
|
|
3
3
|
"description": "Foxer is a all-in-one application server for Filecoin.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.1.3",
|
|
5
5
|
"author": "Hugo Dias <hugomrdias@gmail.com>",
|
|
6
6
|
"license": "Apache-2.0 OR MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"url": "hugomrdias/foxer",
|
|
9
|
+
"directory": "packages/foxer"
|
|
10
|
+
},
|
|
7
11
|
"type": "module",
|
|
8
12
|
"sideEffects": false,
|
|
9
13
|
"bin": {
|
|
@@ -39,21 +43,21 @@
|
|
|
39
43
|
"dependencies": {
|
|
40
44
|
"@bluwy/giget-core": "^0.1.6",
|
|
41
45
|
"@clack/prompts": "^1.1.0",
|
|
42
|
-
"@electric-sql/pglite": "^0.3.
|
|
43
|
-
"@hono/node-server": "^1.19.
|
|
46
|
+
"@electric-sql/pglite": "^0.3.16",
|
|
47
|
+
"@hono/node-server": "^1.19.11",
|
|
44
48
|
"@libpg-query/parser": "^17.6.3",
|
|
45
49
|
"@pgsql/traverse": "^17.2.4",
|
|
46
50
|
"abitype": "^1.2.3",
|
|
47
|
-
"cleye": "^2.
|
|
51
|
+
"cleye": "^2.3.0",
|
|
48
52
|
"dotenv": "^17.2.3",
|
|
49
53
|
"drizzle-orm": "1.0.0-beta.15-859cf75",
|
|
50
54
|
"exit-hook": "^5.1.0",
|
|
51
|
-
"hono": "^4.
|
|
55
|
+
"hono": "^4.12.7",
|
|
52
56
|
"hono-pino": "^0.10.3",
|
|
53
57
|
"http-shutdown": "^1.2.2",
|
|
54
58
|
"lilconfig": "^3.1.3",
|
|
55
59
|
"p-queue": "^9.1.0",
|
|
56
|
-
"pg": "^8.
|
|
60
|
+
"pg": "^8.20.0",
|
|
57
61
|
"picocolors": "^1.1.1",
|
|
58
62
|
"pino": "^10.3.1",
|
|
59
63
|
"postgres": "^3.4.8",
|
|
@@ -62,7 +66,7 @@
|
|
|
62
66
|
},
|
|
63
67
|
"devDependencies": {
|
|
64
68
|
"@pgsql/types": "^17.6.2",
|
|
65
|
-
"@types/node": "^25.
|
|
69
|
+
"@types/node": "^25.4.0",
|
|
66
70
|
"@types/pg": "^8.18.0",
|
|
67
71
|
"type-fest": "^5.4.4",
|
|
68
72
|
"typescript": "^5.9.2"
|
|
@@ -71,6 +75,10 @@
|
|
|
71
75
|
"hono": ">=4.5",
|
|
72
76
|
"viem": ">=2"
|
|
73
77
|
},
|
|
78
|
+
"publishConfig": {
|
|
79
|
+
"provenance": true,
|
|
80
|
+
"access": "public"
|
|
81
|
+
},
|
|
74
82
|
"scripts": {
|
|
75
83
|
"build": "tsc --build",
|
|
76
84
|
"lint": "tsc --build && biome check ."
|
package/src/bin/create.ts
CHANGED
package/src/db/migrate.ts
CHANGED
|
@@ -214,8 +214,12 @@ function hasCascadeForeignKeyToBlockNumberTable(
|
|
|
214
214
|
* @returns True if WAL is enabled, false otherwise
|
|
215
215
|
*/
|
|
216
216
|
export async function isWalEnabled(db: Database) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
217
|
+
try {
|
|
218
|
+
const wal = await db
|
|
219
|
+
.execute('SHOW WAL_LEVEL')
|
|
220
|
+
.then((result) => result.rows[0].wal_level)
|
|
221
|
+
return wal === 'logical'
|
|
222
|
+
} catch (error) {
|
|
223
|
+
throw new Error('Failed to check if WAL is enabled', { cause: error })
|
|
224
|
+
}
|
|
221
225
|
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { type AnyRelations, type EmptyRelations, type QueryWithTypings, type SQLWrapper } from 'drizzle-orm';
|
|
2
|
-
import { type PgRemoteDatabase } from 'drizzle-orm/pg-proxy';
|
|
3
|
-
import type { Simplify } from 'type-fest';
|
|
4
|
-
export declare const compileQuery: (query: SQLWrapper) => QueryWithTypings;
|
|
5
|
-
type ClientDb<TSchema extends Record<string, unknown> = Record<string, unknown>, TRelations extends AnyRelations = EmptyRelations> = Simplify<Omit<PgRemoteDatabase<TSchema, TRelations>, 'insert' | 'update' | 'delete' | 'transaction' | 'refreshMaterializedView' | '_' | '_query'>>;
|
|
6
|
-
export type Client<TSchema extends Record<string, unknown> = Record<string, unknown>, TRelations extends AnyRelations = EmptyRelations> = {
|
|
7
|
-
db: ClientDb<TSchema, TRelations>;
|
|
8
|
-
live: <result>(queryFn: (db: ClientDb<TSchema, TRelations>) => Promise<result>, onData: (result: result) => void, onError?: (error: Error) => void) => {
|
|
9
|
-
unsubscribe: () => void;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
export declare function createClient<TSchema extends Record<string, unknown> = Record<string, unknown>, TRelations extends AnyRelations = EmptyRelations>({ baseUrl, relations, schema, }: {
|
|
13
|
-
baseUrl: string;
|
|
14
|
-
relations: TRelations;
|
|
15
|
-
schema: TSchema;
|
|
16
|
-
}): Client<TSchema, TRelations>;
|
|
17
|
-
export {};
|
|
18
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,cAAc,EAGnB,KAAK,gBAAgB,EAGrB,KAAK,UAAU,EAEhB,MAAM,aAAa,CAAA;AAIpB,OAAO,EAAW,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAGrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAoDzC,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,qBAE7C,CAAA;AAED,KAAK,QAAQ,CACX,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,UAAU,SAAS,YAAY,GAAG,cAAc,IAC9C,QAAQ,CACV,IAAI,CACF,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC,EACnC,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,yBAAyB,GACzB,GAAG,GACH,QAAQ,CACX,CACF,CAAA;AAED,MAAM,MAAM,MAAM,CAChB,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,UAAU,SAAS,YAAY,GAAG,cAAc,IAC9C;IACF,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IAEjC,IAAI,EAAE,CAAC,MAAM,EACX,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,EAC/D,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,KAC7B;QACH,WAAW,EAAE,MAAM,IAAI,CAAA;KACxB,CAAA;CACF,CAAA;AAED,wBAAgB,YAAY,CAC1B,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,UAAU,SAAS,YAAY,GAAG,cAAc,EAChD,EACA,OAAO,EACP,SAAS,EACT,MAAM,GACP,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,UAAU,CAAA;IACrB,MAAM,EAAE,OAAO,CAAA;CAChB,GAAG,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAqI9B"}
|
package/dist/src/client/index.js
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { Column, is, mapRelationalRow, SQL, Table, } from 'drizzle-orm';
|
|
2
|
-
import { PgRelationalQuery } from 'drizzle-orm/pg-core/query-builders/query';
|
|
3
|
-
import { PgRaw } from 'drizzle-orm/pg-core/query-builders/raw';
|
|
4
|
-
import { drizzle } from 'drizzle-orm/pg-proxy';
|
|
5
|
-
import { TypedQueryBuilder } from 'drizzle-orm/query-builders/query-builder';
|
|
6
|
-
import { EventSource } from 'eventsource';
|
|
7
|
-
import { stringify } from 'viem';
|
|
8
|
-
function orderSelectedFields(fields, pathPrefix) {
|
|
9
|
-
return Object.entries(fields).reduce((result, [name, field]) => {
|
|
10
|
-
if (typeof name !== 'string') {
|
|
11
|
-
return result;
|
|
12
|
-
}
|
|
13
|
-
const newPath = pathPrefix ? [...pathPrefix, name] : [name];
|
|
14
|
-
if (is(field, Column) || is(field, SQL) || is(field, SQL.Aliased)) {
|
|
15
|
-
result.push({ path: newPath, field });
|
|
16
|
-
}
|
|
17
|
-
else if (is(field, Table)) {
|
|
18
|
-
result.push(
|
|
19
|
-
// @ts-ignore
|
|
20
|
-
...orderSelectedFields(field[Table.Symbol.Columns], newPath));
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
result.push(...orderSelectedFields(field, newPath));
|
|
24
|
-
}
|
|
25
|
-
return result;
|
|
26
|
-
}, []);
|
|
27
|
-
}
|
|
28
|
-
const getUrl = (baseUrl, method, query) => {
|
|
29
|
-
const url = new URL(baseUrl);
|
|
30
|
-
url.pathname = `${url.pathname}/${method}`;
|
|
31
|
-
if (query) {
|
|
32
|
-
url.searchParams.set('sql', stringify(query));
|
|
33
|
-
}
|
|
34
|
-
return url;
|
|
35
|
-
};
|
|
36
|
-
const noopDatabase = drizzle(() => Promise.resolve({ rows: [] }), {
|
|
37
|
-
casing: 'snake_case',
|
|
38
|
-
});
|
|
39
|
-
// @ts-expect-error - dialect is not typed
|
|
40
|
-
const dialect = noopDatabase.dialect;
|
|
41
|
-
export const compileQuery = (query) => {
|
|
42
|
-
return dialect.sqlToQuery(query.getSQL());
|
|
43
|
-
};
|
|
44
|
-
export function createClient({ baseUrl, relations, schema, }) {
|
|
45
|
-
return {
|
|
46
|
-
db: drizzle(async (sql, params, method, typings) => {
|
|
47
|
-
const query = { sql, params, typings };
|
|
48
|
-
const url = getUrl(baseUrl, 'db', query);
|
|
49
|
-
const rsp = await fetch(url.toString(), {
|
|
50
|
-
method: 'GET',
|
|
51
|
-
});
|
|
52
|
-
if (!rsp.ok) {
|
|
53
|
-
throw new Error((await rsp.json()).error);
|
|
54
|
-
}
|
|
55
|
-
const result = await rsp.json();
|
|
56
|
-
if (method === 'all') {
|
|
57
|
-
return {
|
|
58
|
-
...result,
|
|
59
|
-
rows: result.rows.map((row) => Object.values(row)),
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
return result;
|
|
63
|
-
}, {
|
|
64
|
-
relations: relations,
|
|
65
|
-
schema: schema,
|
|
66
|
-
casing: 'snake_case',
|
|
67
|
-
}),
|
|
68
|
-
live: (queryFn, onData, onError) => {
|
|
69
|
-
let result;
|
|
70
|
-
const passThroughDatabase = drizzle((_, __, method) => {
|
|
71
|
-
if (method === 'all') {
|
|
72
|
-
return Promise.resolve({
|
|
73
|
-
...result,
|
|
74
|
-
rows: result.rows.map((row) => Object.values(row)),
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
return Promise.resolve(result);
|
|
78
|
-
}, { schema: schema, relations: relations, casing: 'snake_case' });
|
|
79
|
-
const queryPromise = queryFn(passThroughDatabase);
|
|
80
|
-
if ('getSQL' in queryPromise === false) {
|
|
81
|
-
throw new Error('"queryFn" must return SQL. You may have to remove `.execute()` from your query.');
|
|
82
|
-
}
|
|
83
|
-
const queryBuilder = queryPromise;
|
|
84
|
-
const query = compileQuery(queryBuilder);
|
|
85
|
-
const sse = new EventSource(getUrl(baseUrl, 'live', query));
|
|
86
|
-
async function onMessage(event) {
|
|
87
|
-
result = JSON.parse(event.data);
|
|
88
|
-
let data;
|
|
89
|
-
if (queryBuilder instanceof TypedQueryBuilder) {
|
|
90
|
-
data = await passThroughDatabase._.session
|
|
91
|
-
.prepareQuery(query,
|
|
92
|
-
// @ts-expect-error - selectedFields is not typed
|
|
93
|
-
orderSelectedFields(queryPromise._.selectedFields), undefined, false)
|
|
94
|
-
.execute();
|
|
95
|
-
}
|
|
96
|
-
else if (queryBuilder instanceof PgRelationalQuery) {
|
|
97
|
-
// @ts-expect-error - _toSQL is not typed
|
|
98
|
-
const selection = queryBuilder._toSQL().query.selection;
|
|
99
|
-
data = await passThroughDatabase._.session
|
|
100
|
-
.prepareQuery(query, undefined, undefined, true, (rawRows, mapColumnValue) => {
|
|
101
|
-
const rows = rawRows.map((row) => {
|
|
102
|
-
const obj = {};
|
|
103
|
-
row.forEach((value, index) => {
|
|
104
|
-
// @ts-expect-error - selection is not typed
|
|
105
|
-
obj[selection[index].key] = value;
|
|
106
|
-
});
|
|
107
|
-
return mapRelationalRow(obj, selection, mapColumnValue);
|
|
108
|
-
});
|
|
109
|
-
// @ts-expect-error - mode is not typed
|
|
110
|
-
if (queryBuilder.mode === 'first') {
|
|
111
|
-
return rows[0];
|
|
112
|
-
}
|
|
113
|
-
return rows;
|
|
114
|
-
})
|
|
115
|
-
.execute();
|
|
116
|
-
}
|
|
117
|
-
else if (queryBuilder instanceof PgRaw) {
|
|
118
|
-
data = await passThroughDatabase._.session
|
|
119
|
-
.prepareQuery(query, undefined, undefined, false)
|
|
120
|
-
.execute();
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
throw new Error('Unsupported query builder');
|
|
124
|
-
}
|
|
125
|
-
// @ts-expect-error - data is not typed
|
|
126
|
-
onData(data);
|
|
127
|
-
}
|
|
128
|
-
function onSSEError(event) {
|
|
129
|
-
if ('data' in event) {
|
|
130
|
-
onError?.(new Error(event.data));
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
// @ts-expect-error - message is not typed
|
|
134
|
-
onError?.(new Error(`SSE error ${event?.message}`));
|
|
135
|
-
}
|
|
136
|
-
sse.close();
|
|
137
|
-
}
|
|
138
|
-
sse.addEventListener('message', onMessage);
|
|
139
|
-
sse.addEventListener('error', onSSEError);
|
|
140
|
-
return {
|
|
141
|
-
unsubscribe: () => {
|
|
142
|
-
sse.removeEventListener('message', onMessage);
|
|
143
|
-
sse.removeEventListener('error', onSSEError);
|
|
144
|
-
sse.close();
|
|
145
|
-
},
|
|
146
|
-
};
|
|
147
|
-
},
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"default-hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks/default-hooks.ts"],"names":[],"mappings":""}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
// import { metadataArrayToObject } from '@filoz/synapse-core/utils'
|
|
2
|
-
// import { and, eq, inArray } from 'drizzle-orm'
|
|
3
|
-
// import { stringify } from 'viem'
|
|
4
|
-
// import { datasets, pieces } from '../db/schema'
|
|
5
|
-
// import type { HookRegistry } from './registry'
|
|
6
|
-
// /**
|
|
7
|
-
// * Registers the built-in contract event handlers that persist indexed rows.
|
|
8
|
-
// */
|
|
9
|
-
// export function registerDefaultHooks(registry: HookRegistry): void {
|
|
10
|
-
// registry.on('storage:DataSetCreated', async ({ context, event }) => {
|
|
11
|
-
// // console.debug('storage:DataSetCreated', stringify(event.args))
|
|
12
|
-
// const args = event.args
|
|
13
|
-
// const accountAddress = args.payer
|
|
14
|
-
// const now = new Date()
|
|
15
|
-
// const metadata = metadataArrayToObject([
|
|
16
|
-
// args.metadataKeys,
|
|
17
|
-
// args.metadataValues,
|
|
18
|
-
// ])
|
|
19
|
-
// await context.db
|
|
20
|
-
// .insert(datasets)
|
|
21
|
-
// .values({
|
|
22
|
-
// id: args.dataSetId,
|
|
23
|
-
// providerId: args.providerId,
|
|
24
|
-
// storageProvider: args.serviceProvider,
|
|
25
|
-
// payee: args.payee,
|
|
26
|
-
// pdpRailId: args.pdpRailId,
|
|
27
|
-
// cdnRailId: args.cdnRailId,
|
|
28
|
-
// cacheMissRailId: args.cacheMissRailId,
|
|
29
|
-
// blockNumber: context.blockNumber,
|
|
30
|
-
// accountAddress,
|
|
31
|
-
// metadata,
|
|
32
|
-
// createdAt: now,
|
|
33
|
-
// updatedAt: now,
|
|
34
|
-
// })
|
|
35
|
-
// .onConflictDoUpdate({
|
|
36
|
-
// target: [datasets.id],
|
|
37
|
-
// set: {
|
|
38
|
-
// providerId: args.providerId,
|
|
39
|
-
// storageProvider: args.serviceProvider,
|
|
40
|
-
// payee: args.payee,
|
|
41
|
-
// pdpRailId: args.pdpRailId,
|
|
42
|
-
// cdnRailId: args.cdnRailId,
|
|
43
|
-
// cacheMissRailId: args.cacheMissRailId,
|
|
44
|
-
// metadata,
|
|
45
|
-
// blockNumber: context.blockNumber,
|
|
46
|
-
// accountAddress,
|
|
47
|
-
// updatedAt: now,
|
|
48
|
-
// },
|
|
49
|
-
// })
|
|
50
|
-
// })
|
|
51
|
-
// registry.on('storage:ServiceTerminated', async ({ context, event }) => {
|
|
52
|
-
// // console.debug("pdpVerifier:DataSetDeleted", stringify(event.args));
|
|
53
|
-
// const args = event.args
|
|
54
|
-
// await context.db
|
|
55
|
-
// .delete(datasets)
|
|
56
|
-
// .where(and(eq(datasets.id, args.dataSetId)))
|
|
57
|
-
// })
|
|
58
|
-
// registry.on('pdpVerifier:PiecesAdded', async ({ context, event }) => {
|
|
59
|
-
// // console.debug("pdpVerifier:PiecesAdded", stringify(event.args));
|
|
60
|
-
// const args = event.args
|
|
61
|
-
// if (args.pieceIds.length === 0) {
|
|
62
|
-
// return
|
|
63
|
-
// }
|
|
64
|
-
// const dataset = await context.db.query.datasets.findFirst({
|
|
65
|
-
// where: and(eq(datasets.id, args.setId)),
|
|
66
|
-
// columns: { id: true },
|
|
67
|
-
// })
|
|
68
|
-
// if (!dataset) {
|
|
69
|
-
// return
|
|
70
|
-
// }
|
|
71
|
-
// const now = new Date()
|
|
72
|
-
// const piecesToInsert = args.pieceIds.map((pieceId, index) => {
|
|
73
|
-
// const pieceCid = args.pieceCids[index]?.data ?? null
|
|
74
|
-
// return {
|
|
75
|
-
// id: pieceId,
|
|
76
|
-
// blockNumber: context.blockNumber,
|
|
77
|
-
// datasetId: args.setId,
|
|
78
|
-
// accountAddress: event.transaction.from,
|
|
79
|
-
// cid: pieceCid,
|
|
80
|
-
// createdAt: now,
|
|
81
|
-
// }
|
|
82
|
-
// })
|
|
83
|
-
// await context.db
|
|
84
|
-
// .insert(pieces)
|
|
85
|
-
// .values(piecesToInsert)
|
|
86
|
-
// .onConflictDoUpdate({
|
|
87
|
-
// target: [pieces.datasetId, pieces.id],
|
|
88
|
-
// set: {
|
|
89
|
-
// blockNumber: context.blockNumber,
|
|
90
|
-
// accountAddress: event.transaction.from,
|
|
91
|
-
// },
|
|
92
|
-
// })
|
|
93
|
-
// })
|
|
94
|
-
// registry.on('pdpVerifier:PiecesRemoved', async ({ context, event }) => {
|
|
95
|
-
// // console.debug("pdpVerifier:PiecesRemoved", stringify(event.args));
|
|
96
|
-
// const args = event.args
|
|
97
|
-
// if (args.pieceIds.length === 0) {
|
|
98
|
-
// return
|
|
99
|
-
// }
|
|
100
|
-
// await context.db
|
|
101
|
-
// .delete(pieces)
|
|
102
|
-
// .where(
|
|
103
|
-
// and(eq(pieces.datasetId, args.setId), inArray(pieces.id, args.pieceIds))
|
|
104
|
-
// )
|
|
105
|
-
// })
|
|
106
|
-
// }
|
|
107
|
-
//# sourceMappingURL=default-hooks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"default-hooks.js","sourceRoot":"","sources":["../../../src/hooks/default-hooks.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,iDAAiD;AACjD,mCAAmC;AACnC,kDAAkD;AAClD,iDAAiD;AAEjD,MAAM;AACN,+EAA+E;AAC/E,MAAM;AACN,uEAAuE;AACvE,0EAA0E;AAC1E,wEAAwE;AACxE,8BAA8B;AAC9B,wCAAwC;AACxC,6BAA6B;AAE7B,+CAA+C;AAC/C,2BAA2B;AAC3B,6BAA6B;AAC7B,SAAS;AACT,uBAAuB;AACvB,0BAA0B;AAC1B,kBAAkB;AAClB,8BAA8B;AAC9B,uCAAuC;AACvC,iDAAiD;AACjD,6BAA6B;AAC7B,qCAAqC;AACrC,qCAAqC;AACrC,iDAAiD;AACjD,4CAA4C;AAC5C,0BAA0B;AAC1B,oBAAoB;AACpB,0BAA0B;AAC1B,0BAA0B;AAC1B,WAAW;AACX,8BAA8B;AAC9B,iCAAiC;AACjC,iBAAiB;AACjB,yCAAyC;AACzC,mDAAmD;AACnD,+BAA+B;AAC/B,uCAAuC;AACvC,uCAAuC;AACvC,mDAAmD;AACnD,sBAAsB;AACtB,8CAA8C;AAC9C,4BAA4B;AAC5B,4BAA4B;AAC5B,aAAa;AACb,WAAW;AACX,OAAO;AAEP,6EAA6E;AAC7E,6EAA6E;AAC7E,8BAA8B;AAC9B,uBAAuB;AACvB,0BAA0B;AAC1B,qDAAqD;AACrD,OAAO;AAEP,2EAA2E;AAC3E,0EAA0E;AAC1E,8BAA8B;AAC9B,wCAAwC;AACxC,eAAe;AACf,QAAQ;AAER,kEAAkE;AAClE,iDAAiD;AACjD,+BAA+B;AAC/B,SAAS;AAET,sBAAsB;AACtB,eAAe;AACf,QAAQ;AAER,6BAA6B;AAC7B,qEAAqE;AACrE,6DAA6D;AAC7D,iBAAiB;AACjB,uBAAuB;AACvB,4CAA4C;AAC5C,iCAAiC;AACjC,kDAAkD;AAClD,yBAAyB;AACzB,0BAA0B;AAC1B,UAAU;AACV,SAAS;AAET,uBAAuB;AACvB,wBAAwB;AACxB,gCAAgC;AAChC,8BAA8B;AAC9B,iDAAiD;AACjD,iBAAiB;AACjB,8CAA8C;AAC9C,oDAAoD;AACpD,aAAa;AACb,WAAW;AACX,OAAO;AAEP,6EAA6E;AAC7E,4EAA4E;AAC5E,8BAA8B;AAC9B,wCAAwC;AACxC,eAAe;AACf,QAAQ;AAER,uBAAuB;AACvB,wBAAwB;AACxB,gBAAgB;AAChB,mFAAmF;AACnF,UAAU;AACV,OAAO;AACP,IAAI"}
|
|
File without changes
|