@fayz-ai/plugin-banking-br 0.9.1 → 0.10.1

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,423 +1,2 @@
1
- export declare const bankIntegrations: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
- name: "bank_integrations";
3
- schema: undefined;
4
- columns: {
5
- createdAt: import("drizzle-orm/pg-core").PgColumn<{
6
- name: "created_at";
7
- tableName: "bank_integrations";
8
- dataType: "date";
9
- columnType: "PgTimestamp";
10
- data: Date;
11
- driverParam: string;
12
- notNull: true;
13
- hasDefault: true;
14
- isPrimaryKey: false;
15
- isAutoincrement: false;
16
- hasRuntimeDefault: false;
17
- enumValues: undefined;
18
- baseColumn: never;
19
- identity: undefined;
20
- generated: undefined;
21
- }, {}, {}>;
22
- updatedAt: import("drizzle-orm/pg-core").PgColumn<{
23
- name: "updated_at";
24
- tableName: "bank_integrations";
25
- dataType: "date";
26
- columnType: "PgTimestamp";
27
- data: Date;
28
- driverParam: string;
29
- notNull: true;
30
- hasDefault: true;
31
- isPrimaryKey: false;
32
- isAutoincrement: false;
33
- hasRuntimeDefault: false;
34
- enumValues: undefined;
35
- baseColumn: never;
36
- identity: undefined;
37
- generated: undefined;
38
- }, {}, {}>;
39
- id: import("drizzle-orm/pg-core").PgColumn<{
40
- name: "id";
41
- tableName: "bank_integrations";
42
- dataType: "string";
43
- columnType: "PgUUID";
44
- data: string;
45
- driverParam: string;
46
- notNull: true;
47
- hasDefault: true;
48
- isPrimaryKey: true;
49
- isAutoincrement: false;
50
- hasRuntimeDefault: false;
51
- enumValues: undefined;
52
- baseColumn: never;
53
- identity: undefined;
54
- generated: undefined;
55
- }, {}, {}>;
56
- tenantId: import("drizzle-orm/pg-core").PgColumn<{
57
- name: "tenant_id";
58
- tableName: "bank_integrations";
59
- dataType: "string";
60
- columnType: "PgUUID";
61
- data: string;
62
- driverParam: string;
63
- notNull: true;
64
- hasDefault: false;
65
- isPrimaryKey: false;
66
- isAutoincrement: false;
67
- hasRuntimeDefault: false;
68
- enumValues: undefined;
69
- baseColumn: never;
70
- identity: undefined;
71
- generated: undefined;
72
- }, {}, {}>;
73
- provider: import("drizzle-orm/pg-core").PgColumn<{
74
- name: "provider";
75
- tableName: "bank_integrations";
76
- dataType: "string";
77
- columnType: "PgText";
78
- data: string;
79
- driverParam: string;
80
- notNull: true;
81
- hasDefault: true;
82
- isPrimaryKey: false;
83
- isAutoincrement: false;
84
- hasRuntimeDefault: false;
85
- enumValues: [string, ...string[]];
86
- baseColumn: never;
87
- identity: undefined;
88
- generated: undefined;
89
- }, {}, {}>;
90
- bankAccountId: import("drizzle-orm/pg-core").PgColumn<{
91
- name: "bank_account_id";
92
- tableName: "bank_integrations";
93
- dataType: "string";
94
- columnType: "PgUUID";
95
- data: string;
96
- driverParam: string;
97
- notNull: false;
98
- hasDefault: false;
99
- isPrimaryKey: false;
100
- isAutoincrement: false;
101
- hasRuntimeDefault: false;
102
- enumValues: undefined;
103
- baseColumn: never;
104
- identity: undefined;
105
- generated: undefined;
106
- }, {}, {}>;
107
- apiToken: import("drizzle-orm/pg-core").PgColumn<{
108
- name: "api_token";
109
- tableName: "bank_integrations";
110
- dataType: "string";
111
- columnType: "PgText";
112
- data: string;
113
- driverParam: string;
114
- notNull: false;
115
- hasDefault: false;
116
- isPrimaryKey: false;
117
- isAutoincrement: false;
118
- hasRuntimeDefault: false;
119
- enumValues: [string, ...string[]];
120
- baseColumn: never;
121
- identity: undefined;
122
- generated: undefined;
123
- }, {}, {}>;
124
- cnpj: import("drizzle-orm/pg-core").PgColumn<{
125
- name: "cnpj";
126
- tableName: "bank_integrations";
127
- dataType: "string";
128
- columnType: "PgText";
129
- data: string;
130
- driverParam: string;
131
- notNull: false;
132
- hasDefault: false;
133
- isPrimaryKey: false;
134
- isAutoincrement: false;
135
- hasRuntimeDefault: false;
136
- enumValues: [string, ...string[]];
137
- baseColumn: never;
138
- identity: undefined;
139
- generated: undefined;
140
- }, {}, {}>;
141
- environment: import("drizzle-orm/pg-core").PgColumn<{
142
- name: "environment";
143
- tableName: "bank_integrations";
144
- dataType: "string";
145
- columnType: "PgText";
146
- data: string;
147
- driverParam: string;
148
- notNull: true;
149
- hasDefault: true;
150
- isPrimaryKey: false;
151
- isAutoincrement: false;
152
- hasRuntimeDefault: false;
153
- enumValues: [string, ...string[]];
154
- baseColumn: never;
155
- identity: undefined;
156
- generated: undefined;
157
- }, {}, {}>;
158
- active: import("drizzle-orm/pg-core").PgColumn<{
159
- name: "active";
160
- tableName: "bank_integrations";
161
- dataType: "boolean";
162
- columnType: "PgBoolean";
163
- data: boolean;
164
- driverParam: boolean;
165
- notNull: true;
166
- hasDefault: true;
167
- isPrimaryKey: false;
168
- isAutoincrement: false;
169
- hasRuntimeDefault: false;
170
- enumValues: undefined;
171
- baseColumn: never;
172
- identity: undefined;
173
- generated: undefined;
174
- }, {}, {}>;
175
- lastSyncAt: import("drizzle-orm/pg-core").PgColumn<{
176
- name: "last_sync_at";
177
- tableName: "bank_integrations";
178
- dataType: "date";
179
- columnType: "PgTimestamp";
180
- data: Date;
181
- driverParam: string;
182
- notNull: false;
183
- hasDefault: false;
184
- isPrimaryKey: false;
185
- isAutoincrement: false;
186
- hasRuntimeDefault: false;
187
- enumValues: undefined;
188
- baseColumn: never;
189
- identity: undefined;
190
- generated: undefined;
191
- }, {}, {}>;
192
- };
193
- dialect: "pg";
194
- }>;
195
- export declare const bankIntegrationSyncLog: import("drizzle-orm/pg-core").PgTableWithColumns<{
196
- name: "bank_integration_sync_log";
197
- schema: undefined;
198
- columns: {
199
- createdAt: import("drizzle-orm/pg-core").PgColumn<{
200
- name: "created_at";
201
- tableName: "bank_integration_sync_log";
202
- dataType: "date";
203
- columnType: "PgTimestamp";
204
- data: Date;
205
- driverParam: string;
206
- notNull: true;
207
- hasDefault: true;
208
- isPrimaryKey: false;
209
- isAutoincrement: false;
210
- hasRuntimeDefault: false;
211
- enumValues: undefined;
212
- baseColumn: never;
213
- identity: undefined;
214
- generated: undefined;
215
- }, {}, {}>;
216
- id: import("drizzle-orm/pg-core").PgColumn<{
217
- name: "id";
218
- tableName: "bank_integration_sync_log";
219
- dataType: "string";
220
- columnType: "PgUUID";
221
- data: string;
222
- driverParam: string;
223
- notNull: true;
224
- hasDefault: true;
225
- isPrimaryKey: true;
226
- isAutoincrement: false;
227
- hasRuntimeDefault: false;
228
- enumValues: undefined;
229
- baseColumn: never;
230
- identity: undefined;
231
- generated: undefined;
232
- }, {}, {}>;
233
- tenantId: import("drizzle-orm/pg-core").PgColumn<{
234
- name: "tenant_id";
235
- tableName: "bank_integration_sync_log";
236
- dataType: "string";
237
- columnType: "PgUUID";
238
- data: string;
239
- driverParam: string;
240
- notNull: true;
241
- hasDefault: false;
242
- isPrimaryKey: false;
243
- isAutoincrement: false;
244
- hasRuntimeDefault: false;
245
- enumValues: undefined;
246
- baseColumn: never;
247
- identity: undefined;
248
- generated: undefined;
249
- }, {}, {}>;
250
- bankIntegrationId: import("drizzle-orm/pg-core").PgColumn<{
251
- name: "bank_integration_id";
252
- tableName: "bank_integration_sync_log";
253
- dataType: "string";
254
- columnType: "PgUUID";
255
- data: string;
256
- driverParam: string;
257
- notNull: true;
258
- hasDefault: false;
259
- isPrimaryKey: false;
260
- isAutoincrement: false;
261
- hasRuntimeDefault: false;
262
- enumValues: undefined;
263
- baseColumn: never;
264
- identity: undefined;
265
- generated: undefined;
266
- }, {}, {}>;
267
- bankAccountId: import("drizzle-orm/pg-core").PgColumn<{
268
- name: "bank_account_id";
269
- tableName: "bank_integration_sync_log";
270
- dataType: "string";
271
- columnType: "PgUUID";
272
- data: string;
273
- driverParam: string;
274
- notNull: false;
275
- hasDefault: false;
276
- isPrimaryKey: false;
277
- isAutoincrement: false;
278
- hasRuntimeDefault: false;
279
- enumValues: undefined;
280
- baseColumn: never;
281
- identity: undefined;
282
- generated: undefined;
283
- }, {}, {}>;
284
- periodFrom: import("drizzle-orm/pg-core").PgColumn<{
285
- name: "period_from";
286
- tableName: "bank_integration_sync_log";
287
- dataType: "string";
288
- columnType: "PgDateString";
289
- data: string;
290
- driverParam: string;
291
- notNull: false;
292
- hasDefault: false;
293
- isPrimaryKey: false;
294
- isAutoincrement: false;
295
- hasRuntimeDefault: false;
296
- enumValues: undefined;
297
- baseColumn: never;
298
- identity: undefined;
299
- generated: undefined;
300
- }, {}, {}>;
301
- periodTo: import("drizzle-orm/pg-core").PgColumn<{
302
- name: "period_to";
303
- tableName: "bank_integration_sync_log";
304
- dataType: "string";
305
- columnType: "PgDateString";
306
- data: string;
307
- driverParam: string;
308
- notNull: false;
309
- hasDefault: false;
310
- isPrimaryKey: false;
311
- isAutoincrement: false;
312
- hasRuntimeDefault: false;
313
- enumValues: undefined;
314
- baseColumn: never;
315
- identity: undefined;
316
- generated: undefined;
317
- }, {}, {}>;
318
- transactionsFetched: import("drizzle-orm/pg-core").PgColumn<{
319
- name: "transactions_fetched";
320
- tableName: "bank_integration_sync_log";
321
- dataType: "number";
322
- columnType: "PgInteger";
323
- data: number;
324
- driverParam: string | number;
325
- notNull: true;
326
- hasDefault: true;
327
- isPrimaryKey: false;
328
- isAutoincrement: false;
329
- hasRuntimeDefault: false;
330
- enumValues: undefined;
331
- baseColumn: never;
332
- identity: undefined;
333
- generated: undefined;
334
- }, {}, {}>;
335
- transactionsImported: import("drizzle-orm/pg-core").PgColumn<{
336
- name: "transactions_imported";
337
- tableName: "bank_integration_sync_log";
338
- dataType: "number";
339
- columnType: "PgInteger";
340
- data: number;
341
- driverParam: string | number;
342
- notNull: true;
343
- hasDefault: true;
344
- isPrimaryKey: false;
345
- isAutoincrement: false;
346
- hasRuntimeDefault: false;
347
- enumValues: undefined;
348
- baseColumn: never;
349
- identity: undefined;
350
- generated: undefined;
351
- }, {}, {}>;
352
- duplicates: import("drizzle-orm/pg-core").PgColumn<{
353
- name: "duplicates";
354
- tableName: "bank_integration_sync_log";
355
- dataType: "number";
356
- columnType: "PgInteger";
357
- data: number;
358
- driverParam: string | number;
359
- notNull: true;
360
- hasDefault: true;
361
- isPrimaryKey: false;
362
- isAutoincrement: false;
363
- hasRuntimeDefault: false;
364
- enumValues: undefined;
365
- baseColumn: never;
366
- identity: undefined;
367
- generated: undefined;
368
- }, {}, {}>;
369
- status: import("drizzle-orm/pg-core").PgColumn<{
370
- name: "status";
371
- tableName: "bank_integration_sync_log";
372
- dataType: "string";
373
- columnType: "PgText";
374
- data: string;
375
- driverParam: string;
376
- notNull: true;
377
- hasDefault: true;
378
- isPrimaryKey: false;
379
- isAutoincrement: false;
380
- hasRuntimeDefault: false;
381
- enumValues: [string, ...string[]];
382
- baseColumn: never;
383
- identity: undefined;
384
- generated: undefined;
385
- }, {}, {}>;
386
- errorMessage: import("drizzle-orm/pg-core").PgColumn<{
387
- name: "error_message";
388
- tableName: "bank_integration_sync_log";
389
- dataType: "string";
390
- columnType: "PgText";
391
- data: string;
392
- driverParam: string;
393
- notNull: false;
394
- hasDefault: false;
395
- isPrimaryKey: false;
396
- isAutoincrement: false;
397
- hasRuntimeDefault: false;
398
- enumValues: [string, ...string[]];
399
- baseColumn: never;
400
- identity: undefined;
401
- generated: undefined;
402
- }, {}, {}>;
403
- triggeredByUserId: import("drizzle-orm/pg-core").PgColumn<{
404
- name: "triggered_by_user_id";
405
- tableName: "bank_integration_sync_log";
406
- dataType: "string";
407
- columnType: "PgUUID";
408
- data: string;
409
- driverParam: string;
410
- notNull: false;
411
- hasDefault: false;
412
- isPrimaryKey: false;
413
- isAutoincrement: false;
414
- hasRuntimeDefault: false;
415
- enumValues: undefined;
416
- baseColumn: never;
417
- identity: undefined;
418
- generated: undefined;
419
- }, {}, {}>;
420
- };
421
- dialect: "pg";
422
- }>;
1
+ export {};
423
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY3B,CAAA;AAGF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcjC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,CAAA"}
package/dist/schema.cjs CHANGED
@@ -1,40 +1,4 @@
1
1
  'use strict';
