@milaboratories/pframes-rs-serv 1.0.108 → 1.1.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.
Files changed (82) hide show
  1. package/package.json +18 -18
  2. package/src/serve.ts +13 -25
  3. package/dist/export.cjs +0 -20
  4. package/dist/export.cjs.map +0 -1
  5. package/dist/export.d.ts +0 -3
  6. package/dist/export.d.ts.map +0 -1
  7. package/dist/export.js +0 -18
  8. package/dist/export.js.map +0 -1
  9. package/dist/fs-store.cjs +0 -91
  10. package/dist/fs-store.cjs.map +0 -1
  11. package/dist/fs-store.d.ts +0 -14
  12. package/dist/fs-store.d.ts.map +0 -1
  13. package/dist/fs-store.js +0 -89
  14. package/dist/fs-store.js.map +0 -1
  15. package/dist/handler.cjs +0 -171
  16. package/dist/handler.cjs.map +0 -1
  17. package/dist/handler.d.ts +0 -15
  18. package/dist/handler.d.ts.map +0 -1
  19. package/dist/handler.js +0 -168
  20. package/dist/handler.js.map +0 -1
  21. package/dist/index.cjs +0 -18
  22. package/dist/index.cjs.map +0 -1
  23. package/dist/index.d.ts +0 -6
  24. package/dist/index.d.ts.map +0 -1
  25. package/dist/index.js +0 -6
  26. package/dist/index.js.map +0 -1
  27. package/dist/parquet-server.cjs +0 -109
  28. package/dist/parquet-server.cjs.map +0 -1
  29. package/dist/parquet-server.d.ts +0 -24
  30. package/dist/parquet-server.d.ts.map +0 -1
  31. package/dist/parquet-server.js +0 -105
  32. package/dist/parquet-server.js.map +0 -1
  33. package/dist/serve.cjs +0 -112
  34. package/dist/serve.cjs.map +0 -1
  35. package/dist/serve.d.ts +0 -7
  36. package/dist/serve.d.ts.map +0 -1
  37. package/dist/serve.js +0 -110
  38. package/dist/serve.js.map +0 -1
  39. package/dist/utils/etag.cjs +0 -10
  40. package/dist/utils/etag.cjs.map +0 -1
  41. package/dist/utils/etag.d.ts +0 -15
  42. package/dist/utils/etag.d.ts.map +0 -1
  43. package/dist/utils/etag.js +0 -8
  44. package/dist/utils/etag.js.map +0 -1
  45. package/dist/utils/filename.cjs +0 -15
  46. package/dist/utils/filename.cjs.map +0 -1
  47. package/dist/utils/filename.d.ts +0 -4
  48. package/dist/utils/filename.d.ts.map +0 -1
  49. package/dist/utils/filename.js +0 -13
  50. package/dist/utils/filename.js.map +0 -1
  51. package/dist/utils/headers.cjs +0 -29
  52. package/dist/utils/headers.cjs.map +0 -1
  53. package/dist/utils/headers.d.ts +0 -31
  54. package/dist/utils/headers.d.ts.map +0 -1
  55. package/dist/utils/headers.js +0 -26
  56. package/dist/utils/headers.js.map +0 -1
  57. package/dist/utils/index.d.ts +0 -8
  58. package/dist/utils/index.d.ts.map +0 -1
  59. package/dist/utils/method.cjs +0 -16
  60. package/dist/utils/method.cjs.map +0 -1
  61. package/dist/utils/method.d.ts +0 -6
  62. package/dist/utils/method.d.ts.map +0 -1
  63. package/dist/utils/method.js +0 -12
  64. package/dist/utils/method.js.map +0 -1
  65. package/dist/utils/options.cjs +0 -135
  66. package/dist/utils/options.cjs.map +0 -1
  67. package/dist/utils/options.d.ts +0 -64
  68. package/dist/utils/options.d.ts.map +0 -1
  69. package/dist/utils/options.js +0 -133
  70. package/dist/utils/options.js.map +0 -1
  71. package/dist/utils/range.cjs +0 -34
  72. package/dist/utils/range.cjs.map +0 -1
  73. package/dist/utils/range.d.ts +0 -4
  74. package/dist/utils/range.d.ts.map +0 -1
  75. package/dist/utils/range.js +0 -32
  76. package/dist/utils/range.js.map +0 -1
  77. package/dist/utils/status.cjs +0 -21
  78. package/dist/utils/status.cjs.map +0 -1
  79. package/dist/utils/status.d.ts +0 -17
  80. package/dist/utils/status.d.ts.map +0 -1
  81. package/dist/utils/status.js +0 -19
  82. package/dist/utils/status.js.map +0 -1
