@ourofoundation/ouro-js 3.8.4 → 3.8.5
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/.github/workflows/publish.yml +63 -0
- package/dist/{chunk-NK4K542Q.js → chunk-33ELNWOX.js} +2 -2
- package/dist/{chunk-NK4K542Q.js.map → chunk-33ELNWOX.js.map} +1 -1
- package/dist/chunk-3PRQXWQP.js +2 -0
- package/dist/chunk-3PRQXWQP.js.map +1 -0
- package/dist/{chunk-SB4X4GDQ.js → chunk-4276I2OP.js} +2 -2
- package/dist/{chunk-SB4X4GDQ.js.map → chunk-4276I2OP.js.map} +1 -1
- package/dist/{chunk-D2VAJ55Q.cjs → chunk-6DNS4QKU.cjs} +2 -2
- package/dist/{chunk-D2VAJ55Q.cjs.map → chunk-6DNS4QKU.cjs.map} +1 -1
- package/dist/{chunk-6KQTA6I7.cjs → chunk-BR3QVFVE.cjs} +2 -2
- package/dist/{chunk-6KQTA6I7.cjs.map → chunk-BR3QVFVE.cjs.map} +1 -1
- package/dist/{chunk-MV4VXP6M.js → chunk-BYYDLMAE.js} +2 -2
- package/dist/{chunk-MV4VXP6M.js.map → chunk-BYYDLMAE.js.map} +1 -1
- package/dist/chunk-CZMKRHO4.cjs +2 -0
- package/dist/chunk-CZMKRHO4.cjs.map +1 -0
- package/dist/{chunk-XTINLMDO.js → chunk-DA7VOYUY.js} +2 -2
- package/dist/{chunk-XTINLMDO.js.map → chunk-DA7VOYUY.js.map} +1 -1
- package/dist/{chunk-KV6R6XC2.cjs → chunk-F7URSDHU.cjs} +2 -2
- package/dist/{chunk-KV6R6XC2.cjs.map → chunk-F7URSDHU.cjs.map} +1 -1
- package/dist/chunk-HJW6XNOY.js +2 -0
- package/dist/chunk-HJW6XNOY.js.map +1 -0
- package/dist/chunk-J4GKOJZZ.cjs +2 -0
- package/dist/chunk-J4GKOJZZ.cjs.map +1 -0
- package/dist/{chunk-G3IGIXKD.cjs → chunk-KE53HYHH.cjs} +2 -2
- package/dist/{chunk-G3IGIXKD.cjs.map → chunk-KE53HYHH.cjs.map} +1 -1
- package/dist/{chunk-HKU6LRRS.js → chunk-O2BXIKRA.js} +2 -2
- package/dist/{chunk-HKU6LRRS.js.map → chunk-O2BXIKRA.js.map} +1 -1
- package/dist/{chunk-KTJTOSL2.cjs → chunk-OMO4474C.cjs} +2 -2
- package/dist/{chunk-KTJTOSL2.cjs.map → chunk-OMO4474C.cjs.map} +1 -1
- package/dist/{chunk-ZBNLKRMB.js → chunk-PMOXYEAS.js} +2 -2
- package/dist/{chunk-ZBNLKRMB.js.map → chunk-PMOXYEAS.js.map} +1 -1
- package/dist/{chunk-4GP5MIEM.cjs → chunk-R52RJPI3.cjs} +2 -2
- package/dist/{chunk-4GP5MIEM.cjs.map → chunk-R52RJPI3.cjs.map} +1 -1
- package/dist/{chunk-NGPSTYQD.js → chunk-RO6NRIGU.js} +2 -2
- package/dist/{chunk-NGPSTYQD.js.map → chunk-RO6NRIGU.js.map} +1 -1
- package/dist/chunk-SUVNXKE6.js +2 -0
- package/dist/chunk-SUVNXKE6.js.map +1 -0
- package/dist/{chunk-GS5VFJ22.cjs → chunk-SZW4GHCP.cjs} +2 -2
- package/dist/{chunk-GS5VFJ22.cjs.map → chunk-SZW4GHCP.cjs.map} +1 -1
- package/dist/chunk-UBSYUTZO.cjs +2 -0
- package/dist/chunk-UBSYUTZO.cjs.map +1 -0
- package/dist/{chunk-2GABFYUS.cjs → chunk-V352KM56.cjs} +2 -2
- package/dist/{chunk-2GABFYUS.cjs.map → chunk-V352KM56.cjs.map} +1 -1
- package/dist/{chunk-4UNQYG7I.cjs → chunk-V5W6FOUA.cjs} +2 -2
- package/dist/{chunk-4UNQYG7I.cjs.map → chunk-V5W6FOUA.cjs.map} +1 -1
- package/dist/{chunk-RCUD47O3.cjs → chunk-X5KE2IW6.cjs} +2 -2
- package/dist/{chunk-RCUD47O3.cjs.map → chunk-X5KE2IW6.cjs.map} +1 -1
- package/dist/{chunk-B4OJDZY5.js → chunk-XSZPAZEE.js} +2 -2
- package/dist/{chunk-B4OJDZY5.js.map → chunk-XSZPAZEE.js.map} +1 -1
- package/dist/{chunk-XQTA6BNA.js → chunk-Y37HRTGF.js} +2 -2
- package/dist/{chunk-XQTA6BNA.js.map → chunk-Y37HRTGF.js.map} +1 -1
- package/dist/{chunk-67Q4RMP6.js → chunk-ZM7J5MCU.js} +2 -2
- package/dist/{chunk-67Q4RMP6.js.map → chunk-ZM7J5MCU.js.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/schema/assets.cjs +1 -1
- package/dist/schema/assets.d.cts +4 -4
- package/dist/schema/assets.d.ts +4 -4
- package/dist/schema/assets.js +1 -1
- package/dist/schema/comments.cjs +1 -1
- package/dist/schema/comments.d.cts +8 -8
- package/dist/schema/comments.d.ts +8 -8
- package/dist/schema/comments.js +1 -1
- package/dist/schema/conversations.cjs +1 -1
- package/dist/schema/conversations.d.cts +6 -6
- package/dist/schema/conversations.d.ts +6 -6
- package/dist/schema/conversations.js +1 -1
- package/dist/schema/datasets.cjs +1 -1
- package/dist/schema/datasets.d.cts +11 -11
- package/dist/schema/datasets.d.ts +11 -11
- package/dist/schema/datasets.js +1 -1
- package/dist/schema/files.cjs +1 -1
- package/dist/schema/files.d.cts +10 -10
- package/dist/schema/files.d.ts +10 -10
- package/dist/schema/files.js +1 -1
- package/dist/schema/notifications.d.cts +1 -1
- package/dist/schema/notifications.d.ts +1 -1
- package/dist/schema/posts.cjs +1 -1
- package/dist/schema/posts.d.cts +6 -6
- package/dist/schema/posts.d.ts +6 -6
- package/dist/schema/posts.js +1 -1
- package/dist/schema/quests.cjs +1 -1
- package/dist/schema/quests.d.cts +6 -6
- package/dist/schema/quests.d.ts +6 -6
- package/dist/schema/quests.js +1 -1
- package/dist/schema/renditions.cjs +1 -1
- package/dist/schema/renditions.d.cts +1 -1
- package/dist/schema/renditions.d.ts +1 -1
- package/dist/schema/renditions.js +1 -1
- package/dist/schema/services.cjs +1 -1
- package/dist/schema/services.d.cts +14 -14
- package/dist/schema/services.d.ts +14 -14
- package/dist/schema/services.js +1 -1
- package/dist/schema/teams.cjs +1 -1
- package/dist/schema/teams.d.cts +2 -2
- package/dist/schema/teams.d.ts +2 -2
- package/dist/schema/teams.js +1 -1
- package/dist/utils/navigate.cjs +1 -1
- package/dist/utils/navigate.js +1 -1
- package/dist/utils/quest-submission-helpers.cjs +2 -0
- package/dist/utils/quest-submission-helpers.cjs.map +1 -0
- package/dist/utils/quest-submission-helpers.d.cts +2 -0
- package/dist/utils/quest-submission-helpers.d.ts +2 -0
- package/dist/utils/quest-submission-helpers.js +2 -0
- package/dist/utils/quest-submission-helpers.js.map +1 -0
- package/dist/utils/quest-submission.cjs +1 -1
- package/dist/utils/quest-submission.d.cts +60 -59
- package/dist/utils/quest-submission.d.ts +60 -59
- package/dist/utils/quest-submission.js +1 -1
- package/package.json +1 -1
- package/tests/navigate.test.mjs +53 -0
- package/dist/chunk-EY4OFSDP.js +0 -2
- package/dist/chunk-EY4OFSDP.js.map +0 -1
- package/dist/chunk-IUO6O47I.cjs +0 -2
- package/dist/chunk-IUO6O47I.cjs.map +0 -1
- package/dist/chunk-MOEVC3KD.cjs +0 -2
- package/dist/chunk-MOEVC3KD.cjs.map +0 -1
- package/dist/chunk-OZBQNIKJ.js +0 -2
- package/dist/chunk-OZBQNIKJ.js.map +0 -1
|
@@ -1,5 +1,65 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
|
|
3
|
+
type AssetDeclarationPickerFilters = {
|
|
4
|
+
assetType?: string;
|
|
5
|
+
fileType?: string;
|
|
6
|
+
extensions?: string[];
|
|
7
|
+
hasConstraints: boolean;
|
|
8
|
+
};
|
|
9
|
+
type QuestSubmissionItemInput = {
|
|
10
|
+
eval_route_id?: string | null;
|
|
11
|
+
submission_assets?: Record<string, QuestSubmissionAssetDeclaration> | null;
|
|
12
|
+
eval_static_inputs?: KeyedAssetRefs | null;
|
|
13
|
+
expected_asset_type?: string | null;
|
|
14
|
+
};
|
|
15
|
+
type RouteInputDeclarationLike = {
|
|
16
|
+
asset_type?: string | null;
|
|
17
|
+
primary?: boolean;
|
|
18
|
+
input_filter?: string | null;
|
|
19
|
+
filter?: string | null;
|
|
20
|
+
file_extensions?: string[] | null;
|
|
21
|
+
input_file_extensions?: string[] | null;
|
|
22
|
+
label?: string | null;
|
|
23
|
+
};
|
|
24
|
+
type RouteForSubmissionShape = {
|
|
25
|
+
route?: {
|
|
26
|
+
input_assets?: Record<string, RouteInputDeclarationLike> | null;
|
|
27
|
+
input_type?: string | null;
|
|
28
|
+
input_filter?: string | null;
|
|
29
|
+
input_file_extensions?: string[] | null;
|
|
30
|
+
} | null;
|
|
31
|
+
} | null;
|
|
32
|
+
/** Route keyed inputs as a flat map (includes legacy input_type fallback). */
|
|
33
|
+
declare function getRouteInputDeclarationsFromRoute(route: RouteForSubmissionShape): Record<string, RouteInputDeclarationLike>;
|
|
34
|
+
declare function declarationToSubmissionDeclaration(declaration: RouteInputDeclarationLike): QuestSubmissionAssetDeclaration;
|
|
35
|
+
/** Materialize contributor declarations from route inputs minus pinned keys. */
|
|
36
|
+
declare function materializeContributorSubmissionAssets(routeInputs: Record<string, RouteInputDeclarationLike>, pinnedKeys: string[]): Record<string, QuestSubmissionAssetDeclaration>;
|
|
37
|
+
declare function getPrimaryDeclarationKey(declarations: Record<string, QuestSubmissionAssetDeclaration>): string | null;
|
|
38
|
+
declare function getSubmissionAssetShape(item: QuestSubmissionItemInput, route?: RouteForSubmissionShape | null): {
|
|
39
|
+
contributorKeys: string[];
|
|
40
|
+
declarations: Record<string, QuestSubmissionAssetDeclaration>;
|
|
41
|
+
pinned: KeyedAssetRefs;
|
|
42
|
+
};
|
|
43
|
+
declare function declarationToPickerFilters(declaration: RouteInputDeclarationLike | QuestSubmissionAssetDeclaration | null | undefined): AssetDeclarationPickerFilters | null;
|
|
44
|
+
declare function assetMatchesDeclaration(asset: {
|
|
45
|
+
assetType?: string | null;
|
|
46
|
+
asset_type?: string | null;
|
|
47
|
+
asset?: {
|
|
48
|
+
metadata?: Record<string, unknown>;
|
|
49
|
+
} | null;
|
|
50
|
+
} | null | undefined, declaration: RouteInputDeclarationLike | QuestSubmissionAssetDeclaration | null | undefined): boolean;
|
|
51
|
+
declare function getPrimaryAssetRef(refs: KeyedAssetRefs | null | undefined, declarations?: Record<string, QuestSubmissionAssetDeclaration> | null): {
|
|
52
|
+
key: string;
|
|
53
|
+
asset_id: string;
|
|
54
|
+
asset_type: string;
|
|
55
|
+
} | null;
|
|
56
|
+
declare function toRouteInputAssets(refs: KeyedAssetRefs | null | undefined): Record<string, {
|
|
57
|
+
assetId: string;
|
|
58
|
+
assetType: string;
|
|
59
|
+
}>;
|
|
60
|
+
/** @deprecated Use declarationToPickerFilters */
|
|
61
|
+
type EvalSubmissionFilters = AssetDeclarationPickerFilters;
|
|
62
|
+
|
|
3
63
|
/** Stored on entries and eval_static_inputs after server normalization. */
|
|
4
64
|
declare const KeyedAssetRefsSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
5
65
|
asset_id: z.ZodUUID;
|
|
@@ -80,64 +140,5 @@ declare const QuestSubmissionAssetDeclarationSchema: z.ZodObject<{
|
|
|
80
140
|
type KeyedAssetRefs = z.infer<typeof KeyedAssetRefsSchema>;
|
|
81
141
|
type KeyedAssetInput = z.infer<typeof KeyedAssetInputSchema>;
|
|
82
142
|
type QuestSubmissionAssetDeclaration = z.infer<typeof QuestSubmissionAssetDeclarationSchema>;
|
|
83
|
-
type AssetDeclarationPickerFilters = {
|
|
84
|
-
assetType?: string;
|
|
85
|
-
fileType?: string;
|
|
86
|
-
extensions?: string[];
|
|
87
|
-
hasConstraints: boolean;
|
|
88
|
-
};
|
|
89
|
-
type QuestSubmissionItemInput = {
|
|
90
|
-
eval_route_id?: string | null;
|
|
91
|
-
submission_assets?: Record<string, QuestSubmissionAssetDeclaration> | null;
|
|
92
|
-
eval_static_inputs?: KeyedAssetRefs | null;
|
|
93
|
-
expected_asset_type?: string | null;
|
|
94
|
-
};
|
|
95
|
-
type RouteInputDeclarationLike = {
|
|
96
|
-
asset_type?: string | null;
|
|
97
|
-
primary?: boolean;
|
|
98
|
-
input_filter?: string | null;
|
|
99
|
-
filter?: string | null;
|
|
100
|
-
file_extensions?: string[] | null;
|
|
101
|
-
input_file_extensions?: string[] | null;
|
|
102
|
-
label?: string | null;
|
|
103
|
-
};
|
|
104
|
-
type RouteForSubmissionShape = {
|
|
105
|
-
route?: {
|
|
106
|
-
input_assets?: Record<string, RouteInputDeclarationLike> | null;
|
|
107
|
-
input_type?: string | null;
|
|
108
|
-
input_filter?: string | null;
|
|
109
|
-
input_file_extensions?: string[] | null;
|
|
110
|
-
} | null;
|
|
111
|
-
} | null;
|
|
112
|
-
/** Route keyed inputs as a flat map (includes legacy input_type fallback). */
|
|
113
|
-
declare function getRouteInputDeclarationsFromRoute(route: RouteForSubmissionShape): Record<string, RouteInputDeclarationLike>;
|
|
114
|
-
declare function declarationToSubmissionDeclaration(declaration: RouteInputDeclarationLike): QuestSubmissionAssetDeclaration;
|
|
115
|
-
/** Materialize contributor declarations from route inputs minus pinned keys. */
|
|
116
|
-
declare function materializeContributorSubmissionAssets(routeInputs: Record<string, RouteInputDeclarationLike>, pinnedKeys: string[]): Record<string, QuestSubmissionAssetDeclaration>;
|
|
117
|
-
declare function getPrimaryDeclarationKey(declarations: Record<string, QuestSubmissionAssetDeclaration>): string | null;
|
|
118
|
-
declare function getSubmissionAssetShape(item: QuestSubmissionItemInput, route?: RouteForSubmissionShape | null): {
|
|
119
|
-
contributorKeys: string[];
|
|
120
|
-
declarations: Record<string, QuestSubmissionAssetDeclaration>;
|
|
121
|
-
pinned: KeyedAssetRefs;
|
|
122
|
-
};
|
|
123
|
-
declare function declarationToPickerFilters(declaration: RouteInputDeclarationLike | QuestSubmissionAssetDeclaration | null | undefined): AssetDeclarationPickerFilters | null;
|
|
124
|
-
declare function assetMatchesDeclaration(asset: {
|
|
125
|
-
assetType?: string | null;
|
|
126
|
-
asset_type?: string | null;
|
|
127
|
-
asset?: {
|
|
128
|
-
metadata?: Record<string, unknown>;
|
|
129
|
-
} | null;
|
|
130
|
-
} | null | undefined, declaration: RouteInputDeclarationLike | QuestSubmissionAssetDeclaration | null | undefined): boolean;
|
|
131
|
-
declare function getPrimaryAssetRef(refs: KeyedAssetRefs | null | undefined, declarations?: Record<string, QuestSubmissionAssetDeclaration> | null): {
|
|
132
|
-
key: string;
|
|
133
|
-
asset_id: string;
|
|
134
|
-
asset_type: string;
|
|
135
|
-
} | null;
|
|
136
|
-
declare function toRouteInputAssets(refs: KeyedAssetRefs | null | undefined): Record<string, {
|
|
137
|
-
assetId: string;
|
|
138
|
-
assetType: string;
|
|
139
|
-
}>;
|
|
140
|
-
/** @deprecated Use declarationToPickerFilters */
|
|
141
|
-
type EvalSubmissionFilters = AssetDeclarationPickerFilters;
|
|
142
143
|
|
|
143
144
|
export { type AssetDeclarationPickerFilters, type EvalSubmissionFilters, type KeyedAssetInput, KeyedAssetInputSchema, KeyedAssetInputValueSchema, type KeyedAssetRefs, KeyedAssetRefsSchema, type QuestSubmissionAssetDeclaration, QuestSubmissionAssetDeclarationSchema, type QuestSubmissionItemInput, type RouteForSubmissionShape, type RouteInputDeclarationLike, assetMatchesDeclaration, declarationToPickerFilters, declarationToSubmissionDeclaration, getPrimaryAssetRef, getPrimaryDeclarationKey, getRouteInputDeclarationsFromRoute, getSubmissionAssetShape, materializeContributorSubmissionAssets, toRouteInputAssets };
|
|
@@ -1,5 +1,65 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
|
|
3
|
+
type AssetDeclarationPickerFilters = {
|
|
4
|
+
assetType?: string;
|
|
5
|
+
fileType?: string;
|
|
6
|
+
extensions?: string[];
|
|
7
|
+
hasConstraints: boolean;
|
|
8
|
+
};
|
|
9
|
+
type QuestSubmissionItemInput = {
|
|
10
|
+
eval_route_id?: string | null;
|
|
11
|
+
submission_assets?: Record<string, QuestSubmissionAssetDeclaration> | null;
|
|
12
|
+
eval_static_inputs?: KeyedAssetRefs | null;
|
|
13
|
+
expected_asset_type?: string | null;
|
|
14
|
+
};
|
|
15
|
+
type RouteInputDeclarationLike = {
|
|
16
|
+
asset_type?: string | null;
|
|
17
|
+
primary?: boolean;
|
|
18
|
+
input_filter?: string | null;
|
|
19
|
+
filter?: string | null;
|
|
20
|
+
file_extensions?: string[] | null;
|
|
21
|
+
input_file_extensions?: string[] | null;
|
|
22
|
+
label?: string | null;
|
|
23
|
+
};
|
|
24
|
+
type RouteForSubmissionShape = {
|
|
25
|
+
route?: {
|
|
26
|
+
input_assets?: Record<string, RouteInputDeclarationLike> | null;
|
|
27
|
+
input_type?: string | null;
|
|
28
|
+
input_filter?: string | null;
|
|
29
|
+
input_file_extensions?: string[] | null;
|
|
30
|
+
} | null;
|
|
31
|
+
} | null;
|
|
32
|
+
/** Route keyed inputs as a flat map (includes legacy input_type fallback). */
|
|
33
|
+
declare function getRouteInputDeclarationsFromRoute(route: RouteForSubmissionShape): Record<string, RouteInputDeclarationLike>;
|
|
34
|
+
declare function declarationToSubmissionDeclaration(declaration: RouteInputDeclarationLike): QuestSubmissionAssetDeclaration;
|
|
35
|
+
/** Materialize contributor declarations from route inputs minus pinned keys. */
|
|
36
|
+
declare function materializeContributorSubmissionAssets(routeInputs: Record<string, RouteInputDeclarationLike>, pinnedKeys: string[]): Record<string, QuestSubmissionAssetDeclaration>;
|
|
37
|
+
declare function getPrimaryDeclarationKey(declarations: Record<string, QuestSubmissionAssetDeclaration>): string | null;
|
|
38
|
+
declare function getSubmissionAssetShape(item: QuestSubmissionItemInput, route?: RouteForSubmissionShape | null): {
|
|
39
|
+
contributorKeys: string[];
|
|
40
|
+
declarations: Record<string, QuestSubmissionAssetDeclaration>;
|
|
41
|
+
pinned: KeyedAssetRefs;
|
|
42
|
+
};
|
|
43
|
+
declare function declarationToPickerFilters(declaration: RouteInputDeclarationLike | QuestSubmissionAssetDeclaration | null | undefined): AssetDeclarationPickerFilters | null;
|
|
44
|
+
declare function assetMatchesDeclaration(asset: {
|
|
45
|
+
assetType?: string | null;
|
|
46
|
+
asset_type?: string | null;
|
|
47
|
+
asset?: {
|
|
48
|
+
metadata?: Record<string, unknown>;
|
|
49
|
+
} | null;
|
|
50
|
+
} | null | undefined, declaration: RouteInputDeclarationLike | QuestSubmissionAssetDeclaration | null | undefined): boolean;
|
|
51
|
+
declare function getPrimaryAssetRef(refs: KeyedAssetRefs | null | undefined, declarations?: Record<string, QuestSubmissionAssetDeclaration> | null): {
|
|
52
|
+
key: string;
|
|
53
|
+
asset_id: string;
|
|
54
|
+
asset_type: string;
|
|
55
|
+
} | null;
|
|
56
|
+
declare function toRouteInputAssets(refs: KeyedAssetRefs | null | undefined): Record<string, {
|
|
57
|
+
assetId: string;
|
|
58
|
+
assetType: string;
|
|
59
|
+
}>;
|
|
60
|
+
/** @deprecated Use declarationToPickerFilters */
|
|
61
|
+
type EvalSubmissionFilters = AssetDeclarationPickerFilters;
|
|
62
|
+
|
|
3
63
|
/** Stored on entries and eval_static_inputs after server normalization. */
|
|
4
64
|
declare const KeyedAssetRefsSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
5
65
|
asset_id: z.ZodUUID;
|
|
@@ -80,64 +140,5 @@ declare const QuestSubmissionAssetDeclarationSchema: z.ZodObject<{
|
|
|
80
140
|
type KeyedAssetRefs = z.infer<typeof KeyedAssetRefsSchema>;
|
|
81
141
|
type KeyedAssetInput = z.infer<typeof KeyedAssetInputSchema>;
|
|
82
142
|
type QuestSubmissionAssetDeclaration = z.infer<typeof QuestSubmissionAssetDeclarationSchema>;
|
|
83
|
-
type AssetDeclarationPickerFilters = {
|
|
84
|
-
assetType?: string;
|
|
85
|
-
fileType?: string;
|
|
86
|
-
extensions?: string[];
|
|
87
|
-
hasConstraints: boolean;
|
|
88
|
-
};
|
|
89
|
-
type QuestSubmissionItemInput = {
|
|
90
|
-
eval_route_id?: string | null;
|
|
91
|
-
submission_assets?: Record<string, QuestSubmissionAssetDeclaration> | null;
|
|
92
|
-
eval_static_inputs?: KeyedAssetRefs | null;
|
|
93
|
-
expected_asset_type?: string | null;
|
|
94
|
-
};
|
|
95
|
-
type RouteInputDeclarationLike = {
|
|
96
|
-
asset_type?: string | null;
|
|
97
|
-
primary?: boolean;
|
|
98
|
-
input_filter?: string | null;
|
|
99
|
-
filter?: string | null;
|
|
100
|
-
file_extensions?: string[] | null;
|
|
101
|
-
input_file_extensions?: string[] | null;
|
|
102
|
-
label?: string | null;
|
|
103
|
-
};
|
|
104
|
-
type RouteForSubmissionShape = {
|
|
105
|
-
route?: {
|
|
106
|
-
input_assets?: Record<string, RouteInputDeclarationLike> | null;
|
|
107
|
-
input_type?: string | null;
|
|
108
|
-
input_filter?: string | null;
|
|
109
|
-
input_file_extensions?: string[] | null;
|
|
110
|
-
} | null;
|
|
111
|
-
} | null;
|
|
112
|
-
/** Route keyed inputs as a flat map (includes legacy input_type fallback). */
|
|
113
|
-
declare function getRouteInputDeclarationsFromRoute(route: RouteForSubmissionShape): Record<string, RouteInputDeclarationLike>;
|
|
114
|
-
declare function declarationToSubmissionDeclaration(declaration: RouteInputDeclarationLike): QuestSubmissionAssetDeclaration;
|
|
115
|
-
/** Materialize contributor declarations from route inputs minus pinned keys. */
|
|
116
|
-
declare function materializeContributorSubmissionAssets(routeInputs: Record<string, RouteInputDeclarationLike>, pinnedKeys: string[]): Record<string, QuestSubmissionAssetDeclaration>;
|
|
117
|
-
declare function getPrimaryDeclarationKey(declarations: Record<string, QuestSubmissionAssetDeclaration>): string | null;
|
|
118
|
-
declare function getSubmissionAssetShape(item: QuestSubmissionItemInput, route?: RouteForSubmissionShape | null): {
|
|
119
|
-
contributorKeys: string[];
|
|
120
|
-
declarations: Record<string, QuestSubmissionAssetDeclaration>;
|
|
121
|
-
pinned: KeyedAssetRefs;
|
|
122
|
-
};
|
|
123
|
-
declare function declarationToPickerFilters(declaration: RouteInputDeclarationLike | QuestSubmissionAssetDeclaration | null | undefined): AssetDeclarationPickerFilters | null;
|
|
124
|
-
declare function assetMatchesDeclaration(asset: {
|
|
125
|
-
assetType?: string | null;
|
|
126
|
-
asset_type?: string | null;
|
|
127
|
-
asset?: {
|
|
128
|
-
metadata?: Record<string, unknown>;
|
|
129
|
-
} | null;
|
|
130
|
-
} | null | undefined, declaration: RouteInputDeclarationLike | QuestSubmissionAssetDeclaration | null | undefined): boolean;
|
|
131
|
-
declare function getPrimaryAssetRef(refs: KeyedAssetRefs | null | undefined, declarations?: Record<string, QuestSubmissionAssetDeclaration> | null): {
|
|
132
|
-
key: string;
|
|
133
|
-
asset_id: string;
|
|
134
|
-
asset_type: string;
|
|
135
|
-
} | null;
|
|
136
|
-
declare function toRouteInputAssets(refs: KeyedAssetRefs | null | undefined): Record<string, {
|
|
137
|
-
assetId: string;
|
|
138
|
-
assetType: string;
|
|
139
|
-
}>;
|
|
140
|
-
/** @deprecated Use declarationToPickerFilters */
|
|
141
|
-
type EvalSubmissionFilters = AssetDeclarationPickerFilters;
|
|
142
143
|
|
|
143
144
|
export { type AssetDeclarationPickerFilters, type EvalSubmissionFilters, type KeyedAssetInput, KeyedAssetInputSchema, KeyedAssetInputValueSchema, type KeyedAssetRefs, KeyedAssetRefsSchema, type QuestSubmissionAssetDeclaration, QuestSubmissionAssetDeclarationSchema, type QuestSubmissionItemInput, type RouteForSubmissionShape, type RouteInputDeclarationLike, assetMatchesDeclaration, declarationToPickerFilters, declarationToSubmissionDeclaration, getPrimaryAssetRef, getPrimaryDeclarationKey, getRouteInputDeclarationsFromRoute, getSubmissionAssetShape, materializeContributorSubmissionAssets, toRouteInputAssets };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{c as KeyedAssetInputSchema,b as KeyedAssetInputValueSchema,a as KeyedAssetRefsSchema,d as QuestSubmissionAssetDeclarationSchema
|
|
1
|
+
export{c as KeyedAssetInputSchema,b as KeyedAssetInputValueSchema,a as KeyedAssetRefsSchema,d as QuestSubmissionAssetDeclarationSchema}from'../chunk-SUVNXKE6.js';export{g as assetMatchesDeclaration,f as declarationToPickerFilters,b as declarationToSubmissionDeclaration,h as getPrimaryAssetRef,d as getPrimaryDeclarationKey,a as getRouteInputDeclarationsFromRoute,e as getSubmissionAssetShape,c as materializeContributorSubmissionAssets,i as toRouteInputAssets}from'../chunk-HJW6XNOY.js';import'../chunk-4276I2OP.js';import'../chunk-QVMN2EX4.js';import'../chunk-XSZPAZEE.js';import'../chunk-ZM7J5MCU.js';import'../chunk-BWUPF76F.js';import'../chunk-NLU672VS.js';import'../chunk-33C7IDRP.js';import'../chunk-DUBPWSCA.js';import'../chunk-42ADEGDM.js';//# sourceMappingURL=quest-submission.js.map
|
|
2
2
|
//# sourceMappingURL=quest-submission.js.map
|
package/package.json
CHANGED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
|
|
4
|
+
import { createNameUrlSlug } from "../dist/index.js";
|
|
5
|
+
|
|
6
|
+
test("createNameUrlSlug keeps plain names unchanged", () => {
|
|
7
|
+
// Pre-existing behaviour must hold for ordinary names so stored slugs
|
|
8
|
+
// keep matching what the function produces.
|
|
9
|
+
const cases = {
|
|
10
|
+
"Crystal structures for composition: SnS 1": "crystal-structures-for-composition-sns-1",
|
|
11
|
+
"POST /generate": "post-generate",
|
|
12
|
+
"Relax a crystal structure": "relax-a-crystal-structure",
|
|
13
|
+
"Li-O-Ti — 3 MatterGen structures (Fm-3m, P4_2/mnm)":
|
|
14
|
+
"li-o-ti-3-mattergen-structures-fm-3m-p4-2-mnm",
|
|
15
|
+
"Café résumé": "cafe-resume",
|
|
16
|
+
" --leading and trailing-- ": "leading-and-trailing",
|
|
17
|
+
};
|
|
18
|
+
for (const [name, slug] of Object.entries(cases)) {
|
|
19
|
+
assert.equal(createNameUrlSlug(name), slug, name);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test("createNameUrlSlug keeps decimals readable", () => {
|
|
24
|
+
assert.equal(
|
|
25
|
+
createNameUrlSlug("PbTe (Fm-3m): thermoelectric ZT estimate (ZT_max 1.21 at 700 K)"),
|
|
26
|
+
"pbte-fm-3m-thermoelectric-zt-estimate-zt-max-1-21-at-700-k"
|
|
27
|
+
);
|
|
28
|
+
assert.equal(createNameUrlSlug("Stable Diffusion 3.5"), "stable-diffusion-3-5");
|
|
29
|
+
// Sentence-ending periods and file extensions are still dropped/joined
|
|
30
|
+
assert.equal(createNameUrlSlug("results.zip"), "resultszip");
|
|
31
|
+
assert.equal(createNameUrlSlug("Done."), "done");
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
test("createNameUrlSlug spells out Greek letters", () => {
|
|
35
|
+
assert.equal(
|
|
36
|
+
createNameUrlSlug("PbTe (Fm-3m): simulated XRD pattern (Cu Kα)"),
|
|
37
|
+
"pbte-fm-3m-simulated-xrd-pattern-cu-k-alpha"
|
|
38
|
+
);
|
|
39
|
+
assert.equal(createNameUrlSlug("κ_lat vs T"), "kappa-lat-vs-t");
|
|
40
|
+
assert.equal(createNameUrlSlug("α-Fe"), "alpha-fe");
|
|
41
|
+
assert.equal(createNameUrlSlug("ΔG of formation"), "delta-g-of-formation");
|
|
42
|
+
assert.equal(createNameUrlSlug("10 µm film"), "10-mu-m-film");
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
test("createNameUrlSlug folds superscripts and unicode dashes", () => {
|
|
46
|
+
assert.equal(
|
|
47
|
+
createNameUrlSlug("Magnetic density 0.1 Å⁻³"),
|
|
48
|
+
"magnetic-density-0-1-a-3"
|
|
49
|
+
);
|
|
50
|
+
assert.equal(createNameUrlSlug("n = 1e20 cm⁻³"), "n-1e20-cm-3");
|
|
51
|
+
assert.equal(createNameUrlSlug("Area m²"), "area-m2");
|
|
52
|
+
assert.equal(createNameUrlSlug("Before—after"), "before-after");
|
|
53
|
+
});
|
package/dist/chunk-EY4OFSDP.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {a}from'./chunk-OJQM6MWS.js';import {b}from'./chunk-DUBPWSCA.js';var _=n=>n.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[\s\/\_]+/g,"-").replace(/[^\w\-]+/g,"").replace(/\-\-+/g,"-").replace(/^-+/,"").replace(/-+$/,""),g=n=>{var r,i,e,o;return n.org_id===b?(r=n.user)==null?void 0:r.username:n.org_id?(i=n.organization)==null?void 0:i.name:((e=n.organization)==null?void 0:e.name)||((o=n.user)==null?void 0:o.username)},l=new Set,t=(n,r)=>{var e,o;let i=`${r}:${(n==null?void 0:n.id)||"no-id"}:${(n==null?void 0:n.asset_type)||"no-type"}`;l.has(i)||(l.add(i),console.warn("[ouro-js] Unable to build asset URL",{reason:r,id:n==null?void 0:n.id,asset_type:n==null?void 0:n.asset_type,org_id:n==null?void 0:n.org_id,user_id:n==null?void 0:n.user_id,name:n==null?void 0:n.name,name_url_slug:n==null?void 0:n.name_url_slug,organization_name:(e=n==null?void 0:n.organization)==null?void 0:e.name,username:(o=n==null?void 0:n.user)==null?void 0:o.username}));},p=n=>{if(n!=null&&n.slug)return n.slug;if(!(n!=null&&n.asset_type))return t(n,"missing_asset_type"),"#";if(n.asset_type==="conversation")return `/conversations/${n.id}`;if(n.asset_type==="comment")return `/comments/${n.id}`;let r=g(n),i=n.name_url_slug||n.id||(n.name?_(n.name):void 0);return !r||!i?(t(n,r?"missing_asset_name":"missing_entity_name"),"#"):`/${n.asset_type}s/${r}/${i}`};var d=(n,r)=>{let i=p(n);if(i==="#")return i;let e=r!=null&&r.intent?`?intent=${r.intent}`:"",o=`${i}${e}`;return r!=null&&r.filters&&(o+=`?filters=${a(r.filters)}`),o};export{_ as a,p as b,d as c};//# sourceMappingURL=chunk-EY4OFSDP.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-EY4OFSDP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/navigate.ts"],"names":["createNameUrlSlug","name","getEntityName","asset","_a","_b","_c","_d","GLOBAL_ORG_ID","missingAssetUrlWarnings","warnMissingAssetUrlData","reason","key","createUrlSlug","entityName","getAssetUrl","config","slug","pathPostfix","url","filterListToString"],"mappings":"wEAGA,IAAMA,CAAqBC,CAAAA,CAAAA,EAEvBA,CAEG,CAAA,WAAA,GAEA,SAAU,CAAA,KAAK,CAEf,CAAA,OAAA,CAAQ,kBAAoB,CAAA,EAAE,CAE9B,CAAA,OAAA,CAAQ,aAAc,GAAG,CAAA,CAEzB,OAAQ,CAAA,WAAA,CAAa,EAAE,CAAA,CAEvB,OAAQ,CAAA,QAAA,CAAU,GAAG,CAErB,CAAA,OAAA,CAAQ,KAAO,CAAA,EAAE,CACjB,CAAA,OAAA,CAAQ,KAAO,CAAA,EAAE,EAIlBC,CAAiBC,CAAAA,CAAAA,EAAe,CAxBtC,IAAAC,CAAAC,CAAAA,CAAAA,CAAAC,CAAAC,CAAAA,CAAAA,CAyBE,OAAIJ,CAAM,CAAA,MAAA,GAAWK,CAAsBJ,CAAAA,CAAAA,CAAAA,CAAAD,CAAM,CAAA,IAAA,GAAN,IAAAC,CAAAA,MAAAA,CAAAA,CAAAA,CAAY,SACnDD,CAAM,CAAA,MAAA,CAAA,CAAeE,CAAAF,CAAAA,CAAAA,CAAM,YAAN,GAAA,IAAA,CAAA,MAAA,CAAAE,CAAoB,CAAA,IAAA,CAAA,CAAA,CACtCC,EAAAH,CAAM,CAAA,YAAA,GAAN,IAAAG,CAAAA,MAAAA,CAAAA,CAAAA,CAAoB,SAAQC,CAAAJ,CAAAA,CAAAA,CAAM,IAAN,GAAA,IAAA,CAAA,MAAA,CAAAI,EAAY,QACjD,CAAA,CAAA,CAEME,CAA0B,CAAA,IAAI,GAE9BC,CAAAA,CAAAA,CAA0B,CAACP,CAAAA,CAAYQ,IAAmB,CAhChE,IAAAP,CAAAC,CAAAA,CAAAA,CAiCE,IAAMO,CAAAA,CAAM,CAAGD,EAAAA,CAAM,KAAIR,CAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAO,CAAA,EAAA,GAAM,OAAO,CAAA,CAAA,EAAA,CAAIA,CAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,EAAO,UAAc,GAAA,SAAS,CAC3EM,CAAAA,CAAAA,CAAAA,CAAwB,GAAIG,CAAAA,CAAG,CACnCH,GAAAA,CAAAA,CAAwB,IAAIG,CAAG,CAAA,CAE/B,OAAQ,CAAA,IAAA,CAAK,qCAAuC,CAAA,CAClD,MAAAD,CAAAA,CAAAA,CACA,GAAIR,CAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,CAAO,CAAA,EAAA,CACX,UAAYA,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAO,WACnB,MAAQA,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAO,MACf,CAAA,OAAA,CAASA,CAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,EAAO,OAChB,CAAA,IAAA,CAAMA,CAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,EAAO,IACb,CAAA,aAAA,CAAeA,CAAA,EAAA,IAAA,CAAA,MAAA,CAAAA,EAAO,aACtB,CAAA,iBAAA,CAAA,CAAmBC,CAAAD,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAO,YAAP,GAAA,IAAA,CAAA,MAAA,CAAAC,EAAqB,IACxC,CAAA,QAAA,CAAA,CAAUC,CAAAF,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAAO,IAAP,GAAA,IAAA,CAAA,MAAA,CAAAE,EAAa,QACzB,CAAC,CACH,EAAA,CAAA,CAEMQ,CAAiBV,CAAAA,CAAAA,EAAe,CACpC,GAAIA,GAAA,IAAAA,EAAAA,CAAAA,CAAO,IACT,CAAA,OAAOA,CAAM,CAAA,IAAA,CAEf,GAAI,EAACA,GAAA,IAAAA,EAAAA,CAAAA,CAAO,UACV,CAAA,CAAA,OAAAO,CAAwBP,CAAAA,CAAAA,CAAO,oBAAoB,CAAA,CAC5C,IAET,GAAIA,CAAAA,CAAM,UAAe,GAAA,cAAA,CACvB,OAAO,CAAA,eAAA,EAAkBA,CAAM,CAAA,EAAE,GAEnC,GAAIA,CAAAA,CAAM,UAAe,GAAA,SAAA,CACvB,OAAO,CAAA,UAAA,EAAaA,CAAM,CAAA,EAAE,GAE9B,IAAMW,CAAAA,CAAaZ,CAAcC,CAAAA,CAAK,EAChCF,CACJE,CAAAA,CAAAA,CAAM,aAAiBA,EAAAA,CAAAA,CAAM,KAAOA,CAAM,CAAA,IAAA,CAAOH,CAAkBG,CAAAA,CAAAA,CAAM,IAAI,CAAA,CAAI,MACnF,CAAA,CAAA,OAAI,CAACW,CAAc,EAAA,CAACb,CAClBS,EAAAA,CAAAA,CACEP,CACCW,CAAAA,CAAAA,CAAqC,oBAAxB,CAAA,qBAChB,EACO,GAGF,EAAA,CAAA,CAAA,EADWX,CAAM,CAAA,UACJ,CAAKW,EAAAA,EAAAA,CAAU,CAAIb,CAAAA,EAAAA,CAAI,EAC7C,EAQA,IAAMc,CAAc,CAAA,CAClBZ,CACAa,CAAAA,CAAAA,GAIG,CAEH,IAAMC,EAAOJ,CAAcV,CAAAA,CAAK,CAChC,CAAA,GAAIc,CAAS,GAAA,GAAA,CACX,OAAOA,CAAAA,CAET,IAAMC,CAAcF,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,MAAS,CAAA,CAAA,QAAA,EAAWA,CAAO,CAAA,MAAM,GAAK,EAC9DG,CAAAA,CAAAA,CAAM,CAAGF,EAAAA,CAAI,CAAGC,EAAAA,CAAW,CAC/B,CAAA,CAAA,OAAIF,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,OACVG,GAAAA,CAAAA,EAAO,YAAYC,CAAmBJ,CAAAA,CAAAA,CAAO,OAAO,CAAC,IAGhDG,CACT","file":"chunk-EY4OFSDP.js","sourcesContent":["import { filterListToString } from \"./dataset\";\nimport { GLOBAL_ORG_ID } from \"../schema/constants\";\n\nconst createNameUrlSlug = (name: string) => {\n return (\n name\n // Convert to lowercase\n .toLowerCase()\n // Normalize unicode characters\n .normalize(\"NFD\")\n // Remove diacritical marks\n .replace(/[\\u0300-\\u036f]/g, \"\")\n // Replace spaces, forward slashes, and underscores with hyphens\n .replace(/[\\s\\/\\_]+/g, \"-\")\n // Remove special characters\n .replace(/[^\\w\\-]+/g, \"\")\n // Remove multiple consecutive hyphens\n .replace(/\\-\\-+/g, \"-\")\n // Trim hyphens from start and end\n .replace(/^-+/, \"\")\n .replace(/-+$/, \"\")\n );\n};\n\nconst getEntityName = (asset: any) => {\n if (asset.org_id === GLOBAL_ORG_ID) return asset.user?.username;\n if (asset.org_id) return asset.organization?.name;\n return asset.organization?.name || asset.user?.username;\n};\n\nconst missingAssetUrlWarnings = new Set<string>();\n\nconst warnMissingAssetUrlData = (asset: any, reason: string) => {\n const key = `${reason}:${asset?.id || \"no-id\"}:${asset?.asset_type || \"no-type\"}`;\n if (missingAssetUrlWarnings.has(key)) return;\n missingAssetUrlWarnings.add(key);\n\n console.warn(\"[ouro-js] Unable to build asset URL\", {\n reason,\n id: asset?.id,\n asset_type: asset?.asset_type,\n org_id: asset?.org_id,\n user_id: asset?.user_id,\n name: asset?.name,\n name_url_slug: asset?.name_url_slug,\n organization_name: asset?.organization?.name,\n username: asset?.user?.username,\n });\n};\n\nconst createUrlSlug = (asset: any) => {\n if (asset?.slug) {\n return asset.slug;\n }\n if (!asset?.asset_type) {\n warnMissingAssetUrlData(asset, \"missing_asset_type\");\n return \"#\";\n }\n if (asset.asset_type === \"conversation\") {\n return `/conversations/${asset.id}`;\n }\n if (asset.asset_type === \"comment\") {\n return `/comments/${asset.id}`;\n }\n const entityName = getEntityName(asset);\n const name =\n asset.name_url_slug || asset.id || (asset.name ? createNameUrlSlug(asset.name) : undefined);\n if (!entityName || !name) {\n warnMissingAssetUrlData(\n asset,\n !entityName ? \"missing_entity_name\" : \"missing_asset_name\"\n );\n return \"#\";\n }\n const assetType = asset.asset_type;\n return `/${assetType}s/${entityName}/${name}`;\n};\n\nconst getParentAssetUrl = (asset: any, config?: any): string => {\n if (!asset?.parent) return \"#\";\n const postfix = asset.asset_type === \"comment\" ? `#comment-${asset.id}` : \"\";\n return `${getAssetUrl(asset.parent, config)}${postfix}`;\n};\n\nconst getAssetUrl = (\n asset: any,\n config?: {\n intent?: \"share\";\n filters?: { column: string; value: string; operator: string }[];\n }\n) => {\n // const assetType = asset?.asset_type || asset?.assetType;\n const slug = createUrlSlug(asset);\n if (slug === \"#\") {\n return slug;\n }\n const pathPostfix = config?.intent ? `?intent=${config.intent}` : \"\";\n let url = `${slug}${pathPostfix}`;\n if (config?.filters) {\n url += `?filters=${filterListToString(config.filters)}`;\n }\n\n return url;\n};\n\nexport { getAssetUrl, createUrlSlug, createNameUrlSlug };\n"]}
|
package/dist/chunk-IUO6O47I.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkGS5VFJ22_cjs=require('./chunk-GS5VFJ22.cjs'),chunkYFEGRZXL_cjs=require('./chunk-YFEGRZXL.cjs'),zod=require('zod');function m(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}function k(e){if(!e)return null;let t=e.replace(/^\.+/,"").trim().toLowerCase().replace(/[^a-z0-9]/g,"");return !t||/^\d+$/.test(t)||t.length>12?null:t}function I(e){let n=Array.isArray(e)?e:typeof e=="string"?e.split(/[\s,]+/):[];return Array.from(new Set(n.map(t=>k(t)).filter(t=>!!t)))}var E=zod.record(zod.string(),zod.object({asset_id:zod.uuid(),asset_type:chunkYFEGRZXL_cjs.a})),T=zod.union([zod.uuid(),zod.object({asset_id:zod.uuid(),asset_type:zod.optional(chunkYFEGRZXL_cjs.a)})]),q=zod.record(zod.string(),T),B=chunkGS5VFJ22_cjs.h.extend({required:zod.optional(zod.boolean()).default(true)});function S(e){return I([...Array.isArray(e.file_extensions)?e.file_extensions:[],...Array.isArray(e.input_file_extensions)?e.input_file_extensions:[]].join(","))}function R(e){return e.input_filter||e.filter||void 0}function K(e){var s;let n=e==null?void 0:e.route;if(!n)return {};let t=n.input_assets;if(m(t)){let i=Object.entries(t).filter(([,r])=>m(r));if(i.length>0)return Object.fromEntries(i)}return n.input_type?{[n.input_type]:{asset_type:n.input_type,primary:true,input_filter:n.input_filter,input_file_extensions:(s=n.input_file_extensions)!=null?s:null}}:{}}function L(e){if(typeof e.label!="string")return;let n=e.label.trim();return n.length>0?n:void 0}function Q(e){let n=S(e),t=R(e),s=L(e);return {asset_type:e.asset_type,primary:e.primary,input_filter:t!=null?t:null,file_extensions:n.length>0?n:null,required:true,...s?{label:s}:{}}}function j(e,n){let t=new Set(n),s={};for(let[i,r]of Object.entries(e))t.has(i)||(s[i]=Q(r));return s}function F(e){let n=Object.entries(e);if(!n.length)return null;let t=n.find(([,s])=>s.primary===true);return t?t[0]:(n.length===1,n[0][0])}function V(e,n){var i,r;let t=(i=e.eval_static_inputs)!=null?i:{};if(e.eval_route_id&&n){let l=K(n),a=Object.keys(t),u=j(l,a);return {contributorKeys:Object.keys(u),declarations:u,pinned:t}}let s=(r=e.submission_assets)!=null?r:{};return {contributorKeys:Object.keys(s),declarations:s,pinned:t}}function O(e){if(!e)return null;let n=e.asset_type||void 0;if(!n)return null;let t={assetType:n,hasConstraints:false};if(n==="file"){let s=S(e);s.length>0&&(t.extensions=s,t.hasConstraints=true);let i=R(e);i&&(t.fileType=i,t.hasConstraints=true);}return t}function M(e,n){var i,r,l,a,u,d;if(!n||!e)return true;let t=O(n);if(!t)return true;let s=(i=e.assetType)!=null?i:e.asset_type;if(t.assetType&&s!==t.assetType)return false;if(t.assetType==="file"){let p=(l=(r=e.asset)==null?void 0:r.metadata)!=null?l:{};if(t.extensions&&t.extensions.length>0){let o=String((a=p.extension)!=null?a:"").toLowerCase();if(!o||!t.extensions.includes(o))return false}if(t.fileType){let o=String((d=(u=p.file_type)!=null?u:p.type)!=null?d:"").toLowerCase().split("/")[0],c=t.fileType.toLowerCase();if(o&&c&&!o.includes(c)&&o!==c)return false}}return true}function $(e,n){if(!e||!Object.keys(e).length)return null;let t=n&&F(n)||Object.keys(e)[0],s=e[t];return s?{key:t,asset_id:s.asset_id,asset_type:s.asset_type}:null}function v(e){return e?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,{assetId:t.asset_id,assetType:t.asset_type}])):{}}exports.a=E;exports.b=T;exports.c=q;exports.d=B;exports.e=K;exports.f=Q;exports.g=j;exports.h=F;exports.i=V;exports.j=O;exports.k=M;exports.l=$;exports.m=v;//# sourceMappingURL=chunk-IUO6O47I.cjs.map
|
|
2
|
-
//# sourceMappingURL=chunk-IUO6O47I.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/quest-submission.ts"],"names":["isPlainObject","value","normalizeFileExtension","safe","normalizeFileExtensions","rawValues","entry","KeyedAssetRefsSchema","record","string","object","uuid","AssetTypeSchema","KeyedAssetInputValueSchema","union","optional","KeyedAssetInputSchema","QuestSubmissionAssetDeclarationSchema","RouteInputAssetDeclarationSchema","boolean","readDeclarationExtensions","declaration","readDeclarationFilter","getRouteInputDeclarationsFromRoute","route","_a","detail","inputs","entries","readDeclarationLabel","label","declarationToSubmissionDeclaration","extensions","filter","materializeContributorSubmissionAssets","routeInputs","pinnedKeys","pinned","out","key","getPrimaryDeclarationKey","declarations","primary","d","getSubmissionAssetShape","item","_b","materialized","declarationToPickerFilters","assetType","filters","fileType","assetMatchesDeclaration","asset","_c","_d","_e","_f","metadata","ext","type","expected","getPrimaryAssetRef","refs","ref","toRouteInputAssets"],"mappings":"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","file":"chunk-IUO6O47I.cjs","sourcesContent":["import {\n object,\n string,\n record,\n optional,\n boolean,\n array,\n uuid,\n union,\n type z,\n} from \"zod\";\n\nimport { AssetTypeSchema } from \"../schema/common\";\nimport { RouteInputAssetDeclarationSchema } from \"../schema/services\";\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction normalizeFileExtension(value: string | null | undefined): string | null {\n if (!value) return null;\n const normalized = value.replace(/^\\.+/, \"\").trim().toLowerCase();\n const safe = normalized.replace(/[^a-z0-9]/g, \"\");\n if (!safe || /^\\d+$/.test(safe) || safe.length > 12) return null;\n return safe;\n}\n\nfunction normalizeFileExtensions(\n value: string | string[] | null | undefined\n): string[] {\n const rawValues = Array.isArray(value)\n ? value\n : typeof value === \"string\"\n ? value.split(/[\\s,]+/)\n : [];\n return Array.from(\n new Set(\n rawValues\n .map((entry) => normalizeFileExtension(entry))\n .filter((entry): entry is string => Boolean(entry))\n )\n );\n}\n\n/** Stored on entries and eval_static_inputs after server normalization. */\nexport const KeyedAssetRefsSchema = record(\n string(),\n object({\n asset_id: uuid(),\n asset_type: AssetTypeSchema,\n })\n);\n\n/** Accepted on POST /quests/:id/entries/create — server fills asset_type. */\nexport const KeyedAssetInputValueSchema = union([\n uuid(),\n object({\n asset_id: uuid(),\n asset_type: optional(AssetTypeSchema),\n }),\n]);\n\nexport const KeyedAssetInputSchema = record(\n string(),\n KeyedAssetInputValueSchema\n);\n\nexport const QuestSubmissionAssetDeclarationSchema =\n RouteInputAssetDeclarationSchema.extend({\n required: optional(boolean()).default(true),\n });\n\nexport type KeyedAssetRefs = z.infer<typeof KeyedAssetRefsSchema>;\nexport type KeyedAssetInput = z.infer<typeof KeyedAssetInputSchema>;\nexport type QuestSubmissionAssetDeclaration = z.infer<\n typeof QuestSubmissionAssetDeclarationSchema\n>;\n\nexport type AssetDeclarationPickerFilters = {\n assetType?: string;\n fileType?: string;\n extensions?: string[];\n hasConstraints: boolean;\n};\n\nexport type QuestSubmissionItemInput = {\n eval_route_id?: string | null;\n submission_assets?: Record<string, QuestSubmissionAssetDeclaration> | null;\n eval_static_inputs?: KeyedAssetRefs | null;\n expected_asset_type?: string | null;\n};\n\nexport type RouteInputDeclarationLike = {\n asset_type?: string | null;\n primary?: boolean;\n input_filter?: string | null;\n filter?: string | null;\n file_extensions?: string[] | null;\n input_file_extensions?: string[] | null;\n label?: string | null;\n};\n\nexport type RouteForSubmissionShape = {\n route?: {\n input_assets?: Record<string, RouteInputDeclarationLike> | null;\n input_type?: string | null;\n input_filter?: string | null;\n input_file_extensions?: string[] | null;\n } | null;\n} | null;\n\nfunction readDeclarationExtensions(\n declaration: RouteInputDeclarationLike\n): string[] {\n return normalizeFileExtensions([\n ...(Array.isArray(declaration.file_extensions)\n ? declaration.file_extensions\n : []),\n ...(Array.isArray(declaration.input_file_extensions)\n ? declaration.input_file_extensions\n : []),\n ].join(\",\"));\n}\n\nfunction readDeclarationFilter(\n declaration: RouteInputDeclarationLike\n): string | undefined {\n return declaration.input_filter || declaration.filter || undefined;\n}\n\n/** Route keyed inputs as a flat map (includes legacy input_type fallback). */\nexport function getRouteInputDeclarationsFromRoute(\n route: RouteForSubmissionShape\n): Record<string, RouteInputDeclarationLike> {\n const detail = route?.route;\n if (!detail) return {};\n\n const inputs = detail.input_assets;\n if (isPlainObject(inputs)) {\n const entries = Object.entries(inputs).filter(([, value]) =>\n isPlainObject(value)\n ) as [string, RouteInputDeclarationLike][];\n if (entries.length > 0) {\n return Object.fromEntries(entries);\n }\n }\n\n if (detail.input_type) {\n return {\n [detail.input_type]: {\n asset_type: detail.input_type,\n primary: true,\n input_filter: detail.input_filter,\n input_file_extensions: detail.input_file_extensions ?? null,\n },\n };\n }\n\n return {};\n}\n\nfunction readDeclarationLabel(\n declaration: RouteInputDeclarationLike\n): string | undefined {\n if (typeof declaration.label !== \"string\") return undefined;\n const label = declaration.label.trim();\n return label.length > 0 ? label : undefined;\n}\n\nexport function declarationToSubmissionDeclaration(\n declaration: RouteInputDeclarationLike\n): QuestSubmissionAssetDeclaration {\n const extensions = readDeclarationExtensions(declaration);\n const filter = readDeclarationFilter(declaration);\n const label = readDeclarationLabel(declaration);\n return {\n asset_type: declaration.asset_type as QuestSubmissionAssetDeclaration[\"asset_type\"],\n primary: declaration.primary,\n input_filter: (filter ?? null) as QuestSubmissionAssetDeclaration[\"input_filter\"],\n file_extensions: extensions.length > 0 ? extensions : null,\n required: true,\n ...(label ? { label } : {}),\n };\n}\n\n/** Materialize contributor declarations from route inputs minus pinned keys. */\nexport function materializeContributorSubmissionAssets(\n routeInputs: Record<string, RouteInputDeclarationLike>,\n pinnedKeys: string[]\n): Record<string, QuestSubmissionAssetDeclaration> {\n const pinned = new Set(pinnedKeys);\n const out: Record<string, QuestSubmissionAssetDeclaration> = {};\n for (const [key, declaration] of Object.entries(routeInputs)) {\n if (pinned.has(key)) continue;\n out[key] = declarationToSubmissionDeclaration(declaration);\n }\n return out;\n}\n\nexport function getPrimaryDeclarationKey(\n declarations: Record<string, QuestSubmissionAssetDeclaration>\n): string | null {\n const entries = Object.entries(declarations);\n if (!entries.length) return null;\n const primary = entries.find(([, d]) => d.primary === true);\n if (primary) return primary[0];\n if (entries.length === 1) return entries[0][0];\n return entries[0][0];\n}\n\nexport function getSubmissionAssetShape(\n item: QuestSubmissionItemInput,\n route?: RouteForSubmissionShape | null\n): {\n contributorKeys: string[];\n declarations: Record<string, QuestSubmissionAssetDeclaration>;\n pinned: KeyedAssetRefs;\n} {\n const pinned: KeyedAssetRefs = item.eval_static_inputs ?? {};\n\n if (item.eval_route_id && route) {\n const routeInputs = getRouteInputDeclarationsFromRoute(route);\n const pinnedKeys = Object.keys(pinned);\n const materialized = materializeContributorSubmissionAssets(\n routeInputs,\n pinnedKeys\n );\n return {\n contributorKeys: Object.keys(materialized),\n declarations: materialized,\n pinned,\n };\n }\n\n const declarations = item.submission_assets ?? {};\n return {\n contributorKeys: Object.keys(declarations),\n declarations,\n pinned,\n };\n}\n\nexport function declarationToPickerFilters(\n declaration: RouteInputDeclarationLike | QuestSubmissionAssetDeclaration | null | undefined\n): AssetDeclarationPickerFilters | null {\n if (!declaration) return null;\n const assetType = declaration.asset_type || undefined;\n if (!assetType) return null;\n\n const filters: AssetDeclarationPickerFilters = {\n assetType,\n hasConstraints: false,\n };\n\n if (assetType === \"file\") {\n const extensions = readDeclarationExtensions(declaration);\n if (extensions.length > 0) {\n filters.extensions = extensions;\n filters.hasConstraints = true;\n }\n const fileType = readDeclarationFilter(declaration);\n if (fileType) {\n filters.fileType = fileType;\n filters.hasConstraints = true;\n }\n }\n\n return filters;\n}\n\nexport function assetMatchesDeclaration(\n asset:\n | {\n assetType?: string | null;\n asset_type?: string | null;\n asset?: { metadata?: Record<string, unknown> } | null;\n }\n | null\n | undefined,\n declaration: RouteInputDeclarationLike | QuestSubmissionAssetDeclaration | null | undefined\n): boolean {\n if (!declaration || !asset) return true;\n const filters = declarationToPickerFilters(declaration);\n if (!filters) return true;\n\n const assetType = asset.assetType ?? asset.asset_type;\n if (filters.assetType && assetType !== filters.assetType) return false;\n\n if (filters.assetType === \"file\") {\n const metadata = asset.asset?.metadata ?? {};\n if (filters.extensions && filters.extensions.length > 0) {\n const ext = String(metadata.extension ?? \"\").toLowerCase();\n if (!ext || !filters.extensions.includes(ext)) return false;\n }\n if (filters.fileType) {\n const type = String(metadata.file_type ?? metadata.type ?? \"\")\n .toLowerCase()\n .split(\"/\")[0];\n const expected = filters.fileType.toLowerCase();\n if (type && expected && !type.includes(expected) && type !== expected) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport function getPrimaryAssetRef(\n refs: KeyedAssetRefs | null | undefined,\n declarations?: Record<string, QuestSubmissionAssetDeclaration> | null\n): { key: string; asset_id: string; asset_type: string } | null {\n if (!refs || !Object.keys(refs).length) return null;\n const key =\n (declarations && getPrimaryDeclarationKey(declarations)) ||\n Object.keys(refs)[0];\n const ref = refs[key];\n if (!ref) return null;\n return { key, asset_id: ref.asset_id, asset_type: ref.asset_type };\n}\n\nexport function toRouteInputAssets(\n refs: KeyedAssetRefs | null | undefined\n): Record<string, { assetId: string; assetType: string }> {\n if (!refs) return {};\n return Object.fromEntries(\n Object.entries(refs).map(([key, ref]) => [\n key,\n { assetId: ref.asset_id, assetType: ref.asset_type },\n ])\n );\n}\n\n/** @deprecated Use declarationToPickerFilters */\nexport type EvalSubmissionFilters = AssetDeclarationPickerFilters;\n"]}
|
package/dist/chunk-MOEVC3KD.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkVGNECRJJ_cjs=require('./chunk-VGNECRJJ.cjs'),chunk7HF5VHUN_cjs=require('./chunk-7HF5VHUN.cjs');var _=n=>n.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[\s\/\_]+/g,"-").replace(/[^\w\-]+/g,"").replace(/\-\-+/g,"-").replace(/^-+/,"").replace(/-+$/,""),g=n=>{var r,i,e,o;return n.org_id===chunk7HF5VHUN_cjs.b?(r=n.user)==null?void 0:r.username:n.org_id?(i=n.organization)==null?void 0:i.name:((e=n.organization)==null?void 0:e.name)||((o=n.user)==null?void 0:o.username)},l=new Set,t=(n,r)=>{var e,o;let i=`${r}:${(n==null?void 0:n.id)||"no-id"}:${(n==null?void 0:n.asset_type)||"no-type"}`;l.has(i)||(l.add(i),console.warn("[ouro-js] Unable to build asset URL",{reason:r,id:n==null?void 0:n.id,asset_type:n==null?void 0:n.asset_type,org_id:n==null?void 0:n.org_id,user_id:n==null?void 0:n.user_id,name:n==null?void 0:n.name,name_url_slug:n==null?void 0:n.name_url_slug,organization_name:(e=n==null?void 0:n.organization)==null?void 0:e.name,username:(o=n==null?void 0:n.user)==null?void 0:o.username}));},p=n=>{if(n!=null&&n.slug)return n.slug;if(!(n!=null&&n.asset_type))return t(n,"missing_asset_type"),"#";if(n.asset_type==="conversation")return `/conversations/${n.id}`;if(n.asset_type==="comment")return `/comments/${n.id}`;let r=g(n),i=n.name_url_slug||n.id||(n.name?_(n.name):void 0);return !r||!i?(t(n,r?"missing_asset_name":"missing_entity_name"),"#"):`/${n.asset_type}s/${r}/${i}`};var d=(n,r)=>{let i=p(n);if(i==="#")return i;let e=r!=null&&r.intent?`?intent=${r.intent}`:"",o=`${i}${e}`;return r!=null&&r.filters&&(o+=`?filters=${chunkVGNECRJJ_cjs.a(r.filters)}`),o};exports.a=_;exports.b=p;exports.c=d;//# sourceMappingURL=chunk-MOEVC3KD.cjs.map
|
|
2
|
-
//# sourceMappingURL=chunk-MOEVC3KD.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/navigate.ts"],"names":["createNameUrlSlug","name","getEntityName","asset","_a","_b","_c","_d","GLOBAL_ORG_ID","missingAssetUrlWarnings","warnMissingAssetUrlData","reason","key","createUrlSlug","entityName","getAssetUrl","config","slug","pathPostfix","url","filterListToString"],"mappings":"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","file":"chunk-MOEVC3KD.cjs","sourcesContent":["import { filterListToString } from \"./dataset\";\nimport { GLOBAL_ORG_ID } from \"../schema/constants\";\n\nconst createNameUrlSlug = (name: string) => {\n return (\n name\n // Convert to lowercase\n .toLowerCase()\n // Normalize unicode characters\n .normalize(\"NFD\")\n // Remove diacritical marks\n .replace(/[\\u0300-\\u036f]/g, \"\")\n // Replace spaces, forward slashes, and underscores with hyphens\n .replace(/[\\s\\/\\_]+/g, \"-\")\n // Remove special characters\n .replace(/[^\\w\\-]+/g, \"\")\n // Remove multiple consecutive hyphens\n .replace(/\\-\\-+/g, \"-\")\n // Trim hyphens from start and end\n .replace(/^-+/, \"\")\n .replace(/-+$/, \"\")\n );\n};\n\nconst getEntityName = (asset: any) => {\n if (asset.org_id === GLOBAL_ORG_ID) return asset.user?.username;\n if (asset.org_id) return asset.organization?.name;\n return asset.organization?.name || asset.user?.username;\n};\n\nconst missingAssetUrlWarnings = new Set<string>();\n\nconst warnMissingAssetUrlData = (asset: any, reason: string) => {\n const key = `${reason}:${asset?.id || \"no-id\"}:${asset?.asset_type || \"no-type\"}`;\n if (missingAssetUrlWarnings.has(key)) return;\n missingAssetUrlWarnings.add(key);\n\n console.warn(\"[ouro-js] Unable to build asset URL\", {\n reason,\n id: asset?.id,\n asset_type: asset?.asset_type,\n org_id: asset?.org_id,\n user_id: asset?.user_id,\n name: asset?.name,\n name_url_slug: asset?.name_url_slug,\n organization_name: asset?.organization?.name,\n username: asset?.user?.username,\n });\n};\n\nconst createUrlSlug = (asset: any) => {\n if (asset?.slug) {\n return asset.slug;\n }\n if (!asset?.asset_type) {\n warnMissingAssetUrlData(asset, \"missing_asset_type\");\n return \"#\";\n }\n if (asset.asset_type === \"conversation\") {\n return `/conversations/${asset.id}`;\n }\n if (asset.asset_type === \"comment\") {\n return `/comments/${asset.id}`;\n }\n const entityName = getEntityName(asset);\n const name =\n asset.name_url_slug || asset.id || (asset.name ? createNameUrlSlug(asset.name) : undefined);\n if (!entityName || !name) {\n warnMissingAssetUrlData(\n asset,\n !entityName ? \"missing_entity_name\" : \"missing_asset_name\"\n );\n return \"#\";\n }\n const assetType = asset.asset_type;\n return `/${assetType}s/${entityName}/${name}`;\n};\n\nconst getParentAssetUrl = (asset: any, config?: any): string => {\n if (!asset?.parent) return \"#\";\n const postfix = asset.asset_type === \"comment\" ? `#comment-${asset.id}` : \"\";\n return `${getAssetUrl(asset.parent, config)}${postfix}`;\n};\n\nconst getAssetUrl = (\n asset: any,\n config?: {\n intent?: \"share\";\n filters?: { column: string; value: string; operator: string }[];\n }\n) => {\n // const assetType = asset?.asset_type || asset?.assetType;\n const slug = createUrlSlug(asset);\n if (slug === \"#\") {\n return slug;\n }\n const pathPostfix = config?.intent ? `?intent=${config.intent}` : \"\";\n let url = `${slug}${pathPostfix}`;\n if (config?.filters) {\n url += `?filters=${filterListToString(config.filters)}`;\n }\n\n return url;\n};\n\nexport { getAssetUrl, createUrlSlug, createNameUrlSlug };\n"]}
|
package/dist/chunk-OZBQNIKJ.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import {h}from'./chunk-SB4X4GDQ.js';import {a}from'./chunk-33C7IDRP.js';import {record,string,object,uuid,union,optional,boolean}from'zod';function m(e){return !!e&&typeof e=="object"&&!Array.isArray(e)}function k(e){if(!e)return null;let t=e.replace(/^\.+/,"").trim().toLowerCase().replace(/[^a-z0-9]/g,"");return !t||/^\d+$/.test(t)||t.length>12?null:t}function I(e){let n=Array.isArray(e)?e:typeof e=="string"?e.split(/[\s,]+/):[];return Array.from(new Set(n.map(t=>k(t)).filter(t=>!!t)))}var E=record(string(),object({asset_id:uuid(),asset_type:a})),T=union([uuid(),object({asset_id:uuid(),asset_type:optional(a)})]),q=record(string(),T),B=h.extend({required:optional(boolean()).default(true)});function S(e){return I([...Array.isArray(e.file_extensions)?e.file_extensions:[],...Array.isArray(e.input_file_extensions)?e.input_file_extensions:[]].join(","))}function R(e){return e.input_filter||e.filter||void 0}function K(e){var s;let n=e==null?void 0:e.route;if(!n)return {};let t=n.input_assets;if(m(t)){let i=Object.entries(t).filter(([,r])=>m(r));if(i.length>0)return Object.fromEntries(i)}return n.input_type?{[n.input_type]:{asset_type:n.input_type,primary:true,input_filter:n.input_filter,input_file_extensions:(s=n.input_file_extensions)!=null?s:null}}:{}}function L(e){if(typeof e.label!="string")return;let n=e.label.trim();return n.length>0?n:void 0}function Q(e){let n=S(e),t=R(e),s=L(e);return {asset_type:e.asset_type,primary:e.primary,input_filter:t!=null?t:null,file_extensions:n.length>0?n:null,required:true,...s?{label:s}:{}}}function j(e,n){let t=new Set(n),s={};for(let[i,r]of Object.entries(e))t.has(i)||(s[i]=Q(r));return s}function F(e){let n=Object.entries(e);if(!n.length)return null;let t=n.find(([,s])=>s.primary===true);return t?t[0]:(n.length===1,n[0][0])}function V(e,n){var i,r;let t=(i=e.eval_static_inputs)!=null?i:{};if(e.eval_route_id&&n){let l=K(n),a=Object.keys(t),u=j(l,a);return {contributorKeys:Object.keys(u),declarations:u,pinned:t}}let s=(r=e.submission_assets)!=null?r:{};return {contributorKeys:Object.keys(s),declarations:s,pinned:t}}function O(e){if(!e)return null;let n=e.asset_type||void 0;if(!n)return null;let t={assetType:n,hasConstraints:false};if(n==="file"){let s=S(e);s.length>0&&(t.extensions=s,t.hasConstraints=true);let i=R(e);i&&(t.fileType=i,t.hasConstraints=true);}return t}function M(e,n){var i,r,l,a,u,d;if(!n||!e)return true;let t=O(n);if(!t)return true;let s=(i=e.assetType)!=null?i:e.asset_type;if(t.assetType&&s!==t.assetType)return false;if(t.assetType==="file"){let p=(l=(r=e.asset)==null?void 0:r.metadata)!=null?l:{};if(t.extensions&&t.extensions.length>0){let o=String((a=p.extension)!=null?a:"").toLowerCase();if(!o||!t.extensions.includes(o))return false}if(t.fileType){let o=String((d=(u=p.file_type)!=null?u:p.type)!=null?d:"").toLowerCase().split("/")[0],c=t.fileType.toLowerCase();if(o&&c&&!o.includes(c)&&o!==c)return false}}return true}function $(e,n){if(!e||!Object.keys(e).length)return null;let t=n&&F(n)||Object.keys(e)[0],s=e[t];return s?{key:t,asset_id:s.asset_id,asset_type:s.asset_type}:null}function v(e){return e?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,{assetId:t.asset_id,assetType:t.asset_type}])):{}}export{E as a,T as b,q as c,B as d,K as e,Q as f,j as g,F as h,V as i,O as j,M as k,$ as l,v as m};//# sourceMappingURL=chunk-OZBQNIKJ.js.map
|
|
2
|
-
//# sourceMappingURL=chunk-OZBQNIKJ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/quest-submission.ts"],"names":["isPlainObject","value","normalizeFileExtension","safe","normalizeFileExtensions","rawValues","entry","KeyedAssetRefsSchema","record","string","object","uuid","AssetTypeSchema","KeyedAssetInputValueSchema","union","optional","KeyedAssetInputSchema","QuestSubmissionAssetDeclarationSchema","RouteInputAssetDeclarationSchema","boolean","readDeclarationExtensions","declaration","readDeclarationFilter","getRouteInputDeclarationsFromRoute","route","_a","detail","inputs","entries","readDeclarationLabel","label","declarationToSubmissionDeclaration","extensions","filter","materializeContributorSubmissionAssets","routeInputs","pinnedKeys","pinned","out","key","getPrimaryDeclarationKey","declarations","primary","d","getSubmissionAssetShape","item","_b","materialized","declarationToPickerFilters","assetType","filters","fileType","assetMatchesDeclaration","asset","_c","_d","_e","_f","metadata","ext","type","expected","getPrimaryAssetRef","refs","ref","toRouteInputAssets"],"mappings":"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","file":"chunk-OZBQNIKJ.js","sourcesContent":["import {\n object,\n string,\n record,\n optional,\n boolean,\n array,\n uuid,\n union,\n type z,\n} from \"zod\";\n\nimport { AssetTypeSchema } from \"../schema/common\";\nimport { RouteInputAssetDeclarationSchema } from \"../schema/services\";\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction normalizeFileExtension(value: string | null | undefined): string | null {\n if (!value) return null;\n const normalized = value.replace(/^\\.+/, \"\").trim().toLowerCase();\n const safe = normalized.replace(/[^a-z0-9]/g, \"\");\n if (!safe || /^\\d+$/.test(safe) || safe.length > 12) return null;\n return safe;\n}\n\nfunction normalizeFileExtensions(\n value: string | string[] | null | undefined\n): string[] {\n const rawValues = Array.isArray(value)\n ? value\n : typeof value === \"string\"\n ? value.split(/[\\s,]+/)\n : [];\n return Array.from(\n new Set(\n rawValues\n .map((entry) => normalizeFileExtension(entry))\n .filter((entry): entry is string => Boolean(entry))\n )\n );\n}\n\n/** Stored on entries and eval_static_inputs after server normalization. */\nexport const KeyedAssetRefsSchema = record(\n string(),\n object({\n asset_id: uuid(),\n asset_type: AssetTypeSchema,\n })\n);\n\n/** Accepted on POST /quests/:id/entries/create — server fills asset_type. */\nexport const KeyedAssetInputValueSchema = union([\n uuid(),\n object({\n asset_id: uuid(),\n asset_type: optional(AssetTypeSchema),\n }),\n]);\n\nexport const KeyedAssetInputSchema = record(\n string(),\n KeyedAssetInputValueSchema\n);\n\nexport const QuestSubmissionAssetDeclarationSchema =\n RouteInputAssetDeclarationSchema.extend({\n required: optional(boolean()).default(true),\n });\n\nexport type KeyedAssetRefs = z.infer<typeof KeyedAssetRefsSchema>;\nexport type KeyedAssetInput = z.infer<typeof KeyedAssetInputSchema>;\nexport type QuestSubmissionAssetDeclaration = z.infer<\n typeof QuestSubmissionAssetDeclarationSchema\n>;\n\nexport type AssetDeclarationPickerFilters = {\n assetType?: string;\n fileType?: string;\n extensions?: string[];\n hasConstraints: boolean;\n};\n\nexport type QuestSubmissionItemInput = {\n eval_route_id?: string | null;\n submission_assets?: Record<string, QuestSubmissionAssetDeclaration> | null;\n eval_static_inputs?: KeyedAssetRefs | null;\n expected_asset_type?: string | null;\n};\n\nexport type RouteInputDeclarationLike = {\n asset_type?: string | null;\n primary?: boolean;\n input_filter?: string | null;\n filter?: string | null;\n file_extensions?: string[] | null;\n input_file_extensions?: string[] | null;\n label?: string | null;\n};\n\nexport type RouteForSubmissionShape = {\n route?: {\n input_assets?: Record<string, RouteInputDeclarationLike> | null;\n input_type?: string | null;\n input_filter?: string | null;\n input_file_extensions?: string[] | null;\n } | null;\n} | null;\n\nfunction readDeclarationExtensions(\n declaration: RouteInputDeclarationLike\n): string[] {\n return normalizeFileExtensions([\n ...(Array.isArray(declaration.file_extensions)\n ? declaration.file_extensions\n : []),\n ...(Array.isArray(declaration.input_file_extensions)\n ? declaration.input_file_extensions\n : []),\n ].join(\",\"));\n}\n\nfunction readDeclarationFilter(\n declaration: RouteInputDeclarationLike\n): string | undefined {\n return declaration.input_filter || declaration.filter || undefined;\n}\n\n/** Route keyed inputs as a flat map (includes legacy input_type fallback). */\nexport function getRouteInputDeclarationsFromRoute(\n route: RouteForSubmissionShape\n): Record<string, RouteInputDeclarationLike> {\n const detail = route?.route;\n if (!detail) return {};\n\n const inputs = detail.input_assets;\n if (isPlainObject(inputs)) {\n const entries = Object.entries(inputs).filter(([, value]) =>\n isPlainObject(value)\n ) as [string, RouteInputDeclarationLike][];\n if (entries.length > 0) {\n return Object.fromEntries(entries);\n }\n }\n\n if (detail.input_type) {\n return {\n [detail.input_type]: {\n asset_type: detail.input_type,\n primary: true,\n input_filter: detail.input_filter,\n input_file_extensions: detail.input_file_extensions ?? null,\n },\n };\n }\n\n return {};\n}\n\nfunction readDeclarationLabel(\n declaration: RouteInputDeclarationLike\n): string | undefined {\n if (typeof declaration.label !== \"string\") return undefined;\n const label = declaration.label.trim();\n return label.length > 0 ? label : undefined;\n}\n\nexport function declarationToSubmissionDeclaration(\n declaration: RouteInputDeclarationLike\n): QuestSubmissionAssetDeclaration {\n const extensions = readDeclarationExtensions(declaration);\n const filter = readDeclarationFilter(declaration);\n const label = readDeclarationLabel(declaration);\n return {\n asset_type: declaration.asset_type as QuestSubmissionAssetDeclaration[\"asset_type\"],\n primary: declaration.primary,\n input_filter: (filter ?? null) as QuestSubmissionAssetDeclaration[\"input_filter\"],\n file_extensions: extensions.length > 0 ? extensions : null,\n required: true,\n ...(label ? { label } : {}),\n };\n}\n\n/** Materialize contributor declarations from route inputs minus pinned keys. */\nexport function materializeContributorSubmissionAssets(\n routeInputs: Record<string, RouteInputDeclarationLike>,\n pinnedKeys: string[]\n): Record<string, QuestSubmissionAssetDeclaration> {\n const pinned = new Set(pinnedKeys);\n const out: Record<string, QuestSubmissionAssetDeclaration> = {};\n for (const [key, declaration] of Object.entries(routeInputs)) {\n if (pinned.has(key)) continue;\n out[key] = declarationToSubmissionDeclaration(declaration);\n }\n return out;\n}\n\nexport function getPrimaryDeclarationKey(\n declarations: Record<string, QuestSubmissionAssetDeclaration>\n): string | null {\n const entries = Object.entries(declarations);\n if (!entries.length) return null;\n const primary = entries.find(([, d]) => d.primary === true);\n if (primary) return primary[0];\n if (entries.length === 1) return entries[0][0];\n return entries[0][0];\n}\n\nexport function getSubmissionAssetShape(\n item: QuestSubmissionItemInput,\n route?: RouteForSubmissionShape | null\n): {\n contributorKeys: string[];\n declarations: Record<string, QuestSubmissionAssetDeclaration>;\n pinned: KeyedAssetRefs;\n} {\n const pinned: KeyedAssetRefs = item.eval_static_inputs ?? {};\n\n if (item.eval_route_id && route) {\n const routeInputs = getRouteInputDeclarationsFromRoute(route);\n const pinnedKeys = Object.keys(pinned);\n const materialized = materializeContributorSubmissionAssets(\n routeInputs,\n pinnedKeys\n );\n return {\n contributorKeys: Object.keys(materialized),\n declarations: materialized,\n pinned,\n };\n }\n\n const declarations = item.submission_assets ?? {};\n return {\n contributorKeys: Object.keys(declarations),\n declarations,\n pinned,\n };\n}\n\nexport function declarationToPickerFilters(\n declaration: RouteInputDeclarationLike | QuestSubmissionAssetDeclaration | null | undefined\n): AssetDeclarationPickerFilters | null {\n if (!declaration) return null;\n const assetType = declaration.asset_type || undefined;\n if (!assetType) return null;\n\n const filters: AssetDeclarationPickerFilters = {\n assetType,\n hasConstraints: false,\n };\n\n if (assetType === \"file\") {\n const extensions = readDeclarationExtensions(declaration);\n if (extensions.length > 0) {\n filters.extensions = extensions;\n filters.hasConstraints = true;\n }\n const fileType = readDeclarationFilter(declaration);\n if (fileType) {\n filters.fileType = fileType;\n filters.hasConstraints = true;\n }\n }\n\n return filters;\n}\n\nexport function assetMatchesDeclaration(\n asset:\n | {\n assetType?: string | null;\n asset_type?: string | null;\n asset?: { metadata?: Record<string, unknown> } | null;\n }\n | null\n | undefined,\n declaration: RouteInputDeclarationLike | QuestSubmissionAssetDeclaration | null | undefined\n): boolean {\n if (!declaration || !asset) return true;\n const filters = declarationToPickerFilters(declaration);\n if (!filters) return true;\n\n const assetType = asset.assetType ?? asset.asset_type;\n if (filters.assetType && assetType !== filters.assetType) return false;\n\n if (filters.assetType === \"file\") {\n const metadata = asset.asset?.metadata ?? {};\n if (filters.extensions && filters.extensions.length > 0) {\n const ext = String(metadata.extension ?? \"\").toLowerCase();\n if (!ext || !filters.extensions.includes(ext)) return false;\n }\n if (filters.fileType) {\n const type = String(metadata.file_type ?? metadata.type ?? \"\")\n .toLowerCase()\n .split(\"/\")[0];\n const expected = filters.fileType.toLowerCase();\n if (type && expected && !type.includes(expected) && type !== expected) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport function getPrimaryAssetRef(\n refs: KeyedAssetRefs | null | undefined,\n declarations?: Record<string, QuestSubmissionAssetDeclaration> | null\n): { key: string; asset_id: string; asset_type: string } | null {\n if (!refs || !Object.keys(refs).length) return null;\n const key =\n (declarations && getPrimaryDeclarationKey(declarations)) ||\n Object.keys(refs)[0];\n const ref = refs[key];\n if (!ref) return null;\n return { key, asset_id: ref.asset_id, asset_type: ref.asset_type };\n}\n\nexport function toRouteInputAssets(\n refs: KeyedAssetRefs | null | undefined\n): Record<string, { assetId: string; assetType: string }> {\n if (!refs) return {};\n return Object.fromEntries(\n Object.entries(refs).map(([key, ref]) => [\n key,\n { assetId: ref.asset_id, assetType: ref.asset_type },\n ])\n );\n}\n\n/** @deprecated Use declarationToPickerFilters */\nexport type EvalSubmissionFilters = AssetDeclarationPickerFilters;\n"]}
|