2
2
 
3
- var db = require('@fayz-ai/db');
4
-
5
- // src/schema/index.ts
6
- var bankIntegrations = db.pgTable("bank_integrations", {
7
- id: db.uuid("id").primaryKey().defaultRandom(),
8
- tenantId: db.tenantId(),
9
- provider: db.text("provider").notNull().default("plugbank"),
10
- bankAccountId: db.uuid("bank_account_id"),
11
- // Tecnospeed PlugBank credentials
12
- apiToken: db.text("api_token"),
13
- cnpj: db.text("cnpj"),
14
- environment: db.text("environment").notNull().default("production"),
15
- // production | sandbox
16
- active: db.boolean("active").notNull().default(true),
17
- lastSyncAt: db.timestamp("last_sync_at", { withTimezone: true }),
18
- ...db.timestamps
19
- });
20
- var bankIntegrationSyncLog = db.pgTable("bank_integration_sync_log", {
21
- id: db.uuid("id").primaryKey().defaultRandom(),
22
- tenantId: db.tenantId(),
23
- bankIntegrationId: db.uuid("bank_integration_id").notNull().references(() => bankIntegrations.id, { onDelete: "cascade" }),
24
- bankAccountId: db.uuid("bank_account_id"),
25
- periodFrom: db.date("period_from"),
26
- periodTo: db.date("period_to"),
27
- transactionsFetched: db.integer("transactions_fetched").notNull().default(0),
28
- transactionsImported: db.integer("transactions_imported").notNull().default(0),
29
- duplicates: db.integer("duplicates").notNull().default(0),
30
- status: db.text("status").notNull().default("success"),
31
- // success | partial | error
32
- errorMessage: db.text("error_message"),
33
- triggeredByUserId: db.uuid("triggered_by_user_id"),
34
- ...db.createdAt
35
- });
36
-
37
- exports.bankIntegrationSyncLog = bankIntegrationSyncLog;
38
- exports.bankIntegrations = bankIntegrations;
39
3
  //# sourceMappingURL=schema.cjs.map
