@innspel/core 0.2.1 → 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/README.md +11 -0
- package/dist/index.cjs +102 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +31 -4
- package/dist/index.d.ts +31 -4
- package/dist/index.js +102 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,6 +29,14 @@ await innspel.capture({ type: 'feil', text: 'Dørlista er tom etter kl. 22.' });
|
|
|
29
29
|
|
|
30
30
|
Det er hele veien til første innsending. Alt annet under er valgfritt.
|
|
31
31
|
|
|
32
|
+
Leietakerens grenser — tegngrense, minste antall tegn, om skjermbilde finnes og
|
|
33
|
+
personvernlenken — hentes fra plattformen med `innspel.loadSettings()`. Widgetene
|
|
34
|
+
gjør det ved åpning, aldri ved oppstart. Til kallet har svart gjelder de strammeste
|
|
35
|
+
verdiene (140 tegn, 10 som minimum, skjermbilde av); `textMaxLength`,
|
|
36
|
+
`minTextLength` og `screenshotsEnabled` i `init()` er bare startverdier, og det
|
|
37
|
+
leietakeren har satt i panelet vinner. Svarer ikke kallet, kan innsenderen
|
|
38
|
+
fortsatt melde.
|
|
39
|
+
|
|
32
40
|
## De fire opsjonene du må gi
|
|
33
41
|
|
|
34
42
|
| Opsjon | Hva |
|
|
@@ -89,6 +97,9 @@ innspel.knownIssues.confirm(id) // «Ja, jeg også»
|
|
|
89
97
|
innspel.subjects.submissions() // «Mine innspill», inkl. det som venter på nett
|
|
90
98
|
innspel.subjects.status(submissionId) // status for én egen innsending
|
|
91
99
|
innspel.programs.list() // invitasjoner, deltakelser, oppfølginger
|
|
100
|
+
innspel.programs.accept(invitationToken) // ja til invitasjonen — tokenet kom i DIN kanal
|
|
101
|
+
innspel.programs.decline(invitationToken) // nei. Ingen årsak spørres
|
|
102
|
+
innspel.programs.withdraw(participationId) // «Gå ut» — umiddelbart, alltid tillatt
|
|
92
103
|
innspel.attachments.upload(submissionId, attachment) // skjermbilde til en innsending som alt er lagret
|
|
93
104
|
innspel.queue.pending() // det som ligger i offline-køen
|
|
94
105
|
innspel.queue.flush() // sendes ellers automatisk
|
package/dist/index.cjs
CHANGED
|
@@ -802,6 +802,33 @@ var attachmentsComplete = (options) => (options.client ?? client).post({
|
|
|
802
802
|
url: "/v1/ingest/attachments/{id}/complete",
|
|
803
803
|
...options
|
|
804
804
|
});
|
|
805
|
+
var configGet = (options) => (options?.client ?? client).get({
|
|
806
|
+
security: [{ name: "X-Innspel-Tenant-Key", type: "apiKey" }, {
|
|
807
|
+
key: "FeedbackTokenAuth",
|
|
808
|
+
scheme: "bearer",
|
|
809
|
+
type: "http"
|
|
810
|
+
}],
|
|
811
|
+
url: "/v1/ingest/config",
|
|
812
|
+
...options
|
|
813
|
+
});
|
|
814
|
+
var programsAccept = (options) => (options.client ?? client).post({
|
|
815
|
+
security: [{ name: "X-Innspel-Tenant-Key", type: "apiKey" }, {
|
|
816
|
+
key: "FeedbackTokenAuth",
|
|
817
|
+
scheme: "bearer",
|
|
818
|
+
type: "http"
|
|
819
|
+
}],
|
|
820
|
+
url: "/v1/ingest/invitations/{token}/accept",
|
|
821
|
+
...options
|
|
822
|
+
});
|
|
823
|
+
var programsDecline = (options) => (options.client ?? client).post({
|
|
824
|
+
security: [{ name: "X-Innspel-Tenant-Key", type: "apiKey" }, {
|
|
825
|
+
key: "FeedbackTokenAuth",
|
|
826
|
+
scheme: "bearer",
|
|
827
|
+
type: "http"
|
|
828
|
+
}],
|
|
829
|
+
url: "/v1/ingest/invitations/{token}/decline",
|
|
830
|
+
...options
|
|
831
|
+
});
|
|
805
832
|
var knownIssuesList2 = (options) => (options?.client ?? client).get({
|
|
806
833
|
security: [{ name: "X-Innspel-Tenant-Key", type: "apiKey" }, {
|
|
807
834
|
key: "FeedbackTokenAuth",
|
|
@@ -824,6 +851,15 @@ var knownIssuesConfirm = (options) => (options.client ?? client).post({
|
|
|
824
851
|
...options.headers
|
|
825
852
|
}
|
|
826
853
|
});
|
|
854
|
+
var programsWithdraw = (options) => (options.client ?? client).post({
|
|
855
|
+
security: [{ name: "X-Innspel-Tenant-Key", type: "apiKey" }, {
|
|
856
|
+
key: "FeedbackTokenAuth",
|
|
857
|
+
scheme: "bearer",
|
|
858
|
+
type: "http"
|
|
859
|
+
}],
|
|
860
|
+
url: "/v1/ingest/participations/{id}/withdraw",
|
|
861
|
+
...options
|
|
862
|
+
});
|
|
827
863
|
var programsListMine = (options) => (options?.client ?? client).get({
|
|
828
864
|
security: [{ name: "X-Innspel-Tenant-Key", type: "apiKey" }, {
|
|
829
865
|
key: "FeedbackTokenAuth",
|
|
@@ -1210,7 +1246,7 @@ async function lastOppTilLagring(fetchImpl, presign, body, signal) {
|
|
|
1210
1246
|
}
|
|
1211
1247
|
|
|
1212
1248
|
// src/versjon.ts
|
|
1213
|
-
var VERSJON = "0.
|
|
1249
|
+
var VERSJON = "0.4.0";
|
|
1214
1250
|
|
|
1215
1251
|
// src/klient.ts
|
|
1216
1252
|
var STANDARD_TIMEOUT_MS = 1e4;
|
|
@@ -1282,8 +1318,9 @@ function tilApiFeil(status, kropp, response) {
|
|
|
1282
1318
|
function init(options) {
|
|
1283
1319
|
validerOpsjoner(options);
|
|
1284
1320
|
const settings = {
|
|
1285
|
-
// Strammest mulig
|
|
1286
|
-
//
|
|
1321
|
+
// Strammest mulig til loadSettings() har svart: 140 / 10 / skjermbilde av er
|
|
1322
|
+
// verdiene ved minorsPresent (K18). Verten kan overstyre startverdiene, men
|
|
1323
|
+
// det leietakeren har satt i panelet vinner når konfigurasjonen er hentet.
|
|
1287
1324
|
textMaxLength: options.textMaxLength ?? 140,
|
|
1288
1325
|
minTextLength: options.minTextLength ?? 10,
|
|
1289
1326
|
screenshotsEnabled: options.screenshotsEnabled ?? false
|
|
@@ -1319,6 +1356,14 @@ function init(options) {
|
|
|
1319
1356
|
if (!res.response.ok) throw tilApiFeil(res.response.status, res.error, res.response);
|
|
1320
1357
|
return res.data;
|
|
1321
1358
|
}
|
|
1359
|
+
function krevInvitasjonstoken(token) {
|
|
1360
|
+
if (typeof token !== "string" || token.length === 0) {
|
|
1361
|
+
throw new InnspelConfigError(
|
|
1362
|
+
"invitationToken",
|
|
1363
|
+
"mangler \u2014 det er engangs-tokenet leietakeren sendte i sin egen kanal (dyplenke, varsel eller e-post)"
|
|
1364
|
+
);
|
|
1365
|
+
}
|
|
1366
|
+
}
|
|
1322
1367
|
function krevToken() {
|
|
1323
1368
|
if (anonym) {
|
|
1324
1369
|
throw new InnspelApiError(
|
|
@@ -1387,6 +1432,19 @@ function init(options) {
|
|
|
1387
1432
|
isAnonymous: anonym,
|
|
1388
1433
|
settings,
|
|
1389
1434
|
context: kontekst,
|
|
1435
|
+
async loadSettings() {
|
|
1436
|
+
try {
|
|
1437
|
+
const cfg = await medToken(
|
|
1438
|
+
(h) => configGet({ client: klient, headers: h, signal: signal() })
|
|
1439
|
+
);
|
|
1440
|
+
if (cfg?.textMaxLength === 140 || cfg?.textMaxLength === 280) settings.textMaxLength = cfg.textMaxLength;
|
|
1441
|
+
if (typeof cfg?.minTextLength === "number" && cfg.minTextLength >= 1) settings.minTextLength = cfg.minTextLength;
|
|
1442
|
+
if (typeof cfg?.screenshotsEnabled === "boolean") settings.screenshotsEnabled = cfg.screenshotsEnabled;
|
|
1443
|
+
if (typeof cfg?.privacyUrl === "string" && cfg.privacyUrl) settings.privacyUrl = cfg.privacyUrl;
|
|
1444
|
+
} catch {
|
|
1445
|
+
}
|
|
1446
|
+
return settings;
|
|
1447
|
+
},
|
|
1390
1448
|
async capture(input) {
|
|
1391
1449
|
const tekst = input.text ?? "";
|
|
1392
1450
|
if (tekst.length < settings.minTextLength) {
|
|
@@ -1519,6 +1577,47 @@ function init(options) {
|
|
|
1519
1577
|
return medToken(
|
|
1520
1578
|
(h) => programsListMine({ client: klient, headers: h, signal: signal() })
|
|
1521
1579
|
);
|
|
1580
|
+
},
|
|
1581
|
+
async accept(invitationToken) {
|
|
1582
|
+
krevInvitasjonstoken(invitationToken);
|
|
1583
|
+
krevToken();
|
|
1584
|
+
const svar = await medToken(
|
|
1585
|
+
(h) => programsAccept({
|
|
1586
|
+
client: klient,
|
|
1587
|
+
headers: h,
|
|
1588
|
+
signal: signal(),
|
|
1589
|
+
path: { token: invitationToken }
|
|
1590
|
+
})
|
|
1591
|
+
);
|
|
1592
|
+
telemetri.emit({ name: "invitation_accepted" });
|
|
1593
|
+
return svar;
|
|
1594
|
+
},
|
|
1595
|
+
async decline(invitationToken) {
|
|
1596
|
+
krevInvitasjonstoken(invitationToken);
|
|
1597
|
+
krevToken();
|
|
1598
|
+
await medToken(
|
|
1599
|
+
(h) => programsDecline({
|
|
1600
|
+
client: klient,
|
|
1601
|
+
headers: h,
|
|
1602
|
+
signal: signal(),
|
|
1603
|
+
path: { token: invitationToken }
|
|
1604
|
+
})
|
|
1605
|
+
);
|
|
1606
|
+
telemetri.emit({ name: "invitation_declined" });
|
|
1607
|
+
},
|
|
1608
|
+
async withdraw(participationId) {
|
|
1609
|
+
if (typeof participationId !== "string" || participationId.length === 0) {
|
|
1610
|
+
throw new InnspelConfigError("participationId", "mangler \u2014 bruk id fra deltakelsen i programs.list()");
|
|
1611
|
+
}
|
|
1612
|
+
krevToken();
|
|
1613
|
+
return medToken(
|
|
1614
|
+
(h) => programsWithdraw({
|
|
1615
|
+
client: klient,
|
|
1616
|
+
headers: h,
|
|
1617
|
+
signal: signal(),
|
|
1618
|
+
path: { id: participationId }
|
|
1619
|
+
})
|
|
1620
|
+
);
|
|
1522
1621
|
}
|
|
1523
1622
|
},
|
|
1524
1623
|
attachments: {
|