@ganju/utils 0.0.15 → 0.0.16
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/constants.d.ts +23 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +95 -8
- package/dist/data.d.ts +9 -0
- package/dist/data.d.ts.map +1 -0
- package/dist/data.js +78 -0
- package/dist/dataApi.d.ts +511 -0
- package/dist/dataApi.d.ts.map +1 -0
- package/dist/dataApi.js +355 -0
- package/dist/dataCompiler.d.ts +68 -0
- package/dist/dataCompiler.d.ts.map +1 -0
- package/dist/dataCompiler.js +726 -0
- package/dist/dataDdl.d.ts +29 -0
- package/dist/dataDdl.d.ts.map +1 -0
- package/dist/dataDdl.js +354 -0
- package/dist/dataEngine.d.ts +143 -0
- package/dist/dataEngine.d.ts.map +1 -0
- package/dist/dataEngine.js +2022 -0
- package/dist/dataIdentifiers.d.ts +8 -0
- package/dist/dataIdentifiers.d.ts.map +1 -0
- package/dist/dataIdentifiers.js +55 -0
- package/dist/dataImport.d.ts +77 -0
- package/dist/dataImport.d.ts.map +1 -0
- package/dist/dataImport.js +450 -0
- package/dist/dataRpc.d.ts +131 -0
- package/dist/dataRpc.d.ts.map +1 -0
- package/dist/dataRpc.js +2 -0
- package/dist/dataTypes.d.ts +157 -0
- package/dist/dataTypes.d.ts.map +1 -0
- package/dist/dataTypes.js +160 -0
- package/dist/index.d.ts +308 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/oauth.d.ts +14 -0
- package/dist/oauth.d.ts.map +1 -1
- package/dist/oauth.js +42 -2
- package/dist/resourceRerank.d.ts +3 -2
- package/dist/resourceRerank.d.ts.map +1 -1
- package/dist/resourceRerank.js +5 -2
- package/dist/schema.d.ts +285 -4
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +203 -0
- package/package.json +17 -2
- package/src/constants.ts +108 -8
- package/src/data.ts +74 -0
- package/src/dataApi.ts +428 -0
- package/src/dataCompiler.ts +948 -0
- package/src/dataDdl.ts +419 -0
- package/src/dataEngine.ts +2753 -0
- package/src/dataIdentifiers.ts +63 -0
- package/src/dataImport.ts +554 -0
- package/src/dataRpc.ts +121 -0
- package/src/dataTypes.ts +312 -0
- package/src/index.ts +4 -0
- package/src/oauth.ts +42 -1
- package/src/resourceRerank.ts +5 -2
- package/src/schema.ts +246 -0
package/src/schema.ts
CHANGED
|
@@ -11,6 +11,19 @@ import {
|
|
|
11
11
|
PARTICIPANT_DAILY_LIMIT_MAX,
|
|
12
12
|
PARTICIPANT_DAILY_LIMIT_OFF
|
|
13
13
|
} from './channelCustomer';
|
|
14
|
+
import {
|
|
15
|
+
DATA_ACCESS_LEVELS,
|
|
16
|
+
DATA_COLUMN_TYPES,
|
|
17
|
+
DATA_MAX_COLUMNS,
|
|
18
|
+
DATA_MAX_DESCRIPTION,
|
|
19
|
+
DATA_MAX_ENUM_VALUES,
|
|
20
|
+
DATA_MAX_INSERT_ROWS,
|
|
21
|
+
DATA_MAX_LABEL,
|
|
22
|
+
DATA_IMPACT_MAX_IDS,
|
|
23
|
+
DATA_MAX_PAGE,
|
|
24
|
+
DATA_MAX_WRITE_OPERATIONS,
|
|
25
|
+
DATA_ON_DELETE
|
|
26
|
+
} from './dataTypes';
|
|
14
27
|
|
|
15
28
|
// A prompt title becomes a slash command; it must not collide with a command
|
|
16
29
|
// the channel runner handles itself (e.g. `/link`).
|
|
@@ -511,6 +524,214 @@ const ARTIFACT_REMOVE_RESOURCE = z.object({
|
|
|
511
524
|
organizationId: z.uuid()
|
|
512
525
|
});
|
|
513
526
|
|
|
527
|
+
const DATA_DATABASE_GET = z.object({
|
|
528
|
+
projectId: z.uuid(),
|
|
529
|
+
userId: z.uuid(),
|
|
530
|
+
organizationId: z.uuid()
|
|
531
|
+
});
|
|
532
|
+
|
|
533
|
+
// The name is what the owner types to delete it; it defaults to the
|
|
534
|
+
// project's slug. `replaceDeleted` starts over while a deleted database is
|
|
535
|
+
// still in its grace period, giving up the chance to restore it.
|
|
536
|
+
const DATA_DATABASE_CREATE = DATA_DATABASE_GET.extend({
|
|
537
|
+
name: z.string().trim().min(1).max(100).optional(),
|
|
538
|
+
replaceDeleted: z.boolean().optional()
|
|
539
|
+
});
|
|
540
|
+
|
|
541
|
+
const DATA_DATABASE_DELETE = DATA_DATABASE_GET.extend({
|
|
542
|
+
confirmName: z.string().min(1)
|
|
543
|
+
});
|
|
544
|
+
|
|
545
|
+
// The bodies and query strings of the Data API. Each one is what a client
|
|
546
|
+
// sends; the route schemas below add the path's ids. The database object
|
|
547
|
+
// checks every rule again (names, types, relations), so these describe the
|
|
548
|
+
// shape and leave the meaning to it.
|
|
549
|
+
const DATA_IDENTIFIER = z.string().min(1).max(63);
|
|
550
|
+
const DATA_DEFAULT_VALUE = z.union([
|
|
551
|
+
z.string(),
|
|
552
|
+
z.number(),
|
|
553
|
+
z.boolean(),
|
|
554
|
+
z.null()
|
|
555
|
+
]);
|
|
556
|
+
const DATA_TEXT = (max: number) => z.string().max(max).nullable().optional();
|
|
557
|
+
|
|
558
|
+
const DATA_COLUMN_INPUT = z.strictObject({
|
|
559
|
+
name: DATA_IDENTIFIER,
|
|
560
|
+
type: z.enum(DATA_COLUMN_TYPES),
|
|
561
|
+
label: DATA_TEXT(DATA_MAX_LABEL),
|
|
562
|
+
description: DATA_TEXT(DATA_MAX_DESCRIPTION),
|
|
563
|
+
required: z.boolean().optional(),
|
|
564
|
+
unique: z.boolean().optional(),
|
|
565
|
+
filterable: z.boolean().optional(),
|
|
566
|
+
searchable: z.boolean().optional(),
|
|
567
|
+
personal: z.boolean().optional(),
|
|
568
|
+
values: z.array(z.string().min(1)).max(DATA_MAX_ENUM_VALUES).optional(),
|
|
569
|
+
table: DATA_IDENTIFIER.optional(),
|
|
570
|
+
onDelete: z.enum(DATA_ON_DELETE).optional(),
|
|
571
|
+
min: z.number().nullable().optional(),
|
|
572
|
+
default: DATA_DEFAULT_VALUE.optional()
|
|
573
|
+
});
|
|
574
|
+
|
|
575
|
+
// The CLI's schema file holds a list of these.
|
|
576
|
+
const DATA_TABLE_INPUT = z.strictObject({
|
|
577
|
+
name: DATA_IDENTIFIER,
|
|
578
|
+
label: DATA_TEXT(DATA_MAX_LABEL),
|
|
579
|
+
description: DATA_TEXT(DATA_MAX_DESCRIPTION),
|
|
580
|
+
displayColumn: DATA_IDENTIFIER.nullable().optional(),
|
|
581
|
+
access: z.enum(DATA_ACCESS_LEVELS).optional(),
|
|
582
|
+
customerScoped: z.boolean().optional(),
|
|
583
|
+
history: z.boolean().optional(),
|
|
584
|
+
columns: z.array(DATA_COLUMN_INPUT).max(DATA_MAX_COLUMNS)
|
|
585
|
+
});
|
|
586
|
+
|
|
587
|
+
const DATA_TABLE_PATCH = DATA_TABLE_INPUT.omit({ columns: true }).partial();
|
|
588
|
+
|
|
589
|
+
// A null puts the setting back to its default.
|
|
590
|
+
const DATA_COLUMN_PATCH = DATA_COLUMN_INPUT.partial();
|
|
591
|
+
|
|
592
|
+
const DATA_TABLE_DROP_BODY = z.strictObject({ confirmName: z.string().min(1) });
|
|
593
|
+
|
|
594
|
+
const DATA_ROW_VALUES = z.record(z.string(), z.unknown());
|
|
595
|
+
|
|
596
|
+
// A JSON value carried in a query string, e.g. `where={"status":"open"}`.
|
|
597
|
+
const DATA_JSON_PARAM = z.string().transform((text, ctx) => {
|
|
598
|
+
try {
|
|
599
|
+
return JSON.parse(text) as unknown;
|
|
600
|
+
} catch {
|
|
601
|
+
ctx.addIssue({
|
|
602
|
+
code: 'custom',
|
|
603
|
+
message: 'This is JSON, e.g. {"status":"open"}'
|
|
604
|
+
});
|
|
605
|
+
return z.NEVER;
|
|
606
|
+
}
|
|
607
|
+
});
|
|
608
|
+
|
|
609
|
+
// A comma-separated list in a query string: `sort=-created_at,name`.
|
|
610
|
+
const DATA_LIST_PARAM = z.string().transform(text =>
|
|
611
|
+
text
|
|
612
|
+
.split(',')
|
|
613
|
+
.map(item => item.trim())
|
|
614
|
+
.filter(Boolean)
|
|
615
|
+
);
|
|
616
|
+
|
|
617
|
+
const DATA_ROW_LIST_QUERY = z.strictObject({
|
|
618
|
+
where: DATA_JSON_PARAM.optional(),
|
|
619
|
+
sort: DATA_LIST_PARAM.optional(),
|
|
620
|
+
include: DATA_LIST_PARAM.optional(),
|
|
621
|
+
limit: z.coerce.number().int().min(1).max(DATA_MAX_PAGE).optional(),
|
|
622
|
+
cursor: z.string().max(2000).optional(),
|
|
623
|
+
q: z.string().max(500).optional(),
|
|
624
|
+
timeZone: z.string().max(64).optional()
|
|
625
|
+
});
|
|
626
|
+
|
|
627
|
+
const DATA_ROW_GET_QUERY = DATA_ROW_LIST_QUERY.pick({
|
|
628
|
+
include: true,
|
|
629
|
+
timeZone: true
|
|
630
|
+
});
|
|
631
|
+
|
|
632
|
+
const DATA_ROW_CREATE_BODY = z.union([
|
|
633
|
+
z.strictObject({ values: DATA_ROW_VALUES }),
|
|
634
|
+
z.strictObject({
|
|
635
|
+
rows: z.array(DATA_ROW_VALUES).min(1).max(DATA_MAX_INSERT_ROWS)
|
|
636
|
+
})
|
|
637
|
+
]);
|
|
638
|
+
|
|
639
|
+
const DATA_ROW_VERSION = z.number().int().min(1);
|
|
640
|
+
|
|
641
|
+
// `set` takes values, or relative changes such as { "stock": { "decrement": 2 } }.
|
|
642
|
+
const DATA_ROW_UPDATE_BODY = z.strictObject({
|
|
643
|
+
set: DATA_ROW_VALUES,
|
|
644
|
+
version: DATA_ROW_VERSION.optional()
|
|
645
|
+
});
|
|
646
|
+
|
|
647
|
+
const DATA_ROW_DELETE_BODY = z.strictObject({
|
|
648
|
+
version: DATA_ROW_VERSION.optional()
|
|
649
|
+
});
|
|
650
|
+
|
|
651
|
+
const DATA_ROW_ID = z.coerce.number().int().min(1);
|
|
652
|
+
|
|
653
|
+
// Without `ids`, every row of the table.
|
|
654
|
+
const DATA_DELETE_PREVIEW_BODY = z.strictObject({
|
|
655
|
+
ids: z.array(z.number().int().min(1)).min(1).max(DATA_IMPACT_MAX_IDS).optional()
|
|
656
|
+
});
|
|
657
|
+
|
|
658
|
+
const DATA_WRITE_TARGET = {
|
|
659
|
+
table: DATA_IDENTIFIER,
|
|
660
|
+
id: z
|
|
661
|
+
.union([
|
|
662
|
+
z.number().int().min(1),
|
|
663
|
+
z.strictObject({ $ref: z.number().int().min(0) })
|
|
664
|
+
])
|
|
665
|
+
.optional(),
|
|
666
|
+
where: z.record(z.string(), z.unknown()).optional(),
|
|
667
|
+
expect: z.number().int().min(0).optional(),
|
|
668
|
+
version: DATA_ROW_VERSION.optional()
|
|
669
|
+
};
|
|
670
|
+
|
|
671
|
+
// Applied together or not at all. A later step can use an earlier insert's
|
|
672
|
+
// id as { "$ref": <step> }.
|
|
673
|
+
const DATA_WRITE_OPERATION = z.discriminatedUnion('op', [
|
|
674
|
+
z.strictObject({
|
|
675
|
+
op: z.literal('insert'),
|
|
676
|
+
table: DATA_IDENTIFIER,
|
|
677
|
+
values: DATA_ROW_VALUES.optional(),
|
|
678
|
+
rows: z.array(DATA_ROW_VALUES).min(1).max(DATA_MAX_INSERT_ROWS).optional()
|
|
679
|
+
}),
|
|
680
|
+
z.strictObject({
|
|
681
|
+
op: z.literal('update'),
|
|
682
|
+
...DATA_WRITE_TARGET,
|
|
683
|
+
set: DATA_ROW_VALUES
|
|
684
|
+
}),
|
|
685
|
+
z.strictObject({ op: z.literal('delete'), ...DATA_WRITE_TARGET })
|
|
686
|
+
]);
|
|
687
|
+
|
|
688
|
+
const DATA_WRITE_BODY = z.strictObject({
|
|
689
|
+
operations: z
|
|
690
|
+
.array(DATA_WRITE_OPERATION)
|
|
691
|
+
.min(1)
|
|
692
|
+
.max(DATA_MAX_WRITE_OPERATIONS)
|
|
693
|
+
});
|
|
694
|
+
|
|
695
|
+
const DATA_ROW_HISTORY_QUERY = z.strictObject({
|
|
696
|
+
limit: z.coerce.number().int().min(1).max(100).optional(),
|
|
697
|
+
cursor: z.coerce.number().int().min(1).optional(),
|
|
698
|
+
timeZone: z.string().max(64).optional()
|
|
699
|
+
});
|
|
700
|
+
|
|
701
|
+
// A time within the last 30 days, or a bookmark this API handed out (a drop,
|
|
702
|
+
// a type change, or the restore to undo).
|
|
703
|
+
const DATA_RESTORE_POINT_BODY = z.union([
|
|
704
|
+
z.strictObject({
|
|
705
|
+
timestamp: z.union([z.iso.datetime({ offset: true }), z.number().int()])
|
|
706
|
+
}),
|
|
707
|
+
z.strictObject({ bookmark: z.string().min(1).max(200) })
|
|
708
|
+
]);
|
|
709
|
+
|
|
710
|
+
const DATA_EXPORT_BODY = z.strictObject({
|
|
711
|
+
format: z.enum(['jsonl', 'csv']).optional()
|
|
712
|
+
});
|
|
713
|
+
|
|
714
|
+
const DATA_EXPORT_QUERY = z.strictObject({
|
|
715
|
+
exportId: z.uuid().optional()
|
|
716
|
+
});
|
|
717
|
+
|
|
718
|
+
// Without `table`, the export's schema.json.
|
|
719
|
+
const DATA_EXPORT_FILE_QUERY = z.strictObject({
|
|
720
|
+
exportId: z.uuid(),
|
|
721
|
+
table: DATA_IDENTIFIER.optional()
|
|
722
|
+
});
|
|
723
|
+
|
|
724
|
+
const DATA_CHANGE_LIST_QUERY = z.strictObject({
|
|
725
|
+
limit: z.coerce.number().int().min(1).max(100).optional(),
|
|
726
|
+
cursor: z.uuid().optional()
|
|
727
|
+
});
|
|
728
|
+
|
|
729
|
+
const DATA_TABLE_PARAMS = DATA_DATABASE_GET.extend({ table: DATA_IDENTIFIER });
|
|
730
|
+
const DATA_COLUMN_PARAMS = DATA_TABLE_PARAMS.extend({
|
|
731
|
+
column: DATA_IDENTIFIER
|
|
732
|
+
});
|
|
733
|
+
const DATA_ROW_PARAMS = DATA_TABLE_PARAMS.extend({ id: DATA_ROW_ID });
|
|
734
|
+
|
|
514
735
|
const ARTIFACT_UPLOAD_RESOURCE_FILE = z.object({
|
|
515
736
|
resourceId: z.uuid(),
|
|
516
737
|
projectId: z.uuid(),
|
|
@@ -1727,6 +1948,31 @@ export const Schema = {
|
|
|
1727
1948
|
ARTIFACT_UPDATE_RESOURCE_VIEW,
|
|
1728
1949
|
ARTIFACT_GET_RESOURCE,
|
|
1729
1950
|
ARTIFACT_GET_RESOURCE_BY_ID,
|
|
1951
|
+
DATA_DATABASE_GET,
|
|
1952
|
+
DATA_DATABASE_CREATE,
|
|
1953
|
+
DATA_DATABASE_DELETE,
|
|
1954
|
+
DATA_COLUMN_INPUT,
|
|
1955
|
+
DATA_TABLE_INPUT,
|
|
1956
|
+
DATA_TABLE_PATCH,
|
|
1957
|
+
DATA_COLUMN_PATCH,
|
|
1958
|
+
DATA_TABLE_DROP_BODY,
|
|
1959
|
+
DATA_ROW_LIST_QUERY,
|
|
1960
|
+
DATA_ROW_GET_QUERY,
|
|
1961
|
+
DATA_ROW_CREATE_BODY,
|
|
1962
|
+
DATA_ROW_UPDATE_BODY,
|
|
1963
|
+
DATA_ROW_DELETE_BODY,
|
|
1964
|
+
DATA_DELETE_PREVIEW_BODY,
|
|
1965
|
+
DATA_WRITE_OPERATION,
|
|
1966
|
+
DATA_WRITE_BODY,
|
|
1967
|
+
DATA_ROW_HISTORY_QUERY,
|
|
1968
|
+
DATA_RESTORE_POINT_BODY,
|
|
1969
|
+
DATA_EXPORT_BODY,
|
|
1970
|
+
DATA_EXPORT_QUERY,
|
|
1971
|
+
DATA_EXPORT_FILE_QUERY,
|
|
1972
|
+
DATA_CHANGE_LIST_QUERY,
|
|
1973
|
+
DATA_TABLE_PARAMS,
|
|
1974
|
+
DATA_COLUMN_PARAMS,
|
|
1975
|
+
DATA_ROW_PARAMS,
|
|
1730
1976
|
ARTIFACT_REMOVE_RESOURCE,
|
|
1731
1977
|
ARTIFACT_UPLOAD_RESOURCE_FILE,
|
|
1732
1978
|
ARTIFACT_DOWNLOAD_RESOURCE_FILE,
|