40
4
  //# sourceMappingURL=schema.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schema/index.ts"],"names":["pgTable","uuid","tenantId","text","boolean","timestamp","timestamps","date","integer","createdAt"],"mappings":";;;;;AAoBO,IAAM,gBAAA,GAAmBA,WAAQ,mBAAA,EAAqB;AAAA,EAC3D,IAAIC,OAAA,CAAK,IAAI,CAAA,CAAE,UAAA,GAAa,aAAA,EAAc;AAAA,EAC1C,UAAUC,WAAA,EAAS;AAAA,EACnB,UAAUC,OAAA,CAAK,UAAU,EAAE,OAAA,EAAQ,CAAE,QAAQ,UAAU,CAAA;AAAA,EACvD,aAAA,EAAeF,QAAK,iBAAiB,CAAA;AAAA;AAAA,EAErC,QAAA,EAAUE,QAAK,WAAW,CAAA;AAAA,EAC1B,IAAA,EAAMA,QAAK,MAAM,CAAA;AAAA,EACjB,aAAaA,OAAA,CAAK,aAAa,EAAE,OAAA,EAAQ,CAAE,QAAQ,YAAY,CAAA;AAAA;AAAA,EAC/D,QAAQC,UAAA,CAAQ,QAAQ,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA;AAAA,EAChD,YAAYC,YAAA,CAAU,cAAA,EAAgB,EAAE,YAAA,EAAc,MAAM,CAAA;AAAA,EAC5D,GAAGC;AACL,CAAC;AAGM,IAAM,sBAAA,GAAyBN,WAAQ,2BAAA,EAA6B;AAAA,EACzE,IAAIC,OAAA,CAAK,IAAI,CAAA,CAAE,UAAA,GAAa,aAAA,EAAc;AAAA,EAC1C,UAAUC,WAAA,EAAS;AAAA,EACnB,iBAAA,EAAmBD,OAAA,CAAK,qBAAqB,CAAA,CAAE,OAAA,EAAQ,CAAE,UAAA,CAAW,MAAM,gBAAA,CAAiB,EAAA,EAAI,EAAE,QAAA,EAAU,WAAW,CAAA;AAAA,EACtH,aAAA,EAAeA,QAAK,iBAAiB,CAAA;AAAA,EACrC,UAAA,EAAYM,QAAK,aAAa,CAAA;AAAA,EAC9B,QAAA,EAAUA,QAAK,WAAW,CAAA;AAAA,EAC1B,qBAAqBC,UAAA,CAAQ,sBAAsB,EAAE,OAAA,EAAQ,CAAE,QAAQ,CAAC,CAAA;AAAA,EACxE,sBAAsBA,UAAA,CAAQ,uBAAuB,EAAE,OAAA,EAAQ,CAAE,QAAQ,CAAC,CAAA;AAAA,EAC1E,YAAYA,UAAA,CAAQ,YAAY,EAAE,OAAA,EAAQ,CAAE,QAAQ,CAAC,CAAA;AAAA,EACrD,QAAQL,OAAA,CAAK,QAAQ,EAAE,OAAA,EAAQ,CAAE,QAAQ,SAAS,CAAA;AAAA;AAAA,EAClD,YAAA,EAAcA,QAAK,eAAe,CAAA;AAAA,EAClC,iBAAA,EAAmBF,QAAK,sBAAsB,CAAA;AAAA,EAC9C,GAAGQ;AACL,CAAC","file":"schema.cjs","sourcesContent":["// Open Banking plugin (app-local incubator) — Ring-1 Drizzle schema.\n//\n// CLIENT-OWNED connector that follows the SDK plugin contract. It owns the bank\n// connection + sync-audit tables and a Supabase Edge Function (plugbank-sync)\n// that imports bank-statement lines into the SDK financial ledger\n// (public.plg_financial_movements, tagged external_source='plugbank'). The matching\n// happens in the SDK financial plugin's Reconciliation view.\n//\n// Graduation path (see PLUGIN.md): move this folder to\n// `fayz-sdk/plugins/plugin-banking-br/src/` largely unchanged.\n//\n// Builders come from @fayz-ai/admin/db (front-door re-export of @fayz-ai/db —\n// single drizzle-orm instance). NEVER import pgTable/uuid from drizzle-orm/pg-core directly.\nimport { pgTable, uuid, text, integer, boolean, timestamp, date, tenantId, timestamps, createdAt } from '@fayz-ai/db'\n\n// bank_integrations — one connection per (tenant, bank account, provider).\n// Holds the provider credentials (Tecnospeed PlugBank: api_token + cnpj). Server\n// secrets that must never reach the browser live in Supabase function env; this\n// row stores the per-tenant config + token that the edge function reads with the\n// service role.\nexport const bankIntegrations = pgTable('bank_integrations', {\n id: uuid('id').primaryKey().defaultRandom(),\n tenantId: tenantId(),\n provider: text('provider').notNull().default('plugbank'),\n bankAccountId: uuid('bank_account_id'),\n // Tecnospeed PlugBank credentials\n apiToken: text('api_token'),\n cnpj: text('cnpj'),\n environment: text('environment').notNull().default('production'), // production | sandbox\n active: boolean('active').notNull().default(true),\n lastSyncAt: timestamp('last_sync_at', { withTimezone: true }),\n ...timestamps,\n})\n\n// bank_integration_sync_log — one row per sync run (audit trail).\nexport const bankIntegrationSyncLog = pgTable('bank_integration_sync_log', {\n id: uuid('id').primaryKey().defaultRandom(),\n tenantId: tenantId(),\n bankIntegrationId: uuid('bank_integration_id').notNull().references(() => bankIntegrations.id, { onDelete: 'cascade' }),\n bankAccountId: uuid('bank_account_id'),\n periodFrom: date('period_from'),\n periodTo: date('period_to'),\n transactionsFetched: integer('transactions_fetched').notNull().default(0),\n transactionsImported: integer('transactions_imported').notNull().default(0),\n duplicates: integer('duplicates').notNull().default(0),\n status: text('status').notNull().default('success'), // success | partial | error\n errorMessage: text('error_message'),\n triggeredByUserId: uuid('triggered_by_user_id'),\n ...createdAt,\n})\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"schema.cjs"}
