@igstack/app-catalog-shared-core 0.3.1-alpha-20260328155123 → 0.3.1-alpha-20260329185327
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.
|
@@ -20,19 +20,19 @@ export type ApprovalType = 'none' | 'service' | 'person' | 'other' | 'unknown';
|
|
|
20
20
|
/**
|
|
21
21
|
* Approval type options for UI display
|
|
22
22
|
*/
|
|
23
|
-
export declare const APPROVAL_TYPES:
|
|
23
|
+
export declare const APPROVAL_TYPES: readonly {
|
|
24
24
|
value: ApprovalType;
|
|
25
25
|
label: string;
|
|
26
|
-
}
|
|
26
|
+
}[];
|
|
27
27
|
/**
|
|
28
28
|
* Common fields for all approval method types
|
|
29
29
|
*/
|
|
30
30
|
export interface BaseApprovalMethod {
|
|
31
31
|
comment?: string;
|
|
32
|
-
roles?:
|
|
32
|
+
roles?: AppRole[];
|
|
33
33
|
approvalPolicy?: string;
|
|
34
34
|
postApprovalInstructions?: string;
|
|
35
|
-
seeMoreUrls?:
|
|
35
|
+
seeMoreUrls?: string[];
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
38
|
* Service-based approval (bot or ticketing system)
|
|
@@ -106,22 +106,22 @@ export interface AppForCatalog {
|
|
|
106
106
|
displayName: string;
|
|
107
107
|
description?: string;
|
|
108
108
|
approvalMethod?: ApprovalMethod;
|
|
109
|
-
teams?:
|
|
109
|
+
teams?: string[];
|
|
110
110
|
notes?: string;
|
|
111
|
-
tags?:
|
|
111
|
+
tags?: string[];
|
|
112
112
|
appUrl?: string;
|
|
113
|
-
links?:
|
|
113
|
+
links?: {
|
|
114
114
|
url: string;
|
|
115
115
|
title?: string;
|
|
116
|
-
}
|
|
116
|
+
}[];
|
|
117
117
|
iconName?: string;
|
|
118
|
-
screenshotIds?:
|
|
118
|
+
screenshotIds?: string[];
|
|
119
119
|
}
|
|
120
120
|
export interface AppCategory {
|
|
121
121
|
id: string;
|
|
122
122
|
name: string;
|
|
123
123
|
}
|
|
124
124
|
export interface AppCatalogData {
|
|
125
|
-
apps:
|
|
126
|
-
categories:
|
|
125
|
+
apps: AppForCatalog[];
|
|
126
|
+
categories: AppCategory[];
|
|
127
127
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Primitive } from 'type-fest';
|
|
2
|
-
export type NullToUndefined<T> = T extends null ? undefined : T extends Primitive | Function | Date | RegExp ? T : T extends
|
|
2
|
+
export type NullToUndefined<T> = T extends null ? undefined : T extends Primitive | Function | Date | RegExp ? T : T extends (infer U)[] ? NullToUndefined<U>[] : T extends Map<infer K, infer V> ? Map<K, NullToUndefined<V>> : T extends Set<infer U> ? Set<NullToUndefined<U>> : T extends object ? {
|
|
3
3
|
[K in keyof T]: NullToUndefined<T[K]>;
|
|
4
4
|
} : unknown;
|
|
5
|
-
export type UndefinedToNull<T> = T extends undefined ? null : T extends Primitive | Function | Date | RegExp ? T : T extends
|
|
5
|
+
export type UndefinedToNull<T> = T extends undefined ? null : T extends Primitive | Function | Date | RegExp ? T : T extends (infer U)[] ? UndefinedToNull<U>[] : T extends Map<infer K, infer V> ? Map<K, UndefinedToNull<V>> : T extends Set<infer U> ? Set<NullToUndefined<U>> : T extends object ? {
|
|
6
6
|
[K in keyof T]: UndefinedToNull<T[K]>;
|
|
7
7
|
} : unknown;
|
|
8
8
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullToUndefined.js","sources":["../../src/nullToUndefined.ts"],"sourcesContent":["import type { Primitive } from 'type-fest'\n\n/*\n Taken from https://gist.github.com/tkrotoff/a6baf96eb6b61b445a9142e5555511a0\n * [Generic way to convert all instances of null to undefined in TypeScript](https://stackoverflow.com/q/50374869)\n *\n * This only works with JS objects hence the file name *Object*Values\n *\n * [\"I intend to stop using `null` in my JS code in favor of `undefined`\"](https://github.com/sindresorhus/meta/discussions/7)\n * [Proposal: NullToUndefined and UndefinedToNull](https://github.com/sindresorhus/type-fest/issues/603)\n *\n * Types implementation inspired by:\n * - https://github.com/sindresorhus/type-fest/blob/v2.12.2/source/delimiter-cased-properties-deep.d.ts\n * - https://github.com/sindresorhus/type-fest/blob/v2.12.2/source/readonly-deep.d.ts\n *\n * https://gist.github.com/tkrotoff/a6baf96eb6b61b445a9142e5555511a0\n */\nexport type NullToUndefined<T> = T extends null\n ? undefined\n : T extends Primitive | Function | Date | RegExp\n ? T\n : T extends
|
|
1
|
+
{"version":3,"file":"nullToUndefined.js","sources":["../../src/nullToUndefined.ts"],"sourcesContent":["import type { Primitive } from 'type-fest'\n\n/*\n Taken from https://gist.github.com/tkrotoff/a6baf96eb6b61b445a9142e5555511a0\n * [Generic way to convert all instances of null to undefined in TypeScript](https://stackoverflow.com/q/50374869)\n *\n * This only works with JS objects hence the file name *Object*Values\n *\n * [\"I intend to stop using `null` in my JS code in favor of `undefined`\"](https://github.com/sindresorhus/meta/discussions/7)\n * [Proposal: NullToUndefined and UndefinedToNull](https://github.com/sindresorhus/type-fest/issues/603)\n *\n * Types implementation inspired by:\n * - https://github.com/sindresorhus/type-fest/blob/v2.12.2/source/delimiter-cased-properties-deep.d.ts\n * - https://github.com/sindresorhus/type-fest/blob/v2.12.2/source/readonly-deep.d.ts\n *\n * https://gist.github.com/tkrotoff/a6baf96eb6b61b445a9142e5555511a0\n */\nexport type NullToUndefined<T> = T extends null\n ? undefined\n : T extends Primitive | Function | Date | RegExp\n ? T\n : T extends (infer U)[]\n ? NullToUndefined<U>[]\n : T extends Map<infer K, infer V>\n ? Map<K, NullToUndefined<V>>\n : T extends Set<infer U>\n ? Set<NullToUndefined<U>>\n : T extends object\n ? { [K in keyof T]: NullToUndefined<T[K]> }\n : unknown\n\nexport type UndefinedToNull<T> = T extends undefined\n ? null\n : T extends Primitive | Function | Date | RegExp\n ? T\n : T extends (infer U)[]\n ? UndefinedToNull<U>[]\n : T extends Map<infer K, infer V>\n ? Map<K, UndefinedToNull<V>>\n : T extends Set<infer U>\n ? Set<NullToUndefined<U>>\n : T extends object\n ? { [K in keyof T]: UndefinedToNull<T[K]> }\n : unknown\n\nfunction _nullToUndefined<T>(obj: T): NullToUndefined<T> {\n if (obj === null) {\n return undefined as any\n }\n\n if (typeof obj === 'object') {\n if (obj instanceof Map) {\n obj.forEach((value, key) => obj.set(key, _nullToUndefined(value)))\n } else {\n for (const key in obj) {\n obj[key] = _nullToUndefined(obj[key]) as any\n }\n }\n }\n\n return obj as any\n}\n\n/**\n * Recursively converts all null values to undefined.\n *\n * @param obj object to convert\n * @returns a copy of the object with all its null values converted to undefined\n */\nexport function nullToUndefined<\n T,\n // Can cause: \"Type instantiation is excessively deep and possibly infinite.\"\n // extends Jsonifiable\n>(obj: T) {\n return _nullToUndefined(structuredClone(obj))\n}\n\nfunction _undefinedToNull<T>(obj: T): UndefinedToNull<T> {\n if (obj === undefined) {\n return null as any\n }\n\n if (typeof obj === 'object') {\n if (obj instanceof Map) {\n obj.forEach((value, key) => obj.set(key, _undefinedToNull(value)))\n } else {\n for (const key in obj) {\n obj[key] = _undefinedToNull(obj[key]) as any\n }\n }\n }\n\n return obj as any\n}\n\n/**\n * Recursively converts all undefined values to null.\n *\n * @param obj object to convert\n * @returns a copy of the object with all its undefined values converted to null\n */\nexport function undefinedToNull<\n T,\n // Can cause: \"Type instantiation is excessively deep and possibly infinite.\"\n // extends Jsonifiable\n>(obj: T) {\n return _undefinedToNull(structuredClone(obj))\n}\n"],"names":[],"mappings":"AA6CA,SAAS,iBAAoB,KAA4B;AACvD,MAAI,QAAQ,MAAM;AAChB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ,UAAU;AAC3B,QAAI,eAAe,KAAK;AACtB,UAAI,QAAQ,CAAC,OAAO,QAAQ,IAAI,IAAI,KAAK,iBAAiB,KAAK,CAAC,CAAC;AAAA,IACnE,OAAO;AACL,iBAAW,OAAO,KAAK;AACrB,YAAI,GAAG,IAAI,iBAAiB,IAAI,GAAG,CAAC;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAQO,SAAS,gBAId,KAAQ;AACR,SAAO,iBAAiB,gBAAgB,GAAG,CAAC;AAC9C;AAEA,SAAS,iBAAoB,KAA4B;AACvD,MAAI,QAAQ,QAAW;AACrB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,QAAQ,UAAU;AAC3B,QAAI,eAAe,KAAK;AACtB,UAAI,QAAQ,CAAC,OAAO,QAAQ,IAAI,IAAI,KAAK,iBAAiB,KAAK,CAAC,CAAC;AAAA,IACnE,OAAO;AACL,iBAAW,OAAO,KAAK;AACrB,YAAI,GAAG,IAAI,iBAAiB,IAAI,GAAG,CAAC;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAQO,SAAS,gBAId,KAAQ;AACR,SAAO,iBAAiB,gBAAgB,GAAG,CAAC;AAC9C;"}
|
package/package.json
CHANGED
package/src/appCatalogTypes.ts
CHANGED
|
@@ -31,10 +31,10 @@ export type ApprovalType = 'none' | 'service' | 'person' | 'other' | 'unknown'
|
|
|
31
31
|
/**
|
|
32
32
|
* Approval type options for UI display
|
|
33
33
|
*/
|
|
34
|
-
export const APPROVAL_TYPES:
|
|
34
|
+
export const APPROVAL_TYPES: readonly {
|
|
35
35
|
value: ApprovalType
|
|
36
36
|
label: string
|
|
37
|
-
}
|
|
37
|
+
}[] = [
|
|
38
38
|
{ value: 'none', label: 'None' },
|
|
39
39
|
{ value: 'service', label: 'Service' },
|
|
40
40
|
{ value: 'person', label: 'Person' },
|
|
@@ -47,10 +47,10 @@ export const APPROVAL_TYPES: ReadonlyArray<{
|
|
|
47
47
|
*/
|
|
48
48
|
export interface BaseApprovalMethod {
|
|
49
49
|
comment?: string
|
|
50
|
-
roles?:
|
|
50
|
+
roles?: AppRole[]
|
|
51
51
|
approvalPolicy?: string
|
|
52
52
|
postApprovalInstructions?: string
|
|
53
|
-
seeMoreUrls?:
|
|
53
|
+
seeMoreUrls?: string[]
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
/**
|
|
@@ -152,13 +152,13 @@ export interface AppForCatalog {
|
|
|
152
152
|
displayName: string
|
|
153
153
|
description?: string
|
|
154
154
|
approvalMethod?: ApprovalMethod
|
|
155
|
-
teams?:
|
|
155
|
+
teams?: string[] // Teams that use this app
|
|
156
156
|
notes?: string
|
|
157
|
-
tags?:
|
|
157
|
+
tags?: string[]
|
|
158
158
|
appUrl?: string
|
|
159
|
-
links?:
|
|
159
|
+
links?: { url: string; title?: string }[]
|
|
160
160
|
iconName?: string
|
|
161
|
-
screenshotIds?:
|
|
161
|
+
screenshotIds?: string[]
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
// Derived catalog data returned by backend
|
|
@@ -168,6 +168,6 @@ export interface AppCategory {
|
|
|
168
168
|
}
|
|
169
169
|
|
|
170
170
|
export interface AppCatalogData {
|
|
171
|
-
apps:
|
|
172
|
-
categories:
|
|
171
|
+
apps: AppForCatalog[]
|
|
172
|
+
categories: AppCategory[]
|
|
173
173
|
}
|
package/src/nullToUndefined.ts
CHANGED
|
@@ -19,8 +19,8 @@ export type NullToUndefined<T> = T extends null
|
|
|
19
19
|
? undefined
|
|
20
20
|
: T extends Primitive | Function | Date | RegExp
|
|
21
21
|
? T
|
|
22
|
-
: T extends
|
|
23
|
-
?
|
|
22
|
+
: T extends (infer U)[]
|
|
23
|
+
? NullToUndefined<U>[]
|
|
24
24
|
: T extends Map<infer K, infer V>
|
|
25
25
|
? Map<K, NullToUndefined<V>>
|
|
26
26
|
: T extends Set<infer U>
|
|
@@ -33,8 +33,8 @@ export type UndefinedToNull<T> = T extends undefined
|
|
|
33
33
|
? null
|
|
34
34
|
: T extends Primitive | Function | Date | RegExp
|
|
35
35
|
? T
|
|
36
|
-
: T extends
|
|
37
|
-
?
|
|
36
|
+
: T extends (infer U)[]
|
|
37
|
+
? UndefinedToNull<U>[]
|
|
38
38
|
: T extends Map<infer K, infer V>
|
|
39
39
|
? Map<K, UndefinedToNull<V>>
|
|
40
40
|
: T extends Set<infer U>
|