@@ -1,64 +0,0 @@
1
- import type { IncomingMessage } from 'node:http';
2
- import type { Etag } from './etag';
3
- export declare class Options {
4
- /**
5
- * See <https://datatracker.ietf.org/doc/html/rfc9110#name-if-match>
6
- *
7
- * Examples:
8
- *
9
- * ```text
10
- * If-Match: "xyzzy"
11
- * If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
12
- * If-Match: *
13
- * ```
14
- */
15
- private ifMatch;
16
- /**
17
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.2>
18
- *
19
- * Examples:
20
- *
21
- * ```text
22
- * If-None-Match: "xyzzy"
23
- * If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
24
- * If-None-Match: *
25
- * ```
26
- */
27
- private ifNoneMatch;
28
- /**
29
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.3>
30
- *
31
- * Examples:
32
- *
33
- * ```text
34
- * If-Modified-Since: Mon, 07 Jan 2002 19:43:36 GMT
35
- * ```
36
- */
37
- private ifModifiedSince;
38
- /**
39
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.4>
40
- *
41
- * Examples:
42
- *
43
- * ```text
44
- * If-Unmodified-Since: Mon, 07 Jan 2002 19:43:36 GMT
45
- * ```
46
- */
47
- private ifUnmodifiedSince;
48
- constructor(request: IncomingMessage);
49
- /**
50
- * RFC 9110 section 13.1.1: If-Match precondition evaluation
51
- * RFC 9110 section 13.1.4: If-Unmodified-Since precondition evaluation
52
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.1>
53
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.4>
54
- */
55
- preconditionFailed(etag: Etag, mtime: Date): boolean;
56
- /**
57
- * RFC 9110 section 13.1.2: If-None-Match precondition evaluation
58
- * RFC 9110 section 13.1.3: If-Modified-Since precondition evaluation
59
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.2>
60
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.3>
61
- */
62
- notModified(etag: Etag, mtime: Date): boolean;
63
- }
64
- //# sourceMappingURL=options.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/utils/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAmDnC,qBAAa,OAAO;IAClB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,OAAO,CAAmB;IAElC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,WAAW,CAAmB;IAEtC;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe,CAAmB;IAE1C;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB,CAAmB;gBAEhC,OAAO,EAAE,eAAe;IAWpC;;;;;OAKG;IACH,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO;IAcpD;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO;CAa9C"}
@@ -1,133 +0,0 @@
1
- class EtagMatch {
2
- etagMatch;
3
- constructor(etagMatch) {
4
- this.etagMatch = etagMatch;
5
- }
6
- static parse(etagMatch) {
7
- if (etagMatch === undefined)
8
- return null;
9
- if (etagMatch === '*') {
10
- return new EtagMatch({ type: 'wildcard' });
11
- }
12
- else {
13
- return new EtagMatch({
14
- type: 'match',
15
- value: etagMatch.split(',').map((etag) => etag.trim())
16
- });
17
- }
18
- }
19
- matches(etag) {
20
- switch (this.etagMatch.type) {
21
- case 'match':
22
- return this.etagMatch.value.includes(etag);
23
- case 'wildcard':
24
- return true;
25
- }
26
- }
27
- }
28
- class DateMatch {
29
- mtime;
30
- constructor(mtime) {
31
- this.mtime = mtime;
32
- }
33
- static parse(dateMatch) {
34
- if (dateMatch === undefined)
35
- return null;
36
- const time = Date.parse(dateMatch);
37
- if (isNaN(time))
38
- return null;
39
- return new DateMatch(new Date(time));
40
- }
41
- matches(mtime) {
42
- return this.mtime.getTime() / 1_000 === mtime.getTime() / 1_000;
43
- }
44
- }
45
- class Options {
46
- /**
47
- * See <https://datatracker.ietf.org/doc/html/rfc9110#name-if-match>
48
- *
49
- * Examples:
50
- *
51
- * ```text
52
- * If-Match: "xyzzy"
53
- * If-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
54
- * If-Match: *
55
- * ```
56
- */
57
- ifMatch;
58
- /**
59
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.2>
60
- *
61
- * Examples:
62
- *
63
- * ```text
64
- * If-None-Match: "xyzzy"
65
- * If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
66
- * If-None-Match: *
67
- * ```
68
- */
69
- ifNoneMatch;
70
- /**
71
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.3>
72
- *
73
- * Examples:
74
- *
75
- * ```text
76
- * If-Modified-Since: Mon, 07 Jan 2002 19:43:36 GMT
77
- * ```
78
- */
79
- ifModifiedSince;
80
- /**
81
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.4>
82
- *
83
- * Examples:
84
- *
85
- * ```text
86
- * If-Unmodified-Since: Mon, 07 Jan 2002 19:43:36 GMT
87
- * ```
88
- */
89
- ifUnmodifiedSince;
90
- constructor(request) {
91
- this.ifMatch = EtagMatch.parse(request.headers['if-match']);
92
- this.ifNoneMatch = EtagMatch.parse(request.headers['if-none-match']);
93
- this.ifModifiedSince = DateMatch.parse(request.headers['if-modified-since']);
94
- this.ifUnmodifiedSince = DateMatch.parse(request.headers['if-unmodified-since']);
95
- }
96
- /**
97
- * RFC 9110 section 13.1.1: If-Match precondition evaluation
98
- * RFC 9110 section 13.1.4: If-Unmodified-Since precondition evaluation
99
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.1>
100
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.4>
101
- */
102
- preconditionFailed(etag, mtime) {
103
- // If-Match precondition takes precedence
104
- if (this.ifMatch !== null && !this.ifMatch.matches(etag)) {
105
- return true;
106
- }
107
- // If-Unmodified-Since precondition (only if no If-Match header)
108
- if (this.ifMatch === null && this.ifUnmodifiedSince !== null) {
109
- return !this.ifUnmodifiedSince.matches(mtime);
110
- }
111
- return false;
112
- }
113
- /**
114
- * RFC 9110 section 13.1.2: If-None-Match precondition evaluation
115
- * RFC 9110 section 13.1.3: If-Modified-Since precondition evaluation
116
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.2>
117
- * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.3>
118
- */
119
- notModified(etag, mtime) {
120
- // If-None-Match takes precedence over If-Modified-Since
121
- if (this.ifNoneMatch !== null) {
122
- return this.ifNoneMatch.matches(etag);
123
- }
124
- // If-Modified-Since (only if no If-None-Match header)
125
- if (this.ifModifiedSince !== null) {
126
- return this.ifModifiedSince.matches(mtime);
127
- }
128
- return false;
129
- }
130
- }
131
-
132
- export { Options };
133
- //# sourceMappingURL=options.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"options.js","sources":["../../src/utils/options.ts"],"sourcesContent":["import type { IncomingMessage } from 'node:http';\nimport type { Etag } from './etag';\n\ntype EtagMatchType =\n | {\n type: 'match';\n value: Etag[];\n }\n | {\n type: 'wildcard';\n };\n\nclass EtagMatch {\n private constructor(private readonly etagMatch: EtagMatchType) {}\n\n static parse(etagMatch: string | undefined): EtagMatch | null {\n if (etagMatch === undefined) return null;\n if (etagMatch === '*') {\n return new EtagMatch({ type: 'wildcard' });\n } else {\n return new EtagMatch({\n type: 'match',\n value: etagMatch.split(',').map((etag) => etag.trim() as Etag)\n });\n }\n }\n\n matches(etag: Etag): boolean {\n switch (this.etagMatch.type) {\n case 'match':\n return this.etagMatch.value.includes(etag);\n case 'wildcard':\n return true;\n }\n }\n}\n\nclass DateMatch {\n private constructor(private readonly mtime: Date) {}\n\n static parse(dateMatch: string | undefined): DateMatch | null {\n if (dateMatch === undefined) return null;\n const time = Date.parse(dateMatch);\n if (isNaN(time)) return null;\n return new DateMatch(new Date(time));\n }\n\n matches(mtime: Date): boolean {\n return this.mtime.getTime() / 1_000 === mtime.getTime() / 1_000;\n }\n}\n\nexport class Options {\n /**\n * See <https://datatracker.ietf.org/doc/html/rfc9110#name-if-match>\n *\n * Examples:\n *\n * ```text\n * If-Match: \"xyzzy\"\n * If-Match: \"xyzzy\", \"r2d2xxxx\", \"c3piozzzz\"\n * If-Match: *\n * ```\n */\n private ifMatch: EtagMatch | null;\n\n /**\n * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.2>\n *\n * Examples:\n *\n * ```text\n * If-None-Match: \"xyzzy\"\n * If-None-Match: \"xyzzy\", \"r2d2xxxx\", \"c3piozzzz\"\n * If-None-Match: *\n * ```\n */\n private ifNoneMatch: EtagMatch | null;\n\n /**\n * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.3>\n *\n * Examples:\n *\n * ```text\n * If-Modified-Since: Mon, 07 Jan 2002 19:43:36 GMT\n * ```\n */\n private ifModifiedSince: DateMatch | null;\n\n /**\n * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.4>\n *\n * Examples:\n *\n * ```text\n * If-Unmodified-Since: Mon, 07 Jan 2002 19:43:36 GMT\n * ```\n */\n private ifUnmodifiedSince: DateMatch | null;\n\n constructor(request: IncomingMessage) {\n this.ifMatch = EtagMatch.parse(request.headers['if-match']);\n this.ifNoneMatch = EtagMatch.parse(request.headers['if-none-match']);\n this.ifModifiedSince = DateMatch.parse(\n request.headers['if-modified-since']\n );\n this.ifUnmodifiedSince = DateMatch.parse(\n request.headers['if-unmodified-since']\n );\n }\n\n /**\n * RFC 9110 section 13.1.1: If-Match precondition evaluation\n * RFC 9110 section 13.1.4: If-Unmodified-Since precondition evaluation\n * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.1>\n * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.4>\n */\n preconditionFailed(etag: Etag, mtime: Date): boolean {\n // If-Match precondition takes precedence\n if (this.ifMatch !== null && !this.ifMatch.matches(etag)) {\n return true;\n }\n\n // If-Unmodified-Since precondition (only if no If-Match header)\n if (this.ifMatch === null && this.ifUnmodifiedSince !== null) {\n return !this.ifUnmodifiedSince.matches(mtime);\n }\n\n return false;\n }\n\n /**\n * RFC 9110 section 13.1.2: If-None-Match precondition evaluation\n * RFC 9110 section 13.1.3: If-Modified-Since precondition evaluation\n * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.2>\n * See <https://datatracker.ietf.org/doc/html/rfc9110#section-13.1.3>\n */\n notModified(etag: Etag, mtime: Date): boolean {\n // If-None-Match takes precedence over If-Modified-Since\n if (this.ifNoneMatch !== null) {\n return this.ifNoneMatch.matches(etag);\n }\n\n // If-Modified-Since (only if no If-None-Match header)\n if (this.ifModifiedSince !== null) {\n return this.ifModifiedSince.matches(mtime);\n }\n\n return false;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- 'use strict';
2
-
3
- function parseRange(request) {
4
- const range = request.headers['range'];
5
- if (range === undefined)
6
- return undefined;
7
- const match = range.match(/^bytes=(\d*)-(\d*)$/);
8
- if (!match)
9
- return null;
10
- const [, startStr, endStr] = match;
11
- const start = startStr ? parseInt(startStr, 10) : null;
12
- const end = endStr ? parseInt(endStr, 10) : null;
13
- if ((start !== null && (isNaN(start) || start < 0)) ||
14
- (end !== null && (isNaN(end) || end < 0)) ||
15
- (start !== null && end !== null && start > end))
16
- return null;
17
- // Both start and end are specified - bounded range
18
- if (start !== null && end !== null) {
19
- return { type: 'bounded', start, end };
20
- }
21
- // Only start is specified - offset range (e.g., bytes=500-)
22
- if (start !== null && end === null) {
23
- return { type: 'offset', offset: start };
24
- }
25
- // Only end is specified - suffix range (e.g., bytes=-500)
26
- if (start === null && end !== null) {
27
- return { type: 'suffix', suffix: end };
28
- }
29
- // Neither start nor end specified (bytes=-) - invalid
30
- return null;
31
- }
32
-
33
- exports.parseRange = parseRange;
34
- //# sourceMappingURL=range.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"range.cjs","sources":["../../src/utils/range.ts"],"sourcesContent":["import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type { IncomingMessage } from 'node:http';\n\nexport function parseRange(\n request: IncomingMessage\n): PFrameInternal.HttpRange | null | undefined {\n const range = request.headers['range'];\n if (range === undefined) return undefined;\n\n const match = range.match(/^bytes=(\\d*)-(\\d*)$/);\n if (!match) return null;\n\n const [, startStr, endStr] = match;\n const start = startStr ? parseInt(startStr, 10) : null;\n const end = endStr ? parseInt(endStr, 10) : null;\n if (\n (start !== null && (isNaN(start) || start < 0)) ||\n (end !== null && (isNaN(end) || end < 0)) ||\n (start !== null && end !== null && start > end)\n )\n return null;\n\n // Both start and end are specified - bounded range\n if (start !== null && end !== null) {\n return { type: 'bounded', start, end };\n }\n\n // Only start is specified - offset range (e.g., bytes=500-)\n if (start !== null && end === null) {\n return { type: 'offset', offset: start };\n }\n\n // Only end is specified - suffix range (e.g., bytes=-500)\n if (start === null && end !== null) {\n return { type: 'suffix', suffix: end };\n }\n\n // Neither start nor end specified (bytes=-) - invalid\n return null;\n}\n"],"names":[],"mappings":";;AAGM,SAAU,UAAU,CACxB,OAAwB,EAAA;IAExB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,SAAS;IAEzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC;AAChD,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,IAAI;IAEvB,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,GAAG,KAAK;AAClC,IAAA,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,IAAI;AACtD,IAAA,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI;AAChD,IAAA,IACE,CAAC,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAC9C,SAAC,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;SACxC,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC;AAE/C,QAAA,OAAO,IAAI;;IAGb,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;QAClC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;IACxC;;IAGA,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;QAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;IAC1C;;IAGA,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;QAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;IACxC;;AAGA,IAAA,OAAO,IAAI;AACb;;;;"}
@@ -1,4 +0,0 @@
1
- import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';
2
- import type { IncomingMessage } from 'node:http';
3
- export declare function parseRange(request: IncomingMessage): PFrameInternal.HttpRange | null | undefined;
4
- //# sourceMappingURL=range.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../src/utils/range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,wBAAgB,UAAU,CACxB,OAAO,EAAE,eAAe,GACvB,cAAc,CAAC,SAAS,GAAG,IAAI,GAAG,SAAS,CAkC7C"}
@@ -1,32 +0,0 @@
1
- function parseRange(request) {
2
- const range = request.headers['range'];
3
- if (range === undefined)
4
- return undefined;
5
- const match = range.match(/^bytes=(\d*)-(\d*)$/);
6
- if (!match)
7
- return null;
8
- const [, startStr, endStr] = match;
9
- const start = startStr ? parseInt(startStr, 10) : null;
10
- const end = endStr ? parseInt(endStr, 10) : null;
11
- if ((start !== null && (isNaN(start) || start < 0)) ||
12
- (end !== null && (isNaN(end) || end < 0)) ||
13
- (start !== null && end !== null && start > end))
14
- return null;
15
- // Both start and end are specified - bounded range
16
- if (start !== null && end !== null) {
17
- return { type: 'bounded', start, end };
18
- }
19
- // Only start is specified - offset range (e.g., bytes=500-)
20
- if (start !== null && end === null) {
21
- return { type: 'offset', offset: start };
22
- }
23
- // Only end is specified - suffix range (e.g., bytes=-500)
24
- if (start === null && end !== null) {
25
- return { type: 'suffix', suffix: end };
26
- }
27
- // Neither start nor end specified (bytes=-) - invalid
28
- return null;
29
- }
30
-
31
- export { parseRange };
32
- //# sourceMappingURL=range.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"range.js","sources":["../../src/utils/range.ts"],"sourcesContent":["import type { PFrameInternal } from '@milaboratories/pl-model-middle-layer';\nimport type { IncomingMessage } from 'node:http';\n\nexport function parseRange(\n request: IncomingMessage\n): PFrameInternal.HttpRange | null | undefined {\n const range = request.headers['range'];\n if (range === undefined) return undefined;\n\n const match = range.match(/^bytes=(\\d*)-(\\d*)$/);\n if (!match) return null;\n\n const [, startStr, endStr] = match;\n const start = startStr ? parseInt(startStr, 10) : null;\n const end = endStr ? parseInt(endStr, 10) : null;\n if (\n (start !== null && (isNaN(start) || start < 0)) ||\n (end !== null && (isNaN(end) || end < 0)) ||\n (start !== null && end !== null && start > end)\n )\n return null;\n\n // Both start and end are specified - bounded range\n if (start !== null && end !== null) {\n return { type: 'bounded', start, end };\n }\n\n // Only start is specified - offset range (e.g., bytes=500-)\n if (start !== null && end === null) {\n return { type: 'offset', offset: start };\n }\n\n // Only end is specified - suffix range (e.g., bytes=-500)\n if (start === null && end !== null) {\n return { type: 'suffix', suffix: end };\n }\n\n // Neither start nor end specified (bytes=-) - invalid\n return null;\n}\n"],"names":[],"mappings":"AAGM,SAAU,UAAU,CACxB,OAAwB,EAAA;IAExB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS;AAAE,QAAA,OAAO,SAAS;IAEzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC;AAChD,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,IAAI;IAEvB,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,GAAG,KAAK;AAClC,IAAA,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,IAAI;AACtD,IAAA,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI;AAChD,IAAA,IACE,CAAC,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAC9C,SAAC,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;SACxC,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC;AAE/C,QAAA,OAAO,IAAI;;IAGb,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;QAClC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;IACxC;;IAGA,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;QAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;IAC1C;;IAGA,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;QAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;IACxC;;AAGA,IAAA,OAAO,IAAI;AACb;;;;"}
@@ -1,21 +0,0 @@
1
- 'use strict';
2
-
3
- /** HTTP status codes used in the parquet server handler */
4
- const StatusCode = {
5
- Ok: 200, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200>
6
- PartialContent: 206, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206>
7
- NotModified: 304, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304>
8
- BadRequest: 400, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400>
9
- Unauthorized: 401, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401>
10
- NotFound: 404, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404>
11
- MethodNotAllowed: 405, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405>
12
- RequestTimeout: 408, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408>
13
- Gone: 410, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410>
14
- PreconditionFailed: 412, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412>
15
- RangeNotSatisfiable: 416, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/416>
16
- InternalServerError: 500, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500>
17
- GatewayTimeout: 504 // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504>
18
- };
19
-
20
- exports.StatusCode = StatusCode;
21
- //# sourceMappingURL=status.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.cjs","sources":["../../src/utils/status.ts"],"sourcesContent":["/** HTTP status codes used in the parquet server handler */\nexport const StatusCode = {\n Ok: 200, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200>\n PartialContent: 206, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206>\n NotModified: 304, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304>\n BadRequest: 400, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400>\n Unauthorized: 401, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401>\n NotFound: 404, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404>\n MethodNotAllowed: 405, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405>\n RequestTimeout: 408, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408>\n Gone: 410, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410>\n PreconditionFailed: 412, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412>\n RangeNotSatisfiable: 416, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/416>\n InternalServerError: 500, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500>\n GatewayTimeout: 504 // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504>\n} as const;\n"],"names":[],"mappings":";;AAAA;AACO,MAAM,UAAU,GAAG;IACxB,EAAE,EAAE,GAAG;IACP,cAAc,EAAE,GAAG;IACnB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,GAAG;IACf,YAAY,EAAE,GAAG;IACjB,QAAQ,EAAE,GAAG;IACb,gBAAgB,EAAE,GAAG;IACrB,cAAc,EAAE,GAAG;IACnB,IAAI,EAAE,GAAG;IACT,kBAAkB,EAAE,GAAG;IACvB,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,GAAG;IACxB,cAAc,EAAE,GAAG;;;;;"}
@@ -1,17 +0,0 @@
1
- /** HTTP status codes used in the parquet server handler */
2
- export declare const StatusCode: {
3
- readonly Ok: 200;
4
- readonly PartialContent: 206;
5
- readonly NotModified: 304;
6
- readonly BadRequest: 400;
7
- readonly Unauthorized: 401;
8
- readonly NotFound: 404;
9
- readonly MethodNotAllowed: 405;
10
- readonly RequestTimeout: 408;
11
- readonly Gone: 410;
12
- readonly PreconditionFailed: 412;
13
- readonly RangeNotSatisfiable: 416;
14
- readonly InternalServerError: 500;
15
- readonly GatewayTimeout: 504;
16
- };
17
- //# sourceMappingURL=status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/utils/status.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;CAcb,CAAC"}
@@ -1,19 +0,0 @@
1
- /** HTTP status codes used in the parquet server handler */
2
- const StatusCode = {
3
- Ok: 200, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200>
4
- PartialContent: 206, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206>
5
- NotModified: 304, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304>
6
- BadRequest: 400, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400>
7
- Unauthorized: 401, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401>
8
- NotFound: 404, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404>
9
- MethodNotAllowed: 405, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405>
10
- RequestTimeout: 408, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408>
11
- Gone: 410, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410>
12
- PreconditionFailed: 412, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412>
13
- RangeNotSatisfiable: 416, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/416>
14
- InternalServerError: 500, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500>
15
- GatewayTimeout: 504 // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504>
16
- };
17
-
18
- export { StatusCode };
19
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sources":["../../src/utils/status.ts"],"sourcesContent":["/** HTTP status codes used in the parquet server handler */\nexport const StatusCode = {\n Ok: 200, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200>\n PartialContent: 206, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/206>\n NotModified: 304, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304>\n BadRequest: 400, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400>\n Unauthorized: 401, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401>\n NotFound: 404, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404>\n MethodNotAllowed: 405, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405>\n RequestTimeout: 408, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408>\n Gone: 410, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410>\n PreconditionFailed: 412, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/412>\n RangeNotSatisfiable: 416, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/416>\n InternalServerError: 500, // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500>\n GatewayTimeout: 504 // <https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504>\n} as const;\n"],"names":[],"mappings":"AAAA;AACO,MAAM,UAAU,GAAG;IACxB,EAAE,EAAE,GAAG;IACP,cAAc,EAAE,GAAG;IACnB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,GAAG;IACf,YAAY,EAAE,GAAG;IACjB,QAAQ,EAAE,GAAG;IACb,gBAAgB,EAAE,GAAG;IACrB,cAAc,EAAE,GAAG;IACnB,IAAI,EAAE,GAAG;IACT,kBAAkB,EAAE,GAAG;IACvB,mBAAmB,EAAE,GAAG;IACxB,mBAAmB,EAAE,GAAG;IACxB,cAAc,EAAE,GAAG;;;;;"}