@wireai/activation 0.14.2 → 0.15.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/AGENTS.md +1 -1
- package/CHANGELOG.md +144 -0
- package/README.md +23 -9
- package/dist/analytics/index.d.mts +5 -5
- package/dist/analytics/index.d.ts +5 -5
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/index.mjs.map +1 -1
- package/dist/coachmarks/index.d.mts +13 -5
- package/dist/coachmarks/index.d.ts +13 -5
- package/dist/coachmarks/index.js +252 -58
- package/dist/coachmarks/index.js.map +1 -1
- package/dist/coachmarks/index.mjs +204 -9
- package/dist/coachmarks/index.mjs.map +1 -1
- package/dist/{currentSession-CW_5Mq4O.d.ts → currentSession-CFSRZ2wg.d.ts} +10 -4
- package/dist/{currentSession-CUvTOchb.d.mts → currentSession-orZy5p1e.d.mts} +10 -4
- package/dist/{decision-Bgo17oH7.d.mts → decision-3vWLuBlO.d.ts} +11 -2
- package/dist/{decision-Bkh_LigV.d.ts → decision-yBj2AyPW.d.mts} +11 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/questionnaire/index.d.mts +3 -3
- package/dist/questionnaire/index.d.ts +3 -3
- package/dist/questionnaire/index.js +48 -3
- package/dist/questionnaire/index.js.map +1 -1
- package/dist/questionnaire/index.mjs +48 -3
- package/dist/questionnaire/index.mjs.map +1 -1
- package/dist/reviews/index.d.mts +10 -6
- package/dist/reviews/index.d.ts +10 -6
- package/dist/reviews/index.js +167 -18
- package/dist/reviews/index.js.map +1 -1
- package/dist/reviews/index.mjs +167 -18
- package/dist/reviews/index.mjs.map +1 -1
- package/dist/showcase/index.d.mts +1 -1
- package/dist/showcase/index.d.ts +1 -1
- package/dist/showcase/index.js +282 -48
- package/dist/showcase/index.js.map +1 -1
- package/dist/showcase/index.mjs +248 -12
- package/dist/showcase/index.mjs.map +1 -1
- package/dist/{transport-j5gFfJhK.d.mts → transport-s5QxA-ci.d.mts} +18 -13
- package/dist/{transport-B_0SgCBe.d.ts → transport-xqqSFqxs.d.ts} +18 -13
- package/dist/{types-Cju-1_jT.d.mts → types-Byx306Kv.d.mts} +25 -10
- package/dist/{types-BcmagF6K.d.mts → types-D_0B0yay.d.mts} +7 -2
- package/dist/{types-BcmagF6K.d.ts → types-D_0B0yay.d.ts} +7 -2
- package/dist/{types-h2BZvl1t.d.ts → types-tdATL5z0.d.ts} +25 -10
- package/metro/index.js +16 -5
- package/package.json +1 -1
- package/src/WireOnboarding.tsx +4 -1
- package/src/coachmarks/GestureHint.tsx +16 -7
- package/src/coachmarks/SpotlightOverlay.tsx +19 -13
- package/src/coachmarks/index.ts +7 -2
- package/src/coachmarks/reanimated.ts +342 -0
- package/src/coachmarks/runtime.ts +103 -2
- package/src/coachmarks/types.ts +7 -2
- package/src/context/deviceId.ts +32 -0
- package/src/reviews/ReviewGate.tsx +86 -37
- package/src/reviews/decision.ts +11 -1
- package/src/reviews/idempotency.ts +71 -0
- package/src/reviews/index.ts +4 -2
- package/src/reviews/runtime.ts +5 -3
- package/src/reviews/transport.ts +17 -12
- package/src/reviews/types.ts +7 -0
- package/src/showcase/FeatureShowcase.tsx +25 -9
- package/src/showcase/blazejOnboarding.ts +136 -0
- package/src/showcase/index.ts +8 -4
- package/src/types.ts +10 -4
- package/src/utils/submitResult.ts +17 -9
|
@@ -1129,9 +1129,54 @@ var coachmarkRuntime = () => {
|
|
|
1129
1129
|
var getCoachmarkStorage = () => coachmarkRuntime().storage;
|
|
1130
1130
|
var isCoachmarkTesting = () => coachmarkRuntime().testing;
|
|
1131
1131
|
var SEEN_VALUE = "1";
|
|
1132
|
+
var GATE_PROBE_KEY = "wire_gate_probe";
|
|
1133
|
+
var ASYNC_GATE_STORAGE_WARNED_SLOT = /* @__PURE__ */ Symbol.for(
|
|
1134
|
+
"@wireai/activation:asyncGateStorageWarned"
|
|
1135
|
+
);
|
|
1136
|
+
var asyncGateWarnGlobal = globalThis;
|
|
1137
|
+
var closedGateStorage = Object.freeze({
|
|
1138
|
+
getItem: () => SEEN_VALUE,
|
|
1139
|
+
setItem: () => {
|
|
1140
|
+
}
|
|
1141
|
+
});
|
|
1142
|
+
var syncGateAdapters = /* @__PURE__ */ new WeakSet();
|
|
1143
|
+
var asyncGateAdapters = /* @__PURE__ */ new WeakSet();
|
|
1144
|
+
var warnAsyncGateStorage = () => {
|
|
1145
|
+
if (asyncGateWarnGlobal[ASYNC_GATE_STORAGE_WARNED_SLOT]) return;
|
|
1146
|
+
if (typeof __DEV__ === "undefined" || !__DEV__) return;
|
|
1147
|
+
if (typeof console === "undefined" || !console.warn) return;
|
|
1148
|
+
asyncGateWarnGlobal[ASYNC_GATE_STORAGE_WARNED_SLOT] = true;
|
|
1149
|
+
console.warn(
|
|
1150
|
+
"[wireai] the gate storage's getItem returned a Promise \u2014 an async adapter (e.g. AsyncStorage) cannot drive the once-per-user gates, so coachmark tours, showcases and the review/questionnaire gates are all DISABLED (fail closed: nothing shows, nothing fires) until a synchronous adapter is provided. Pass a sync adapter (e.g. MMKV: `{ getItem: (k) => mmkv.getString(k) ?? null, setItem: (k, v) => mmkv.set(k, v) }`) to CoachmarkProvider or the gate's `storage` prop."
|
|
1151
|
+
);
|
|
1152
|
+
};
|
|
1153
|
+
var validateGateStorage = (storage) => {
|
|
1154
|
+
if (!storage) return null;
|
|
1155
|
+
if (syncGateAdapters.has(storage)) return storage;
|
|
1156
|
+
if (asyncGateAdapters.has(storage)) return closedGateStorage;
|
|
1157
|
+
let probed;
|
|
1158
|
+
try {
|
|
1159
|
+
probed = storage.getItem(GATE_PROBE_KEY);
|
|
1160
|
+
} catch {
|
|
1161
|
+
syncGateAdapters.add(storage);
|
|
1162
|
+
return storage;
|
|
1163
|
+
}
|
|
1164
|
+
if (probed != null && typeof probed.then === "function") {
|
|
1165
|
+
asyncGateAdapters.add(storage);
|
|
1166
|
+
try {
|
|
1167
|
+
probed.then(void 0, () => {
|
|
1168
|
+
});
|
|
1169
|
+
} catch {
|
|
1170
|
+
}
|
|
1171
|
+
warnAsyncGateStorage();
|
|
1172
|
+
return closedGateStorage;
|
|
1173
|
+
}
|
|
1174
|
+
syncGateAdapters.add(storage);
|
|
1175
|
+
return storage;
|
|
1176
|
+
};
|
|
1132
1177
|
var hasSeenGate = (key, storageOverride, testingOverride) => {
|
|
1133
1178
|
if (testingOverride != null ? testingOverride : isCoachmarkTesting()) return false;
|
|
1134
|
-
const storage = storageOverride != null ? storageOverride : getCoachmarkStorage();
|
|
1179
|
+
const storage = validateGateStorage(storageOverride != null ? storageOverride : getCoachmarkStorage());
|
|
1135
1180
|
if (!storage) return false;
|
|
1136
1181
|
try {
|
|
1137
1182
|
return storage.getItem(key) === SEEN_VALUE;
|
|
@@ -1141,7 +1186,7 @@ var hasSeenGate = (key, storageOverride, testingOverride) => {
|
|
|
1141
1186
|
};
|
|
1142
1187
|
var markSeenGate = (key, storageOverride, testingOverride) => {
|
|
1143
1188
|
if (testingOverride != null ? testingOverride : isCoachmarkTesting()) return;
|
|
1144
|
-
const storage = storageOverride != null ? storageOverride : getCoachmarkStorage();
|
|
1189
|
+
const storage = validateGateStorage(storageOverride != null ? storageOverride : getCoachmarkStorage());
|
|
1145
1190
|
if (!storage) return;
|
|
1146
1191
|
try {
|
|
1147
1192
|
storage.setItem(key, SEEN_VALUE);
|
|
@@ -1334,7 +1379,7 @@ var globalSlot = globalThis;
|
|
|
1334
1379
|
var getCurrentSessionId = () => globalSlot[CURRENT_SESSION_ID_SLOT];
|
|
1335
1380
|
|
|
1336
1381
|
// src/reviews/runtime.ts
|
|
1337
|
-
var resolveStorage = (override) => override != null ? override : getCoachmarkStorage();
|
|
1382
|
+
var resolveStorage = (override) => validateGateStorage(override != null ? override : getCoachmarkStorage());
|
|
1338
1383
|
var NO_STORAGE_WARNED_SLOT = /* @__PURE__ */ Symbol.for(
|
|
1339
1384
|
"@wireai/activation:gateStorageWarned"
|
|
1340
1385
|
);
|