@iveri/contracts 0.1.0 → 0.3.0
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 +72 -14
- package/dist/cjs/api/conduit/capture.type.d.ts +70 -0
- package/dist/cjs/api/conduit/capture.type.d.ts.map +1 -0
- package/dist/cjs/api/conduit/capture.type.js +3 -0
- package/dist/cjs/api/conduit/capture.type.js.map +1 -0
- package/dist/cjs/api/conduit/endpoint.type.d.ts +66 -0
- package/dist/cjs/api/conduit/endpoint.type.d.ts.map +1 -0
- package/dist/cjs/api/conduit/endpoint.type.js +3 -0
- package/dist/cjs/api/conduit/endpoint.type.js.map +1 -0
- package/dist/cjs/api/conduit/handshake-kind.enum.d.ts +22 -0
- package/dist/cjs/api/conduit/handshake-kind.enum.d.ts.map +1 -0
- package/dist/cjs/api/conduit/handshake-kind.enum.js +26 -0
- package/dist/cjs/api/conduit/handshake-kind.enum.js.map +1 -0
- package/dist/cjs/api/conduit/index.d.ts +11 -0
- package/dist/cjs/api/conduit/index.d.ts.map +1 -0
- package/dist/cjs/api/conduit/index.js +27 -0
- package/dist/cjs/api/conduit/index.js.map +1 -0
- package/dist/cjs/api/conduit/provider.type.d.ts +138 -0
- package/dist/cjs/api/conduit/provider.type.d.ts.map +1 -0
- package/dist/cjs/api/conduit/provider.type.js +8 -0
- package/dist/cjs/api/conduit/provider.type.js.map +1 -0
- package/dist/cjs/api/conduit/replay.type.d.ts +48 -0
- package/dist/cjs/api/conduit/replay.type.d.ts.map +1 -0
- package/dist/cjs/api/conduit/replay.type.js +3 -0
- package/dist/cjs/api/conduit/replay.type.js.map +1 -0
- package/dist/cjs/api/conduit/signature-algorithm.enum.d.ts +17 -0
- package/dist/cjs/api/conduit/signature-algorithm.enum.d.ts.map +1 -0
- package/dist/cjs/api/conduit/signature-algorithm.enum.js +21 -0
- package/dist/cjs/api/conduit/signature-algorithm.enum.js.map +1 -0
- package/dist/cjs/api/conduit/signature-encoding.enum.d.ts +13 -0
- package/dist/cjs/api/conduit/signature-encoding.enum.d.ts.map +1 -0
- package/dist/cjs/api/conduit/signature-encoding.enum.js +17 -0
- package/dist/cjs/api/conduit/signature-encoding.enum.js.map +1 -0
- package/dist/cjs/api/conduit/signature-header-scheme.enum.d.ts +19 -0
- package/dist/cjs/api/conduit/signature-header-scheme.enum.d.ts.map +1 -0
- package/dist/cjs/api/conduit/signature-header-scheme.enum.js +23 -0
- package/dist/cjs/api/conduit/signature-header-scheme.enum.js.map +1 -0
- package/dist/cjs/api/conduit/signature-verdict.enum.d.ts +50 -0
- package/dist/cjs/api/conduit/signature-verdict.enum.d.ts.map +1 -0
- package/dist/cjs/api/conduit/signature-verdict.enum.js +54 -0
- package/dist/cjs/api/conduit/signature-verdict.enum.js.map +1 -0
- package/dist/cjs/api/conduit/signature.type.d.ts +54 -0
- package/dist/cjs/api/conduit/signature.type.d.ts.map +1 -0
- package/dist/cjs/api/conduit/signature.type.js +3 -0
- package/dist/cjs/api/conduit/signature.type.js.map +1 -0
- package/dist/cjs/api/identity/auth.type.d.ts +92 -0
- package/dist/cjs/api/identity/auth.type.d.ts.map +1 -0
- package/dist/cjs/api/identity/auth.type.js +3 -0
- package/dist/cjs/api/identity/auth.type.js.map +1 -0
- package/dist/cjs/api/identity/index.d.ts +4 -0
- package/dist/cjs/api/identity/index.d.ts.map +1 -0
- package/dist/cjs/api/identity/index.js +20 -0
- package/dist/cjs/api/identity/index.js.map +1 -0
- package/dist/cjs/api/identity/membership-status.enum.d.ts +16 -0
- package/dist/cjs/api/identity/membership-status.enum.d.ts.map +1 -0
- package/dist/cjs/api/identity/membership-status.enum.js +20 -0
- package/dist/cjs/api/identity/membership-status.enum.js.map +1 -0
- package/dist/cjs/api/identity/tenant-status.enum.d.ts +28 -0
- package/dist/cjs/api/identity/tenant-status.enum.d.ts.map +1 -0
- package/dist/cjs/api/identity/tenant-status.enum.js +32 -0
- package/dist/cjs/api/identity/tenant-status.enum.js.map +1 -0
- package/dist/cjs/enum/index.d.ts +1 -0
- package/dist/cjs/enum/index.d.ts.map +1 -1
- package/dist/cjs/enum/index.js +1 -0
- package/dist/cjs/enum/index.js.map +1 -1
- package/dist/cjs/enum/user-permission.enum.d.ts +72 -0
- package/dist/cjs/enum/user-permission.enum.d.ts.map +1 -0
- package/dist/cjs/enum/user-permission.enum.js +87 -0
- package/dist/cjs/enum/user-permission.enum.js.map +1 -0
- package/dist/cjs/type/api-response.type.d.ts +24 -28
- package/dist/cjs/type/api-response.type.d.ts.map +1 -1
- package/dist/cjs/type/index.d.ts +1 -0
- package/dist/cjs/type/index.d.ts.map +1 -1
- package/dist/cjs/type/index.js +1 -0
- package/dist/cjs/type/index.js.map +1 -1
- package/dist/cjs/type/iso-date-time.type.d.ts +17 -0
- package/dist/cjs/type/iso-date-time.type.d.ts.map +1 -0
- package/dist/cjs/type/iso-date-time.type.js +3 -0
- package/dist/cjs/type/iso-date-time.type.js.map +1 -0
- package/dist/esm/api/conduit/capture.type.d.ts +70 -0
- package/dist/esm/api/conduit/capture.type.d.ts.map +1 -0
- package/dist/esm/api/conduit/capture.type.js +2 -0
- package/dist/esm/api/conduit/capture.type.js.map +1 -0
- package/dist/esm/api/conduit/endpoint.type.d.ts +66 -0
- package/dist/esm/api/conduit/endpoint.type.d.ts.map +1 -0
- package/dist/esm/api/conduit/endpoint.type.js +2 -0
- package/dist/esm/api/conduit/endpoint.type.js.map +1 -0
- package/dist/esm/api/conduit/handshake-kind.enum.d.ts +22 -0
- package/dist/esm/api/conduit/handshake-kind.enum.d.ts.map +1 -0
- package/dist/esm/api/conduit/handshake-kind.enum.js +23 -0
- package/dist/esm/api/conduit/handshake-kind.enum.js.map +1 -0
- package/dist/esm/api/conduit/index.d.ts +11 -0
- package/dist/esm/api/conduit/index.d.ts.map +1 -0
- package/dist/esm/api/conduit/index.js +11 -0
- package/dist/esm/api/conduit/index.js.map +1 -0
- package/dist/esm/api/conduit/provider.type.d.ts +138 -0
- package/dist/esm/api/conduit/provider.type.d.ts.map +1 -0
- package/dist/esm/api/conduit/provider.type.js +5 -0
- package/dist/esm/api/conduit/provider.type.js.map +1 -0
- package/dist/esm/api/conduit/replay.type.d.ts +48 -0
- package/dist/esm/api/conduit/replay.type.d.ts.map +1 -0
- package/dist/esm/api/conduit/replay.type.js +2 -0
- package/dist/esm/api/conduit/replay.type.js.map +1 -0
- package/dist/esm/api/conduit/signature-algorithm.enum.d.ts +17 -0
- package/dist/esm/api/conduit/signature-algorithm.enum.d.ts.map +1 -0
- package/dist/esm/api/conduit/signature-algorithm.enum.js +18 -0
- package/dist/esm/api/conduit/signature-algorithm.enum.js.map +1 -0
- package/dist/esm/api/conduit/signature-encoding.enum.d.ts +13 -0
- package/dist/esm/api/conduit/signature-encoding.enum.d.ts.map +1 -0
- package/dist/esm/api/conduit/signature-encoding.enum.js +14 -0
- package/dist/esm/api/conduit/signature-encoding.enum.js.map +1 -0
- package/dist/esm/api/conduit/signature-header-scheme.enum.d.ts +19 -0
- package/dist/esm/api/conduit/signature-header-scheme.enum.d.ts.map +1 -0
- package/dist/esm/api/conduit/signature-header-scheme.enum.js +20 -0
- package/dist/esm/api/conduit/signature-header-scheme.enum.js.map +1 -0
- package/dist/esm/api/conduit/signature-verdict.enum.d.ts +50 -0
- package/dist/esm/api/conduit/signature-verdict.enum.d.ts.map +1 -0
- package/dist/esm/api/conduit/signature-verdict.enum.js +51 -0
- package/dist/esm/api/conduit/signature-verdict.enum.js.map +1 -0
- package/dist/esm/api/conduit/signature.type.d.ts +54 -0
- package/dist/esm/api/conduit/signature.type.d.ts.map +1 -0
- package/dist/esm/api/conduit/signature.type.js +2 -0
- package/dist/esm/api/conduit/signature.type.js.map +1 -0
- package/dist/esm/api/identity/auth.type.d.ts +92 -0
- package/dist/esm/api/identity/auth.type.d.ts.map +1 -0
- package/dist/esm/api/identity/auth.type.js +2 -0
- package/dist/esm/api/identity/auth.type.js.map +1 -0
- package/dist/esm/api/identity/index.d.ts +4 -0
- package/dist/esm/api/identity/index.d.ts.map +1 -0
- package/dist/esm/api/identity/index.js +4 -0
- package/dist/esm/api/identity/index.js.map +1 -0
- package/dist/esm/api/identity/membership-status.enum.d.ts +16 -0
- package/dist/esm/api/identity/membership-status.enum.d.ts.map +1 -0
- package/dist/esm/api/identity/membership-status.enum.js +17 -0
- package/dist/esm/api/identity/membership-status.enum.js.map +1 -0
- package/dist/esm/api/identity/tenant-status.enum.d.ts +28 -0
- package/dist/esm/api/identity/tenant-status.enum.d.ts.map +1 -0
- package/dist/esm/api/identity/tenant-status.enum.js +29 -0
- package/dist/esm/api/identity/tenant-status.enum.js.map +1 -0
- package/dist/esm/enum/index.d.ts +1 -0
- package/dist/esm/enum/index.d.ts.map +1 -1
- package/dist/esm/enum/index.js +1 -0
- package/dist/esm/enum/index.js.map +1 -1
- package/dist/esm/enum/user-permission.enum.d.ts +72 -0
- package/dist/esm/enum/user-permission.enum.d.ts.map +1 -0
- package/dist/esm/enum/user-permission.enum.js +84 -0
- package/dist/esm/enum/user-permission.enum.js.map +1 -0
- package/dist/esm/type/api-response.type.d.ts +24 -28
- package/dist/esm/type/api-response.type.d.ts.map +1 -1
- package/dist/esm/type/index.d.ts +1 -0
- package/dist/esm/type/index.d.ts.map +1 -1
- package/dist/esm/type/index.js +1 -0
- package/dist/esm/type/index.js.map +1 -1
- package/dist/esm/type/iso-date-time.type.d.ts +17 -0
- package/dist/esm/type/iso-date-time.type.d.ts.map +1 -0
- package/dist/esm/type/iso-date-time.type.js +2 -0
- package/dist/esm/type/iso-date-time.type.js.map +1 -0
- package/package.json +22 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/identity/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/identity/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A user's standing inside their tenant.
|
|
3
|
+
*
|
|
4
|
+
* Lives on the membership rather than the user because it is a statement about access, not
|
|
5
|
+
* about identity — and keeping the two apart is what stops "deactivate this person" and
|
|
6
|
+
* "delete this account" from becoming the same operation.
|
|
7
|
+
*/
|
|
8
|
+
export declare enum MembershipStatus {
|
|
9
|
+
/** Invited but has not set a password yet. Cannot authenticate. */
|
|
10
|
+
INVITED = "INVITED",
|
|
11
|
+
/** Normal operation. */
|
|
12
|
+
ACTIVE = "ACTIVE",
|
|
13
|
+
/** Access revoked without deleting anything. Reversible; existing sessions stop working. */
|
|
14
|
+
SUSPENDED = "SUSPENDED"
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=membership-status.enum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"membership-status.enum.d.ts","sourceRoot":"","sources":["../../../../src/api/identity/membership-status.enum.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,oBAAY,gBAAgB;IACxB,mEAAmE;IACnE,OAAO,YAAY;IAEnB,wBAAwB;IACxB,MAAM,WAAW;IAEjB,4FAA4F;IAC5F,SAAS,cAAc;CAC1B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A user's standing inside their tenant.
|
|
3
|
+
*
|
|
4
|
+
* Lives on the membership rather than the user because it is a statement about access, not
|
|
5
|
+
* about identity — and keeping the two apart is what stops "deactivate this person" and
|
|
6
|
+
* "delete this account" from becoming the same operation.
|
|
7
|
+
*/
|
|
8
|
+
export var MembershipStatus;
|
|
9
|
+
(function (MembershipStatus) {
|
|
10
|
+
/** Invited but has not set a password yet. Cannot authenticate. */
|
|
11
|
+
MembershipStatus["INVITED"] = "INVITED";
|
|
12
|
+
/** Normal operation. */
|
|
13
|
+
MembershipStatus["ACTIVE"] = "ACTIVE";
|
|
14
|
+
/** Access revoked without deleting anything. Reversible; existing sessions stop working. */
|
|
15
|
+
MembershipStatus["SUSPENDED"] = "SUSPENDED";
|
|
16
|
+
})(MembershipStatus || (MembershipStatus = {}));
|
|
17
|
+
//# sourceMappingURL=membership-status.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"membership-status.enum.js","sourceRoot":"","sources":["../../../../src/api/identity/membership-status.enum.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,gBASX;AATD,WAAY,gBAAgB;IACxB,mEAAmE;IACnE,uCAAmB,CAAA;IAEnB,wBAAwB;IACxB,qCAAiB,CAAA;IAEjB,4FAA4F;IAC5F,2CAAuB,CAAA;AAC3B,CAAC,EATW,gBAAgB,KAAhB,gBAAgB,QAS3B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lifecycle state of a tenant.
|
|
3
|
+
*
|
|
4
|
+
* Every authenticated request checks it, so a suspended tenant loses access without any of its
|
|
5
|
+
* data being touched.
|
|
6
|
+
*
|
|
7
|
+
* Lives here rather than in `iveri-identity-api` because it is on the wire: it rides inside
|
|
8
|
+
* every principal, which means every service and every frontend reads it. `conduit-admin-web`
|
|
9
|
+
* hand-transcribed it as `'active' | 'suspended' | 'cancelled'` — wrong casing and a member
|
|
10
|
+
* identity has never had — and nothing caught it, because a hand-written mirror of an enum is
|
|
11
|
+
* checked by nobody. That is the whole argument for this directory.
|
|
12
|
+
*/
|
|
13
|
+
export declare enum TenantStatus {
|
|
14
|
+
/** Normal operation. */
|
|
15
|
+
ACTIVE = "ACTIVE",
|
|
16
|
+
/**
|
|
17
|
+
* Access blocked — non-payment, abuse, or a customer request. Reversible, and nothing is
|
|
18
|
+
* deleted. Logins fail and existing access tokens stop working at the next request.
|
|
19
|
+
*/
|
|
20
|
+
SUSPENDED = "SUSPENDED",
|
|
21
|
+
/**
|
|
22
|
+
* Scheduled for erasure. Behaves like `SUSPENDED` for access purposes; the distinction is
|
|
23
|
+
* that the data is on its way out, which matters for a GDPR deletion request having a
|
|
24
|
+
* documented, auditable state rather than a row silently vanishing.
|
|
25
|
+
*/
|
|
26
|
+
PENDING_DELETION = "PENDING_DELETION"
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=tenant-status.enum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-status.enum.d.ts","sourceRoot":"","sources":["../../../../src/api/identity/tenant-status.enum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,oBAAY,YAAY;IACpB,wBAAwB;IACxB,MAAM,WAAW;IAEjB;;;OAGG;IACH,SAAS,cAAc;IAEvB;;;;OAIG;IACH,gBAAgB,qBAAqB;CACxC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lifecycle state of a tenant.
|
|
3
|
+
*
|
|
4
|
+
* Every authenticated request checks it, so a suspended tenant loses access without any of its
|
|
5
|
+
* data being touched.
|
|
6
|
+
*
|
|
7
|
+
* Lives here rather than in `iveri-identity-api` because it is on the wire: it rides inside
|
|
8
|
+
* every principal, which means every service and every frontend reads it. `conduit-admin-web`
|
|
9
|
+
* hand-transcribed it as `'active' | 'suspended' | 'cancelled'` — wrong casing and a member
|
|
10
|
+
* identity has never had — and nothing caught it, because a hand-written mirror of an enum is
|
|
11
|
+
* checked by nobody. That is the whole argument for this directory.
|
|
12
|
+
*/
|
|
13
|
+
export var TenantStatus;
|
|
14
|
+
(function (TenantStatus) {
|
|
15
|
+
/** Normal operation. */
|
|
16
|
+
TenantStatus["ACTIVE"] = "ACTIVE";
|
|
17
|
+
/**
|
|
18
|
+
* Access blocked — non-payment, abuse, or a customer request. Reversible, and nothing is
|
|
19
|
+
* deleted. Logins fail and existing access tokens stop working at the next request.
|
|
20
|
+
*/
|
|
21
|
+
TenantStatus["SUSPENDED"] = "SUSPENDED";
|
|
22
|
+
/**
|
|
23
|
+
* Scheduled for erasure. Behaves like `SUSPENDED` for access purposes; the distinction is
|
|
24
|
+
* that the data is on its way out, which matters for a GDPR deletion request having a
|
|
25
|
+
* documented, auditable state rather than a row silently vanishing.
|
|
26
|
+
*/
|
|
27
|
+
TenantStatus["PENDING_DELETION"] = "PENDING_DELETION";
|
|
28
|
+
})(TenantStatus || (TenantStatus = {}));
|
|
29
|
+
//# sourceMappingURL=tenant-status.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-status.enum.js","sourceRoot":"","sources":["../../../../src/api/identity/tenant-status.enum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAN,IAAY,YAgBX;AAhBD,WAAY,YAAY;IACpB,wBAAwB;IACxB,iCAAiB,CAAA;IAEjB;;;OAGG;IACH,uCAAuB,CAAA;IAEvB;;;;OAIG;IACH,qDAAqC,CAAA;AACzC,CAAC,EAhBW,YAAY,KAAZ,YAAY,QAgBvB"}
|
package/dist/esm/enum/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/enum/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/enum/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC"}
|
package/dist/esm/enum/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enum/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/enum/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every action a principal can be granted in an Iveri tenant, across every service.
|
|
3
|
+
*
|
|
4
|
+
* A permission is a **contract**, not an implementation detail: `iveri-identity-api` stores
|
|
5
|
+
* members on role rows and resolves them into access tokens, every other service reads them
|
|
6
|
+
* out of that token to authorize a request, and the frontend's `<RequirePermission>` branches
|
|
7
|
+
* on the same values. A member's wire value therefore never changes, and a member is never
|
|
8
|
+
* removed while issued tokens can still carry it — removing one silently downgrades every
|
|
9
|
+
* live session holding it. Adding one is a minor version.
|
|
10
|
+
*
|
|
11
|
+
* **One catalogue for the whole platform, deliberately.** Identity validates custom-role input
|
|
12
|
+
* against this list, so a permission it has never heard of cannot be granted. A service that
|
|
13
|
+
* defined its own enum locally would find its permissions unassignable.
|
|
14
|
+
*
|
|
15
|
+
* Values are `<resource>:<action>` — or `<service>:<resource>:<action>` where a resource name
|
|
16
|
+
* would otherwise collide across services — lowercase, so a token payload is readable in a
|
|
17
|
+
* log and a wildcard match (`role:*`) stays possible if we ever need one.
|
|
18
|
+
*/
|
|
19
|
+
export declare enum UserPermission {
|
|
20
|
+
TENANT_READ = "tenant:read",
|
|
21
|
+
TENANT_UPDATE = "tenant:update",
|
|
22
|
+
/** Schedules the tenant for deletion. Owner-only; there is no undo path built yet. */
|
|
23
|
+
TENANT_DELETE = "tenant:delete",
|
|
24
|
+
USER_READ = "user:read",
|
|
25
|
+
USER_INVITE = "user:invite",
|
|
26
|
+
USER_UPDATE = "user:update",
|
|
27
|
+
USER_REMOVE = "user:remove",
|
|
28
|
+
MEMBERSHIP_READ = "membership:read",
|
|
29
|
+
/** Suspend or reactivate someone's access without deleting their account. */
|
|
30
|
+
MEMBERSHIP_UPDATE = "membership:update",
|
|
31
|
+
/**
|
|
32
|
+
* Change which roles a membership holds. Separate from `MEMBERSHIP_UPDATE` because
|
|
33
|
+
* granting roles is privilege escalation and deserves its own gate.
|
|
34
|
+
*/
|
|
35
|
+
MEMBERSHIP_ASSIGN_ROLE = "membership:assign-role",
|
|
36
|
+
ROLE_READ = "role:read",
|
|
37
|
+
ROLE_CREATE = "role:create",
|
|
38
|
+
ROLE_UPDATE = "role:update",
|
|
39
|
+
ROLE_DELETE = "role:delete",
|
|
40
|
+
API_KEY_READ = "api-key:read",
|
|
41
|
+
API_KEY_ISSUE = "api-key:issue",
|
|
42
|
+
API_KEY_REVOKE = "api-key:revoke",
|
|
43
|
+
/** Read endpoint configuration. Never exposes the signing secret. */
|
|
44
|
+
CONDUIT_ENDPOINT_READ = "conduit:endpoint:read",
|
|
45
|
+
CONDUIT_ENDPOINT_CREATE = "conduit:endpoint:create",
|
|
46
|
+
CONDUIT_ENDPOINT_UPDATE = "conduit:endpoint:update",
|
|
47
|
+
CONDUIT_ENDPOINT_DELETE = "conduit:endpoint:delete",
|
|
48
|
+
/**
|
|
49
|
+
* List and read captured requests, **including their raw bodies and headers**. Captures
|
|
50
|
+
* hold whatever a provider sent — order details, message contents, personal data — so
|
|
51
|
+
* this is closer to a data-export permission than a config one.
|
|
52
|
+
*/
|
|
53
|
+
CONDUIT_CAPTURE_READ = "conduit:capture:read",
|
|
54
|
+
CONDUIT_CAPTURE_DELETE = "conduit:capture:delete",
|
|
55
|
+
/**
|
|
56
|
+
* Resend a captured request to an arbitrary URL. Separate from `CONDUIT_CAPTURE_READ`
|
|
57
|
+
* because it makes an outbound request from our infrastructure with a body the caller
|
|
58
|
+
* controls, which is a materially different power from reading a row.
|
|
59
|
+
*/
|
|
60
|
+
CONDUIT_REPLAY_EXECUTE = "conduit:replay:execute",
|
|
61
|
+
CONDUIT_PROVIDER_READ = "conduit:provider:read",
|
|
62
|
+
/** Define or amend a custom provider manifest — signature scheme, headers, handshake. */
|
|
63
|
+
CONDUIT_PROVIDER_MANAGE = "conduit:provider:manage"
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Every member, for seeding the owner role and validating custom-role input.
|
|
67
|
+
*
|
|
68
|
+
* Frozen because it is shared mutable state in a browser bundle otherwise: one caller sorting
|
|
69
|
+
* it in place reorders it for everyone.
|
|
70
|
+
*/
|
|
71
|
+
export declare const ALL_USER_PERMISSIONS: readonly UserPermission[];
|
|
72
|
+
//# sourceMappingURL=user-permission.enum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-permission.enum.d.ts","sourceRoot":"","sources":["../../../src/enum/user-permission.enum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,oBAAY,cAAc;IAItB,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAC/B,sFAAsF;IACtF,aAAa,kBAAkB;IAG/B,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAG3B,eAAe,oBAAoB;IACnC,6EAA6E;IAC7E,iBAAiB,sBAAsB;IACvC;;;OAGG;IACH,sBAAsB,2BAA2B;IAGjD,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAG3B,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IAKjC,qEAAqE;IACrE,qBAAqB,0BAA0B;IAC/C,uBAAuB,4BAA4B;IACnD,uBAAuB,4BAA4B;IACnD,uBAAuB,4BAA4B;IAGnD;;;;OAIG;IACH,oBAAoB,yBAAyB;IAC7C,sBAAsB,2BAA2B;IAGjD;;;;OAIG;IACH,sBAAsB,2BAA2B;IAGjD,qBAAqB,0BAA0B;IAC/C,yFAAyF;IACzF,uBAAuB,4BAA4B;CACtD;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,cAAc,EAAiD,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every action a principal can be granted in an Iveri tenant, across every service.
|
|
3
|
+
*
|
|
4
|
+
* A permission is a **contract**, not an implementation detail: `iveri-identity-api` stores
|
|
5
|
+
* members on role rows and resolves them into access tokens, every other service reads them
|
|
6
|
+
* out of that token to authorize a request, and the frontend's `<RequirePermission>` branches
|
|
7
|
+
* on the same values. A member's wire value therefore never changes, and a member is never
|
|
8
|
+
* removed while issued tokens can still carry it — removing one silently downgrades every
|
|
9
|
+
* live session holding it. Adding one is a minor version.
|
|
10
|
+
*
|
|
11
|
+
* **One catalogue for the whole platform, deliberately.** Identity validates custom-role input
|
|
12
|
+
* against this list, so a permission it has never heard of cannot be granted. A service that
|
|
13
|
+
* defined its own enum locally would find its permissions unassignable.
|
|
14
|
+
*
|
|
15
|
+
* Values are `<resource>:<action>` — or `<service>:<resource>:<action>` where a resource name
|
|
16
|
+
* would otherwise collide across services — lowercase, so a token payload is readable in a
|
|
17
|
+
* log and a wildcard match (`role:*`) stays possible if we ever need one.
|
|
18
|
+
*/
|
|
19
|
+
export var UserPermission;
|
|
20
|
+
(function (UserPermission) {
|
|
21
|
+
// ══ iveri-identity-api ═══════════════════════════════════════════════════
|
|
22
|
+
// ── Tenant ──────────────────────────────────────────────────────────────
|
|
23
|
+
UserPermission["TENANT_READ"] = "tenant:read";
|
|
24
|
+
UserPermission["TENANT_UPDATE"] = "tenant:update";
|
|
25
|
+
/** Schedules the tenant for deletion. Owner-only; there is no undo path built yet. */
|
|
26
|
+
UserPermission["TENANT_DELETE"] = "tenant:delete";
|
|
27
|
+
// ── User ────────────────────────────────────────────────────────────────
|
|
28
|
+
UserPermission["USER_READ"] = "user:read";
|
|
29
|
+
UserPermission["USER_INVITE"] = "user:invite";
|
|
30
|
+
UserPermission["USER_UPDATE"] = "user:update";
|
|
31
|
+
UserPermission["USER_REMOVE"] = "user:remove";
|
|
32
|
+
// ── Membership ──────────────────────────────────────────────────────────
|
|
33
|
+
UserPermission["MEMBERSHIP_READ"] = "membership:read";
|
|
34
|
+
/** Suspend or reactivate someone's access without deleting their account. */
|
|
35
|
+
UserPermission["MEMBERSHIP_UPDATE"] = "membership:update";
|
|
36
|
+
/**
|
|
37
|
+
* Change which roles a membership holds. Separate from `MEMBERSHIP_UPDATE` because
|
|
38
|
+
* granting roles is privilege escalation and deserves its own gate.
|
|
39
|
+
*/
|
|
40
|
+
UserPermission["MEMBERSHIP_ASSIGN_ROLE"] = "membership:assign-role";
|
|
41
|
+
// ── Role ────────────────────────────────────────────────────────────────
|
|
42
|
+
UserPermission["ROLE_READ"] = "role:read";
|
|
43
|
+
UserPermission["ROLE_CREATE"] = "role:create";
|
|
44
|
+
UserPermission["ROLE_UPDATE"] = "role:update";
|
|
45
|
+
UserPermission["ROLE_DELETE"] = "role:delete";
|
|
46
|
+
// ── API key ─────────────────────────────────────────────────────────────
|
|
47
|
+
UserPermission["API_KEY_READ"] = "api-key:read";
|
|
48
|
+
UserPermission["API_KEY_ISSUE"] = "api-key:issue";
|
|
49
|
+
UserPermission["API_KEY_REVOKE"] = "api-key:revoke";
|
|
50
|
+
// ══ conduit-api ══════════════════════════════════════════════════════════
|
|
51
|
+
// ── Endpoint ────────────────────────────────────────────────────────────
|
|
52
|
+
/** Read endpoint configuration. Never exposes the signing secret. */
|
|
53
|
+
UserPermission["CONDUIT_ENDPOINT_READ"] = "conduit:endpoint:read";
|
|
54
|
+
UserPermission["CONDUIT_ENDPOINT_CREATE"] = "conduit:endpoint:create";
|
|
55
|
+
UserPermission["CONDUIT_ENDPOINT_UPDATE"] = "conduit:endpoint:update";
|
|
56
|
+
UserPermission["CONDUIT_ENDPOINT_DELETE"] = "conduit:endpoint:delete";
|
|
57
|
+
// ── Capture ─────────────────────────────────────────────────────────────
|
|
58
|
+
/**
|
|
59
|
+
* List and read captured requests, **including their raw bodies and headers**. Captures
|
|
60
|
+
* hold whatever a provider sent — order details, message contents, personal data — so
|
|
61
|
+
* this is closer to a data-export permission than a config one.
|
|
62
|
+
*/
|
|
63
|
+
UserPermission["CONDUIT_CAPTURE_READ"] = "conduit:capture:read";
|
|
64
|
+
UserPermission["CONDUIT_CAPTURE_DELETE"] = "conduit:capture:delete";
|
|
65
|
+
// ── Replay ──────────────────────────────────────────────────────────────
|
|
66
|
+
/**
|
|
67
|
+
* Resend a captured request to an arbitrary URL. Separate from `CONDUIT_CAPTURE_READ`
|
|
68
|
+
* because it makes an outbound request from our infrastructure with a body the caller
|
|
69
|
+
* controls, which is a materially different power from reading a row.
|
|
70
|
+
*/
|
|
71
|
+
UserPermission["CONDUIT_REPLAY_EXECUTE"] = "conduit:replay:execute";
|
|
72
|
+
// ── Provider ────────────────────────────────────────────────────────────
|
|
73
|
+
UserPermission["CONDUIT_PROVIDER_READ"] = "conduit:provider:read";
|
|
74
|
+
/** Define or amend a custom provider manifest — signature scheme, headers, handshake. */
|
|
75
|
+
UserPermission["CONDUIT_PROVIDER_MANAGE"] = "conduit:provider:manage";
|
|
76
|
+
})(UserPermission || (UserPermission = {}));
|
|
77
|
+
/**
|
|
78
|
+
* Every member, for seeding the owner role and validating custom-role input.
|
|
79
|
+
*
|
|
80
|
+
* Frozen because it is shared mutable state in a browser bundle otherwise: one caller sorting
|
|
81
|
+
* it in place reorders it for everyone.
|
|
82
|
+
*/
|
|
83
|
+
export const ALL_USER_PERMISSIONS = Object.freeze(Object.values(UserPermission));
|
|
84
|
+
//# sourceMappingURL=user-permission.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-permission.enum.js","sourceRoot":"","sources":["../../../src/enum/user-permission.enum.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAN,IAAY,cAkEX;AAlED,WAAY,cAAc;IACtB,4EAA4E;IAE5E,2EAA2E;IAC3E,6CAA2B,CAAA;IAC3B,iDAA+B,CAAA;IAC/B,sFAAsF;IACtF,iDAA+B,CAAA;IAE/B,2EAA2E;IAC3E,yCAAuB,CAAA;IACvB,6CAA2B,CAAA;IAC3B,6CAA2B,CAAA;IAC3B,6CAA2B,CAAA;IAE3B,2EAA2E;IAC3E,qDAAmC,CAAA;IACnC,6EAA6E;IAC7E,yDAAuC,CAAA;IACvC;;;OAGG;IACH,mEAAiD,CAAA;IAEjD,2EAA2E;IAC3E,yCAAuB,CAAA;IACvB,6CAA2B,CAAA;IAC3B,6CAA2B,CAAA;IAC3B,6CAA2B,CAAA;IAE3B,2EAA2E;IAC3E,+CAA6B,CAAA;IAC7B,iDAA+B,CAAA;IAC/B,mDAAiC,CAAA;IAEjC,4EAA4E;IAE5E,2EAA2E;IAC3E,qEAAqE;IACrE,iEAA+C,CAAA;IAC/C,qEAAmD,CAAA;IACnD,qEAAmD,CAAA;IACnD,qEAAmD,CAAA;IAEnD,2EAA2E;IAC3E;;;;OAIG;IACH,+DAA6C,CAAA;IAC7C,mEAAiD,CAAA;IAEjD,2EAA2E;IAC3E;;;;OAIG;IACH,mEAAiD,CAAA;IAEjD,2EAA2E;IAC3E,iEAA+C,CAAA;IAC/C,yFAAyF;IACzF,qEAAmD,CAAA;AACvD,CAAC,EAlEW,cAAc,KAAd,cAAc,QAkEzB;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA8B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC"}
|
|
@@ -1,18 +1,5 @@
|
|
|
1
1
|
import type { ErrorCode } from '../enum/error-code.enum.js';
|
|
2
2
|
import type { Maybe } from './nil.type.js';
|
|
3
|
-
/**
|
|
4
|
-
* Envelope for a successful HTTP response.
|
|
5
|
-
*
|
|
6
|
-
* Every service wraps its payload in this shape, so a client can branch on
|
|
7
|
-
* `success` before touching anything else and never has to guess whether a
|
|
8
|
-
* 200 body is data or an error report.
|
|
9
|
-
*
|
|
10
|
-
* @typeParam T - the response payload type.
|
|
11
|
-
*/
|
|
12
|
-
export interface ApiSuccessResponse<T> {
|
|
13
|
-
success: true;
|
|
14
|
-
data: T;
|
|
15
|
-
}
|
|
16
3
|
/**
|
|
17
4
|
* The error half of {@link ApiErrorResponse}.
|
|
18
5
|
*
|
|
@@ -36,8 +23,30 @@ export interface ApiErrorBody {
|
|
|
36
23
|
correlationId?: Maybe<string>;
|
|
37
24
|
}
|
|
38
25
|
/**
|
|
39
|
-
* Envelope for a failed
|
|
40
|
-
*
|
|
26
|
+
* Envelope for a failed response, emitted by the SDK's `GlobalExceptionFilter` for every
|
|
27
|
+
* non-2xx status.
|
|
28
|
+
*
|
|
29
|
+
* **Only errors are enveloped.** A success is the bare payload — a tenant response *is* a
|
|
30
|
+
* tenant, not a `{ success, data }` wrapper around one. So `success: false` discriminates a
|
|
31
|
+
* shape the client receives *instead of* its payload, never alongside it:
|
|
32
|
+
*
|
|
33
|
+
* ```ts
|
|
34
|
+
* const body: unknown = await response.json();
|
|
35
|
+
*
|
|
36
|
+
* if (!response.ok) {
|
|
37
|
+
* throw new ApiError(body as ApiErrorResponse);
|
|
38
|
+
* }
|
|
39
|
+
*
|
|
40
|
+
* return body as Tenant;
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* This file also declared `ApiSuccessResponse<T>` and a union over the two until 0.3.0.
|
|
44
|
+
* Nothing ever sent it: both `iveri-identity-api` and `conduit-api` register the exception
|
|
45
|
+
* filter and no success interceptor. A type describing a response no service produces is worse
|
|
46
|
+
* than no type at all — reading it, the natural thing to write is `body.data`, which is
|
|
47
|
+
* `undefined` for every call in the application. It was removed rather than made true, because
|
|
48
|
+
* bare payloads were already shipped across two services and a frontend and the envelope added
|
|
49
|
+
* nothing to the HTTP status a client must check regardless.
|
|
41
50
|
*/
|
|
42
51
|
export interface ApiErrorResponse {
|
|
43
52
|
success: false;
|
|
@@ -47,17 +56,4 @@ export interface ApiErrorResponse {
|
|
|
47
56
|
/** Request path that produced the error, without the query string. */
|
|
48
57
|
path: string;
|
|
49
58
|
}
|
|
50
|
-
/**
|
|
51
|
-
* Discriminated union of both envelopes. Narrow on `success`:
|
|
52
|
-
*
|
|
53
|
-
* ```ts
|
|
54
|
-
* if (!response.success) {
|
|
55
|
-
* return handle(response.error.code);
|
|
56
|
-
* }
|
|
57
|
-
* use(response.data);
|
|
58
|
-
* ```
|
|
59
|
-
*
|
|
60
|
-
* @typeParam T - the payload type on the success branch.
|
|
61
|
-
*/
|
|
62
|
-
export type ApiResponse<T> = ApiSuccessResponse<T> | ApiErrorResponse;
|
|
63
59
|
//# sourceMappingURL=api-response.type.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-response.type.d.ts","sourceRoot":"","sources":["../../../src/type/api-response.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"api-response.type.d.ts","sourceRoot":"","sources":["../../../src/type/api-response.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB,iFAAiF;IACjF,IAAI,EAAE,SAAS,CAAC;IAEhB,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEzC;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IAEpB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAElB,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;CAChB"}
|
package/dist/esm/type/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/type/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/type/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
package/dist/esm/type/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An ISO-8601 timestamp as it appears on the wire: `2026-08-02T09:41:17.312Z`.
|
|
3
|
+
*
|
|
4
|
+
* **JSON has no date type**, so every timestamp a service sends is a string, whatever the
|
|
5
|
+
* entity behind it holds. Naming that is not pedantry — it is the single most reliable way to
|
|
6
|
+
* hand-retype a backend response wrongly. A frontend interface declaring `receivedAt: Date`
|
|
7
|
+
* compiles, and every `receivedAt.getTime()` throws at runtime against a value that is really
|
|
8
|
+
* a string. `conduit-admin-web` called this out in a comment and got it right by hand; the
|
|
9
|
+
* point of putting the shapes in this package is that nobody has to.
|
|
10
|
+
*
|
|
11
|
+
* It is an alias, not a branded type, deliberately. A brand would force a cast at every
|
|
12
|
+
* boundary where a string arrives from `JSON.parse` — which is all of them — and buy nothing,
|
|
13
|
+
* since the value genuinely is an unvalidated string until someone parses it. What this alias
|
|
14
|
+
* carries is the instruction: to get a `Date`, write `new Date(value)`.
|
|
15
|
+
*/
|
|
16
|
+
export type IsoDateTime = string;
|
|
17
|
+
//# sourceMappingURL=iso-date-time.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iso-date-time.type.d.ts","sourceRoot":"","sources":["../../../src/type/iso-date-time.type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iso-date-time.type.js","sourceRoot":"","sources":["../../../src/type/iso-date-time.type.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@iveri/contracts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Wire contracts shared by every Iveri backend and frontend. Zero runtime dependencies.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -24,8 +24,28 @@
|
|
|
24
24
|
"import": "./dist/esm/index.js",
|
|
25
25
|
"require": "./dist/cjs/index.js"
|
|
26
26
|
},
|
|
27
|
+
"./conduit": {
|
|
28
|
+
"types": "./dist/cjs/api/conduit/index.d.ts",
|
|
29
|
+
"import": "./dist/esm/api/conduit/index.js",
|
|
30
|
+
"require": "./dist/cjs/api/conduit/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./identity": {
|
|
33
|
+
"types": "./dist/cjs/api/identity/index.d.ts",
|
|
34
|
+
"import": "./dist/esm/api/identity/index.js",
|
|
35
|
+
"require": "./dist/cjs/api/identity/index.js"
|
|
36
|
+
},
|
|
27
37
|
"./package.json": "./package.json"
|
|
28
38
|
},
|
|
39
|
+
"typesVersions": {
|
|
40
|
+
"*": {
|
|
41
|
+
"conduit": [
|
|
42
|
+
"./dist/cjs/api/conduit/index.d.ts"
|
|
43
|
+
],
|
|
44
|
+
"identity": [
|
|
45
|
+
"./dist/cjs/api/identity/index.d.ts"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
},
|
|
29
49
|
"sideEffects": false,
|
|
30
50
|
"files": [
|
|
31
51
|
"dist",
|
|
@@ -33,7 +53,7 @@
|
|
|
33
53
|
],
|
|
34
54
|
"scripts": {
|
|
35
55
|
"clean": "rimraf dist tsconfig.*.tsbuildinfo",
|
|
36
|
-
"build": "pnpm clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && node ./scripts/write-dist-package-json.mjs && node ./scripts/verify-zero-runtime-deps.mjs",
|
|
56
|
+
"build": "pnpm clean && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && node ./scripts/write-dist-package-json.mjs && node ./scripts/verify-zero-runtime-deps.mjs && node ./scripts/verify-entry-points.mjs",
|
|
37
57
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
38
58
|
"test": "jest",
|
|
39
59
|
"lint": "eslint .",
|