@portablecore/integrations 0.3.0 → 0.4.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.
@@ -0,0 +1,76 @@
1
+ /**
2
+ * @portablecore/integrations — Apple Developer
3
+ *
4
+ * App Store Connect API authentication (JWT generation) and
5
+ * credential resolution for Apple Developer integrations.
6
+ *
7
+ * Apple's API authentication requires:
8
+ * 1. A .p8 private key (ECDSA P-256)
9
+ * 2. A Key ID (from App Store Connect)
10
+ * 3. An Issuer ID (from App Store Connect)
11
+ *
12
+ * These are combined into a short-lived JWT (max 20 min) signed with ES256.
13
+ *
14
+ * Reference: https://developer.apple.com/documentation/appstoreconnectapi/generating_tokens_for_api_requests
15
+ */
16
+ import type { AnySupabaseClient, ProviderScope, ProviderConfigResult } from "./types.js";
17
+ /**
18
+ * Configuration stored in the integration's credentials/settings for
19
+ * Apple Developer provider.
20
+ */
21
+ export interface AppleDeveloperConfig {
22
+ /** The Key ID from App Store Connect → Users and Access → Keys */
23
+ key_id: string;
24
+ /** The Issuer ID (UUID) from App Store Connect */
25
+ issuer_id: string;
26
+ /** The Apple Developer Team ID */
27
+ team_id: string;
28
+ /** The .p8 private key contents (PEM format) */
29
+ p8_key: string;
30
+ /** Comma-separated bundle IDs this key can access */
31
+ bundle_ids?: string;
32
+ }
33
+ /**
34
+ * A generated JWT for App Store Connect API authentication.
35
+ */
36
+ export interface AppStoreConnectToken {
37
+ /** The signed JWT string */
38
+ token: string;
39
+ /** When the token expires (Unix timestamp in seconds) */
40
+ expiresAt: number;
41
+ /** The Key ID used to generate this token */
42
+ keyId: string;
43
+ /** The Issuer ID */
44
+ issuerId: string;
45
+ }
46
+ /**
47
+ * Generates a JWT for the App Store Connect API.
48
+ *
49
+ * The token is valid for 20 minutes (the maximum allowed by Apple).
50
+ * Callers should cache and reuse tokens until they expire.
51
+ *
52
+ * @param config - The Apple Developer credentials (key_id, issuer_id, p8_key)
53
+ * @param audience - The JWT audience. Defaults to "appstoreconnect-v1".
54
+ * @returns The signed JWT and expiry metadata
55
+ */
56
+ export declare function generateAppStoreConnectJWT(config: Pick<AppleDeveloperConfig, "key_id" | "issuer_id" | "p8_key">, audience?: string): AppStoreConnectToken;
57
+ /**
58
+ * Resolves Apple Developer credentials from the database using the standard
59
+ * integration config resolution chain.
60
+ *
61
+ * @param supabase - A Supabase client with service role access
62
+ * @param scope - Optional scope for credential resolution
63
+ * @returns The resolved Apple Developer config, or null if not configured
64
+ */
65
+ export declare function getAppleDeveloperConfig(supabase: AnySupabaseClient, scope?: ProviderScope): Promise<ProviderConfigResult<AppleDeveloperConfig> | null>;
66
+ /**
67
+ * Convenience: resolve Apple Developer credentials and generate a fresh JWT.
68
+ *
69
+ * @param supabase - A Supabase client with service role access
70
+ * @param scope - Optional scope for credential resolution
71
+ * @returns The JWT and config source, or null if not configured
72
+ */
73
+ export declare function getAppStoreConnectToken(supabase: AnySupabaseClient, scope?: ProviderScope): Promise<(AppStoreConnectToken & {
74
+ source: string;
75
+ }) | null>;
76
+ //# sourceMappingURL=apple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apple.d.ts","sourceRoot":"","sources":["../src/apple.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAOxF;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAA;IACd,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAA;IACjB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAA;IACd,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAA;IACjB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAA;IACb,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAMD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC,EACrE,QAAQ,SAAuB,GAC9B,oBAAoB,CA2CtB;AAMD;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,CAE5D;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,CAAC,oBAAoB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAAC,CAU7D"}
package/dist/apple.js ADDED
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ /**
3
+ * @portablecore/integrations — Apple Developer
4
+ *
5
+ * App Store Connect API authentication (JWT generation) and
6
+ * credential resolution for Apple Developer integrations.
7
+ *
8
+ * Apple's API authentication requires:
9
+ * 1. A .p8 private key (ECDSA P-256)
10
+ * 2. A Key ID (from App Store Connect)
11
+ * 3. An Issuer ID (from App Store Connect)
12
+ *
13
+ * These are combined into a short-lived JWT (max 20 min) signed with ES256.
14
+ *
15
+ * Reference: https://developer.apple.com/documentation/appstoreconnectapi/generating_tokens_for_api_requests
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.generateAppStoreConnectJWT = generateAppStoreConnectJWT;
19
+ exports.getAppleDeveloperConfig = getAppleDeveloperConfig;
20
+ exports.getAppStoreConnectToken = getAppStoreConnectToken;
21
+ const crypto_1 = require("crypto");
22
+ const config_js_1 = require("./config.js");
23
+ // ---------------------------------------------------------------------------
24
+ // JWT Generation
25
+ // ---------------------------------------------------------------------------
26
+ /**
27
+ * Generates a JWT for the App Store Connect API.
28
+ *
29
+ * The token is valid for 20 minutes (the maximum allowed by Apple).
30
+ * Callers should cache and reuse tokens until they expire.
31
+ *
32
+ * @param config - The Apple Developer credentials (key_id, issuer_id, p8_key)
33
+ * @param audience - The JWT audience. Defaults to "appstoreconnect-v1".
34
+ * @returns The signed JWT and expiry metadata
35
+ */
36
+ function generateAppStoreConnectJWT(config, audience = "appstoreconnect-v1") {
37
+ const now = Math.floor(Date.now() / 1000);
38
+ const expiresAt = now + 20 * 60; // 20 minutes
39
+ // JWT Header
40
+ const header = {
41
+ alg: "ES256",
42
+ kid: config.key_id,
43
+ typ: "JWT",
44
+ };
45
+ // JWT Payload
46
+ const payload = {
47
+ iss: config.issuer_id,
48
+ iat: now,
49
+ exp: expiresAt,
50
+ aud: audience,
51
+ };
52
+ // Encode header and payload
53
+ const encodedHeader = base64UrlEncode(JSON.stringify(header));
54
+ const encodedPayload = base64UrlEncode(JSON.stringify(payload));
55
+ const signingInput = `${encodedHeader}.${encodedPayload}`;
56
+ // Sign with ES256 (ECDSA P-256 + SHA-256)
57
+ const signer = (0, crypto_1.createSign)("SHA256");
58
+ signer.update(signingInput);
59
+ signer.end();
60
+ // The p8 key should be in PEM format
61
+ const privateKey = normalizeP8Key(config.p8_key);
62
+ const derSignature = signer.sign(privateKey);
63
+ // Convert DER-encoded signature to raw IEEE P1363 format (r || s, 64 bytes)
64
+ const rawSignature = derToRaw(derSignature);
65
+ const encodedSignature = base64UrlEncode(rawSignature);
66
+ return {
67
+ token: `${signingInput}.${encodedSignature}`,
68
+ expiresAt,
69
+ keyId: config.key_id,
70
+ issuerId: config.issuer_id,
71
+ };
72
+ }
73
+ // ---------------------------------------------------------------------------
74
+ // Credential Resolution
75
+ // ---------------------------------------------------------------------------
76
+ /**
77
+ * Resolves Apple Developer credentials from the database using the standard
78
+ * integration config resolution chain.
79
+ *
80
+ * @param supabase - A Supabase client with service role access
81
+ * @param scope - Optional scope for credential resolution
82
+ * @returns The resolved Apple Developer config, or null if not configured
83
+ */
84
+ async function getAppleDeveloperConfig(supabase, scope) {
85
+ return (0, config_js_1.getProviderConfig)(supabase, "apple-developer", scope);
86
+ }
87
+ /**
88
+ * Convenience: resolve Apple Developer credentials and generate a fresh JWT.
89
+ *
90
+ * @param supabase - A Supabase client with service role access
91
+ * @param scope - Optional scope for credential resolution
92
+ * @returns The JWT and config source, or null if not configured
93
+ */
94
+ async function getAppStoreConnectToken(supabase, scope) {
95
+ const result = await getAppleDeveloperConfig(supabase, scope);
96
+ if (!result)
97
+ return null;
98
+ // The config might be in different places depending on how it was stored
99
+ const config = resolveAppleConfig(result);
100
+ if (!config)
101
+ return null;
102
+ const jwt = generateAppStoreConnectJWT(config);
103
+ return { ...jwt, source: result.source };
104
+ }
105
+ // ---------------------------------------------------------------------------
106
+ // Internal Helpers
107
+ // ---------------------------------------------------------------------------
108
+ /**
109
+ * Resolve Apple config from the various places it could be stored
110
+ * in the integration record (config, credentials, settings, or access_token).
111
+ */
112
+ function resolveAppleConfig(result) {
113
+ // Try the typed config first
114
+ if (result.config?.key_id && result.config?.issuer_id && result.config?.p8_key) {
115
+ return result.config;
116
+ }
117
+ // Try credentials JSONB
118
+ const creds = result.credentials;
119
+ if (creds?.key_id && creds?.issuer_id && creds?.p8_key) {
120
+ return creds;
121
+ }
122
+ // Try settings JSONB
123
+ const settings = result.settings;
124
+ if (settings?.key_id && settings?.issuer_id && settings?.p8_key) {
125
+ return settings;
126
+ }
127
+ return null;
128
+ }
129
+ /**
130
+ * Ensure the P8 key has proper PEM formatting.
131
+ */
132
+ function normalizeP8Key(key) {
133
+ const trimmed = key.trim();
134
+ if (trimmed.startsWith("-----BEGIN PRIVATE KEY-----")) {
135
+ return trimmed;
136
+ }
137
+ // If someone pasted just the base64 content without headers
138
+ return `-----BEGIN PRIVATE KEY-----\n${trimmed}\n-----END PRIVATE KEY-----`;
139
+ }
140
+ /**
141
+ * Base64url encode (RFC 7515).
142
+ */
143
+ function base64UrlEncode(input) {
144
+ const buf = typeof input === "string" ? Buffer.from(input, "utf8") : input;
145
+ return buf.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
146
+ }
147
+ /**
148
+ * Convert a DER-encoded ECDSA signature to raw IEEE P1363 format (r || s).
149
+ *
150
+ * Node.js's crypto.sign returns DER format, but JWT ES256 expects r||s (64 bytes).
151
+ */
152
+ function derToRaw(derSig) {
153
+ // DER format: 0x30 [total-length] 0x02 [r-length] [r] 0x02 [s-length] [s]
154
+ let offset = 2; // skip SEQUENCE header (0x30, length)
155
+ // Parse r
156
+ if (derSig[offset] !== 0x02)
157
+ throw new Error("Invalid DER signature: expected INTEGER tag for r");
158
+ offset++;
159
+ const rLen = derSig[offset];
160
+ offset++;
161
+ let r = derSig.subarray(offset, offset + rLen);
162
+ offset += rLen;
163
+ // Parse s
164
+ if (derSig[offset] !== 0x02)
165
+ throw new Error("Invalid DER signature: expected INTEGER tag for s");
166
+ offset++;
167
+ const sLen = derSig[offset];
168
+ offset++;
169
+ let s = derSig.subarray(offset, offset + sLen);
170
+ // Remove leading zero padding (DER uses signed integers)
171
+ if (r.length > 32 && r[0] === 0x00)
172
+ r = r.subarray(1);
173
+ if (s.length > 32 && s[0] === 0x00)
174
+ s = s.subarray(1);
175
+ // Pad to 32 bytes each
176
+ const raw = Buffer.alloc(64);
177
+ r.copy(raw, 32 - r.length);
178
+ s.copy(raw, 64 - s.length);
179
+ return raw;
180
+ }
181
+ //# sourceMappingURL=apple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apple.js","sourceRoot":"","sources":["../src/apple.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -7,9 +7,10 @@
7
7
  * Resolution order:
