Move src into codec, protocol, messages, session, client and server
Mirror / push (push) Has been cancelled
Test / lint (pull_request) Successful in 22s
Test / test (18) (pull_request) Successful in 32s
Test / test (20) (pull_request) Successful in 29s
Test / test (22) (pull_request) Successful in 32s
Test / test (24) (pull_request) Successful in 29s
Test / test (26) (pull_request) Successful in 36s

This commit is contained in:
2026-09-30 20:15:04 +02:00
parent 108eb1e5b2
commit 980e9d4569
79 changed files with 573 additions and 610 deletions
+2 -2
View File
@@ -1,7 +1,7 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import type { PduParams, PduParamsInput } from '../src/defs/commands.ts';
import { cmds, cmdsById, commandNameById, isCommandName } from '../src/defs/commands.ts';
import type { PduParams, PduParamsInput } from '../src/codec/commands.ts';
import { cmds, cmdsById, commandNameById, isCommandName } from '../src/codec/commands.ts';
describe('command table', () => {
test('every command is reachable by name and by id', () => {
+8 -8
View File
@@ -1,16 +1,16 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import { bindToSmsc, dummySmsc } from './dummy-smsc.ts';
import { client } from '../src/client.ts';
import { client } from '../src/client/client.ts';
import { closeAfter } from './teardown.ts';
import { consts } from '../src/defs/constants.ts';
import { consts } from '../src/codec/constants.ts';
import { decodeMessage } from '../src/message.ts';
import { dlrFromPdu } from '../src/dlr.ts';
import { encodingByDataCoding, encodings } from '../src/defs/encodings.ts';
import { objToPdu, pduToObj } from '../src/pdu.ts';
import { paramNumber } from '../src/defs/types.ts';
import { server } from '../src/server.ts';
import type { PduObject } from '../src/pdu.ts';
import { dlrFromPdu } from '../src/protocol/receipt.ts';
import { encodingByDataCoding, encodings } from '../src/codec/encodings.ts';
import { objToPdu, pduToObj } from '../src/codec/pdu.ts';
import { paramNumber } from '../src/codec/field-types.ts';
import { server } from '../src/server/server.ts';
import type { PduObject } from '../src/codec/pdu.ts';
const from = '46701113311';
const to = '46709771337';
+4 -4
View File
@@ -1,10 +1,10 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import { consts } from '../src/defs/constants.ts';
import { dlrFromPdu, parseReceipt, receiptCodes } from '../src/dlr.ts';
import { consts } from '../src/codec/constants.ts';
import { dlrFromPdu, parseReceipt, receiptCodes } from '../src/protocol/receipt.ts';
import { encodeMessage } from '../src/message.ts';
import { objToPdu, pduToObj } from '../src/pdu.ts';
import type { PduObject, TlvInputs } from '../src/pdu.ts';
import { objToPdu, pduToObj } from '../src/codec/pdu.ts';
import type { PduObject, TlvInputs } from '../src/codec/pdu.ts';
const receiptText = 'id:0195f0c7 sub:001 dlvrd:001 submit date:2508251430 done date:2508251431 stat:DELIVRD err:000 text:hello there';
+5 -5
View File
@@ -2,12 +2,12 @@ import assert from 'node:assert/strict';
import net from 'node:net';
import type { Session } from '../src/session.ts';
import type { TestContext } from 'node:test';
import { PduFramer } from '../src/pdu-framer.ts';
import { client } from '../src/client.ts';
import { PduFramer } from '../src/codec/framer.ts';
import { client } from '../src/client/client.ts';
import { closeAfter, closeListenerAfter } from './teardown.ts';
import { consts } from '../src/defs/constants.ts';
import { objToPdu, pduReturn, pduToObj } from '../src/pdu.ts';
import { uuidv7 } from '../src/uuid.ts';
import { consts } from '../src/codec/constants.ts';
import { objToPdu, pduReturn, pduToObj } from '../src/codec/pdu.ts';
import { uuidv7 } from '../src/protocol/uuid.ts';
export type DummySmsc = {
/** Writes a delivery receipt to the ESME, its body spelled as the test names it. */
+1 -1
View File
@@ -1,6 +1,6 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import { dataCodingByEncoding, detect, encodingByDataCoding, encodings, isEncodingName, unencodable } from '../src/defs/encodings.ts';
import { dataCodingByEncoding, detect, encodingByDataCoding, encodings, isEncodingName, unencodable } from '../src/codec/encodings.ts';
describe('ASCII (GSM 03.38)', () => {
const samples: [string, number[]][] = [
+1 -1
View File
@@ -1,6 +1,6 @@
import assert from 'node:assert/strict';
import test from 'node:test';
import { errorFrom } from '../src/error-from.ts';
import { errorFrom } from '../src/result.ts';
test('carries an Error through and describes anything else, including what String() refuses', () => {
const original = new Error('the original');
+4 -4
View File
@@ -3,11 +3,11 @@ import test, { describe } from 'node:test';
import reference from 'smpp';
import type { ReferenceSession } from 'smpp';
import type { Sms } from '../src/sms.ts';
import { client } from '../src/client.ts';
import { client } from '../src/client/client.ts';
import { closeAfter } from './teardown.ts';
import { concatInfo } from '../src/udh.ts';
import { objToPdu, pduToObj } from '../src/pdu.ts';
import { server } from '../src/server.ts';
import { concatInfo } from '../src/protocol/udh.ts';
import { objToPdu, pduToObj } from '../src/codec/pdu.ts';
import { server } from '../src/server/server.ts';
import { splitMessage } from '../src/message.ts';
/**
+8 -8
View File
@@ -1,19 +1,19 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import type { PduObjectInput } from '../src/pdu.ts';
import type { SendSmsDeps } from '../src/send-sms.ts';
import type { PduObjectInput } from '../src/codec/pdu.ts';
import type { SendSmsDeps } from '../src/messages/submit.ts';
import type { Session } from '../src/session.ts';
import type { Sms } from '../src/sms.ts';
import type { TestContext } from 'node:test';
import { bindToSmsc, dummySmsc } from './dummy-smsc.ts';
import { client } from '../src/client.ts';
import { client } from '../src/client/client.ts';
import { closeAfter } from './teardown.ts';
import { messageClassOf } from '../src/defs/encodings.ts';
import { paramNumber } from '../src/defs/types.ts';
import { pduToObj } from '../src/pdu.ts';
import { server } from '../src/server.ts';
import { messageClassOf } from '../src/codec/encodings.ts';
import { paramNumber } from '../src/codec/field-types.ts';
import { pduToObj } from '../src/codec/pdu.ts';
import { server } from '../src/server/server.ts';
import { silentLog } from '../src/log.ts';
import { submitSms } from '../src/send-sms.ts';
import { submitSms } from '../src/messages/submit.ts';
const from = '46701113311';
const to = '46709771337';
+1 -1
View File
@@ -1,6 +1,6 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import type { EncodingName } from '../src/defs/encodings.ts';
import type { EncodingName } from '../src/codec/encodings.ts';
import {
bitCount,
decodeMessage,
+7 -7
View File
@@ -1,16 +1,16 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import type { PduObjectInput } from '../src/pdu.ts';
import type { SendSmsDeps } from '../src/send-sms.ts';
import type { PduObjectInput } from '../src/codec/pdu.ts';
import type { SendSmsDeps } from '../src/messages/submit.ts';
import type { Session } from '../src/session.ts';
import type { SubmitMessagingMode } from '../src/defs/constants.ts';
import type { SubmitMessagingMode } from '../src/codec/constants.ts';
import type { TestContext } from 'node:test';
import { bindToSmsc, dummySmsc } from './dummy-smsc.ts';
import { consts, submitMessagingModes } from '../src/defs/constants.ts';
import { paramNumber } from '../src/defs/types.ts';
import { pduToObj } from '../src/pdu.ts';
import { consts, submitMessagingModes } from '../src/codec/constants.ts';
import { paramNumber } from '../src/codec/field-types.ts';
import { pduToObj } from '../src/codec/pdu.ts';
import { silentLog } from '../src/log.ts';
import { submitSms } from '../src/send-sms.ts';
import { submitSms } from '../src/messages/submit.ts';
const from = '46701113311';
const to = '46709771337';
+5 -5
View File
@@ -1,12 +1,12 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import type { Dlr, Receipt } from '../src/dlr.ts';
import type { Dlr, Receipt } from '../src/protocol/receipt.ts';
import type { MessageDlr } from '../src/session.ts';
import type { PduObject, TlvInputs } from '../src/pdu.ts';
import type { PduObject, TlvInputs } from '../src/codec/pdu.ts';
import { bindToSmsc, dummySmsc } from './dummy-smsc.ts';
import { consts } from '../src/defs/constants.ts';
import { dlrFromPdu, parseReceipt, receiptCodes, transientStates } from '../src/dlr.ts';
import { objToPdu, pduToObj } from '../src/pdu.ts';
import { consts } from '../src/codec/constants.ts';
import { dlrFromPdu, parseReceipt, receiptCodes, transientStates } from '../src/protocol/receipt.ts';
import { objToPdu, pduToObj } from '../src/codec/pdu.ts';
/**
* Receipt bodies as commercial operators document them, from `interop-tests/research/operator-quirks.md`
+2 -2
View File
@@ -1,7 +1,7 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import { PduFramer } from '../src/pdu-framer.ts';
import { objToPdu } from '../src/pdu.ts';
import { PduFramer } from '../src/codec/framer.ts';
import { objToPdu } from '../src/codec/pdu.ts';
function pdu(seqNr: number): Buffer {
const { buffer } = objToPdu({ cmdName: 'enquire_link', seqNr });
+4 -4
View File
@@ -1,9 +1,9 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import { PduRefusedError, refusalAnswer } from '../src/pdu-refusal.ts';
import { isCommand, isResp, objToPdu, pduReturn, pduToObj } from '../src/pdu.ts';
import { paramText } from '../src/defs/types.ts';
import { isTlvName, tlvsById } from '../src/defs/tlvs.ts';
import { PduRefusedError, refusalAnswer } from '../src/codec/refusal.ts';
import { isCommand, isResp, objToPdu, pduReturn, pduToObj } from '../src/codec/pdu.ts';
import { paramText } from '../src/codec/field-types.ts';
import { isTlvName, tlvsById } from '../src/codec/tlvs.ts';
function encode(...args: Parameters<typeof objToPdu>): Buffer {
const { buffer, err } = objToPdu(...args);
+2 -2
View File
@@ -1,6 +1,6 @@
import assert from 'node:assert/strict';
import type { PduObjectInput } from '../src/pdu.ts';
import { objToPdu } from '../src/pdu.ts';
import type { PduObjectInput } from '../src/codec/pdu.ts';
import { objToPdu } from '../src/codec/pdu.ts';
/** The octets a test writes straight to a socket, which objToPdu builds for every valid PDU. */
export function pduBytes(input: PduObjectInput): Buffer {
+6 -6
View File
@@ -1,16 +1,16 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import type { Dlr } from '../src/dlr.ts';
import type { Dlr } from '../src/protocol/receipt.ts';
import type { Session } from '../src/session.ts';
import type { Sms } from '../src/sms.ts';
import type { SmppLog } from '../src/log.ts';
import type { SmppServer } from '../src/server.ts';
import type { SmppServer } from '../src/server/server.ts';
import type { TestContext } from 'node:test';
import { PduRefusedError } from '../src/pdu-refusal.ts';
import { client } from '../src/client.ts';
import { PduRefusedError } from '../src/codec/refusal.ts';
import { client } from '../src/client/client.ts';
import { closeAfter } from './teardown.ts';
import { isCommand, objToPdu } from '../src/pdu.ts';
import { server } from '../src/server.ts';
import { isCommand, objToPdu } from '../src/codec/pdu.ts';
import { server } from '../src/server/server.ts';
function once<T>(register: (resolve: (value: T) => void) => void): Promise<T> {
return new Promise<T>((resolve, reject) => {
+25 -24
View File
@@ -1,42 +1,43 @@
import assert from 'node:assert/strict';
import net from 'node:net';
import test, { describe } from 'node:test';
import type { Collected, LostGroup } from '../src/reassembly.ts';
import type { Dlr } from '../src/dlr.ts';
import type { ErrorName } from '../src/defs/errors.ts';
import type { IncomingRequestsOptions } from '../src/incoming-requests.ts';
import type { HeldMessagesOptions, MessageHold } from '../src/held-messages.ts';
import type { MessageState } from '../src/defs/constants.ts';
import type { Collected, LostGroup } from '../src/messages/reassembly.ts';
import type { Dlr } from '../src/protocol/receipt.ts';
import type { ErrorName } from '../src/codec/statuses.ts';
import type { IncomingRequestsOptions } from '../src/session/requests-in.ts';
import type { HeldMessagesOptions, MessageHold } from '../src/session/held-messages.ts';
import type { MessageState } from '../src/codec/constants.ts';
import type { MessageDlr } from '../src/session.ts';
import type { PduObject, PduObjectInput } from '../src/pdu.ts';
import type { PduObject, PduObjectInput } from '../src/codec/pdu.ts';
import type { Result } from '../src/result.ts';
import type { SendSmsResult } from '../src/send-sms.ts';
import type { SendSmsResult } from '../src/messages/submit.ts';
import type { SmppLog } from '../src/log.ts';
import type { Sms } from '../src/sms.ts';
import type { SmppServer } from '../src/server.ts';
import type { SmppServer } from '../src/server/server.ts';
import type { TestContext } from 'node:test';
import { HeldMessages } from '../src/held-messages.ts';
import { IncomingRequests, refusedSegmentStatus } from '../src/incoming-requests.ts';
import { HeldMessages } from '../src/session/held-messages.ts';
import { IncomingRequests, refusedSegmentStatus } from '../src/session/requests-in.ts';
import { UnansweredError } from '../src/unanswered-error.ts';
import { createSms } from '../src/sms.ts';
import { LinkLife } from '../src/link-life.ts';
import { SendWindow } from '../src/send-window.ts';
import { Reassembler, decodeSegments } from '../src/reassembly.ts';
import { SendWindow } from '../src/session/send-window.ts';
import { Reassembler, decodeSegments } from '../src/messages/reassembly.ts';
import { Session } from '../src/session.ts';
import { DlrMerger } from '../src/dlr-merger.ts';
import { PduRefusedError } from '../src/pdu-refusal.ts';
import { objToPdu } from '../src/pdu.ts';
import { checkSessionOptions, defaults, standsInFor } from '../src/session-options.ts';
import { client } from '../src/client.ts';
import { DlrMerger } from '../src/messages/receipt-merge.ts';
import { PduRefusedError } from '../src/codec/refusal.ts';
import { objToPdu } from '../src/codec/pdu.ts';
import { checkSessionOptions, defaults } from '../src/options.ts';
import { standsInFor } from '../src/protocol/bind.ts';
import { client } from '../src/client/client.ts';
import { closeAfter, closeListenerAfter } from './teardown.ts';
import { concatOf } from '../src/concat.ts';
import { consts } from '../src/defs/constants.ts';
import { errors } from '../src/defs/errors.ts';
import { paramNumber, paramText } from '../src/defs/types.ts';
import { server } from '../src/server.ts';
import { concatOf } from '../src/protocol/concat.ts';
import { consts } from '../src/codec/constants.ts';
import { errors } from '../src/codec/statuses.ts';
import { paramNumber, paramText } from '../src/codec/field-types.ts';
import { server } from '../src/server/server.ts';
import { silentLog } from '../src/log.ts';
import { splitMessage } from '../src/message.ts';
import { submitSms, submitSmParams } from '../src/send-sms.ts';
import { submitSms, submitSmParams } from '../src/messages/submit.ts';
async function startServer(
t: TestContext,
+14 -13
View File
@@ -1,25 +1,26 @@
import assert from 'node:assert/strict';
import net from 'node:net';
import test, { describe } from 'node:test';
import type { Dlr } from '../src/dlr.ts';
import type { PduObject, PduObjectInput } from '../src/pdu.ts';
import type { Dlr } from '../src/protocol/receipt.ts';
import type { PduObject, PduObjectInput } from '../src/codec/pdu.ts';
import type { Sms } from '../src/sms.ts';
import type { ServerOptions, SmppServer } from '../src/server.ts';
import type { ServerOptions, SmppServer } from '../src/server/server.ts';
import type { SmppLog } from '../src/log.ts';
import type { TestContext } from 'node:test';
import type { VoidResult } from '../src/result.ts';
import { DlrMerger } from '../src/dlr-merger.ts';
import { PduFramer } from '../src/pdu-framer.ts';
import { DlrMerger } from '../src/messages/receipt-merge.ts';
import { PduFramer } from '../src/codec/framer.ts';
import { ReconnectLoop } from '../src/reconnect-loop.ts';
import { Session, bindCommands } from '../src/session.ts';
import { checkSessionOptions } from '../src/session-options.ts';
import { client } from '../src/client.ts';
import { Session } from '../src/session.ts';
import { bindCommands } from '../src/protocol/bind.ts';
import { checkSessionOptions } from '../src/options.ts';
import { client } from '../src/client/client.ts';
import { closeAfter, closeListenerAfter } from './teardown.ts';
import { consts } from '../src/defs/constants.ts';
import { PduRefusedError } from '../src/pdu-refusal.ts';
import { isCommand, objToPdu, pduReturn, pduToObj } from '../src/pdu.ts';
import { paramText } from '../src/defs/types.ts';
import { server } from '../src/server.ts';
import { consts } from '../src/codec/constants.ts';
import { PduRefusedError } from '../src/codec/refusal.ts';
import { isCommand, objToPdu, pduReturn, pduToObj } from '../src/codec/pdu.ts';
import { paramText } from '../src/codec/field-types.ts';
import { server } from '../src/server/server.ts';
import { bareTlvHeader, pduBytes, shortened, truncatedTlv, withUnknownCmdId } from './raw-pdus.ts';
import { silentLog } from '../src/log.ts';
import { splitMessage } from '../src/message.ts';
+1 -1
View File
@@ -1,6 +1,6 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import { normaliseSmsId, parseSegmentId, respIdParams, segmentId } from '../src/sms-id.ts';
import { normaliseSmsId, parseSegmentId, respIdParams, segmentId } from '../src/protocol/message-ids.ts';
describe('normaliseSmsId()', () => {
test('reads an id the length a message_id may be, and leaves a longer one alone', () => {
+1 -1
View File
@@ -1,4 +1,4 @@
import type { CloseOptions } from '../src/session-options.ts';
import type { CloseOptions } from '../src/options.ts';
import type { Server, Socket } from 'node:net';
import type { TestContext } from 'node:test';
+3 -3
View File
@@ -2,14 +2,14 @@ import assert from 'node:assert/strict';
import net from 'node:net';
import test, { describe } from 'node:test';
import type { Sms } from '../src/sms.ts';
import type { SmppServer } from '../src/server.ts';
import type { SmppServer } from '../src/server/server.ts';
import type { TestContext } from 'node:test';
import { Log } from '@larvit/log';
import { TLSSocket } from 'node:tls';
import { client } from '../src/client.ts';
import { client } from '../src/client/client.ts';
import { closeAfter } from './teardown.ts';
import { generateKeyPairSync, randomBytes, sign } from 'node:crypto';
import { server } from '../src/server.ts';
import { server } from '../src/server/server.ts';
const host = 'localhost';
+3 -3
View File
@@ -1,8 +1,8 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import type { DestAddress, UnsuccessSme } from '../src/defs/types.ts';
import { paramText, types } from '../src/defs/types.ts';
import { tlvs } from '../src/defs/tlvs.ts';
import type { DestAddress, UnsuccessSme } from '../src/codec/field-types.ts';
import { paramText, types } from '../src/codec/field-types.ts';
import { tlvs } from '../src/codec/tlvs.ts';
describe('integers', () => {
test('int8 reads, sizes and writes one octet', () => {
+6 -6
View File
@@ -1,14 +1,14 @@
import assert from 'node:assert/strict';
import test, { describe } from 'node:test';
import type { PduObjectInput } from '../src/pdu.ts';
import type { SendSmsDeps, SendSmsInput } from '../src/send-sms.ts';
import type { PduObjectInput } from '../src/codec/pdu.ts';
import type { SendSmsDeps, SendSmsInput } from '../src/messages/submit.ts';
import { bindToSmsc, dummySmsc } from './dummy-smsc.ts';
import { decodeMessage } from '../src/message.ts';
import { messageOctets } from '../src/message-body.ts';
import { objToPdu, pduToObj } from '../src/pdu.ts';
import { paramNumber, paramText } from '../src/defs/types.ts';
import { messageOctets } from '../src/protocol/message-body.ts';
import { objToPdu, pduToObj } from '../src/codec/pdu.ts';
import { paramNumber, paramText } from '../src/codec/field-types.ts';
import { silentLog } from '../src/log.ts';
import { submitSms } from '../src/send-sms.ts';
import { submitSms } from '../src/messages/submit.ts';
const from = '46701113311';
const to = '46709771337';