@schemavaults/app-definitions 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/dist/api-server-definition.d.ts +47 -0
- package/dist/api-server-definition.js +33 -0
- package/dist/api-server-definition.js.map +1 -0
- package/dist/api-server-id.d.ts +3 -0
- package/dist/api-server-id.js +8 -0
- package/dist/api-server-id.js.map +1 -0
- package/dist/app-environments.d.ts +5 -0
- package/dist/app-environments.js +10 -0
- package/dist/app-environments.js.map +1 -0
- package/dist/app-id.d.ts +3 -0
- package/dist/app-id.js +14 -0
- package/dist/app-id.js.map +1 -0
- package/dist/app_to_api_permission_def.d.ts +15 -0
- package/dist/app_to_api_permission_def.js +9 -0
- package/dist/app_to_api_permission_def.js.map +1 -0
- package/dist/assertions/assertHttpsUsageOnWindowLocation.d.ts +1 -0
- package/dist/assertions/assertHttpsUsageOnWindowLocation.js +19 -0
- package/dist/assertions/assertHttpsUsageOnWindowLocation.js.map +1 -0
- package/dist/client-app-definition.d.ts +77 -0
- package/dist/client-app-definition.js +41 -0
- package/dist/client-app-definition.js.map +1 -0
- package/dist/default-hardcoded-app-creation-time.d.ts +1 -0
- package/dist/default-hardcoded-app-creation-time.js +2 -0
- package/dist/default-hardcoded-app-creation-time.js.map +1 -0
- package/dist/get-app-environment/get-app-environment.d.ts +3 -0
- package/dist/get-app-environment/get-app-environment.js +11 -0
- package/dist/get-app-environment/get-app-environment.js.map +1 -0
- package/dist/get-app-environment/index.d.ts +2 -0
- package/dist/get-app-environment/index.js +3 -0
- package/dist/get-app-environment/index.js.map +1 -0
- package/dist/get-app-environment/isBrowserRuntime.d.ts +1 -0
- package/dist/get-app-environment/isBrowserRuntime.js +15 -0
- package/dist/get-app-environment/isBrowserRuntime.js.map +1 -0
- package/dist/get-app-environment/parse-app-environment-from-processDotEnv.d.ts +2 -0
- package/dist/get-app-environment/parse-app-environment-from-processDotEnv.js +77 -0
- package/dist/get-app-environment/parse-app-environment-from-processDotEnv.js.map +1 -0
- package/dist/get-app-environment.cjs +4078 -0
- package/dist/get-hardcoded-client-web-app-domain.d.ts +2 -0
- package/dist/get-hardcoded-client-web-app-domain.js +34 -0
- package/dist/get-hardcoded-client-web-app-domain.js.map +1 -0
- package/dist/hardcoded-core-schemavaults-api-server-domains.d.ts +179 -0
- package/dist/hardcoded-core-schemavaults-api-server-domains.js +84 -0
- package/dist/hardcoded-core-schemavaults-api-server-domains.js.map +1 -0
- package/dist/hardcoded-core-schemavaults-api-servers.d.ts +32 -0
- package/dist/hardcoded-core-schemavaults-api-servers.js +23 -0
- package/dist/hardcoded-core-schemavaults-api-servers.js.map +1 -0
- package/dist/hardcoded-core-schemavaults-app-domains.d.ts +181 -0
- package/dist/hardcoded-core-schemavaults-app-domains.js +122 -0
- package/dist/hardcoded-core-schemavaults-app-domains.js.map +1 -0
- package/dist/hardcoded-core-schemavaults-apps.d.ts +107 -0
- package/dist/hardcoded-core-schemavaults-apps.js +60 -0
- package/dist/hardcoded-core-schemavaults-apps.js.map +1 -0
- package/dist/index.cjs +4637 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/list-registry-api-servers-query-params.d.ts +14 -0
- package/dist/list-registry-api-servers-query-params.js +7 -0
- package/dist/list-registry-api-servers-query-params.js.map +1 -0
- package/dist/list-registry-apps-query-params.d.ts +14 -0
- package/dist/list-registry-apps-query-params.js +9 -0
- package/dist/list-registry-apps-query-params.js.map +1 -0
- package/dist/production-auth-server-url.d.ts +1 -0
- package/dist/production-auth-server-url.js +4 -0
- package/dist/production-auth-server-url.js.map +1 -0
- package/package.json +75 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# @schemavaults/app-definitions
|
|
2
|
+
|
|
3
|
+
## About
|
|
4
|
+
|
|
5
|
+
This package defines hardcoded apps, URLs for hardcoded APIs, valid app environments (e.g. `development`, `test`, `staging`, `production`), and utility functions. Used by the different SchemaVaults apps to link to the other core services or communicate with backend resources.
|
|
6
|
+
|
|
7
|
+
## Install dependencies
|
|
8
|
+
|
|
9
|
+
This package uses the [Bun](https://bun.sh) package manager:
|
|
10
|
+
```bash
|
|
11
|
+
bun install
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Build package
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
bun run build
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Run unit tests
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
bun run test
|
|
24
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const schemaVaultsApiServerDefinitionSchema: z.ZodObject<{
|
|
3
|
+
api_server_id: z.ZodUnion<[z.ZodString, z.ZodLiteral<"schemavaults-registry">, z.ZodLiteral<"schemavaults-auth">, z.ZodLiteral<"schemavaults-mail">]>;
|
|
4
|
+
api_server_name: z.ZodString;
|
|
5
|
+
api_server_description: z.ZodString;
|
|
6
|
+
created_at: z.ZodNumber;
|
|
7
|
+
public: z.ZodBoolean;
|
|
8
|
+
hardcoded: z.ZodBoolean;
|
|
9
|
+
}, "strict", z.ZodTypeAny, {
|
|
10
|
+
api_server_id: string;
|
|
11
|
+
api_server_name: string;
|
|
12
|
+
api_server_description: string;
|
|
13
|
+
created_at: number;
|
|
14
|
+
public: boolean;
|
|
15
|
+
hardcoded: boolean;
|
|
16
|
+
}, {
|
|
17
|
+
api_server_id: string;
|
|
18
|
+
api_server_name: string;
|
|
19
|
+
api_server_description: string;
|
|
20
|
+
created_at: number;
|
|
21
|
+
public: boolean;
|
|
22
|
+
hardcoded: boolean;
|
|
23
|
+
}>;
|
|
24
|
+
export type SchemaVaultsApiServerDefinition = z.infer<typeof schemaVaultsApiServerDefinitionSchema>;
|
|
25
|
+
export declare const schemaVaultsApiServerDomainRefSchema: z.ZodObject<{
|
|
26
|
+
api_server_id: z.ZodUnion<[z.ZodString, z.ZodLiteral<"schemavaults-registry">, z.ZodLiteral<"schemavaults-auth">, z.ZodLiteral<"schemavaults-mail">]>;
|
|
27
|
+
created_at: z.ZodNumber;
|
|
28
|
+
hardcoded: z.ZodBoolean;
|
|
29
|
+
api_server_domain_ref_id: z.ZodString;
|
|
30
|
+
domain: z.ZodString;
|
|
31
|
+
environment: z.ZodEnum<["development", "staging", "test", "production"]>;
|
|
32
|
+
}, "strict", z.ZodTypeAny, {
|
|
33
|
+
api_server_id: string;
|
|
34
|
+
created_at: number;
|
|
35
|
+
hardcoded: boolean;
|
|
36
|
+
api_server_domain_ref_id: string;
|
|
37
|
+
domain: string;
|
|
38
|
+
environment: "development" | "staging" | "test" | "production";
|
|
39
|
+
}, {
|
|
40
|
+
api_server_id: string;
|
|
41
|
+
created_at: number;
|
|
42
|
+
hardcoded: boolean;
|
|
43
|
+
api_server_domain_ref_id: string;
|
|
44
|
+
domain: string;
|
|
45
|
+
environment: "development" | "staging" | "test" | "production";
|
|
46
|
+
}>;
|
|
47
|
+
export type SchemaVaultsApiServerDomainRef = z.infer<typeof schemaVaultsApiServerDomainRefSchema>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { apiServerIdSchema } from './api-server-id';
|
|
3
|
+
import { schemaVaultsAppEnvironmentSchema } from "./app-environments";
|
|
4
|
+
export const schemaVaultsApiServerDefinitionSchema = z.object({
|
|
5
|
+
api_server_id: apiServerIdSchema,
|
|
6
|
+
api_server_name: z.string().max(64),
|
|
7
|
+
api_server_description: z.string().max(512),
|
|
8
|
+
created_at: z.number().nonnegative(),
|
|
9
|
+
public: z.boolean(), // whether the app is publicly listed
|
|
10
|
+
hardcoded: z.boolean()
|
|
11
|
+
}).required({
|
|
12
|
+
api_server_id: true,
|
|
13
|
+
api_server_name: true,
|
|
14
|
+
created_at: true,
|
|
15
|
+
public: true,
|
|
16
|
+
hardcoded: true
|
|
17
|
+
}).strict();
|
|
18
|
+
export const schemaVaultsApiServerDomainRefSchema = z.object({
|
|
19
|
+
api_server_domain_ref_id: z.string().uuid(),
|
|
20
|
+
api_server_id: apiServerIdSchema,
|
|
21
|
+
domain: z.string().max(255),
|
|
22
|
+
environment: schemaVaultsAppEnvironmentSchema,
|
|
23
|
+
created_at: z.number().nonnegative(),
|
|
24
|
+
hardcoded: z.boolean()
|
|
25
|
+
}).required({
|
|
26
|
+
api_server_domain_ref_id: true,
|
|
27
|
+
api_server_id: true,
|
|
28
|
+
domain: true,
|
|
29
|
+
environment: true,
|
|
30
|
+
created_at: true,
|
|
31
|
+
hardcoded: true
|
|
32
|
+
}).strict();
|
|
33
|
+
//# sourceMappingURL=api-server-definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-server-definition.js","sourceRoot":"","sources":["../src/api-server-definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAEtE,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5D,aAAa,EAAE,iBAAiB;IAChC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACnC,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAC3C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IACpC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,qCAAqC;IAC1D,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC,CAAC,QAAQ,CAAC;IACV,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3D,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC3C,aAAa,EAAE,iBAAiB;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAC3B,WAAW,EAAE,gCAAgC;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC,CAAC,QAAQ,CAAC;IACV,wBAAwB,EAAE,IAAI;IAC9B,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-server-id.js","sourceRoot":"","sources":["../src/api-server-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACjB,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;IAClC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAC9B,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;CAC/B,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const schemaVaultsAppEnvironments: readonly ["development", "staging", "test", "production"];
|
|
3
|
+
export declare const schemaVaultsAppEnvironmentSchema: z.ZodEnum<["development", "staging", "test", "production"]>;
|
|
4
|
+
export type SchemaVaultsAppEnvironment = z.infer<typeof schemaVaultsAppEnvironmentSchema>;
|
|
5
|
+
export default schemaVaultsAppEnvironmentSchema;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const schemaVaultsAppEnvironments = [
|
|
3
|
+
"development",
|
|
4
|
+
"staging",
|
|
5
|
+
"test",
|
|
6
|
+
"production",
|
|
7
|
+
];
|
|
8
|
+
export const schemaVaultsAppEnvironmentSchema = z.enum(schemaVaultsAppEnvironments);
|
|
9
|
+
export default schemaVaultsAppEnvironmentSchema;
|
|
10
|
+
//# sourceMappingURL=app-environments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-environments.js","sourceRoot":"","sources":["../src/app-environments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,aAAa;IACb,SAAS;IACT,MAAM;IACN,YAAY;CACwB,CAAC;AAEvC,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,IAAI,CACpD,2BAA2B,CAC5B,CAAC;AAMF,eAAe,gCAAgC,CAAC"}
|
package/dist/app-id.d.ts
ADDED
package/dist/app-id.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { HARDCODED_CORE_SCHEMAVAULTS_APPS, } from "./hardcoded-core-schemavaults-apps";
|
|
3
|
+
const hardcoded_app_ids = HARDCODED_CORE_SCHEMAVAULTS_APPS.map((hardcoded_app) => hardcoded_app.app_id);
|
|
4
|
+
const hardcodedAppIdSchema = z
|
|
5
|
+
.string()
|
|
6
|
+
.refine((app_id) => {
|
|
7
|
+
hardcoded_app_ids;
|
|
8
|
+
return hardcoded_app_ids.includes(app_id);
|
|
9
|
+
}, "Invalid hardcoded app id");
|
|
10
|
+
export const appIdSchema = z.union([
|
|
11
|
+
z.string().uuid(),
|
|
12
|
+
hardcodedAppIdSchema,
|
|
13
|
+
]);
|
|
14
|
+
//# sourceMappingURL=app-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-id.js","sourceRoot":"","sources":["../src/app-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,gCAAgC,GAEjC,MAAM,oCAAoC,CAAC;AAE5C,MAAM,iBAAiB,GAAG,gCAAgC,CAAC,GAAG,CAC5D,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CACZ,CAAC;AAE9B,MAAM,oBAAoB,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,MAAM,CAAC,CAAC,MAAc,EAA4B,EAAE;IACnD,iBAA6C,CAAC;IAC9C,OAAQ,iBAAuC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC,EAAE,0BAA0B,CAAC,CAAC;AAEjC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC;IACjC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACjB,oBAAoB;CACZ,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const appToApiPermissionSchema: z.ZodObject<{
|
|
3
|
+
client_app_id: z.ZodUnion<readonly [z.ZodString, z.ZodEffects<z.ZodString, "schemavaults-auth" | "schemavaults-mail" | "schemavaults-web" | "schemavaults-cli", string>]>;
|
|
4
|
+
api_server_id: z.ZodUnion<[z.ZodString, z.ZodLiteral<"schemavaults-registry">, z.ZodLiteral<"schemavaults-auth">, z.ZodLiteral<"schemavaults-mail">]>;
|
|
5
|
+
created_at: z.ZodNumber;
|
|
6
|
+
}, "strict", z.ZodTypeAny, {
|
|
7
|
+
api_server_id: string;
|
|
8
|
+
created_at: number;
|
|
9
|
+
client_app_id: string;
|
|
10
|
+
}, {
|
|
11
|
+
api_server_id: string;
|
|
12
|
+
created_at: number;
|
|
13
|
+
client_app_id: string;
|
|
14
|
+
}>;
|
|
15
|
+
export type AppToApiPermission = z.infer<typeof appToApiPermissionSchema>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { appIdSchema } from "./app-id";
|
|
3
|
+
import { apiServerIdSchema } from './api-server-id';
|
|
4
|
+
export const appToApiPermissionSchema = z.object({
|
|
5
|
+
client_app_id: appIdSchema,
|
|
6
|
+
api_server_id: apiServerIdSchema,
|
|
7
|
+
created_at: z.number().nonnegative()
|
|
8
|
+
}).required().strict();
|
|
9
|
+
//# sourceMappingURL=app_to_api_permission_def.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app_to_api_permission_def.js","sourceRoot":"","sources":["../src/app_to_api_permission_def.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,aAAa,EAAE,WAAW;IAC1B,aAAa,EAAE,iBAAiB;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;CACrC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function assertHttpsUsageOnWindowLocation(): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export default function assertHttpsUsageOnWindowLocation() {
|
|
2
|
+
// @ts-expect-error We're checking if the 'window' global is defined when DOM library is not explicitly loaded
|
|
3
|
+
if (!window) {
|
|
4
|
+
throw new Error("assertHttpsUsageOnWindowLocation can only be called in a browser");
|
|
5
|
+
}
|
|
6
|
+
// @ts-expect-error We're checking if the 'window.location' global is defined when DOM library is not explicitly loaded
|
|
7
|
+
else if (!("location" in window) || !window.location) {
|
|
8
|
+
throw new Error("assertHttpsUsageOnWindowLocation can only be called in a browser");
|
|
9
|
+
}
|
|
10
|
+
// @ts-expect-error We're checking if the 'window.location' global is defined when DOM library is not explicitly loaded
|
|
11
|
+
else if (!window.location.protocol) {
|
|
12
|
+
throw new Error("assertHttpsUsageOnWindowLocation can only be called in a browser");
|
|
13
|
+
}
|
|
14
|
+
// @ts-expect-error We're checking if the 'window.location.protocol' is set to https: when DOM library is not explicitly loaded
|
|
15
|
+
if (window.location.protocol !== "https:") {
|
|
16
|
+
throw new Error("Production and staging environments must use HTTPS!");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=assertHttpsUsageOnWindowLocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertHttpsUsageOnWindowLocation.js","sourceRoot":"","sources":["../../src/assertions/assertHttpsUsageOnWindowLocation.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,gCAAgC;IACtD,8GAA8G;IAC9G,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;IACD,uHAAuH;SAClH,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;IACD,uHAAuH;SAClH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;IACD,+HAA+H;IAC/H,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const baseSchemaVaultsAppDefinitionSchema: z.ZodObject<{
|
|
3
|
+
created_at: z.ZodNumber;
|
|
4
|
+
public: z.ZodBoolean;
|
|
5
|
+
hardcoded: z.ZodBoolean;
|
|
6
|
+
app_id: z.ZodString;
|
|
7
|
+
app_name: z.ZodString;
|
|
8
|
+
app_description: z.ZodString;
|
|
9
|
+
web: z.ZodOptional<z.ZodBoolean>;
|
|
10
|
+
}, "strict", z.ZodTypeAny, {
|
|
11
|
+
created_at: number;
|
|
12
|
+
public: boolean;
|
|
13
|
+
hardcoded: boolean;
|
|
14
|
+
app_id: string;
|
|
15
|
+
app_name: string;
|
|
16
|
+
app_description: string;
|
|
17
|
+
web?: boolean | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
created_at: number;
|
|
20
|
+
public: boolean;
|
|
21
|
+
hardcoded: boolean;
|
|
22
|
+
app_id: string;
|
|
23
|
+
app_name: string;
|
|
24
|
+
app_description: string;
|
|
25
|
+
web?: boolean | undefined;
|
|
26
|
+
}>;
|
|
27
|
+
export type SchemaVaultsApp = z.infer<typeof baseSchemaVaultsAppDefinitionSchema>;
|
|
28
|
+
export declare const schemaVaultsAppDefinitionSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
29
|
+
created_at: z.ZodNumber;
|
|
30
|
+
public: z.ZodBoolean;
|
|
31
|
+
hardcoded: z.ZodBoolean;
|
|
32
|
+
app_id: z.ZodString;
|
|
33
|
+
app_name: z.ZodString;
|
|
34
|
+
app_description: z.ZodString;
|
|
35
|
+
web: z.ZodOptional<z.ZodBoolean>;
|
|
36
|
+
}, {
|
|
37
|
+
app_id: z.ZodEffects<z.ZodString, string, string>;
|
|
38
|
+
}>, "strict", z.ZodTypeAny, {
|
|
39
|
+
created_at: number;
|
|
40
|
+
public: boolean;
|
|
41
|
+
hardcoded: boolean;
|
|
42
|
+
app_id: string;
|
|
43
|
+
app_name: string;
|
|
44
|
+
app_description: string;
|
|
45
|
+
web?: boolean | undefined;
|
|
46
|
+
}, {
|
|
47
|
+
created_at: number;
|
|
48
|
+
public: boolean;
|
|
49
|
+
hardcoded: boolean;
|
|
50
|
+
app_id: string;
|
|
51
|
+
app_name: string;
|
|
52
|
+
app_description: string;
|
|
53
|
+
web?: boolean | undefined;
|
|
54
|
+
}>;
|
|
55
|
+
export declare const schemaVaultsAppDomainRefSchema: z.ZodObject<{
|
|
56
|
+
created_at: z.ZodNumber;
|
|
57
|
+
hardcoded: z.ZodBoolean;
|
|
58
|
+
domain: z.ZodString;
|
|
59
|
+
environment: z.ZodEnum<["development", "staging", "test", "production"]>;
|
|
60
|
+
app_id: z.ZodUnion<readonly [z.ZodString, z.ZodEffects<z.ZodString, "schemavaults-auth" | "schemavaults-mail" | "schemavaults-web" | "schemavaults-cli", string>]>;
|
|
61
|
+
app_domain_ref_id: z.ZodString;
|
|
62
|
+
}, "strict", z.ZodTypeAny, {
|
|
63
|
+
created_at: number;
|
|
64
|
+
hardcoded: boolean;
|
|
65
|
+
domain: string;
|
|
66
|
+
environment: "development" | "staging" | "test" | "production";
|
|
67
|
+
app_id: string;
|
|
68
|
+
app_domain_ref_id: string;
|
|
69
|
+
}, {
|
|
70
|
+
created_at: number;
|
|
71
|
+
hardcoded: boolean;
|
|
72
|
+
domain: string;
|
|
73
|
+
environment: "development" | "staging" | "test" | "production";
|
|
74
|
+
app_id: string;
|
|
75
|
+
app_domain_ref_id: string;
|
|
76
|
+
}>;
|
|
77
|
+
export type SchemaVaultsAppDomainRef = z.infer<typeof schemaVaultsAppDomainRefSchema>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { appIdSchema } from "./app-id";
|
|
3
|
+
import { schemaVaultsAppEnvironmentSchema } from "./app-environments";
|
|
4
|
+
// THIS SHOULD NOT BE USED OUTSIDE OF @schemavaults/app-definitions
|
|
5
|
+
// schemaVaultsAppDefinitionSchema restricts the scope of app_id after applying hardcoded app ids
|
|
6
|
+
export const baseSchemaVaultsAppDefinitionSchema = z.object({
|
|
7
|
+
app_id: z.string(),
|
|
8
|
+
app_name: z.string().max(64),
|
|
9
|
+
app_description: z.string().max(512),
|
|
10
|
+
created_at: z.number().nonnegative(),
|
|
11
|
+
public: z.boolean(), // whether the app is publicly listed
|
|
12
|
+
hardcoded: z.boolean(),
|
|
13
|
+
web: z.boolean().optional() // whether this app can be opened by url or requires native installation
|
|
14
|
+
}).required({
|
|
15
|
+
app_id: true,
|
|
16
|
+
app_name: true,
|
|
17
|
+
created_at: true,
|
|
18
|
+
public: true,
|
|
19
|
+
hardcoded: true
|
|
20
|
+
}).strict();
|
|
21
|
+
export const schemaVaultsAppDefinitionSchema = baseSchemaVaultsAppDefinitionSchema.extend({
|
|
22
|
+
app_id: z.string().refine((str) => {
|
|
23
|
+
return appIdSchema.safeParse(str).success;
|
|
24
|
+
}, "Invalid client application ID")
|
|
25
|
+
});
|
|
26
|
+
export const schemaVaultsAppDomainRefSchema = z.object({
|
|
27
|
+
app_domain_ref_id: z.string().uuid(),
|
|
28
|
+
app_id: appIdSchema,
|
|
29
|
+
domain: z.string().max(255),
|
|
30
|
+
environment: schemaVaultsAppEnvironmentSchema,
|
|
31
|
+
created_at: z.number().nonnegative(),
|
|
32
|
+
hardcoded: z.boolean()
|
|
33
|
+
}).required({
|
|
34
|
+
app_domain_ref_id: true,
|
|
35
|
+
app_id: true,
|
|
36
|
+
domain: true,
|
|
37
|
+
environment: true,
|
|
38
|
+
created_at: true,
|
|
39
|
+
hardcoded: true
|
|
40
|
+
}).strict();
|
|
41
|
+
//# sourceMappingURL=client-app-definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-app-definition.js","sourceRoot":"","sources":["../src/client-app-definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAGtE,mEAAmE;AACnE,iGAAiG;AACjG,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IACpC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,qCAAqC;IAC1D,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,wEAAwE;CACrG,CAAC,CAAC,QAAQ,CAAC;IACV,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,+BAA+B,GAAG,mCAAmC,CAAC,MAAM,CAAC;IACxF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAkC,EAAE;QAChE,OAAO,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;IAC5C,CAAC,EAAE,+BAA+B,CAAC;CACpC,CAAC,CAAA;AACF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACpC,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAC3B,WAAW,EAAE,gCAAgC;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IACpC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC,CAAC,QAAQ,CAAC;IACV,iBAAiB,EAAE,IAAI;IACvB,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const defaultHardcodedAppCreationTime: number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-hardcoded-app-creation-time.js","sourceRoot":"","sources":["../src/default-hardcoded-app-creation-time.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,+BAA+B,GAAW,IAAI,IAAI,CAC7D,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACnD,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import isBrowserRuntime from "./isBrowserRuntime";
|
|
2
|
+
import parseAppEnvironmentFromProcessDotEnv from "./parse-app-environment-from-processDotEnv";
|
|
3
|
+
export function getAppEnvironment(DEBUG_GET_APP_ENVIRONMENT = false) {
|
|
4
|
+
const isBrowser = isBrowserRuntime();
|
|
5
|
+
if (isBrowser) {
|
|
6
|
+
throw new Error("Invalid usage of getAppEnvironment() in a browser context!");
|
|
7
|
+
}
|
|
8
|
+
return parseAppEnvironmentFromProcessDotEnv(DEBUG_GET_APP_ENVIRONMENT);
|
|
9
|
+
}
|
|
10
|
+
export default getAppEnvironment;
|
|
11
|
+
//# sourceMappingURL=get-app-environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-app-environment.js","sourceRoot":"","sources":["../../src/get-app-environment/get-app-environment.ts"],"names":[],"mappings":"AACA,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,oCAAoC,MAAM,4CAA4C,CAAC;AAE9F,MAAM,UAAU,iBAAiB,CAC/B,4BAAqC,KAAK;IAE1C,MAAM,SAAS,GAAY,gBAAgB,EAAE,CAAC;IAE9C,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,OAAO,oCAAoC,CAAC,yBAAyB,CAAC,CAAC;AACzE,CAAC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/get-app-environment/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,OAAO,EAAE,iBAAiB,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function isBrowser(): boolean;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default function isBrowser() {
|
|
2
|
+
let isWindowGlobalVariableSet = false;
|
|
3
|
+
try {
|
|
4
|
+
// @ts-expect-error We're checking if the 'window' global is defined when DOM library is not explicitly loaded
|
|
5
|
+
if (window) {
|
|
6
|
+
isWindowGlobalVariableSet = true;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
catch (e) {
|
|
10
|
+
void e; // no-op-- it's okay for this to not be a browser
|
|
11
|
+
isWindowGlobalVariableSet = false;
|
|
12
|
+
}
|
|
13
|
+
return isWindowGlobalVariableSet;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=isBrowserRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isBrowserRuntime.js","sourceRoot":"","sources":["../../src/get-app-environment/isBrowserRuntime.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,SAAS;IAC/B,IAAI,yBAAyB,GAAY,KAAK,CAAC;IAC/C,IAAI,CAAC;QACH,8GAA8G;QAC9G,IAAI,MAAM,EAAE,CAAC;YACX,yBAAyB,GAAG,IAAI,CAAC;QACnC,CAAC;IACH,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,KAAK,CAAC,CAAC,CAAC,iDAAiD;QACzD,yBAAyB,GAAG,KAAK,CAAC;IACpC,CAAC;IACD,OAAO,yBAAyB,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { schemaVaultsAppEnvironmentSchema, } from "../app-environments";
|
|
2
|
+
function stripQuotes(maybeQuotes) {
|
|
3
|
+
if (!maybeQuotes)
|
|
4
|
+
return maybeQuotes;
|
|
5
|
+
const trimmed = maybeQuotes.trim();
|
|
6
|
+
if (trimmed.startsWith('"') && trimmed.endsWith('"')) {
|
|
7
|
+
return trimmed.slice(1, -1);
|
|
8
|
+
}
|
|
9
|
+
if (trimmed.startsWith("'") && trimmed.endsWith("'")) {
|
|
10
|
+
return trimmed.slice(1, -1);
|
|
11
|
+
}
|
|
12
|
+
return trimmed;
|
|
13
|
+
}
|
|
14
|
+
export default function parseAppEnvironmentFromProcessDotEnv(DEBUG_GET_APP_ENVIRONMENT = false) {
|
|
15
|
+
const dynamicProcessDotEnvAppEnv = process.env.SCHEMAVAULTS_APP_ENVIRONMENT;
|
|
16
|
+
const inlinedNextJsAppEnv = process.env.NEXT_PUBLIC_SCHEMAVAULTS_APP_ENVIRONMENT;
|
|
17
|
+
// dynamic should take priority over NEXT_PUBLIC_ , as one is inlined
|
|
18
|
+
// (e.g. in docker build it will always be "production", even if trying to run container as test/development)
|
|
19
|
+
if (typeof dynamicProcessDotEnvAppEnv === "string") {
|
|
20
|
+
const parsed = schemaVaultsAppEnvironmentSchema.safeParse(stripQuotes(dynamicProcessDotEnvAppEnv));
|
|
21
|
+
if (parsed.success) {
|
|
22
|
+
if (DEBUG_GET_APP_ENVIRONMENT) {
|
|
23
|
+
console.log("[getAppEnvironment] Using SCHEMAVAULTS_APP_ENVIRONMENT environment variable: ", parsed.data);
|
|
24
|
+
}
|
|
25
|
+
return parsed.data;
|
|
26
|
+
}
|
|
27
|
+
throw new Error("Environment variable SCHEMAVAULTS_APP_ENVIRONMENT is defined but invalid!");
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
if (DEBUG_GET_APP_ENVIRONMENT) {
|
|
31
|
+
console.log("[getAppEnvironment] Environment variable SCHEMAVAULTS_APP_ENVIRONMENT is not defined");
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (typeof inlinedNextJsAppEnv === "string") {
|
|
35
|
+
const parsed = schemaVaultsAppEnvironmentSchema.safeParse(stripQuotes(inlinedNextJsAppEnv));
|
|
36
|
+
if (parsed.success) {
|
|
37
|
+
if (DEBUG_GET_APP_ENVIRONMENT) {
|
|
38
|
+
console.log("[getAppEnvironment] Using NEXT_PUBLIC_SCHEMAVAULTS_APP_ENVIRONMENT environment variable: ", parsed.data);
|
|
39
|
+
}
|
|
40
|
+
return parsed.data;
|
|
41
|
+
}
|
|
42
|
+
throw new Error("Environment variable NEXT_PUBLIC_SCHEMAVAULTS_APP_ENVIRONMENT is defined but invalid!");
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
if (DEBUG_GET_APP_ENVIRONMENT) {
|
|
46
|
+
console.log("[getAppEnvironment] Environment variable NEXT_PUBLIC_SCHEMAVAULTS_APP_ENVIRONMENT is not defined");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Show this warning in all environments
|
|
50
|
+
if (DEBUG_GET_APP_ENVIRONMENT) {
|
|
51
|
+
console.warn("SCHEMAVAULTS_APP_ENVIRONMENT and NEXT_PUBLIC_SCHEMAVAULTS_APP_ENVIRONMENT are not defined!" +
|
|
52
|
+
" Falling back to examining NODE_ENV...");
|
|
53
|
+
}
|
|
54
|
+
const node_env = process.env.NODE_ENV;
|
|
55
|
+
if (node_env !== "development" &&
|
|
56
|
+
node_env !== "test" &&
|
|
57
|
+
node_env !== "production") {
|
|
58
|
+
throw new TypeError("Expected NODE_ENV to be one of: 'development', 'test', or 'production'");
|
|
59
|
+
}
|
|
60
|
+
if (node_env === "development") {
|
|
61
|
+
if (DEBUG_GET_APP_ENVIRONMENT) {
|
|
62
|
+
console.log("[getAppEnvironment] Running in 'development' environment based on NODE_ENV");
|
|
63
|
+
}
|
|
64
|
+
return "development";
|
|
65
|
+
}
|
|
66
|
+
if (node_env === "test") {
|
|
67
|
+
if (DEBUG_GET_APP_ENVIRONMENT) {
|
|
68
|
+
console.log("[getAppEnvironment] Running in 'test' environment based on NODE_ENV");
|
|
69
|
+
}
|
|
70
|
+
return "test";
|
|
71
|
+
}
|
|
72
|
+
if (node_env !== "production") {
|
|
73
|
+
throw new Error("Expected NODE_ENV to be 'production' if this point is reached!");
|
|
74
|
+
}
|
|
75
|
+
throw new Error("NODE_ENV is set to 'production', but SCHEMAVAULTS_APP_ENVIRONMENT environment variable is not defined!");
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=parse-app-environment-from-processDotEnv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-app-environment-from-processDotEnv.js","sourceRoot":"","sources":["../../src/get-app-environment/parse-app-environment-from-processDotEnv.ts"],"names":[],"mappings":"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"}
|