8
8
  * 1. Account-level (BYOK) — if scope.accountId provided
9
9
  * 2. User-level (OAuth tokens) — if scope.userId provided
10
- * 3. Platform-specific — if scope.platformIdentityId provided
11
- * 4. Metaplatform fallback auto-detected via platform_identity.is_metaplatform
12
- * 5. Any active platform integration legacy catch-all
10
+ * 3. Studio-level (workspace) — if scope.studioId provided
11
+ * 4. Platform-specificif scope.platformIdentityId provided
12
+ * 5. Metaplatform fallback auto-detected via platform_identity.is_metaplatform
13
+ * 6. Any active platform integration — legacy catch-all
13
14
  *
14
15
  * This generalizes what Expert's `getProviderApiKey()` does for AI providers
15
16
  * and what `getTwilioConfig()` does for Twilio into a single function.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACd,MAAM,YAAY,CAAA;AAMnB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,QAAQ,EAAE,iBAAiB,EAC3B,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAwBzC;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,iBAAiB,EAC3B,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAkC9E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACd,MAAM,YAAY,CAAA;AAMnB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjE,QAAQ,EAAE,iBAAiB,EAC3B,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAwBzC;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,iBAAiB,EAC3B,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,aAAa,GACpB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAkC9E"}
package/dist/config.js CHANGED
@@ -8,9 +8,10 @@
8
8
  * Resolution order:
