@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.
- package/dist/apple.d.ts +76 -0
- package/dist/apple.d.ts.map +1 -0
- package/dist/apple.js +181 -0
- package/dist/apple.js.map +1 -0
- package/dist/config.d.ts +4 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +15 -6
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +7 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +12 -8
package/dist/apple.d.ts
ADDED
|
@@ -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":";AAAA;;;;;;;;;;;;;;GAcG;;AAuDH,gEA8CC;AAcD,0DAKC;AASD,0DAaC;AA5ID,mCAAmC;AAEnC,2CAA+C;AAqC/C,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,SAAgB,0BAA0B,CACxC,MAAqE,EACrE,QAAQ,GAAG,oBAAoB;IAE/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;IACzC,MAAM,SAAS,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAA,CAAC,aAAa;IAE7C,aAAa;IACb,MAAM,MAAM,GAAG;QACb,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,MAAM,CAAC,MAAM;QAClB,GAAG,EAAE,KAAK;KACX,CAAA;IAED,cAAc;IACd,MAAM,OAAO,GAAG;QACd,GAAG,EAAE,MAAM,CAAC,SAAS;QACrB,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,QAAQ;KACd,CAAA;IAED,4BAA4B;IAC5B,MAAM,aAAa,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IAC7D,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;IAC/D,MAAM,YAAY,GAAG,GAAG,aAAa,IAAI,cAAc,EAAE,CAAA;IAEzD,0CAA0C;IAC1C,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAA;IACnC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAC3B,MAAM,CAAC,GAAG,EAAE,CAAA;IAEZ,qCAAqC;IACrC,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAChD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAE5C,4EAA4E;IAC5E,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IAC3C,MAAM,gBAAgB,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;IAEtD,OAAO;QACL,KAAK,EAAE,GAAG,YAAY,IAAI,gBAAgB,EAAE;QAC5C,SAAS;QACT,KAAK,EAAE,MAAM,CAAC,MAAM;QACpB,QAAQ,EAAE,MAAM,CAAC,SAAS;KAC3B,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;;;;GAOG;AACI,KAAK,UAAU,uBAAuB,CAC3C,QAA2B,EAC3B,KAAqB;IAErB,OAAO,IAAA,6BAAiB,EAAuB,QAAQ,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAA;AACpF,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,uBAAuB,CAC3C,QAA2B,EAC3B,KAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAC7D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,yEAAyE;IACzE,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IACzC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,MAAM,GAAG,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAA;IAC9C,OAAO,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;AAC1C,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,kBAAkB,CACzB,MAAkD;IAElD,6BAA6B;IAC7B,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAC/E,OAAO,MAAM,CAAC,MAAM,CAAA;IACtB,CAAC;IAED,wBAAwB;IACxB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAwD,CAAA;IAC7E,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;QACvD,OAAO,KAAsE,CAAA;IAC/E,CAAC;IAED,qBAAqB;IACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAqD,CAAA;IAC7E,IAAI,QAAQ,EAAE,MAAM,IAAI,QAAQ,EAAE,SAAS,IAAI,QAAQ,EAAE,MAAM,EAAE,CAAC;QAChE,OAAO,QAAyE,CAAA;IAClF,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC1B,IAAI,OAAO,CAAC,UAAU,CAAC,6BAA6B,CAAC,EAAE,CAAC;QACtD,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,4DAA4D;IAC5D,OAAO,gCAAgC,OAAO,6BAA6B,CAAA;AAC7E,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAsB;IAC7C,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAC1E,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAC1F,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,MAAc;IAC9B,0EAA0E;IAC1E,IAAI,MAAM,GAAG,CAAC,CAAA,CAAC,sCAAsC;IAErD,UAAU;IACV,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACjG,MAAM,EAAE,CAAA;IACR,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAE,CAAA;IAC5B,MAAM,EAAE,CAAA;IACR,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;IAC9C,MAAM,IAAI,IAAI,CAAA;IAEd,UAAU;IACV,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACjG,MAAM,EAAE,CAAA;IACR,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAE,CAAA;IAC5B,MAAM,EAAE,CAAA;IACR,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;IAE9C,yDAAyD;IACzD,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACrD,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAErD,uBAAuB;IACvB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IAE1B,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
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.
|
|
11
|
-
* 4.
|
|
12
|
-
* 5.
|
|
10
|
+
* 3. Studio-level (workspace) — if scope.studioId provided
|
|
11
|
+
* 4. Platform-specific — if 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.
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA
|
|
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.
|
|
12
|
-
* 4.
|
|
13
|
-
* 5.
|
|
11
|
+
* 3. Studio-level (workspace) — if scope.studioId provided
|
|
12
|
+
* 4. Platform-specific — if 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.
|
|
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
|
-
//
|
|
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
|
-
//
|
|
154
|
+
// 6. Any active platform integration (legacy catch-all)
|
|
146
155
|
steps.push({
|
|
147
156
|
source: "platform",
|
|
148
157
|
contextType: "platform",
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";AAAA
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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.
|
|
41
|
-
* 4.
|
|
42
|
-
* 5.
|
|
40
|
+
* 3. Studio-level (workspace) — if `studioId` provided
|
|
41
|
+
* 4. Platform-specific — if `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
|
*
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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
|
|
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;;;
|
|
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
|
+
"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
|
+
}
|