@marcoappio/marco-config 4.0.9 → 4.0.11
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/dist/appwrite/appwrite.d.ts +1215 -1017
- package/dist/appwrite/appwrite.d.ts.map +1 -1
- package/dist/appwrite/appwrite.js +11 -375
- package/dist/appwrite/appwrite.test.js +75 -1
- package/dist/appwrite/commands.d.ts +167 -124
- package/dist/appwrite/commands.d.ts.map +1 -1
- package/dist/appwrite/commands.js +70 -68
- package/dist/appwrite/commands.test.js +30 -17
- package/dist/appwrite/functions.d.ts +122 -122
- package/dist/appwrite/index.d.ts +2 -2
- package/dist/appwrite/index.d.ts.map +1 -1
- package/dist/appwrite/index.js +2 -2
- package/dist/appwrite/tableContract/identity.d.ts +442 -0
- package/dist/appwrite/tableContract/identity.d.ts.map +1 -0
- package/dist/appwrite/tableContract/identity.js +158 -0
- package/dist/appwrite/tableContract/index.d.ts +2194 -0
- package/dist/appwrite/tableContract/index.d.ts.map +1 -0
- package/dist/appwrite/tableContract/index.js +77 -0
- package/dist/appwrite/tableContract/index.test.d.ts +2 -0
- package/dist/appwrite/tableContract/index.test.d.ts.map +1 -0
- package/dist/appwrite/tableContract/index.test.js +48 -0
- package/dist/appwrite/tableContract/mailbox.d.ts +622 -0
- package/dist/appwrite/tableContract/mailbox.d.ts.map +1 -0
- package/dist/appwrite/tableContract/mailbox.js +191 -0
- package/dist/appwrite/tableContract/operational.d.ts +522 -0
- package/dist/appwrite/tableContract/operational.d.ts.map +1 -0
- package/dist/appwrite/tableContract/operational.js +191 -0
- package/dist/appwrite/tableContract/shared.d.ts +145 -0
- package/dist/appwrite/tableContract/shared.d.ts.map +1 -0
- package/dist/appwrite/tableContract/shared.js +89 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/appwrite/tableContract/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import * as v from 'valibot';
|
|
2
|
+
import { identityTableInputs } from './identity';
|
|
3
|
+
import { mailboxTableInputs } from './mailbox';
|
|
4
|
+
import { operationalTableInputs } from './operational';
|
|
5
|
+
import { appwriteIds, appwriteRowIdSchema, identifierSchema, timestampSchema, } from './shared';
|
|
6
|
+
export * from './shared';
|
|
7
|
+
const appwriteTableInputs = {
|
|
8
|
+
...identityTableInputs,
|
|
9
|
+
...mailboxTableInputs,
|
|
10
|
+
...operationalTableInputs,
|
|
11
|
+
};
|
|
12
|
+
const materialiseTable = (table) => {
|
|
13
|
+
const columns = Object.entries(table.fields).flatMap(([key, field]) => {
|
|
14
|
+
if ('relatedTable' in field.definition) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
return [{ key, ...field.definition }];
|
|
18
|
+
});
|
|
19
|
+
const relationships = Object.entries(table.fields).flatMap(([key, field]) => {
|
|
20
|
+
if ('relatedTable' in field.definition) {
|
|
21
|
+
return [
|
|
22
|
+
{
|
|
23
|
+
key,
|
|
24
|
+
onDelete: field.definition.onDelete,
|
|
25
|
+
relatedTableId: appwriteIds.tables[field.definition.relatedTable],
|
|
26
|
+
type: field.definition.type,
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
return [];
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
columns,
|
|
34
|
+
id: table.id,
|
|
35
|
+
indexes: table.indexes,
|
|
36
|
+
key: table.key,
|
|
37
|
+
name: table.name,
|
|
38
|
+
relationships,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
const wireMetadata = (tableId, wirePermissions) => ({
|
|
42
|
+
$createdAt: timestampSchema,
|
|
43
|
+
$databaseId: v.literal(appwriteIds.database),
|
|
44
|
+
$id: appwriteRowIdSchema,
|
|
45
|
+
$permissions: wirePermissions === 'empty' ? v.pipe(v.array(v.string()), v.length(0)) : v.array(v.string()),
|
|
46
|
+
$sequence: identifierSchema,
|
|
47
|
+
$tableId: v.literal(tableId),
|
|
48
|
+
$updatedAt: timestampSchema,
|
|
49
|
+
});
|
|
50
|
+
function createDataSchema(fields, dataCheck) {
|
|
51
|
+
const schema = v.object(fields);
|
|
52
|
+
if (dataCheck) {
|
|
53
|
+
return v.pipe(schema, v.check(input => dataCheck(input)));
|
|
54
|
+
}
|
|
55
|
+
return schema;
|
|
56
|
+
}
|
|
57
|
+
const createRowSchema = (fields, tableId, wirePermissions) => v.strictObject({ ...wireMetadata(tableId, wirePermissions), ...fields });
|
|
58
|
+
export function defineAppwriteTables(tables) {
|
|
59
|
+
const createDataSchemaForTable = (fields, dataCheck) => {
|
|
60
|
+
if (dataCheck) {
|
|
61
|
+
return createDataSchema(fields, dataCheck);
|
|
62
|
+
}
|
|
63
|
+
return createDataSchema(fields);
|
|
64
|
+
};
|
|
65
|
+
const dataSchemas = Object.fromEntries(Object.entries(tables).map(([tableKey, table]) => [tableKey, createDataSchemaForTable(table.fields, table.dataCheck)]));
|
|
66
|
+
const rowSchemas = Object.fromEntries(Object.entries(tables).map(([tableKey, table]) => [tableKey, createRowSchema(table.fields, table.id, table.wirePermissions)]));
|
|
67
|
+
const tableDefinitions = Object.fromEntries(Object.entries(tables).map(([tableKey, table]) => [tableKey, materialiseTable(table)]));
|
|
68
|
+
return {
|
|
69
|
+
dataSchemas,
|
|
70
|
+
rowSchemas,
|
|
71
|
+
tables: tableDefinitions,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export const appwriteTableContract = defineAppwriteTables(appwriteTableInputs);
|
|
75
|
+
export const appwriteTables = appwriteTableContract.tables;
|
|
76
|
+
export const appwriteDataSchemas = appwriteTableContract.dataSchemas;
|
|
77
|
+
export const appwriteRowSchemas = appwriteTableContract.rowSchemas;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/appwrite/tableContract/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { describe, expect, it } from 'bun:test';
|
|
2
|
+
import * as v from 'valibot';
|
|
3
|
+
import { identityTableInputs } from './identity';
|
|
4
|
+
import { defineAppwriteTables } from './index';
|
|
5
|
+
import { mailboxTableInputs } from './mailbox';
|
|
6
|
+
import { operationalTableInputs } from './operational';
|
|
7
|
+
const tableInputs = {
|
|
8
|
+
...identityTableInputs,
|
|
9
|
+
...mailboxTableInputs,
|
|
10
|
+
...operationalTableInputs,
|
|
11
|
+
};
|
|
12
|
+
const validAccount = {
|
|
13
|
+
colour: '#000000',
|
|
14
|
+
credential: null,
|
|
15
|
+
displayName: null,
|
|
16
|
+
initialSyncCompletedAt: null,
|
|
17
|
+
lastErrorCode: null,
|
|
18
|
+
lastSuccessfulSyncAt: null,
|
|
19
|
+
mailboxSyncState: null,
|
|
20
|
+
mailProcessedCount: 0,
|
|
21
|
+
mailTotalCount: 0,
|
|
22
|
+
pollShardAssignmentId: null,
|
|
23
|
+
pollShardId: null,
|
|
24
|
+
primaryAlias: 'test-alias-id-1',
|
|
25
|
+
primaryEmail: 'test-account-1@example.com',
|
|
26
|
+
profile: 'test-user-id-1',
|
|
27
|
+
profileAssignmentKey: 'test-user-id-1',
|
|
28
|
+
provider: 'GMAIL',
|
|
29
|
+
state: 'CONNECTED',
|
|
30
|
+
};
|
|
31
|
+
describe('defineAppwriteTables', () => {
|
|
32
|
+
it('applies each supplied table data check to its generated data schema', () => {
|
|
33
|
+
const contract = defineAppwriteTables({
|
|
34
|
+
...tableInputs,
|
|
35
|
+
accounts: {
|
|
36
|
+
...tableInputs.accounts,
|
|
37
|
+
dataCheck: () => false,
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
expect(v.safeParse(contract.dataSchemas.accounts, validAccount).success).toBe(false);
|
|
41
|
+
});
|
|
42
|
+
it('generates each schema and definition from the supplied table inputs', () => {
|
|
43
|
+
const contract = defineAppwriteTables(tableInputs);
|
|
44
|
+
expect(Object.keys(contract.dataSchemas).sort()).toEqual(Object.keys(tableInputs).sort());
|
|
45
|
+
expect(Object.keys(contract.rowSchemas).sort()).toEqual(Object.keys(tableInputs).sort());
|
|
46
|
+
expect(Object.keys(contract.tables).sort()).toEqual(Object.keys(tableInputs).sort());
|
|
47
|
+
});
|
|
48
|
+
});
|