package/dist/schema.js CHANGED
@@ -1,37 +1,3 @@
1
- import { pgTable, timestamps, timestamp, boolean, text, uuid, tenantId, createdAt, integer, date } from '@fayz-ai/db';
2
1
 
3
- // src/schema/index.ts
4
- var bankIntegrations = pgTable("bank_integrations", {
5
- id: uuid("id").primaryKey().defaultRandom(),
6
- tenantId: tenantId(),
7
- provider: text("provider").notNull().default("plugbank"),
8
- bankAccountId: uuid("bank_account_id"),
9
- // Tecnospeed PlugBank credentials
10
- apiToken: text("api_token"),
11
- cnpj: text("cnpj"),
12
- environment: text("environment").notNull().default("production"),
13
- // production | sandbox
14
- active: boolean("active").notNull().default(true),
15
- lastSyncAt: timestamp("last_sync_at", { withTimezone: true }),
16
- ...timestamps
17
- });
18
- var bankIntegrationSyncLog = pgTable("bank_integration_sync_log", {
19
- id: uuid("id").primaryKey().defaultRandom(),
20
- tenantId: tenantId(),
21
- bankIntegrationId: uuid("bank_integration_id").notNull().references(() => bankIntegrations.id, { onDelete: "cascade" }),
22
- bankAccountId: uuid("bank_account_id"),
23
- periodFrom: date("period_from"),
24
- periodTo: date("period_to"),
25
- transactionsFetched: integer("transactions_fetched").notNull().default(0),
26
- transactionsImported: integer("transactions_imported").notNull().default(0),
27
- duplicates: integer("duplicates").notNull().default(0),
28
- status: text("status").notNull().default("success"),
29
- // success | partial | error
30
- errorMessage: text("error_message"),
31
- triggeredByUserId: uuid("triggered_by_user_id"),
32
- ...createdAt
33
- });
34
-
35
- export { bankIntegrationSyncLog, bankIntegrations };
36
2
  //# sourceMappingURL=schema.js.map
