@tanqory/plugin-sdk 0.3.2 → 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/manifest.d.ts +27 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +64 -0
- package/dist/manifest.js.map +1 -1
- package/dist/manifest.spec.js +51 -0
- package/dist/manifest.spec.js.map +1 -1
- package/package.json +1 -1
package/dist/manifest.d.ts
CHANGED
|
@@ -34,6 +34,33 @@ export interface TanqoryAppManifest {
|
|
|
34
34
|
}>;
|
|
35
35
|
supportUrl?: string;
|
|
36
36
|
privacyPolicyUrl?: string;
|
|
37
|
+
/** How merchants reach the app. `embed` = framed in the dashboard (default). */
|
|
38
|
+
appType?: 'embed' | 'external';
|
|
39
|
+
/**
|
|
40
|
+
* Where the app appears in the dashboard navigation. `placement` names a
|
|
41
|
+
* platform nav slot (e.g. `marketing`, `apps`); the authoritative slot list
|
|
42
|
+
* is enforced at review — this SDK checks shape, not membership, so a new
|
|
43
|
+
* slot does not require an SDK release. `items` are sub-links rendered
|
|
44
|
+
* under that slot, each resolving inside your app's embedded surface.
|
|
45
|
+
*/
|
|
46
|
+
navigation?: {
|
|
47
|
+
placement: string;
|
|
48
|
+
items?: Array<{
|
|
49
|
+
label: string;
|
|
50
|
+
path: string;
|
|
51
|
+
}>;
|
|
52
|
+
};
|
|
53
|
+
iframe?: {
|
|
54
|
+
minHeight?: number;
|
|
55
|
+
width?: 'full' | 'centered';
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Platform capabilities the app REQUESTS (closed vocabulary, e.g.
|
|
59
|
+
* `marketing-suite`). A request is not a grant: review must approve each
|
|
60
|
+
* one onto the app before it has any effect — declaring it here is how you
|
|
61
|
+
* ask.
|
|
62
|
+
*/
|
|
63
|
+
provides?: string[];
|
|
37
64
|
}
|
|
38
65
|
export declare class ManifestError extends Error {
|
|
39
66
|
readonly problems: string[];
|
package/dist/manifest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,qFAAqF;IACrF,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,kBAAkB;IACjC,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,qFAAqF;IACrF,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAQzB,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;IAC9B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAA;IAClF,MAAM,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAA;IAC5D;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,qBAAa,aAAc,SAAQ,KAAK;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;gBAAlB,QAAQ,EAAE,MAAM,EAAE;CAIxC;AAqBD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAkJnE;AAED,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB;;CAA8B,CAAA"}
|
package/dist/manifest.js
CHANGED
|
@@ -24,6 +24,7 @@ class ManifestError extends Error {
|
|
|
24
24
|
}
|
|
25
25
|
exports.ManifestError = ManifestError;
|
|
26
26
|
const HANDLE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
27
|
+
const SLUG = /^[a-z0-9]+(?:[-_][a-z0-9]+)*$/;
|
|
27
28
|
function isHttpsUrl(value, { allowLocalhost = false } = {}) {
|
|
28
29
|
if (typeof value !== 'string')
|
|
29
30
|
return false;
|
|
@@ -108,6 +109,69 @@ function parseAppManifest(input) {
|
|
|
108
109
|
problems.push(`\`${field}\` must be an https URL`);
|
|
109
110
|
}
|
|
110
111
|
}
|
|
112
|
+
// A field that never existed but shipped in an early first-party manifest —
|
|
113
|
+
// reject it BY NAME so the fix is obvious, instead of silently ignoring a
|
|
114
|
+
// key the author believes is doing something.
|
|
115
|
+
if ('embeddedPath' in manifest) {
|
|
116
|
+
problems.push('`embeddedPath` is not a manifest field — use `embedded: { enabled: true, path: "..." }`');
|
|
117
|
+
}
|
|
118
|
+
if (manifest.appType !== undefined &&
|
|
119
|
+
manifest.appType !== 'embed' &&
|
|
120
|
+
manifest.appType !== 'external') {
|
|
121
|
+
problems.push('`appType` must be "embed" or "external"');
|
|
122
|
+
}
|
|
123
|
+
if (manifest.navigation !== undefined) {
|
|
124
|
+
const navigation = manifest.navigation;
|
|
125
|
+
if (typeof navigation?.placement !== 'string' || !SLUG.test(navigation.placement)) {
|
|
126
|
+
problems.push('`navigation.placement` must be a lowercase slug naming a platform nav slot (e.g. "marketing")');
|
|
127
|
+
}
|
|
128
|
+
if (navigation?.items !== undefined) {
|
|
129
|
+
if (!Array.isArray(navigation.items)) {
|
|
130
|
+
problems.push('`navigation.items` must be an array');
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
navigation.items.forEach((item, index) => {
|
|
134
|
+
const entry = item;
|
|
135
|
+
if (typeof entry?.label !== 'string' || entry.label.trim().length === 0) {
|
|
136
|
+
problems.push(`\`navigation.items[${index}].label\` is required`);
|
|
137
|
+
}
|
|
138
|
+
if (typeof entry?.path !== 'string' ||
|
|
139
|
+
!entry.path.startsWith('/') ||
|
|
140
|
+
entry.path.includes('..')) {
|
|
141
|
+
problems.push(`\`navigation.items[${index}].path\` must be an in-app path starting with "/" (no "..")`);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (manifest.iframe !== undefined) {
|
|
148
|
+
const iframe = manifest.iframe;
|
|
149
|
+
if (iframe?.minHeight !== undefined &&
|
|
150
|
+
(typeof iframe.minHeight !== 'number' ||
|
|
151
|
+
!Number.isFinite(iframe.minHeight) ||
|
|
152
|
+
iframe.minHeight <= 0)) {
|
|
153
|
+
problems.push('`iframe.minHeight` must be a positive number of pixels');
|
|
154
|
+
}
|
|
155
|
+
if (iframe?.width !== undefined && iframe.width !== 'full' && iframe.width !== 'centered') {
|
|
156
|
+
problems.push('`iframe.width` must be "full" or "centered"');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (manifest.provides !== undefined) {
|
|
160
|
+
if (!Array.isArray(manifest.provides) || manifest.provides.some((c) => typeof c !== 'string')) {
|
|
161
|
+
problems.push('`provides` must be an array of capability names');
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
const seen = new Set();
|
|
165
|
+
for (const capability of manifest.provides) {
|
|
166
|
+
if (!SLUG.test(capability)) {
|
|
167
|
+
problems.push(`\`provides\` entry "${capability}" must be a lowercase slug — capabilities come from Tanqory's closed vocabulary and review grants each one`);
|
|
168
|
+
}
|
|
169
|
+
if (seen.has(capability))
|
|
170
|
+
problems.push(`\`provides\` lists "${capability}" more than once`);
|
|
171
|
+
seen.add(capability);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
111
175
|
if (problems.length > 0)
|
|
112
176
|
throw new ManifestError(problems);
|
|
113
177
|
return manifest;
|
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/manifest.spec.js
CHANGED
|
@@ -78,5 +78,56 @@ function problemsOf(input) {
|
|
|
78
78
|
(0, vitest_1.expect)(problemsOf(null)).not.toEqual([]);
|
|
79
79
|
(0, vitest_1.expect)(problemsOf('a string')).not.toEqual([]);
|
|
80
80
|
});
|
|
81
|
+
(0, vitest_1.describe)('manifest v2 — surface declaration', () => {
|
|
82
|
+
(0, vitest_1.it)('accepts a full v2 manifest', () => {
|
|
83
|
+
(0, vitest_1.expect)(problemsOf({
|
|
84
|
+
...VALID,
|
|
85
|
+
appType: 'embed',
|
|
86
|
+
navigation: {
|
|
87
|
+
placement: 'marketing',
|
|
88
|
+
items: [
|
|
89
|
+
{ label: 'Campaigns', path: '/campaigns' },
|
|
90
|
+
{ label: 'Automations', path: '/automations' },
|
|
91
|
+
],
|
|
92
|
+
},
|
|
93
|
+
iframe: { minHeight: 480, width: 'full' },
|
|
94
|
+
provides: ['marketing-suite'],
|
|
95
|
+
})).toEqual([]);
|
|
96
|
+
});
|
|
97
|
+
(0, vitest_1.it)('a v1 manifest with none of the new fields stays valid unchanged', () => {
|
|
98
|
+
(0, vitest_1.expect)(problemsOf(VALID)).toEqual([]);
|
|
99
|
+
});
|
|
100
|
+
(0, vitest_1.it)('rejects the legacy top-level embeddedPath by name', () => {
|
|
101
|
+
const problems = problemsOf({ ...VALID, embeddedPath: '/embed' });
|
|
102
|
+
(0, vitest_1.expect)(problems.join(' ')).toContain('embeddedPath');
|
|
103
|
+
(0, vitest_1.expect)(problems.join(' ')).toContain('embedded: { enabled: true');
|
|
104
|
+
});
|
|
105
|
+
(0, vitest_1.it)('rejects an unknown appType', () => {
|
|
106
|
+
(0, vitest_1.expect)(problemsOf({ ...VALID, appType: 'popup' })).not.toEqual([]);
|
|
107
|
+
});
|
|
108
|
+
(0, vitest_1.it)('navigation.placement must be a slug; membership is enforced at review, not here', () => {
|
|
109
|
+
(0, vitest_1.expect)(problemsOf({ ...VALID, navigation: { placement: 'Not A Slug' } })).not.toEqual([]);
|
|
110
|
+
// Shape-valid but not a known slot today — the SDK passes it so a new
|
|
111
|
+
// platform slot never requires an SDK release; review owns the list.
|
|
112
|
+
(0, vitest_1.expect)(problemsOf({ ...VALID, navigation: { placement: 'future_slot' } })).toEqual([]);
|
|
113
|
+
});
|
|
114
|
+
(0, vitest_1.it)('navigation items need a label and a rooted, traversal-free path', () => {
|
|
115
|
+
const problems = problemsOf({
|
|
116
|
+
...VALID,
|
|
117
|
+
navigation: { placement: 'marketing', items: [{ label: '', path: '/a/../b' }] },
|
|
118
|
+
});
|
|
119
|
+
(0, vitest_1.expect)(problems.length).toBe(2);
|
|
120
|
+
});
|
|
121
|
+
(0, vitest_1.it)('iframe constraints: positive minHeight, width from the pair', () => {
|
|
122
|
+
(0, vitest_1.expect)(problemsOf({ ...VALID, iframe: { minHeight: -1 } })).not.toEqual([]);
|
|
123
|
+
(0, vitest_1.expect)(problemsOf({ ...VALID, iframe: { width: 'wide' } })).not.toEqual([]);
|
|
124
|
+
(0, vitest_1.expect)(problemsOf({ ...VALID, iframe: { minHeight: 320, width: 'centered' } })).toEqual([]);
|
|
125
|
+
});
|
|
126
|
+
(0, vitest_1.it)('provides entries are slugs, no duplicates', () => {
|
|
127
|
+
(0, vitest_1.expect)(problemsOf({ ...VALID, provides: ['Marketing Suite'] })).not.toEqual([]);
|
|
128
|
+
(0, vitest_1.expect)(problemsOf({ ...VALID, provides: ['marketing-suite', 'marketing-suite'] })).not.toEqual([]);
|
|
129
|
+
(0, vitest_1.expect)(problemsOf({ ...VALID, provides: ['marketing-suite'] })).toEqual([]);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
81
132
|
});
|
|
82
133
|
//# sourceMappingURL=manifest.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.spec.js","sourceRoot":"","sources":["../src/manifest.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manifest.spec.js","sourceRoot":"","sources":["../src/manifest.spec.ts"],"names":[],"mappings":"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"}
|