@dszp/netsapiens-lib 0.1.9 → 0.3.1
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 +95 -1
- package/dist/eligibility.d.ts.map +1 -0
- package/dist/eligibility.js.map +1 -0
- package/dist/html.d.ts.map +1 -0
- package/dist/html.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/inventory.d.ts +153 -0
- package/dist/inventory.d.ts.map +1 -0
- package/dist/inventory.js +234 -0
- package/dist/inventory.js.map +1 -0
- package/dist/jwt.d.ts.map +1 -0
- package/dist/jwt.js.map +1 -0
- package/dist/mermaid.d.ts.map +1 -0
- package/dist/mermaid.js.map +1 -0
- package/dist/model.d.ts +18 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js.map +1 -0
- package/dist/nsAuthClient.d.ts.map +1 -0
- package/dist/nsAuthClient.js.map +1 -0
- package/dist/nsClient.d.ts +19 -0
- package/dist/nsClient.d.ts.map +1 -0
- package/dist/nsClient.js +40 -3
- package/dist/nsClient.js.map +1 -0
- package/dist/nsDevice.d.ts.map +1 -0
- package/dist/nsDevice.js.map +1 -0
- package/dist/nsSubscriptions.d.ts.map +1 -0
- package/dist/nsSubscriptions.js.map +1 -0
- package/dist/nsSynchronous.d.ts.map +1 -0
- package/dist/nsSynchronous.js.map +1 -0
- package/dist/nsWriteClient.d.ts.map +1 -0
- package/dist/nsWriteClient.js.map +1 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js.map +1 -0
- package/dist/principal.d.ts.map +1 -0
- package/dist/principal.js.map +1 -0
- package/dist/raster.d.ts.map +1 -0
- package/dist/raster.js.map +1 -0
- package/dist/resolver.d.ts.map +1 -0
- package/dist/resolver.js.map +1 -0
- package/dist/sensitivity.d.ts.map +1 -0
- package/dist/sensitivity.js.map +1 -0
- package/dist/themes.d.ts.map +1 -0
- package/dist/themes.js.map +1 -0
- package/package.json +7 -3
- package/src/eligibility.selftest.ts +95 -0
- package/src/eligibility.ts +118 -0
- package/src/html.ts +407 -0
- package/src/index.ts +120 -0
- package/src/inventory.selftest.ts +213 -0
- package/src/inventory.ts +324 -0
- package/src/jwt.selftest.ts +145 -0
- package/src/jwt.ts +491 -0
- package/src/mermaid.ts +169 -0
- package/src/model.ts +130 -0
- package/src/nsAuthClient.selftest.ts +60 -0
- package/src/nsAuthClient.ts +102 -0
- package/src/nsClient.selftest.ts +173 -0
- package/src/nsClient.ts +323 -0
- package/src/nsDevice.selftest.ts +190 -0
- package/src/nsDevice.ts +167 -0
- package/src/nsSubscriptions.selftest.ts +486 -0
- package/src/nsSubscriptions.ts +638 -0
- package/src/nsSynchronous.selftest.ts +63 -0
- package/src/nsSynchronous.ts +98 -0
- package/src/nsWriteClient.selftest.ts +104 -0
- package/src/nsWriteClient.ts +157 -0
- package/src/policy.ts +123 -0
- package/src/principal.selftest.ts +118 -0
- package/src/principal.ts +101 -0
- package/src/raster.selftest.ts +42 -0
- package/src/raster.ts +79 -0
- package/src/resolver.selftest.ts +225 -0
- package/src/resolver.ts +1115 -0
- package/src/sensitivity.ts +40 -0
- package/src/themes.ts +142 -0
package/README.md
CHANGED
|
@@ -61,7 +61,101 @@ Two composites are provided because they're multi-read and worth getting right o
|
|
|
61
61
|
| `listDomains(client)` | `/domains` → `{domain, description, locked}[]` |
|
|
62
62
|
| `fetchDomainSnapshot(client, domain, opts?)` | `/domains/{d}` plus, in parallel, `timeframes`, `users`, `callqueues`, `phonenumbers`, `autoattendants` — then per-user `answerrules`. Individual reads fail **soft** (a missing collection yields `[]`, not a thrown snapshot). |
|
|
63
63
|
|
|
64
|
-
The snapshot is the routing subset — what `resolveFlow()` needs. It is not a full domain export.
|
|
64
|
+
The snapshot is the routing subset — what `resolveFlow()` needs. It is not a full domain export. Three
|
|
65
|
+
options pull in more, each off by default because each costs an extra read: `includeAddresses` (E911
|
|
66
|
+
address records), `includeSmsNumbers` (SMS-enabled numbers), and `includeDevices` (per-extension device
|
|
67
|
+
records — one `/devices` read per real extension, so it is the expensive one on a domain with many seats).
|
|
68
|
+
All three exist for `countDomainInventory()` below; a caller that only resolves call flows never needs them.
|
|
69
|
+
|
|
70
|
+
A per-extension devices read that fails with anything other than 404 does not abort the snapshot — the
|
|
71
|
+
extension stays in `users` with no entry in `devicesByUser`, and its number is recorded in
|
|
72
|
+
`snapshot.deviceReadFailures` instead. `deviceReadFailures` is set whenever `includeDevices` was asked
|
|
73
|
+
for (an empty array when nothing failed) and absent otherwise, so a device-count consumer can tell a
|
|
74
|
+
genuine zero from a read that never completed rather than silently undercounting.
|
|
75
|
+
|
|
76
|
+
### Counting a domain: `countDomainInventory`
|
|
77
|
+
|
|
78
|
+
`countDomainInventory(snapshot)` is pure — it fetches nothing, and turns a `Snapshot` (from
|
|
79
|
+
`fetchDomainSnapshot`, a backup, or a fixture) into a fixed tree of numeric leaves along the dimensions a
|
|
80
|
+
VoIP operator actually sells on:
|
|
81
|
+
|
|
82
|
+
- `extensions` — real seats (users whose `service-code` is empty or not `system-*`), by `total`, by
|
|
83
|
+
`byScope` (raw `user-scope`), by `byServiceCode`, by `byDeviceCount` (`'0' | '1' | '2' | '3+'`), and by
|
|
84
|
+
device presence: `withAnyDevice` / `withNoDevice` (`anyDevice = deviceCount > 0 || teams` — a handset
|
|
85
|
+
or a Teams connector, either counts; the two partition `total`).
|
|
86
|
+
- `systemUsers` — `system-aa`, `system-queue`, `system-tod` and friends: `total` and `byServiceCode`.
|
|
87
|
+
Informational, never compared against a seat count.
|
|
88
|
+
- `transcriptionEnabled` — extensions with voicemail transcription on.
|
|
89
|
+
- `teamsConnected` — extensions with a Microsoft Teams connector device (SIP `aor` local part
|
|
90
|
+
`<ext>t`). That connector is excluded from `devices`/`deviceCount`: it is a connector, not a handset.
|
|
91
|
+
- `dids` — phone numbers, `total` / `tollFree` / `local`.
|
|
92
|
+
- `e911Addresses`, `smsNumbers` — record counts.
|
|
93
|
+
- `devices` — `total` and `byModel`, real extensions only (a system user's device is not a seat).
|
|
94
|
+
|
|
95
|
+
Every leaf is a number, on purpose: a caller reconciling this against a billing system addresses a
|
|
96
|
+
dimension by dotted path (`extensions.total`, `dids.tollFree`) without this module knowing anything
|
|
97
|
+
about the billing side. It also **never returns a device record** — a NetSapiens device carries the SIP
|
|
98
|
+
registration password, so returning totals and model names only means a consumer showing inventory to
|
|
99
|
+
an operator cannot accidentally show a credential.
|
|
100
|
+
|
|
101
|
+
For a complete count, fetch the snapshot with all three extra options — `dids`, `e911Addresses`,
|
|
102
|
+
`smsNumbers` and `devices` all read as zero against a snapshot that omitted them:
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
import { fetchDomainSnapshot, countDomainInventory } from '@dszp/netsapiens-lib';
|
|
106
|
+
|
|
107
|
+
const snapshot = await fetchDomainSnapshot(client, 'acme.example', {
|
|
108
|
+
includeAddresses: true, includeSmsNumbers: true, includeDevices: true,
|
|
109
|
+
});
|
|
110
|
+
const inventory = countDomainInventory(snapshot);
|
|
111
|
+
inventory.dids.tollFree; // e.g. 3
|
|
112
|
+
inventory.devices.byModel; // e.g. { "Yealink T54W": 12, "(unknown)": 1 }
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
#### Listing a domain: `listDomainInventory`
|
|
116
|
+
|
|
117
|
+
`countDomainInventory` is a fold over `listDomainInventory(snapshot)`, which returns the per-item lists
|
|
118
|
+
behind those counts — for anything that shows an operator *which* extension or number a count refers to,
|
|
119
|
+
not just how many. Same allowlist discipline as the counts: a device's MAC, SIP credentials and email
|
|
120
|
+
never appear, though names and sites now do (that's the point of a list). Each item carries a stable
|
|
121
|
+
`key`:
|
|
122
|
+
|
|
123
|
+
| List | Item key |
|
|
124
|
+
|---|---|
|
|
125
|
+
| `extensions`, `systemUsers` | `ext:<user>` |
|
|
126
|
+
| `dids` | `did:<phonenumber>` |
|
|
127
|
+
| `e911Addresses` | `addr:<emergency-address-id>` |
|
|
128
|
+
| `smsNumbers` | `sms:<number>` |
|
|
129
|
+
|
|
130
|
+
`itemsFor(detail, path)` returns the items behind one of `countDomainInventory`'s dotted-path counts —
|
|
131
|
+
the same vocabulary, so a UI that lets an operator drill from a count into the records behind it needs
|
|
132
|
+
no separate lookup table:
|
|
133
|
+
|
|
134
|
+
| Path | Items |
|
|
135
|
+
|---|---|
|
|
136
|
+
| `extensions.total` | every extension |
|
|
137
|
+
| `extensions.byScope.<scope>` | extensions with that `user-scope` |
|
|
138
|
+
| `extensions.byServiceCode.<code>` | extensions with that `service-code` (`extensions.byServiceCode.` selects the empty code) |
|
|
139
|
+
| `extensions.byDeviceCount.<0\|1\|2\|3+>` | extensions in that device-count bucket |
|
|
140
|
+
| `extensions.withAnyDevice` / `extensions.withNoDevice` | extensions with / without any device (handset or Teams connector) |
|
|
141
|
+
| `transcriptionEnabled` | extensions with transcription on |
|
|
142
|
+
| `teamsConnected` | extensions with a Teams connector |
|
|
143
|
+
| `dids.total` / `dids.tollFree` / `dids.local` | phone numbers |
|
|
144
|
+
| `e911Addresses` | E911 addresses |
|
|
145
|
+
| `smsNumbers` | SMS numbers |
|
|
146
|
+
|
|
147
|
+
`devices.*` and `systemUsers.*` paths return `undefined` — not `[]` — because there is no item list for
|
|
148
|
+
them (devices aren't compared individually; system users are informational, never compared). An
|
|
149
|
+
unrecognized path also returns `undefined`. `itemLabel(item)` gives one display line for any item, for
|
|
150
|
+
an operator-facing accept/reject list:
|
|
151
|
+
|
|
152
|
+
```ts
|
|
153
|
+
import { listDomainInventory, itemsFor, itemLabel } from '@dszp/netsapiens-lib';
|
|
154
|
+
|
|
155
|
+
const detail = listDomainInventory(snapshot);
|
|
156
|
+
const premium = itemsFor(detail, 'extensions.byServiceCode.premium') ?? [];
|
|
157
|
+
premium.map(itemLabel); // e.g. ["101 — Jane Doe, North", "102"]
|
|
158
|
+
```
|
|
65
159
|
|
|
66
160
|
### Read/write split by charter
|
|
67
161
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eligibility.d.ts","sourceRoot":"","sources":["../src/eligibility.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,YAAY,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,iGAAiG;IACjG,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mEAAmE;IACnE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iFAAiF;IACjF,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC3E,wEAAwE;IACxE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,gBAAgB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,qGAAqG;IACrG,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC;AAC/D,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAgBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAqC3G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eligibility.js","sourceRoot":"","sources":["../src/eligibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../src/html.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAwDzD;;;qEAGqE;AACrE,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAGjD;AAUD,MAAM,WAAW,WAAW;IAC1B;sGACkG;IAClG,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wCAAwC;IACxC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2DAA2D;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,2FAA2F;IAC3F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;sFAQkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;qGACiG;IACjG,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACtB;AAED;4FAC4F;AAC5F,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,GAAE,WAAgB,GAAG,MAAM,CAmB3E;AAED,kGAAkG;AAClG,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,GAAE,WAAgB,GAAG,MAAM,CAEnF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAK9F;AAED,wDAAwD;AACxD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,GAAE,cAAmB,GAAG,MAAM,CAkExG"}
|
package/dist/html.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../src/html.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export { THEMES, DEFAULT_LIGHT_THEME, DEFAULT_DARK_THEME, NODE_LIGHT, NODE_DARK,
|
|
|
16
16
|
export { renderGalleryHtml, renderFlowCards, renderFlowCard, mermaidBootstrap, flowAnchorId, type GalleryOptions, type CardOptions, } from './html.js';
|
|
17
17
|
export { resolveSvgSize, rasterizerScript } from './raster.js';
|
|
18
18
|
export { NsClient, NsApiError, assertBareServer, fetchDomainSnapshot, listDomains, asArray, type NsClientConfig, type FetchSnapshotOptions } from './nsClient.js';
|
|
19
|
+
export { countDomainInventory, listDomainInventory, itemsFor, itemLabel, type DomainInventory, type DomainInventoryDetail, type ExtensionItem, type NumberItem, type AddressItem, type SmsItem, type InventoryItem } from './inventory.js';
|
|
19
20
|
export { NsWriteClient, type NsWriteClientConfig } from './nsWriteClient.js';
|
|
20
21
|
export { supportsSynchronous, SYNCHRONOUS_OPERATIONS, type SynchronousMethod, type SynchronousOperation, } from './nsSynchronous.js';
|
|
21
22
|
export { ensureNsDevice, generateSipPassword, SIP_PW_FIELD, type NsDeviceWriter, type EnsureNsDeviceOptions, type EnsureNsDeviceResult, } from './nsDevice.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,7 @@ export { THEMES, DEFAULT_LIGHT_THEME, DEFAULT_DARK_THEME, NODE_LIGHT, NODE_DARK,
|
|
|
15
15
|
export { renderGalleryHtml, renderFlowCards, renderFlowCard, mermaidBootstrap, flowAnchorId, } from './html.js';
|
|
16
16
|
export { resolveSvgSize, rasterizerScript } from './raster.js';
|
|
17
17
|
export { NsClient, NsApiError, assertBareServer, fetchDomainSnapshot, listDomains, asArray } from './nsClient.js';
|
|
18
|
+
export { countDomainInventory, listDomainInventory, itemsFor, itemLabel } from './inventory.js';
|
|
18
19
|
export { NsWriteClient } from './nsWriteClient.js';
|
|
19
20
|
export { supportsSynchronous, SYNCHRONOUS_OPERATIONS, } from './nsSynchronous.js';
|
|
20
21
|
export { ensureNsDevice, generateSipPassword, SIP_PW_FIELD, } from './nsDevice.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAuC,MAAM,cAAc,CAAC;AAC9E,OAAO,EACL,MAAM,EACN,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,GAKV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,YAAY,GAGb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAkD,MAAM,eAAe,CAAC;AAClK,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAA6I,MAAM,gBAAgB,CAAC;AAC3O,OAAO,EAAE,aAAa,EAA4B,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GAGvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,YAAY,GAIb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAiD,MAAM,mBAAmB,CAAC;AAC7G,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAUlB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,MAAM,EACN,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,QAAQ,EACR,kBAAkB,GAOnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAwB,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,YAAY,GAIb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,WAAW,EACX,SAAS,EACT,GAAG,GAIJ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,GAOpB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Count a domain's inventory along the dimensions a VoIP operator actually sells on.
|
|
3
|
+
*
|
|
4
|
+
* Pure: it fetches nothing. Feed it a `Snapshot` — from `fetchDomainSnapshot`, a backup, or a
|
|
5
|
+
* fixture — and it returns fixed, named counts and nothing else.
|
|
6
|
+
*
|
|
7
|
+
* ## Counts, and the lists behind them
|
|
8
|
+
*
|
|
9
|
+
* A device record from NetSapiens carries the SIP registration password. `listDomainInventory` builds
|
|
10
|
+
* per-item lists — an extension's name and site, a number's kind, an address's label — from an
|
|
11
|
+
* allowlist of named fields, and `countDomainInventory` is a fold over those same lists. Either way, a
|
|
12
|
+
* device's MAC and SIP credentials never appear: nothing here returns a raw record, and nothing should
|
|
13
|
+
* be added that does.
|
|
14
|
+
*
|
|
15
|
+
* ## Every countable dimension is a numeric leaf
|
|
16
|
+
*
|
|
17
|
+
* A caller comparing this against a billing system addresses a dimension by dotted path —
|
|
18
|
+
* `extensions.total`, `dids.tollFree`, `extensions.byServiceCode.premium`. Keeping every leaf numeric
|
|
19
|
+
* is what makes that possible without this module knowing anything about the billing side.
|
|
20
|
+
*
|
|
21
|
+
* ## What counts as an extension
|
|
22
|
+
*
|
|
23
|
+
* A user whose `service-code` is empty or does not begin with `system-`. NetSapiens models auto
|
|
24
|
+
* attendants, queues and time-of-day routers as users, and counting them as seats would overstate
|
|
25
|
+
* every domain that has any. They are counted separately, as information, and never compared.
|
|
26
|
+
*/
|
|
27
|
+
import type { Snapshot } from './model.js';
|
|
28
|
+
export interface DomainInventory {
|
|
29
|
+
/** Real seats: users whose `service-code` is empty or non-`system-*`. */
|
|
30
|
+
extensions: {
|
|
31
|
+
total: number;
|
|
32
|
+
/** Keyed by the raw `user-scope` value, e.g. "Basic User". */
|
|
33
|
+
byScope: Record<string, number>;
|
|
34
|
+
/** Keyed by the raw `service-code`, the empty string included. */
|
|
35
|
+
byServiceCode: Record<string, number>;
|
|
36
|
+
/** Multi-device extensions are a real billing shape (a restaurant with four handsets on one seat). */
|
|
37
|
+
byDeviceCount: Record<'0' | '1' | '2' | '3+', number>;
|
|
38
|
+
/** Extensions with `anyDevice` true — handset or Teams connector, either counts. */
|
|
39
|
+
withAnyDevice: number;
|
|
40
|
+
/** The rest: no handset and no Teams connector. `withAnyDevice + withNoDevice === total`. */
|
|
41
|
+
withNoDevice: number;
|
|
42
|
+
};
|
|
43
|
+
/** `system-aa`, `system-queue`, `system-tod` and any other `system-*` code. Informational. */
|
|
44
|
+
systemUsers: {
|
|
45
|
+
total: number;
|
|
46
|
+
byServiceCode: Record<string, number>;
|
|
47
|
+
};
|
|
48
|
+
/** Extensions whose `voicemail-transcription-enabled` is anything but empty or `no`. */
|
|
49
|
+
transcriptionEnabled: number;
|
|
50
|
+
/**
|
|
51
|
+
* Extensions with a Microsoft Teams connector device — one whose SIP `aor` local part is the
|
|
52
|
+
* extension number followed by `t` (`1000t`), which is how the TeamMate connector registers.
|
|
53
|
+
* That device is NOT counted under `devices`: it is a connector, not a handset.
|
|
54
|
+
*/
|
|
55
|
+
teamsConnected: number;
|
|
56
|
+
/** Phone numbers on the domain, split by NANP toll-free prefix. */
|
|
57
|
+
dids: {
|
|
58
|
+
total: number;
|
|
59
|
+
tollFree: number;
|
|
60
|
+
local: number;
|
|
61
|
+
};
|
|
62
|
+
/** E911 address records on the domain. */
|
|
63
|
+
e911Addresses: number;
|
|
64
|
+
/** SMS-enabled numbers on the domain. */
|
|
65
|
+
smsNumbers: number;
|
|
66
|
+
/** Devices belonging to real extensions only — a system user's device is not a seat. */
|
|
67
|
+
devices: {
|
|
68
|
+
total: number;
|
|
69
|
+
byModel: Record<string, number>;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* One extension, as a billing consumer may see it. An allowlist, not a record: name, site and the
|
|
74
|
+
* device MODELS are here; the MAC, the SIP credentials and the email are not, and nothing here should
|
|
75
|
+
* be added that carries one.
|
|
76
|
+
*/
|
|
77
|
+
export interface ExtensionItem {
|
|
78
|
+
/**
|
|
79
|
+
* `ext:<user>` — the stable identity a consumer records a decision against. When `user` is blank
|
|
80
|
+
* the key falls back to `ext:~<hash>` of the remaining fields (see {@link listDomainInventory}),
|
|
81
|
+
* which keeps two differently-named nameless records apart and deliberately merges two whose
|
|
82
|
+
* fields are identical.
|
|
83
|
+
*/
|
|
84
|
+
key: string;
|
|
85
|
+
ext: string;
|
|
86
|
+
/** `name-first-name` + `name-last-name`, trimmed; `''` when both are blank. */
|
|
87
|
+
name: string;
|
|
88
|
+
/** The user's `site`; `''` when none. */
|
|
89
|
+
site: string;
|
|
90
|
+
scope: string;
|
|
91
|
+
/** `service-code`, `''` included. */
|
|
92
|
+
serviceCode: string;
|
|
93
|
+
transcription: boolean;
|
|
94
|
+
/** See {@link DomainInventory.teamsConnected}. */
|
|
95
|
+
teams: boolean;
|
|
96
|
+
/** Handsets only — the Teams connector is excluded. */
|
|
97
|
+
deviceCount: number;
|
|
98
|
+
/** `device-models-model` per handset, `(unknown)` when blank. Never the MAC. */
|
|
99
|
+
deviceModels: string[];
|
|
100
|
+
/** `deviceCount > 0 || teams` — has a device of any kind, handset or connector. */
|
|
101
|
+
anyDevice: boolean;
|
|
102
|
+
}
|
|
103
|
+
export interface NumberItem {
|
|
104
|
+
key: string;
|
|
105
|
+
number: string;
|
|
106
|
+
kind: 'local' | 'tollFree';
|
|
107
|
+
}
|
|
108
|
+
export interface AddressItem {
|
|
109
|
+
key: string;
|
|
110
|
+
label: string;
|
|
111
|
+
}
|
|
112
|
+
export interface SmsItem {
|
|
113
|
+
key: string;
|
|
114
|
+
number: string;
|
|
115
|
+
}
|
|
116
|
+
export type InventoryItem = ExtensionItem | NumberItem | AddressItem | SmsItem;
|
|
117
|
+
export interface DomainInventoryDetail {
|
|
118
|
+
/** Real seats only, same rule as the count. */
|
|
119
|
+
extensions: ExtensionItem[];
|
|
120
|
+
/** Informational, never compared. */
|
|
121
|
+
systemUsers: ExtensionItem[];
|
|
122
|
+
dids: NumberItem[];
|
|
123
|
+
e911Addresses: AddressItem[];
|
|
124
|
+
smsNumbers: SmsItem[];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* The items behind every count. Pure. Fields are copied by name from an allowlist; no record passes
|
|
128
|
+
* through, so a device's MAC or SIP password cannot reach a consumer by accident.
|
|
129
|
+
*
|
|
130
|
+
* ## Item keys, and what happens when the identity field is blank
|
|
131
|
+
*
|
|
132
|
+
* Each item's `key` is `<kind>:<the record's own id>` — `ext:1000`, `did:13175550100`,
|
|
133
|
+
* `addr:a-1`, `sms:13175550100`. NetSapiens will hand back a record whose id is blank, and a key of
|
|
134
|
+
* `addr:` shared by two records is worse than no key: a consumer recording an acceptance against it
|
|
135
|
+
* accepts both. So a blank id falls back to `<kind>:~<hash>`, an FNV-1a over whatever else names the
|
|
136
|
+
* record — an address by its name, street line and city; an extension by scope, service code and
|
|
137
|
+
* name; a number or SMS number by the (blank) number itself. No seed carries the array index, so a
|
|
138
|
+
* re-fetch that reorders the list returns the same keys. Two blank records that agree on every
|
|
139
|
+
* remaining field therefore land on ONE key rather than two: a number with no number is not a
|
|
140
|
+
* countable thing, and one derived row is more honest than two that shuffle. A blank id is a
|
|
141
|
+
* provisioning fault to fix; the fallback only keeps the distinguishable ones apart until it is.
|
|
142
|
+
*/
|
|
143
|
+
export declare function listDomainInventory(snapshot: Snapshot): DomainInventoryDetail;
|
|
144
|
+
/** The counts, as a fold over {@link listDomainInventory} so the two can never disagree. */
|
|
145
|
+
export declare function countDomainInventory(snapshot: Snapshot): DomainInventory;
|
|
146
|
+
/**
|
|
147
|
+
* The items a `counts` path selects — the same vocabulary of dotted paths `countDomainInventory`
|
|
148
|
+
* answers numbers for. `undefined` means that dimension has no item list (devices, system users, or a
|
|
149
|
+
* path this module does not know), which is a different fact from an empty list.
|
|
150
|
+
*/
|
|
151
|
+
export declare function itemsFor(detail: DomainInventoryDetail, path: string): InventoryItem[] | undefined;
|
|
152
|
+
/** One line naming an item to a person: what an operator sees when they accept it, and what history keeps. */
|
|
153
|
+
export declare function itemLabel(item: InventoryItem): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../src/inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/** NANP toll-free area codes, 800 through 888. A number outside this set is counted local. */
|
|
2
|
+
const TOLL_FREE = new Set(['800', '833', '844', '855', '866', '877', '888']);
|
|
3
|
+
const str = (v) => (typeof v === 'string' ? v.trim() : v == null ? '' : String(v).trim());
|
|
4
|
+
const bump = (into, key) => { into[key] = (into[key] ?? 0) + 1; };
|
|
5
|
+
/**
|
|
6
|
+
* FNV-1a over a string, as eight lowercase hex digits. Synchronous and dependency-free on purpose:
|
|
7
|
+
* `crypto.subtle.digest` is async, and an item key is built inside a pure, synchronous fold.
|
|
8
|
+
* This is an identity, not a checksum — nothing here defends against a chosen collision.
|
|
9
|
+
*/
|
|
10
|
+
function hash32(s) {
|
|
11
|
+
let h = 0x811c9dc5;
|
|
12
|
+
for (let i = 0; i < s.length; i++) {
|
|
13
|
+
h ^= s.charCodeAt(i);
|
|
14
|
+
h = Math.imul(h, 0x01000193);
|
|
15
|
+
}
|
|
16
|
+
return (h >>> 0).toString(16).padStart(8, '0');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* `<kind>:<id>` when the record names itself, `<kind>:~<hash of seed>` when it does not. A blank
|
|
20
|
+
* identity field would otherwise hand every nameless record of that kind the same key, and a
|
|
21
|
+
* consumer keying decisions by it would accept one record and believe it had accepted all of them.
|
|
22
|
+
* The `~` is what tells a reader the key is derived rather than the system's own id.
|
|
23
|
+
*
|
|
24
|
+
* The seed is the record's OWN fields and nothing else — never its position in the array. A key that
|
|
25
|
+
* depended on position would change under a re-fetch that reordered the list, orphaning every
|
|
26
|
+
* decision a consumer had recorded against it. The price is that two blank records whose remaining
|
|
27
|
+
* fields are identical collapse onto ONE key, and that is the right trade: a number with no number
|
|
28
|
+
* is not a countable thing, and one derived row is more honest than two that shuffle.
|
|
29
|
+
*/
|
|
30
|
+
function identityKey(kind, id, seed) {
|
|
31
|
+
return id ? `${kind}:${id}` : `${kind}:~${hash32(seed)}`;
|
|
32
|
+
}
|
|
33
|
+
/** Is this user one of NetSapiens' internal routing objects rather than a seat? */
|
|
34
|
+
function isSystemUser(user) {
|
|
35
|
+
return str(user['service-code']).toLowerCase().startsWith('system-');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Toll-free test on the digits alone. `+1 (800) 555-0102`, `18005550102` and `8005550102` all read as
|
|
39
|
+
* toll-free; anything that is not a 10- or 11-digit NANP number is counted local rather than guessed at.
|
|
40
|
+
*/
|
|
41
|
+
function isTollFree(raw) {
|
|
42
|
+
const digits = raw.replace(/\D+/g, '');
|
|
43
|
+
const nanp = digits.length === 11 && digits.startsWith('1') ? digits.slice(1) : digits;
|
|
44
|
+
return nanp.length === 10 && TOLL_FREE.has(nanp.slice(0, 3));
|
|
45
|
+
}
|
|
46
|
+
/** The local part of a device's `aor` (`sip:103t@acme.example` → `103t`), read only to test for Teams. */
|
|
47
|
+
function aorLocal(device) {
|
|
48
|
+
const a = str(device.aor).replace(/^sip:/i, '');
|
|
49
|
+
const at = a.indexOf('@');
|
|
50
|
+
return at === -1 ? a : a.slice(0, at);
|
|
51
|
+
}
|
|
52
|
+
function extensionItem(u, devices) {
|
|
53
|
+
const ext = str(u.user);
|
|
54
|
+
// The Teams test is `<ext>t`, so a blank ext would read every device whose aor local part is a
|
|
55
|
+
// bare `t` as a connector. No extension number, no Teams claim.
|
|
56
|
+
const handsets = ext ? devices.filter((d) => aorLocal(d) !== `${ext}t`) : devices;
|
|
57
|
+
const transcription = str(u['voicemail-transcription-enabled']).toLowerCase();
|
|
58
|
+
const teams = handsets.length !== devices.length;
|
|
59
|
+
const name = `${str(u['name-first-name'])} ${str(u['name-last-name'])}`.trim();
|
|
60
|
+
const scope = str(u['user-scope']);
|
|
61
|
+
const serviceCode = str(u['service-code']);
|
|
62
|
+
return {
|
|
63
|
+
key: identityKey('ext', ext, `${scope}\u0000${serviceCode}\u0000${name}`),
|
|
64
|
+
ext,
|
|
65
|
+
name,
|
|
66
|
+
site: str(u.site),
|
|
67
|
+
scope,
|
|
68
|
+
serviceCode,
|
|
69
|
+
transcription: transcription !== '' && transcription !== 'no',
|
|
70
|
+
teams,
|
|
71
|
+
deviceCount: handsets.length,
|
|
72
|
+
// A device whose model is blank is listed under a named bucket rather than dropped: a missing
|
|
73
|
+
// model is a provisioning gap worth seeing, and a silently smaller total hides it.
|
|
74
|
+
deviceModels: handsets.map((d) => str(d['device-models-model']) || '(unknown)'),
|
|
75
|
+
anyDevice: handsets.length > 0 || teams,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The items behind every count. Pure. Fields are copied by name from an allowlist; no record passes
|
|
80
|
+
* through, so a device's MAC or SIP password cannot reach a consumer by accident.
|
|
81
|
+
*
|
|
82
|
+
* ## Item keys, and what happens when the identity field is blank
|
|
83
|
+
*
|
|
84
|
+
* Each item's `key` is `<kind>:<the record's own id>` — `ext:1000`, `did:13175550100`,
|
|
85
|
+
* `addr:a-1`, `sms:13175550100`. NetSapiens will hand back a record whose id is blank, and a key of
|
|
86
|
+
* `addr:` shared by two records is worse than no key: a consumer recording an acceptance against it
|
|
87
|
+
* accepts both. So a blank id falls back to `<kind>:~<hash>`, an FNV-1a over whatever else names the
|
|
88
|
+
* record — an address by its name, street line and city; an extension by scope, service code and
|
|
89
|
+
* name; a number or SMS number by the (blank) number itself. No seed carries the array index, so a
|
|
90
|
+
* re-fetch that reorders the list returns the same keys. Two blank records that agree on every
|
|
91
|
+
* remaining field therefore land on ONE key rather than two: a number with no number is not a
|
|
92
|
+
* countable thing, and one derived row is more honest than two that shuffle. A blank id is a
|
|
93
|
+
* provisioning fault to fix; the fallback only keeps the distinguishable ones apart until it is.
|
|
94
|
+
*/
|
|
95
|
+
export function listDomainInventory(snapshot) {
|
|
96
|
+
const users = Array.isArray(snapshot.users) ? snapshot.users : [];
|
|
97
|
+
const devicesByUser = (snapshot.devicesByUser ?? {});
|
|
98
|
+
const phonenumbers = Array.isArray(snapshot.phonenumbers) ? snapshot.phonenumbers : [];
|
|
99
|
+
const addresses = Array.isArray(snapshot.addresses) ? snapshot.addresses : [];
|
|
100
|
+
const smsnumbers = Array.isArray(snapshot.smsnumbers) ? snapshot.smsnumbers : [];
|
|
101
|
+
const extensions = [];
|
|
102
|
+
const systemUsers = [];
|
|
103
|
+
for (let i = 0; i < users.length; i++) {
|
|
104
|
+
const u = users[i];
|
|
105
|
+
const ext = str(u.user);
|
|
106
|
+
// A blank `user` is looked up too, rather than handed an empty device list. This library's own
|
|
107
|
+
// `fetchDomainSnapshot` never files anything under `''` — it skips a blank extension before the
|
|
108
|
+
// device read (see `nsClient.ts`) — so this lookup can only hit in a snapshot built elsewhere,
|
|
109
|
+
// from a backup or a fixture. Dropping it would read as a clean match on a domain that has
|
|
110
|
+
// handsets nobody can see; two blank users sharing one list overcount instead, which is a
|
|
111
|
+
// visible drift an operator investigates, and that is the failure worth having.
|
|
112
|
+
const item = extensionItem(u, devicesByUser[ext] ?? []);
|
|
113
|
+
(isSystemUser(u) ? systemUsers : extensions).push(item);
|
|
114
|
+
}
|
|
115
|
+
const dids = phonenumbers.map((p) => {
|
|
116
|
+
const number = str(p.phonenumber);
|
|
117
|
+
const kind = isTollFree(number) ? 'tollFree' : 'local';
|
|
118
|
+
return { key: identityKey('did', number, JSON.stringify({ number, kind })), number, kind };
|
|
119
|
+
});
|
|
120
|
+
const e911Addresses = addresses.map((a, i) => {
|
|
121
|
+
const id = str(a['emergency-address-id']);
|
|
122
|
+
const name = str(a['address-name']);
|
|
123
|
+
const line1 = str(a['address-line-1']);
|
|
124
|
+
const city = str(a['address-city']);
|
|
125
|
+
const where = [line1, city].filter(Boolean).join(', ');
|
|
126
|
+
const label = [name, where].filter(Boolean).join(' — ');
|
|
127
|
+
return {
|
|
128
|
+
key: identityKey('addr', id, `${name} ${line1} ${city}`),
|
|
129
|
+
// An address with neither an id nor anything to name it by is still a row an operator has to
|
|
130
|
+
// decide about, so it gets a positional label rather than an empty cell.
|
|
131
|
+
label: label || id || `(address ${i + 1})`,
|
|
132
|
+
};
|
|
133
|
+
});
|
|
134
|
+
const smsNumbers = smsnumbers.map((s) => {
|
|
135
|
+
const number = str(s.number);
|
|
136
|
+
return { key: identityKey('sms', number, JSON.stringify({ number })), number };
|
|
137
|
+
});
|
|
138
|
+
return { extensions, systemUsers, dids, e911Addresses, smsNumbers };
|
|
139
|
+
}
|
|
140
|
+
/** The counts, as a fold over {@link listDomainInventory} so the two can never disagree. */
|
|
141
|
+
export function countDomainInventory(snapshot) {
|
|
142
|
+
const d = listDomainInventory(snapshot);
|
|
143
|
+
const inv = {
|
|
144
|
+
extensions: { total: 0, byScope: {}, byServiceCode: {}, byDeviceCount: { '0': 0, '1': 0, '2': 0, '3+': 0 }, withAnyDevice: 0, withNoDevice: 0 },
|
|
145
|
+
systemUsers: { total: d.systemUsers.length, byServiceCode: {} },
|
|
146
|
+
transcriptionEnabled: 0,
|
|
147
|
+
teamsConnected: 0,
|
|
148
|
+
dids: { total: d.dids.length, tollFree: 0, local: 0 },
|
|
149
|
+
e911Addresses: d.e911Addresses.length,
|
|
150
|
+
smsNumbers: d.smsNumbers.length,
|
|
151
|
+
devices: { total: 0, byModel: {} },
|
|
152
|
+
};
|
|
153
|
+
for (const s of d.systemUsers)
|
|
154
|
+
bump(inv.systemUsers.byServiceCode, s.serviceCode);
|
|
155
|
+
for (const x of d.extensions) {
|
|
156
|
+
inv.extensions.total++;
|
|
157
|
+
if (x.scope)
|
|
158
|
+
bump(inv.extensions.byScope, x.scope);
|
|
159
|
+
bump(inv.extensions.byServiceCode, x.serviceCode);
|
|
160
|
+
if (x.transcription)
|
|
161
|
+
inv.transcriptionEnabled++;
|
|
162
|
+
if (x.teams)
|
|
163
|
+
inv.teamsConnected++;
|
|
164
|
+
if (x.anyDevice)
|
|
165
|
+
inv.extensions.withAnyDevice++;
|
|
166
|
+
else
|
|
167
|
+
inv.extensions.withNoDevice++;
|
|
168
|
+
const bucket = x.deviceCount >= 3 ? '3+' : String(x.deviceCount);
|
|
169
|
+
inv.extensions.byDeviceCount[bucket]++;
|
|
170
|
+
inv.devices.total += x.deviceCount;
|
|
171
|
+
for (const m of x.deviceModels)
|
|
172
|
+
bump(inv.devices.byModel, m);
|
|
173
|
+
}
|
|
174
|
+
for (const n of d.dids) {
|
|
175
|
+
if (n.kind === 'tollFree')
|
|
176
|
+
inv.dids.tollFree++;
|
|
177
|
+
else
|
|
178
|
+
inv.dids.local++;
|
|
179
|
+
}
|
|
180
|
+
return inv;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* The items a `counts` path selects — the same vocabulary of dotted paths `countDomainInventory`
|
|
184
|
+
* answers numbers for. `undefined` means that dimension has no item list (devices, system users, or a
|
|
185
|
+
* path this module does not know), which is a different fact from an empty list.
|
|
186
|
+
*/
|
|
187
|
+
export function itemsFor(detail, path) {
|
|
188
|
+
const ex = detail.extensions;
|
|
189
|
+
if (path === 'extensions.total')
|
|
190
|
+
return ex;
|
|
191
|
+
if (path.startsWith('extensions.byScope.')) {
|
|
192
|
+
const v = path.slice('extensions.byScope.'.length);
|
|
193
|
+
return ex.filter((x) => x.scope === v);
|
|
194
|
+
}
|
|
195
|
+
if (path.startsWith('extensions.byServiceCode.')) {
|
|
196
|
+
const v = path.slice('extensions.byServiceCode.'.length);
|
|
197
|
+
return ex.filter((x) => x.serviceCode === v);
|
|
198
|
+
}
|
|
199
|
+
if (path.startsWith('extensions.byDeviceCount.')) {
|
|
200
|
+
const v = path.slice('extensions.byDeviceCount.'.length);
|
|
201
|
+
return ex.filter((x) => (x.deviceCount >= 3 ? '3+' : String(x.deviceCount)) === v);
|
|
202
|
+
}
|
|
203
|
+
if (path === 'extensions.withAnyDevice')
|
|
204
|
+
return ex.filter((x) => x.anyDevice);
|
|
205
|
+
if (path === 'extensions.withNoDevice')
|
|
206
|
+
return ex.filter((x) => !x.anyDevice);
|
|
207
|
+
if (path === 'transcriptionEnabled')
|
|
208
|
+
return ex.filter((x) => x.transcription);
|
|
209
|
+
if (path === 'teamsConnected')
|
|
210
|
+
return ex.filter((x) => x.teams);
|
|
211
|
+
if (path === 'dids.total')
|
|
212
|
+
return detail.dids;
|
|
213
|
+
if (path === 'dids.tollFree')
|
|
214
|
+
return detail.dids.filter((n) => n.kind === 'tollFree');
|
|
215
|
+
if (path === 'dids.local')
|
|
216
|
+
return detail.dids.filter((n) => n.kind === 'local');
|
|
217
|
+
if (path === 'e911Addresses')
|
|
218
|
+
return detail.e911Addresses;
|
|
219
|
+
if (path === 'smsNumbers')
|
|
220
|
+
return detail.smsNumbers;
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
/** One line naming an item to a person: what an operator sees when they accept it, and what history keeps. */
|
|
224
|
+
export function itemLabel(item) {
|
|
225
|
+
if ('ext' in item) {
|
|
226
|
+
const who = [item.name, item.site].filter(Boolean).join(', ');
|
|
227
|
+
return who ? `${item.ext} — ${who}` : item.ext;
|
|
228
|
+
}
|
|
229
|
+
if ('kind' in item)
|
|
230
|
+
return item.kind === 'tollFree' ? `${item.number} (toll-free)` : item.number;
|
|
231
|
+
if ('label' in item)
|
|
232
|
+
return item.label;
|
|
233
|
+
return item.number;
|
|
234
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../src/inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,MAAM,WAAW,UAAU;IACzB;mFAC+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;iDAE6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;sGACkG;IAClG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC5C,0DAA0D;IAC1D,WAAW,EAAE,OAAO,CAAC;IACrB,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD;0FACsF;IACtF,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;IAC/C,qCAAqC;IACrC,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAeD,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIlD;AAaD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,iBAAiB;IAChC,qGAAqG;IACrG,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB;;4DAEwD;IACxD,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB;uCACmC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AACD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAE,iBAAsB,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAuB5H;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW1F;AAYD,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CA2B3E;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,kGAAkG;IAClG,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,UAAU,CAAC;CACrB;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAmB,GAAG,YAAY,CAoDzF;AAMD,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAClD,yDAAyD;IACzD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E;AAED;;;;;;;;;GASG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IAEzC,OAAO,CAAC,QAAQ,CAAC,UAAU;IADvC,OAAO,CAAC,KAAK,CAAmE;gBACnD,UAAU,SAAO;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IASjD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9E,gGAAgG;IAChG,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED,4EAA4E;AAC5E,wBAAsB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS9E;AAED,MAAM,WAAW,aAAa;IAC5B,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,+FAA+F;IAC/F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6DAA6D;IAC7D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iGAAiG;IACjG,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC;;4DAEwD;IACxD,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC;mCAC+B;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;mDAE+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAwGpF"}
|
package/dist/jwt.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.js","sourceRoot":"","sources":["../src/jwt.ts"],"names":[],"mappings":"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"}
|