@cloud-copilot/iam-policy 0.1.87 → 0.1.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/parser.d.ts +6 -2
- package/dist/cjs/parser.d.ts.map +1 -1
- package/dist/cjs/parser.js +10 -2
- package/dist/cjs/parser.js.map +1 -1
- package/dist/cjs/validatedPolicy.d.ts +40 -0
- package/dist/cjs/validatedPolicy.d.ts.map +1 -0
- package/dist/cjs/validatedPolicy.js +30 -0
- package/dist/cjs/validatedPolicy.js.map +1 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parser.d.ts +6 -2
- package/dist/esm/parser.d.ts.map +1 -1
- package/dist/esm/parser.js +10 -2
- package/dist/esm/parser.js.map +1 -1
- package/dist/esm/validatedPolicy.d.ts +40 -0
- package/dist/esm/validatedPolicy.d.ts.map +1 -0
- package/dist/esm/validatedPolicy.js +26 -0
- package/dist/esm/validatedPolicy.js.map +1 -0
- package/package.json +1 -1
package/dist/cjs/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export type { AccountPrincipal, AwsPrincipal, CanonicalUserPrincipal, FederatedP
|
|
|
7
7
|
export type { Resource, ArnResource } from './resources/resource.js';
|
|
8
8
|
export type { ActionStatement, NotActionStatement, NotPrincipalStatement, NotResourceStatement, PrincipalStatement, ResourceStatement, Statement } from './statements/statement.js';
|
|
9
9
|
export { lintPolicy } from './lint/lint.js';
|
|
10
|
+
export { createValidatedPolicy, isValidatedPolicy, type ValidatedPolicy } from './validatedPolicy.js';
|
|
10
11
|
export { validatePolicySyntax, type ValidationError } from './validate/validate.js';
|
|
11
12
|
export { validateEndpointPolicy, validateIdentityPolicy, validateResourceControlPolicy, validateResourcePolicy, validateServiceControlPolicy, validateSessionPolicy, validateTrustPolicy } from './validate/validateTypes.js';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC5F,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACpE,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACV,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,6BAA6B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC5F,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACpE,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACV,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,6BAA6B,CAAA"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateTrustPolicy = exports.validateSessionPolicy = exports.validateServiceControlPolicy = exports.validateResourcePolicy = exports.validateResourceControlPolicy = exports.validateIdentityPolicy = exports.validateEndpointPolicy = exports.validatePolicySyntax = exports.lintPolicy = exports.loadPolicy = void 0;
|
|
3
|
+
exports.validateTrustPolicy = exports.validateSessionPolicy = exports.validateServiceControlPolicy = exports.validateResourcePolicy = exports.validateResourceControlPolicy = exports.validateIdentityPolicy = exports.validateEndpointPolicy = exports.validatePolicySyntax = exports.isValidatedPolicy = exports.createValidatedPolicy = exports.lintPolicy = exports.loadPolicy = void 0;
|
|
4
4
|
var parser_js_1 = require("./parser.js");
|
|
5
5
|
Object.defineProperty(exports, "loadPolicy", { enumerable: true, get: function () { return parser_js_1.loadPolicy; } });
|
|
6
6
|
var lint_js_1 = require("./lint/lint.js");
|
|
7
7
|
Object.defineProperty(exports, "lintPolicy", { enumerable: true, get: function () { return lint_js_1.lintPolicy; } });
|
|
8
|
+
var validatedPolicy_js_1 = require("./validatedPolicy.js");
|
|
9
|
+
Object.defineProperty(exports, "createValidatedPolicy", { enumerable: true, get: function () { return validatedPolicy_js_1.createValidatedPolicy; } });
|
|
10
|
+
Object.defineProperty(exports, "isValidatedPolicy", { enumerable: true, get: function () { return validatedPolicy_js_1.isValidatedPolicy; } });
|
|
8
11
|
var validate_js_1 = require("./validate/validate.js");
|
|
9
12
|
Object.defineProperty(exports, "validatePolicySyntax", { enumerable: true, get: function () { return validate_js_1.validatePolicySyntax; } });
|
|
10
13
|
var validateTypes_js_1 = require("./validate/validateTypes.js");
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAGA,yCAAwC;AAA/B,uGAAA,UAAU,OAAA;AAsBnB,0CAA2C;AAAlC,qGAAA,UAAU,OAAA;AACnB,sDAAmF;AAA1E,mHAAA,oBAAoB,OAAA;AAC7B,gEAQoC;AAPlC,0HAAA,sBAAsB,OAAA;AACtB,0HAAA,sBAAsB,OAAA;AACtB,iIAAA,6BAA6B,OAAA;AAC7B,0HAAA,sBAAsB,OAAA;AACtB,gIAAA,4BAA4B,OAAA;AAC5B,yHAAA,qBAAqB,OAAA;AACrB,uHAAA,mBAAmB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAGA,yCAAwC;AAA/B,uGAAA,UAAU,OAAA;AAsBnB,0CAA2C;AAAlC,qGAAA,UAAU,OAAA;AACnB,2DAI6B;AAH3B,2HAAA,qBAAqB,OAAA;AACrB,uHAAA,iBAAiB,OAAA;AAGnB,sDAAmF;AAA1E,mHAAA,oBAAoB,OAAA;AAC7B,gEAQoC;AAPlC,0HAAA,sBAAsB,OAAA;AACtB,0HAAA,sBAAsB,OAAA;AACtB,iIAAA,6BAA6B,OAAA;AAC7B,0HAAA,sBAAsB,OAAA;AACtB,gIAAA,4BAA4B,OAAA;AAC5B,yHAAA,qBAAqB,OAAA;AACrB,uHAAA,mBAAmB,OAAA"}
|
package/dist/cjs/parser.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { type Policy } from './policies/policy.js';
|
|
2
2
|
/**
|
|
3
|
-
* Load a Policy from a policy document
|
|
3
|
+
* Load a Policy from a policy document. If a {@link ValidatedPolicy} is passed,
|
|
4
|
+
* the raw document and metadata are extracted from it automatically. When both
|
|
5
|
+
* the ValidatedPolicy carries metadata and the caller supplies explicit metadata,
|
|
6
|
+
* the explicit metadata takes precedence.
|
|
4
7
|
*
|
|
5
|
-
* @param policyDocument the policy document JSON object
|
|
8
|
+
* @param policyDocument the policy document JSON object, or a ValidatedPolicy
|
|
9
|
+
* @param metadata optional metadata to attach to the loaded Policy
|
|
6
10
|
* @returns the Policy object for the backing policy document
|
|
7
11
|
*/
|
|
8
12
|
export declare function loadPolicy<T = undefined>(policyDocument: any, metadata?: T): Policy<T>;
|
package/dist/cjs/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,sBAAsB,CAAA;AAG9D;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,CAAC,GAAG,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAKtF"}
|
package/dist/cjs/parser.js
CHANGED
|
@@ -2,13 +2,21 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loadPolicy = loadPolicy;
|
|
4
4
|
const policy_js_1 = require("./policies/policy.js");
|
|
5
|
+
const validatedPolicy_js_1 = require("./validatedPolicy.js");
|
|
5
6
|
/**
|
|
6
|
-
* Load a Policy from a policy document
|
|
7
|
+
* Load a Policy from a policy document. If a {@link ValidatedPolicy} is passed,
|
|
8
|
+
* the raw document and metadata are extracted from it automatically. When both
|
|
9
|
+
* the ValidatedPolicy carries metadata and the caller supplies explicit metadata,
|
|
10
|
+
* the explicit metadata takes precedence.
|
|
7
11
|
*
|
|
8
|
-
* @param policyDocument the policy document JSON object
|
|
12
|
+
* @param policyDocument the policy document JSON object, or a ValidatedPolicy
|
|
13
|
+
* @param metadata optional metadata to attach to the loaded Policy
|
|
9
14
|
* @returns the Policy object for the backing policy document
|
|
10
15
|
*/
|
|
11
16
|
function loadPolicy(policyDocument, metadata) {
|
|
17
|
+
if ((0, validatedPolicy_js_1.isValidatedPolicy)(policyDocument)) {
|
|
18
|
+
return new policy_js_1.PolicyImpl(policyDocument.policyDocument, metadata ?? policyDocument.metadata);
|
|
19
|
+
}
|
|
12
20
|
return new policy_js_1.PolicyImpl(policyDocument, metadata);
|
|
13
21
|
}
|
|
14
22
|
//# sourceMappingURL=parser.js.map
|
package/dist/cjs/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":";;AAaA,gCAKC;AAlBD,oDAA8D;AAC9D,6DAAwD;AAExD;;;;;;;;;GASG;AACH,SAAgB,UAAU,CAAgB,cAAmB,EAAE,QAAY;IACzE,IAAI,IAAA,sCAAiB,EAAC,cAAc,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,sBAAU,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC3F,CAAC;IACD,OAAO,IAAI,sBAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;AACjD,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ValidationError } from './validate/validate.js';
|
|
2
|
+
/**
|
|
3
|
+
* A policy document that has been validated. Carries the raw policy document,
|
|
4
|
+
* optional metadata, and the validation result so that downstream consumers
|
|
5
|
+
* can skip re-validation.
|
|
6
|
+
*
|
|
7
|
+
* Every field is a plain value — no class instances — so the entire object
|
|
8
|
+
* survives JSON serialization (e.g. through SharedArrayBuffer) unchanged.
|
|
9
|
+
*/
|
|
10
|
+
export interface ValidatedPolicy<T = undefined> {
|
|
11
|
+
/** Discriminant for runtime detection via {@link isValidatedPolicy}. */
|
|
12
|
+
readonly __validated: true;
|
|
13
|
+
/** The raw policy JSON document. */
|
|
14
|
+
readonly policyDocument: any;
|
|
15
|
+
/** Optional metadata carried through to {@link loadPolicy} (e.g. `{ name: string }` for error reporting). */
|
|
16
|
+
readonly metadata?: T;
|
|
17
|
+
/** Validation errors. An empty array means the policy is valid. */
|
|
18
|
+
readonly errors: readonly ValidationError[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Validates a policy document using the provided validation function and
|
|
22
|
+
* bundles the result with the raw document and optional metadata.
|
|
23
|
+
*
|
|
24
|
+
* The caller chooses the validation function, so this factory is agnostic
|
|
25
|
+
* to the policy type (identity, SCP, RCP, resource, trust, endpoint, etc.).
|
|
26
|
+
*
|
|
27
|
+
* @param policyDocument the raw policy JSON document
|
|
28
|
+
* @param validateFn a validation function that returns an array of errors (empty if valid)
|
|
29
|
+
* @param metadata optional metadata to carry with the validated policy
|
|
30
|
+
* @returns a ValidatedPolicy containing the raw document, metadata, and validation errors
|
|
31
|
+
*/
|
|
32
|
+
export declare function createValidatedPolicy<T = undefined>(policyDocument: any, validateFn: (policy: any) => ValidationError[], metadata?: T): ValidatedPolicy<T>;
|
|
33
|
+
/**
|
|
34
|
+
* Type guard that checks whether a value is a {@link ValidatedPolicy}.
|
|
35
|
+
*
|
|
36
|
+
* @param value the value to check
|
|
37
|
+
* @returns true if the value is a ValidatedPolicy
|
|
38
|
+
*/
|
|
39
|
+
export declare function isValidatedPolicy(value: any): value is ValidatedPolicy;
|
|
40
|
+
//# sourceMappingURL=validatedPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatedPolicy.d.ts","sourceRoot":"","sources":["../../src/validatedPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,SAAS;IAC5C,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAA;IAE1B,oCAAoC;IACpC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAA;IAE5B,6GAA6G;IAC7G,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAErB,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAA;CAC5C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,GAAG,SAAS,EACjD,cAAc,EAAE,GAAG,EACnB,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,eAAe,EAAE,EAC9C,QAAQ,CAAC,EAAE,CAAC,GACX,eAAe,CAAC,CAAC,CAAC,CAGpB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,eAAe,CAEtE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createValidatedPolicy = createValidatedPolicy;
|
|
4
|
+
exports.isValidatedPolicy = isValidatedPolicy;
|
|
5
|
+
/**
|
|
6
|
+
* Validates a policy document using the provided validation function and
|
|
7
|
+
* bundles the result with the raw document and optional metadata.
|
|
8
|
+
*
|
|
9
|
+
* The caller chooses the validation function, so this factory is agnostic
|
|
10
|
+
* to the policy type (identity, SCP, RCP, resource, trust, endpoint, etc.).
|
|
11
|
+
*
|
|
12
|
+
* @param policyDocument the raw policy JSON document
|
|
13
|
+
* @param validateFn a validation function that returns an array of errors (empty if valid)
|
|
14
|
+
* @param metadata optional metadata to carry with the validated policy
|
|
15
|
+
* @returns a ValidatedPolicy containing the raw document, metadata, and validation errors
|
|
16
|
+
*/
|
|
17
|
+
function createValidatedPolicy(policyDocument, validateFn, metadata) {
|
|
18
|
+
const errors = validateFn(policyDocument);
|
|
19
|
+
return { __validated: true, policyDocument, metadata, errors };
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Type guard that checks whether a value is a {@link ValidatedPolicy}.
|
|
23
|
+
*
|
|
24
|
+
* @param value the value to check
|
|
25
|
+
* @returns true if the value is a ValidatedPolicy
|
|
26
|
+
*/
|
|
27
|
+
function isValidatedPolicy(value) {
|
|
28
|
+
return !!value && value.__validated === true;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=validatedPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatedPolicy.js","sourceRoot":"","sources":["../../src/validatedPolicy.ts"],"names":[],"mappings":";;AAoCA,sDAOC;AAQD,8CAEC;AA7BD;;;;;;;;;;;GAWG;AACH,SAAgB,qBAAqB,CACnC,cAAmB,EACnB,UAA8C,EAC9C,QAAY;IAEZ,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IACzC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;AAChE,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,KAAU;IAC1C,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,CAAA;AAC9C,CAAC"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export type { AccountPrincipal, AwsPrincipal, CanonicalUserPrincipal, FederatedP
|
|
|
7
7
|
export type { Resource, ArnResource } from './resources/resource.js';
|
|
8
8
|
export type { ActionStatement, NotActionStatement, NotPrincipalStatement, NotResourceStatement, PrincipalStatement, ResourceStatement, Statement } from './statements/statement.js';
|
|
9
9
|
export { lintPolicy } from './lint/lint.js';
|
|
10
|
+
export { createValidatedPolicy, isValidatedPolicy, type ValidatedPolicy } from './validatedPolicy.js';
|
|
10
11
|
export { validatePolicySyntax, type ValidationError } from './validate/validate.js';
|
|
11
12
|
export { validateEndpointPolicy, validateIdentityPolicy, validateResourceControlPolicy, validateResourcePolicy, validateServiceControlPolicy, validateSessionPolicy, validateTrustPolicy } from './validate/validateTypes.js';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC5F,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACpE,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACV,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,6BAA6B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAC5F,YAAY,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAClD,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACpE,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACV,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACnF,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,6BAA6B,CAAA"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { loadPolicy } from './parser.js';
|
|
2
2
|
export { lintPolicy } from './lint/lint.js';
|
|
3
|
+
export { createValidatedPolicy, isValidatedPolicy } from './validatedPolicy.js';
|
|
3
4
|
export { validatePolicySyntax } from './validate/validate.js';
|
|
4
5
|
export { validateEndpointPolicy, validateIdentityPolicy, validateResourceControlPolicy, validateResourcePolicy, validateServiceControlPolicy, validateSessionPolicy, validateTrustPolicy } from './validate/validateTypes.js';
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAsBxC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAwB,MAAM,wBAAwB,CAAA;AACnF,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,6BAA6B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAsBxC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EAElB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAAwB,MAAM,wBAAwB,CAAA;AACnF,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,6BAA6B,EAC7B,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,6BAA6B,CAAA"}
|
package/dist/esm/parser.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { type Policy } from './policies/policy.js';
|
|
2
2
|
/**
|
|
3
|
-
* Load a Policy from a policy document
|
|
3
|
+
* Load a Policy from a policy document. If a {@link ValidatedPolicy} is passed,
|
|
4
|
+
* the raw document and metadata are extracted from it automatically. When both
|
|
5
|
+
* the ValidatedPolicy carries metadata and the caller supplies explicit metadata,
|
|
6
|
+
* the explicit metadata takes precedence.
|
|
4
7
|
*
|
|
5
|
-
* @param policyDocument the policy document JSON object
|
|
8
|
+
* @param policyDocument the policy document JSON object, or a ValidatedPolicy
|
|
9
|
+
* @param metadata optional metadata to attach to the loaded Policy
|
|
6
10
|
* @returns the Policy object for the backing policy document
|
|
7
11
|
*/
|
|
8
12
|
export declare function loadPolicy<T = undefined>(policyDocument: any, metadata?: T): Policy<T>;
|
package/dist/esm/parser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,sBAAsB,CAAA;AAG9D;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,CAAC,GAAG,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAKtF"}
|
package/dist/esm/parser.js
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { PolicyImpl } from './policies/policy.js';
|
|
2
|
+
import { isValidatedPolicy } from './validatedPolicy.js';
|
|
2
3
|
/**
|
|
3
|
-
* Load a Policy from a policy document
|
|
4
|
+
* Load a Policy from a policy document. If a {@link ValidatedPolicy} is passed,
|
|
5
|
+
* the raw document and metadata are extracted from it automatically. When both
|
|
6
|
+
* the ValidatedPolicy carries metadata and the caller supplies explicit metadata,
|
|
7
|
+
* the explicit metadata takes precedence.
|
|
4
8
|
*
|
|
5
|
-
* @param policyDocument the policy document JSON object
|
|
9
|
+
* @param policyDocument the policy document JSON object, or a ValidatedPolicy
|
|
10
|
+
* @param metadata optional metadata to attach to the loaded Policy
|
|
6
11
|
* @returns the Policy object for the backing policy document
|
|
7
12
|
*/
|
|
8
13
|
export function loadPolicy(policyDocument, metadata) {
|
|
14
|
+
if (isValidatedPolicy(policyDocument)) {
|
|
15
|
+
return new PolicyImpl(policyDocument.policyDocument, metadata ?? policyDocument.metadata);
|
|
16
|
+
}
|
|
9
17
|
return new PolicyImpl(policyDocument, metadata);
|
|
10
18
|
}
|
|
11
19
|
//# sourceMappingURL=parser.js.map
|
package/dist/esm/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAgB,cAAmB,EAAE,QAAY;IACzE,IAAI,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,UAAU,CAAC,cAAc,CAAC,cAAc,EAAE,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAA;IAC3F,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;AACjD,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ValidationError } from './validate/validate.js';
|
|
2
|
+
/**
|
|
3
|
+
* A policy document that has been validated. Carries the raw policy document,
|
|
4
|
+
* optional metadata, and the validation result so that downstream consumers
|
|
5
|
+
* can skip re-validation.
|
|
6
|
+
*
|
|
7
|
+
* Every field is a plain value — no class instances — so the entire object
|
|
8
|
+
* survives JSON serialization (e.g. through SharedArrayBuffer) unchanged.
|
|
9
|
+
*/
|
|
10
|
+
export interface ValidatedPolicy<T = undefined> {
|
|
11
|
+
/** Discriminant for runtime detection via {@link isValidatedPolicy}. */
|
|
12
|
+
readonly __validated: true;
|
|
13
|
+
/** The raw policy JSON document. */
|
|
14
|
+
readonly policyDocument: any;
|
|
15
|
+
/** Optional metadata carried through to {@link loadPolicy} (e.g. `{ name: string }` for error reporting). */
|
|
16
|
+
readonly metadata?: T;
|
|
17
|
+
/** Validation errors. An empty array means the policy is valid. */
|
|
18
|
+
readonly errors: readonly ValidationError[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Validates a policy document using the provided validation function and
|
|
22
|
+
* bundles the result with the raw document and optional metadata.
|
|
23
|
+
*
|
|
24
|
+
* The caller chooses the validation function, so this factory is agnostic
|
|
25
|
+
* to the policy type (identity, SCP, RCP, resource, trust, endpoint, etc.).
|
|
26
|
+
*
|
|
27
|
+
* @param policyDocument the raw policy JSON document
|
|
28
|
+
* @param validateFn a validation function that returns an array of errors (empty if valid)
|
|
29
|
+
* @param metadata optional metadata to carry with the validated policy
|
|
30
|
+
* @returns a ValidatedPolicy containing the raw document, metadata, and validation errors
|
|
31
|
+
*/
|
|
32
|
+
export declare function createValidatedPolicy<T = undefined>(policyDocument: any, validateFn: (policy: any) => ValidationError[], metadata?: T): ValidatedPolicy<T>;
|
|
33
|
+
/**
|
|
34
|
+
* Type guard that checks whether a value is a {@link ValidatedPolicy}.
|
|
35
|
+
*
|
|
36
|
+
* @param value the value to check
|
|
37
|
+
* @returns true if the value is a ValidatedPolicy
|
|
38
|
+
*/
|
|
39
|
+
export declare function isValidatedPolicy(value: any): value is ValidatedPolicy;
|
|
40
|
+
//# sourceMappingURL=validatedPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatedPolicy.d.ts","sourceRoot":"","sources":["../../src/validatedPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,SAAS;IAC5C,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAA;IAE1B,oCAAoC;IACpC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAA;IAE5B,6GAA6G;IAC7G,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAErB,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAA;CAC5C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,GAAG,SAAS,EACjD,cAAc,EAAE,GAAG,EACnB,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,eAAe,EAAE,EAC9C,QAAQ,CAAC,EAAE,CAAC,GACX,eAAe,CAAC,CAAC,CAAC,CAGpB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,eAAe,CAEtE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validates a policy document using the provided validation function and
|
|
3
|
+
* bundles the result with the raw document and optional metadata.
|
|
4
|
+
*
|
|
5
|
+
* The caller chooses the validation function, so this factory is agnostic
|
|
6
|
+
* to the policy type (identity, SCP, RCP, resource, trust, endpoint, etc.).
|
|
7
|
+
*
|
|
8
|
+
* @param policyDocument the raw policy JSON document
|
|
9
|
+
* @param validateFn a validation function that returns an array of errors (empty if valid)
|
|
10
|
+
* @param metadata optional metadata to carry with the validated policy
|
|
11
|
+
* @returns a ValidatedPolicy containing the raw document, metadata, and validation errors
|
|
12
|
+
*/
|
|
13
|
+
export function createValidatedPolicy(policyDocument, validateFn, metadata) {
|
|
14
|
+
const errors = validateFn(policyDocument);
|
|
15
|
+
return { __validated: true, policyDocument, metadata, errors };
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Type guard that checks whether a value is a {@link ValidatedPolicy}.
|
|
19
|
+
*
|
|
20
|
+
* @param value the value to check
|
|
21
|
+
* @returns true if the value is a ValidatedPolicy
|
|
22
|
+
*/
|
|
23
|
+
export function isValidatedPolicy(value) {
|
|
24
|
+
return !!value && value.__validated === true;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=validatedPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validatedPolicy.js","sourceRoot":"","sources":["../../src/validatedPolicy.ts"],"names":[],"mappings":"AAwBA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,cAAmB,EACnB,UAA8C,EAC9C,QAAY;IAEZ,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IACzC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAU;IAC1C,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,CAAA;AAC9C,CAAC"}
|