@keynv/core 0.1.0-rc.23

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.
Files changed (78) hide show
  1. package/LICENSE +21 -0
  2. package/dist/audit/chain.d.ts +44 -0
  3. package/dist/audit/chain.d.ts.map +1 -0
  4. package/dist/audit/chain.js +134 -0
  5. package/dist/audit/chain.js.map +1 -0
  6. package/dist/audit/chain.test.d.ts +2 -0
  7. package/dist/audit/chain.test.d.ts.map +1 -0
  8. package/dist/audit/chain.test.js +192 -0
  9. package/dist/audit/chain.test.js.map +1 -0
  10. package/dist/audit/index.d.ts +5 -0
  11. package/dist/audit/index.d.ts.map +1 -0
  12. package/dist/audit/index.js +4 -0
  13. package/dist/audit/index.js.map +1 -0
  14. package/dist/audit/payload-schemas.d.ts +343 -0
  15. package/dist/audit/payload-schemas.d.ts.map +1 -0
  16. package/dist/audit/payload-schemas.js +112 -0
  17. package/dist/audit/payload-schemas.js.map +1 -0
  18. package/dist/audit/payload-schemas.test.d.ts +2 -0
  19. package/dist/audit/payload-schemas.test.d.ts.map +1 -0
  20. package/dist/audit/payload-schemas.test.js +93 -0
  21. package/dist/audit/payload-schemas.test.js.map +1 -0
  22. package/dist/audit/types.d.ts +34 -0
  23. package/dist/audit/types.d.ts.map +1 -0
  24. package/dist/audit/types.js +6 -0
  25. package/dist/audit/types.js.map +1 -0
  26. package/dist/crypto/envelope.d.ts +55 -0
  27. package/dist/crypto/envelope.d.ts.map +1 -0
  28. package/dist/crypto/envelope.js +108 -0
  29. package/dist/crypto/envelope.js.map +1 -0
  30. package/dist/crypto/envelope.test.d.ts +2 -0
  31. package/dist/crypto/envelope.test.d.ts.map +1 -0
  32. package/dist/crypto/envelope.test.js +163 -0
  33. package/dist/crypto/envelope.test.js.map +1 -0
  34. package/dist/crypto/index.d.ts +5 -0
  35. package/dist/crypto/index.d.ts.map +1 -0
  36. package/dist/crypto/index.js +4 -0
  37. package/dist/crypto/index.js.map +1 -0
  38. package/dist/crypto/sodium.d.ts +21 -0
  39. package/dist/crypto/sodium.d.ts.map +1 -0
  40. package/dist/crypto/sodium.js +43 -0
  41. package/dist/crypto/sodium.js.map +1 -0
  42. package/dist/crypto/types.d.ts +37 -0
  43. package/dist/crypto/types.d.ts.map +1 -0
  44. package/dist/crypto/types.js +11 -0
  45. package/dist/crypto/types.js.map +1 -0
  46. package/dist/index.d.ts +5 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +5 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/reference/index.d.ts +4 -0
  51. package/dist/reference/index.d.ts.map +1 -0
  52. package/dist/reference/index.js +3 -0
  53. package/dist/reference/index.js.map +1 -0
  54. package/dist/reference/parser-property.test.d.ts +2 -0
  55. package/dist/reference/parser-property.test.d.ts.map +1 -0
  56. package/dist/reference/parser-property.test.js +115 -0
  57. package/dist/reference/parser-property.test.js.map +1 -0
  58. package/dist/reference/parser.d.ts +54 -0
  59. package/dist/reference/parser.d.ts.map +1 -0
  60. package/dist/reference/parser.js +144 -0
  61. package/dist/reference/parser.js.map +1 -0
  62. package/dist/reference/parser.test.d.ts +2 -0
  63. package/dist/reference/parser.test.d.ts.map +1 -0
  64. package/dist/reference/parser.test.js +195 -0
  65. package/dist/reference/parser.test.js.map +1 -0
  66. package/dist/reference/types.d.ts +52 -0
  67. package/dist/reference/types.d.ts.map +1 -0
  68. package/dist/reference/types.js +11 -0
  69. package/dist/reference/types.js.map +1 -0
  70. package/dist/validation/index.d.ts +33 -0
  71. package/dist/validation/index.d.ts.map +1 -0
  72. package/dist/validation/index.js +45 -0
  73. package/dist/validation/index.js.map +1 -0
  74. package/dist/validation/schemas.test.d.ts +2 -0
  75. package/dist/validation/schemas.test.d.ts.map +1 -0
  76. package/dist/validation/schemas.test.js +18 -0
  77. package/dist/validation/schemas.test.js.map +1 -0
  78. package/package.json +48 -0
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ export declare const projectId: z.ZodString;
3
+ export declare const orgId: z.ZodString;
4
+ export declare const email: z.ZodString;
5
+ export declare const password: z.ZodString;
6
+ export declare const passwordMin12: z.ZodString;
7
+ export declare const orgName: z.ZodString;
8
+ export declare const projectName: z.ZodString;
9
+ export declare const envName: z.ZodString;
10
+ export declare const envTier: z.ZodDefault<z.ZodEnum<["production", "non-production"]>>;
11
+ export declare const requireApproval: z.ZodDefault<z.ZodBoolean>;
12
+ export declare const secretKey: z.ZodString;
13
+ export declare const secretValue: z.ZodString;
14
+ export declare const projectRole: z.ZodEnum<["lead", "developer", "reader"]>;
15
+ export declare const orgRole: z.ZodEnum<["admin", "developer", "reader"]>;
16
+ export declare const testerName: z.ZodEnum<["postgres", "mysql", "redis", "ssh", "http"]>;
17
+ export declare const cliTokenName: z.ZodString;
18
+ export declare const approvalReason: z.ZodOptional<z.ZodString>;
19
+ export declare const expiresInSeconds: z.ZodNumber;
20
+ export declare const EnvSpec: z.ZodObject<{
21
+ name: z.ZodString;
22
+ tier: z.ZodDefault<z.ZodEnum<["production", "non-production"]>>;
23
+ require_approval: z.ZodDefault<z.ZodBoolean>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ name: string;
26
+ tier: "production" | "non-production";
27
+ require_approval: boolean;
28
+ }, {
29
+ name: string;
30
+ tier?: "production" | "non-production" | undefined;
31
+ require_approval?: boolean | undefined;
32
+ }>;
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,SAAS,aAAoB,CAAC;AAC3C,eAAO,MAAM,KAAK,aAAoB,CAAC;AACvC,eAAO,MAAM,KAAK,aAAqB,CAAC;AACxC,eAAO,MAAM,QAAQ,aAAoB,CAAC;AAC1C,eAAO,MAAM,aAAa,aAA8B,CAAC;AACzD,eAAO,MAAM,OAAO,aAA4B,CAAC;AAEjD,eAAO,MAAM,WAAW,aAIqC,CAAC;AAE9D,eAAO,MAAM,OAAO,aAIY,CAAC;AAEjC,eAAO,MAAM,OAAO,2DAAqE,CAAC;AAC1F,eAAO,MAAM,eAAe,4BAA6B,CAAC;AAC1D,eAAO,MAAM,SAAS,aAAiD,CAAC;AACxE,eAAO,MAAM,WAAW,aAGP,CAAC;AAElB,eAAO,MAAM,WAAW,4CAA0C,CAAC;AACnE,eAAO,MAAM,OAAO,6CAA2C,CAAC;AAChE,eAAO,MAAM,UAAU,0DAAwD,CAAC;AAEhF,eAAO,MAAM,YAAY,aAI0D,CAAC;AAEpF,eAAO,MAAM,cAAc,4BAAiC,CAAC;AAC7D,eAAO,MAAM,gBAAgB,aAIR,CAAC;AAEtB,eAAO,MAAM,OAAO;;;;;;;;;;;;EAIlB,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ const SECRET_KEY_RE = /^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$/;
3
+ export const projectId = z.string().min(1);
4
+ export const orgId = z.string().min(1);
5
+ export const email = z.string().email();
6
+ export const password = z.string().min(1);
7
+ export const passwordMin12 = z.string().min(12).max(256);
8
+ export const orgName = z.string().min(1).max(64);
9
+ export const projectName = z
10
+ .string()
11
+ .min(1)
12
+ .max(48)
13
+ .regex(/^[a-z0-9][a-z0-9-]*$/, 'lowercase kebab-case only');
14
+ export const envName = z
15
+ .string()
16
+ .min(1)
17
+ .max(24)
18
+ .regex(/^[a-z0-9][a-z0-9-]*$/);
19
+ export const envTier = z.enum(['production', 'non-production']).default('non-production');
20
+ export const requireApproval = z.boolean().default(false);
21
+ export const secretKey = z.string().min(1).max(64).regex(SECRET_KEY_RE);
22
+ export const secretValue = z
23
+ .string()
24
+ .min(0)
25
+ .max(64 * 1024);
26
+ export const projectRole = z.enum(['lead', 'developer', 'reader']);
27
+ export const orgRole = z.enum(['admin', 'developer', 'reader']);
28
+ export const testerName = z.enum(['postgres', 'mysql', 'redis', 'ssh', 'http']);
29
+ export const cliTokenName = z
30
+ .string()
31
+ .min(1)
32
+ .max(64)
33
+ .regex(/^[A-Za-z0-9][A-Za-z0-9 _.-]*$/, 'Letters, digits, _ . - and spaces only');
34
+ export const approvalReason = z.string().max(500).optional();
35
+ export const expiresInSeconds = z.coerce
36
+ .number()
37
+ .int()
38
+ .positive()
39
+ .max(7 * 24 * 3600);
40
+ export const EnvSpec = z.object({
41
+ name: envName,
42
+ tier: envTier,
43
+ require_approval: requireApproval,
44
+ });
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schemas.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.test.d.ts","sourceRoot":"","sources":["../../src/validation/schemas.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { envName, secretKey, secretValue, testerName } from './index.js';
3
+ describe('domain validation schemas', () => {
4
+ it('accepts shipped tester names only', () => {
5
+ expect(testerName.safeParse('postgres').success).toBe(true);
6
+ expect(testerName.safeParse('mongodb').success).toBe(false);
7
+ });
8
+ it('keeps environment names lowercase kebab-case', () => {
9
+ expect(envName.safeParse('prod-eu').success).toBe(true);
10
+ expect(envName.safeParse('Prod').success).toBe(false);
11
+ });
12
+ it('allows env-style secret keys and caps value size', () => {
13
+ expect(secretKey.safeParse('DATABASE_URL').success).toBe(true);
14
+ expect(secretKey.safeParse('DATABASE.URL').success).toBe(false);
15
+ expect(secretValue.safeParse('x'.repeat(64 * 1024 + 1)).success).toBe(false);
16
+ });
17
+ });
18
+ //# sourceMappingURL=schemas.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.test.js","sourceRoot":"","sources":["../../src/validation/schemas.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEzE,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@keynv/core",
3
+ "version": "0.1.0-rc.23",
4
+ "description": "keynv shared core: reference parser, encryption primitives, audit chain, types.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "engines": {
19
+ "node": ">=20.0.0"
20
+ },
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "git+https://github.com/keynv-labs/keynv.git",
27
+ "directory": "packages/core"
28
+ },
29
+ "homepage": "https://github.com/keynv-labs/keynv#readme",
30
+ "bugs": {
31
+ "url": "https://github.com/keynv-labs/keynv/issues"
32
+ },
33
+ "dependencies": {
34
+ "libsodium-wrappers": "^0.7.16",
35
+ "zod": "^3.23.8"
36
+ },
37
+ "devDependencies": {
38
+ "@types/libsodium-wrappers": "^0.7.14",
39
+ "fast-check": "^3.23.0"
40
+ },
41
+ "scripts": {
42
+ "build": "tsc -p tsconfig.json",
43
+ "typecheck": "tsc -p tsconfig.json --noEmit",
44
+ "test": "vitest run",
45
+ "test:watch": "vitest",
46
+ "clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\""
47
+ }
48
+ }