9
9
  * 1. Account-level (BYOK) — if scope.accountId provided
10
10
  * 2. User-level (OAuth tokens) — if scope.userId provided
11
- * 3. Platform-specific — if scope.platformIdentityId provided
12
- * 4. Metaplatform fallback auto-detected via platform_identity.is_metaplatform
13
- * 5. Any active platform integration legacy catch-all
11
+ * 3. Studio-level (workspace) — if scope.studioId provided
12
+ * 4. Platform-specificif scope.platformIdentityId provided
13
+ * 5. Metaplatform fallback auto-detected via platform_identity.is_metaplatform
14
+ * 6. Any active platform integration — legacy catch-all
14
15
  *
15
16
  * This generalizes what Expert's `getProviderApiKey()` does for AI providers
16
17
  * and what `getTwilioConfig()` does for Twilio into a single function.
@@ -128,7 +129,15 @@ function buildFallbackChain(scope) {
128
129
  filters: { user_id: scope.userId },
129
130
  });
130
131
  }
131
- // 3. Platform-specific
132
+ // 3. Studio-level (Team workspaces)
133
+ if (scope?.studioId) {
134
+ steps.push({
135
+ source: "studio",
136
+ contextType: "studio",
137
+ filters: { studio_id: scope.studioId },
138
+ });
139
+ }
140
+ // 4. Platform-specific
132
141
  if (scope?.platformIdentityId) {
133
142
  steps.push({
134
143
  source: "platform",
@@ -136,13 +145,13 @@ function buildFallbackChain(scope) {
136
145
  filters: { platform_identity_id: scope.platformIdentityId },
137
146
  });
138
147
  }
139
- // 4. Metaplatform fallback (resolved dynamically in queryIntegration)
148
+ // 5. Metaplatform fallback (resolved dynamically in queryIntegration)
140
149
  steps.push({
141
150
  source: "metaplatform",
142
151
  contextType: "platform",
143
152
  filters: { __metaplatform: "true" }, // sentinel — resolved at query time
144
153
  });
145
- // 5. Any active platform integration (legacy catch-all)
154
+ // 6. Any active platform integration (legacy catch-all)
146
155
  steps.push({
147
156
  source: "platform",
148
157
  contextType: "platform",
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -23,4 +23,6 @@ export { getProvider, getProviders, listProviders } from "./provider.js";
23
23
  export { getProviderConfig, getProviderApiKey } from "./config.js";
24
24
  export { getSurfaceCapabilities } from "./capabilities.js";
25
25
  export type { CredentialAvailability } from "./capabilities.js";
26
+ export { generateAppStoreConnectJWT, getAppleDeveloperConfig, getAppStoreConnectToken, } from "./apple.js";
27
+ export type { AppleDeveloperConfig, AppStoreConnectToken, } from "./apple.js";
26
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AAGxD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAGxE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AAGxD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAGxE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGlE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAG/D,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AACnB,YAAY,EACV,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@
19
19
  * "The expert brings expertise. The surface provides integrations."
20
20
  */
21
21
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.getSurfaceCapabilities = exports.getProviderApiKey = exports.getProviderConfig = exports.listProviders = exports.getProviders = exports.getProvider = exports.DEFAULT_CAPABILITY_MAPPINGS = void 0;
22
+ exports.getAppStoreConnectToken = exports.getAppleDeveloperConfig = exports.generateAppStoreConnectJWT = exports.getSurfaceCapabilities = exports.getProviderApiKey = exports.getProviderConfig = exports.listProviders = exports.getProviders = exports.getProvider = exports.DEFAULT_CAPABILITY_MAPPINGS = void 0;
23
23
  var types_js_1 = require("./types.js");
24
24
  Object.defineProperty(exports, "DEFAULT_CAPABILITY_MAPPINGS", { enumerable: true, get: function () { return types_js_1.DEFAULT_CAPABILITY_MAPPINGS; } });
25
25
  // Provider lookup
@@ -34,4 +34,9 @@ Object.defineProperty(exports, "getProviderApiKey", { enumerable: true, get: fun
34
34
  // PEP capability discovery
35
35
  var capabilities_js_1 = require("./capabilities.js");
36
36
  Object.defineProperty(exports, "getSurfaceCapabilities", { enumerable: true, get: function () { return capabilities_js_1.getSurfaceCapabilities; } });
37
+ // Apple Developer (App Store Connect API)
38
+ var apple_js_1 = require("./apple.js");
39
+ Object.defineProperty(exports, "generateAppStoreConnectJWT", { enumerable: true, get: function () { return apple_js_1.generateAppStoreConnectJWT; } });
40
+ Object.defineProperty(exports, "getAppleDeveloperConfig", { enumerable: true, get: function () { return apple_js_1.getAppleDeveloperConfig; } });
41
+ Object.defineProperty(exports, "getAppStoreConnectToken", { enumerable: true, get: function () { return apple_js_1.getAppStoreConnectToken; } });
37
42
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAaH,uCAAwD;AAA/C,uHAAA,2BAA2B,OAAA;AAEpC,kBAAkB;AAClB,6CAAwE;AAA/D,0GAAA,WAAW,OAAA;AAAE,2GAAA,YAAY,OAAA;AAAE,4GAAA,aAAa,OAAA;AAEjD,wBAAwB;AACxB,yCAAkE;AAAzD,8GAAA,iBAAiB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAE7C,2BAA2B;AAC3B,qDAA0D;AAAjD,yHAAA,sBAAsB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAaH,uCAAwD;AAA/C,uHAAA,2BAA2B,OAAA;AAEpC,kBAAkB;AAClB,6CAAwE;AAA/D,0GAAA,WAAW,OAAA;AAAE,2GAAA,YAAY,OAAA;AAAE,4GAAA,aAAa,OAAA;AAEjD,wBAAwB;AACxB,yCAAkE;AAAzD,8GAAA,iBAAiB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAE7C,2BAA2B;AAC3B,qDAA0D;AAAjD,yHAAA,sBAAsB,OAAA;AAG/B,0CAA0C;AAC1C,uCAImB;AAHjB,sHAAA,0BAA0B,OAAA;AAC1B,mHAAA,uBAAuB,OAAA;AACvB,mHAAA,uBAAuB,OAAA"}
package/dist/types.d.ts CHANGED
@@ -37,9 +37,10 @@ export type IntegrationRole = "think" | "work" | "infrastructure";
37
37
  * Determines which `integrations` rows are checked and in what order:
38
38
  * 1. Account-level (BYOK) — if `accountId` provided
39
39
  * 2. User-level (OAuth tokens) — if `userId` provided
40
- * 3. Platform-specific — if `platformIdentityId` provided
41
- * 4. Metaplatform fallback auto-detected via `is_metaplatform`
42
- * 5. Any active platform integration legacy catch-all
40
+ * 3. Studio-level (workspace) — if `studioId` provided
41
+ * 4. Platform-specificif `platformIdentityId` provided
42
+ * 5. Metaplatform fallback auto-detected via `is_metaplatform`
43
+ * 6. Any active platform integration — legacy catch-all
43
44
  */
44
45
  export interface ProviderScope {
45
46
  /** Check account-level integration first (BYOK API keys) */
@@ -48,6 +49,8 @@ export interface ProviderScope {
48
49
  userId?: string;
49
50
  /** Check a specific platform's integration */
50
51
  platformIdentityId?: string;
52
+ /** Check a specific studio's integration (Team workspaces) */
53
+ studioId?: string;
51
54
  }
52
55
  /**
53
56
  * The resolved configuration for an integration provider.
@@ -74,7 +77,7 @@ export interface ProviderConfigResult<T = Record<string, unknown>> {
74
77
  /** The settings JSONB column (non-secret configuration) */
75
78
  settings?: Record<string, unknown>;
76
79
  }
77
- export type ConfigSource = "account" | "user" | "platform" | "metaplatform";
80
+ export type ConfigSource = "account" | "user" | "studio" | "platform" | "metaplatform";
78
81
  /**
79
82
  * Maps an integration provider category to a PEP credential type.
80
83
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAMnC;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB;;;;;;OAMG;IACH,eAAe,EAAE,eAAe,CAAA;CACjC;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,gBAAgB,CAAA;AAMjE;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAMD;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,0DAA0D;IAC1D,MAAM,EAAE,CAAC,CAAA;IACT,6CAA6C;IAC7C,MAAM,EAAE,YAAY,CAAA;IACpB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,cAAc,CAAA;AAM3E;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAA;IACpB,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAA;IACtB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBAAiB,EAS1D,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAMnC;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB;;;;;;OAMG;IACH,eAAe,EAAE,eAAe,CAAA;CACjC;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,gBAAgB,CAAA;AAMjE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAMD;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,0DAA0D;IAC1D,MAAM,EAAE,CAAC,CAAA;IACT,6CAA6C;IAC7C,MAAM,EAAE,YAAY,CAAA;IACpB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,CAAA;AAMtF;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAA;IACpB,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAA;IACtB,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBAAiB,EAS1D,CAAA"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AA8GH;;;;;GAKG;AACU,QAAA,2BAA2B,GAAwB;IAC9D,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE;IAClF,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE;IACxF,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE;IACvF,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE;IACzF,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,wBAAwB,EAAE;IAC3G,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,uBAAuB,EAAE;IACxG,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE;IAC5F,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE;CACrF,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAiHH;;;;;GAKG;AACU,QAAA,2BAA2B,GAAwB;IAC9D,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE;IAClF,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE;IACxF,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE;IACvF,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE;IACzF,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,wBAAwB,EAAE;IAC3G,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,uBAAuB,EAAE;IACxG,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE;IAC5F,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE;CACrF,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@portablecore/integrations",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Shared integration provider registry and credential resolution for Portable platforms",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -20,11 +20,21 @@
20
20
  "./capabilities": {
21
21
  "types": "./dist/capabilities.d.ts",
22
22
  "default": "./dist/capabilities.js"
23
+ },
24
+ "./apple": {
25
+ "types": "./dist/apple.d.ts",
26
+ "default": "./dist/apple.js"
23
27
  }
24
28
  },
25
29
  "files": [
26
30
  "dist"
27
31
  ],
32
+ "scripts": {
33
+ "build": "tsc",
34
+ "dev": "tsc --watch",
35
+ "clean": "rm -rf dist",
36
+ "typecheck": "tsc --noEmit"
37
+ },
28
38
  "keywords": [
29
39
  "portable",
30
40
  "integrations",
@@ -40,11 +50,5 @@
40
50
  "devDependencies": {
41
51
  "@supabase/supabase-js": "^2.49.0",
42
52
  "typescript": "^5.3.0"
43
- },
44
- "scripts": {
45
- "build": "tsc",
46
- "dev": "tsc --watch",
47
- "clean": "rm -rf dist",
48
- "typecheck": "tsc --noEmit"
49
53
  }
50
- }
54
+ }