37
3
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schema/index.ts"],"names":[],"mappings":";;;AAoBO,IAAM,gBAAA,GAAmB,QAAQ,mBAAA,EAAqB;AAAA,EAC3D,IAAI,IAAA,CAAK,IAAI,CAAA,CAAE,UAAA,GAAa,aAAA,EAAc;AAAA,EAC1C,UAAU,QAAA,EAAS;AAAA,EACnB,UAAU,IAAA,CAAK,UAAU,EAAE,OAAA,EAAQ,CAAE,QAAQ,UAAU,CAAA;AAAA,EACvD,aAAA,EAAe,KAAK,iBAAiB,CAAA;AAAA;AAAA,EAErC,QAAA,EAAU,KAAK,WAAW,CAAA;AAAA,EAC1B,IAAA,EAAM,KAAK,MAAM,CAAA;AAAA,EACjB,aAAa,IAAA,CAAK,aAAa,EAAE,OAAA,EAAQ,CAAE,QAAQ,YAAY,CAAA;AAAA;AAAA,EAC/D,QAAQ,OAAA,CAAQ,QAAQ,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA;AAAA,EAChD,YAAY,SAAA,CAAU,cAAA,EAAgB,EAAE,YAAA,EAAc,MAAM,CAAA;AAAA,EAC5D,GAAG;AACL,CAAC;AAGM,IAAM,sBAAA,GAAyB,QAAQ,2BAAA,EAA6B;AAAA,EACzE,IAAI,IAAA,CAAK,IAAI,CAAA,CAAE,UAAA,GAAa,aAAA,EAAc;AAAA,EAC1C,UAAU,QAAA,EAAS;AAAA,EACnB,iBAAA,EAAmB,IAAA,CAAK,qBAAqB,CAAA,CAAE,OAAA,EAAQ,CAAE,UAAA,CAAW,MAAM,gBAAA,CAAiB,EAAA,EAAI,EAAE,QAAA,EAAU,WAAW,CAAA;AAAA,EACtH,aAAA,EAAe,KAAK,iBAAiB,CAAA;AAAA,EACrC,UAAA,EAAY,KAAK,aAAa,CAAA;AAAA,EAC9B,QAAA,EAAU,KAAK,WAAW,CAAA;AAAA,EAC1B,qBAAqB,OAAA,CAAQ,sBAAsB,EAAE,OAAA,EAAQ,CAAE,QAAQ,CAAC,CAAA;AAAA,EACxE,sBAAsB,OAAA,CAAQ,uBAAuB,EAAE,OAAA,EAAQ,CAAE,QAAQ,CAAC,CAAA;AAAA,EAC1E,YAAY,OAAA,CAAQ,YAAY,EAAE,OAAA,EAAQ,CAAE,QAAQ,CAAC,CAAA;AAAA,EACrD,QAAQ,IAAA,CAAK,QAAQ,EAAE,OAAA,EAAQ,CAAE,QAAQ,SAAS,CAAA;AAAA;AAAA,EAClD,YAAA,EAAc,KAAK,eAAe,CAAA;AAAA,EAClC,iBAAA,EAAmB,KAAK,sBAAsB,CAAA;AAAA,EAC9C,GAAG;AACL,CAAC","file":"schema.js","sourcesContent":["// Open Banking plugin (app-local incubator) — Ring-1 Drizzle schema.\n//\n// CLIENT-OWNED connector that follows the SDK plugin contract. It owns the bank\n// connection + sync-audit tables and a Supabase Edge Function (plugbank-sync)\n// that imports bank-statement lines into the SDK financial ledger\n// (public.plg_financial_movements, tagged external_source='plugbank'). The matching\n// happens in the SDK financial plugin's Reconciliation view.\n//\n// Graduation path (see PLUGIN.md): move this folder to\n// `fayz-sdk/plugins/plugin-banking-br/src/` largely unchanged.\n//\n// Builders come from @fayz-ai/admin/db (front-door re-export of @fayz-ai/db —\n// single drizzle-orm instance). NEVER import pgTable/uuid from drizzle-orm/pg-core directly.\nimport { pgTable, uuid, text, integer, boolean, timestamp, date, tenantId, timestamps, createdAt } from '@fayz-ai/db'\n\n// bank_integrations — one connection per (tenant, bank account, provider).\n// Holds the provider credentials (Tecnospeed PlugBank: api_token + cnpj). Server\n// secrets that must never reach the browser live in Supabase function env; this\n// row stores the per-tenant config + token that the edge function reads with the\n// service role.\nexport const bankIntegrations = pgTable('bank_integrations', {\n id: uuid('id').primaryKey().defaultRandom(),\n tenantId: tenantId(),\n provider: text('provider').notNull().default('plugbank'),\n bankAccountId: uuid('bank_account_id'),\n // Tecnospeed PlugBank credentials\n apiToken: text('api_token'),\n cnpj: text('cnpj'),\n environment: text('environment').notNull().default('production'), // production | sandbox\n active: boolean('active').notNull().default(true),\n lastSyncAt: timestamp('last_sync_at', { withTimezone: true }),\n ...timestamps,\n})\n\n// bank_integration_sync_log — one row per sync run (audit trail).\nexport const bankIntegrationSyncLog = pgTable('bank_integration_sync_log', {\n id: uuid('id').primaryKey().defaultRandom(),\n tenantId: tenantId(),\n bankIntegrationId: uuid('bank_integration_id').notNull().references(() => bankIntegrations.id, { onDelete: 'cascade' }),\n bankAccountId: uuid('bank_account_id'),\n periodFrom: date('period_from'),\n periodTo: date('period_to'),\n transactionsFetched: integer('transactions_fetched').notNull().default(0),\n transactionsImported: integer('transactions_imported').notNull().default(0),\n duplicates: integer('duplicates').notNull().default(0),\n status: text('status').notNull().default('success'), // success | partial | error\n errorMessage: text('error_message'),\n triggeredByUserId: uuid('triggered_by_user_id'),\n ...createdAt,\n})\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"schema.js"}
package/dist/types.d.ts CHANGED
@@ -1,9 +1,9 @@
1
+ import type { SyncRun } from '@fayz-ai/core';
2
+ export type { SyncRun };
1
3
  export interface BankIntegration {
2
4
  id: string;
3
5
  provider: string;
4
6
  bankAccountId?: string;
5
- apiToken?: string;
6
- cnpj?: string;
7
7
  environment: string;
8
8
  active: boolean;
9
9
  lastSyncAt?: string;
@@ -11,19 +11,23 @@ export interface BankIntegration {
11
11
  export interface SaveIntegrationInput {
12
12
  id?: string;
13
13
  bankAccountId?: string;
14
- apiToken: string;
15
- cnpj: string;
16
14
  environment?: string;
17
15
  }
18
- export interface SyncLogEntry {
19
- id: string;
16
+ /**
17
+ * One import execution. `SyncRun` is the shared vocabulary every connector's
18
+ * audit trail speaks; the three extras below are what the MANUAL import means
19
+ * and no generic run has: the operator picked a period, and a re-import of that
20
+ * period is mostly duplicates by design.
21
+ *
22
+ * They are not columns. They are read out of `plg_sync_runs.stats`, which is the
23
+ * jsonb the generic run carries so a connector's own counters do not each become
24
+ * a column on a shared table. The mapping lives in ../data/supabase.ts.
25
+ */
26
+ export interface BankSyncRun extends SyncRun {
20
27
  periodFrom?: string;
21
28
  periodTo?: string;
22
- transactionsFetched: number;
23
- transactionsImported: number;
24
29
  duplicates: number;
25
- status: string;
26
- errorMessage?: string;
30
+ /** The run's `started_at`. Kept under the old name so the panel is unchanged. */
27
31
  createdAt: string;
28
32
  }
29
33
  /** A normalized bank-statement line returned by the edge function. */
@@ -34,10 +38,6 @@ export interface BankLine {
34
38
  amount: number;
35
39
  description: string;
36
40
  }
37
- export interface TestConnectionResult {
38
- ok: boolean;
39
- message?: string;
40
- }
41
41
  export interface FetchStatementResult {
42
42
  lines: BankLine[];
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,sEAAsE;AACtE,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,GAAG,GAAG,GAAG,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5C,YAAY,EAAE,OAAO,EAAE,CAAA;AAEvB,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,sEAAsE;AACtE,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,GAAG,GAAG,GAAG,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,QAAQ,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fayz-ai/plugin-banking-br",
3
- "version": "0.9.1",
3
+ "version": "0.10.1",
4
4
  "description": "[experimental] Fayz SDK — Brazilian open-banking connector (Tecnospeed PlugBank) feeding the financial ledger",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -25,9 +25,9 @@
25
25
  "react-dom": "^18.0.0 || ^19.0.0"
26
26
  },
27
27
  "dependencies": {
28
- "@fayz-ai/core": "^0.10.0",
29
- "@fayz-ai/db": "^0.10.0",
30
- "@fayz-ai/ui": "^0.10.0"
28
+ "@fayz-ai/core": "^0.12.0",
29
+ "@fayz-ai/db": "^0.11.0",
30
+ "@fayz-ai/ui": "^0.12.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/react": "^18.3.0",
@@ -36,7 +36,8 @@
36
36
  "react": "^18.3.0",
37
37
  "react-dom": "^18.3.0",
38
38
  "tsup": "^8.2.0",
39
- "typescript": "^5.5.0"
39
+ "typescript": "^5.5.0",
40
+ "vitest": "^4.1.5"
40
41
  },
41
42
  "license": "MIT",
42
43
  "keywords": [
@@ -48,6 +49,7 @@
48
49
  "build": "tsup && tsc --emitDeclarationOnly --declaration --declarationMap --noEmit false",
49
50
  "dev": "tsup --watch",
50
51
  "typecheck": "tsc --noEmit",
51
- "clean": "rm -rf dist"
52
+ "clean": "rm -rf dist",
53
+ "test": "vitest run"
52
54
  }
53
55
  }
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- export declare function BankIntegrationSettings(): React.JSX.Element;
3
- //# sourceMappingURL=BankIntegrationSettings.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BankIntegrationSettings.d.ts","sourceRoot":"","sources":["../../src/settings/BankIntegrationSettings.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAa3D,wBAAgB,uBAAuB,sBAyLtC"}