@abyss-project/link 0.0.0-stage → 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 (168) hide show
  1. package/.eslintrc.js +32 -0
  2. package/.prettierrc +5 -0
  3. package/README.md +21 -2
  4. package/dist/api/abyss.admin.api.d.ts +4 -0
  5. package/dist/api/abyss.admin.api.js +17 -0
  6. package/dist/api/abyss.admin.api.js.map +1 -0
  7. package/dist/api/index.d.ts +4 -0
  8. package/dist/api/index.js +21 -0
  9. package/dist/api/index.js.map +1 -0
  10. package/dist/api/link.admin.api.d.ts +14 -0
  11. package/dist/api/link.admin.api.js +64 -0
  12. package/dist/api/link.admin.api.js.map +1 -0
  13. package/dist/api/link.api.d.ts +15 -0
  14. package/dist/api/link.api.js +69 -0
  15. package/dist/api/link.api.js.map +1 -0
  16. package/dist/api/link.public.api.d.ts +2 -0
  17. package/dist/api/link.public.api.js +9 -0
  18. package/dist/api/link.public.api.js.map +1 -0
  19. package/dist/constants/index.d.ts +1 -0
  20. package/dist/constants/index.js +18 -0
  21. package/dist/constants/index.js.map +1 -0
  22. package/dist/constants/link.constants.d.ts +25 -0
  23. package/dist/constants/link.constants.js +48 -0
  24. package/dist/constants/link.constants.js.map +1 -0
  25. package/dist/index.d.ts +70 -0
  26. package/dist/index.js +157 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/types/enum/api-error.enum.d.ts +24 -0
  29. package/dist/types/enum/api-error.enum.js +30 -0
  30. package/dist/types/enum/api-error.enum.js.map +1 -0
  31. package/dist/types/enum/index.d.ts +4 -0
  32. package/dist/types/enum/index.js +21 -0
  33. package/dist/types/enum/index.js.map +1 -0
  34. package/dist/types/enum/link-share.enum.d.ts +11 -0
  35. package/dist/types/enum/link-share.enum.js +17 -0
  36. package/dist/types/enum/link-share.enum.js.map +1 -0
  37. package/dist/types/enum/link-stats.enum.d.ts +5 -0
  38. package/dist/types/enum/link-stats.enum.js +10 -0
  39. package/dist/types/enum/link-stats.enum.js.map +1 -0
  40. package/dist/types/enum/link.enum.d.ts +20 -0
  41. package/dist/types/enum/link.enum.js +27 -0
  42. package/dist/types/enum/link.enum.js.map +1 -0
  43. package/dist/types/index.d.ts +2 -0
  44. package/dist/types/index.js +19 -0
  45. package/dist/types/index.js.map +1 -0
  46. package/dist/types/interface/api/index.d.ts +5 -0
  47. package/dist/types/interface/api/index.js +22 -0
  48. package/dist/types/interface/api/index.js.map +1 -0
  49. package/dist/types/interface/api/requests/abyss.admin.request.d.ts +14 -0
  50. package/dist/types/interface/api/requests/abyss.admin.request.js +3 -0
  51. package/dist/types/interface/api/requests/abyss.admin.request.js.map +1 -0
  52. package/dist/types/interface/api/requests/index.d.ts +4 -0
  53. package/dist/types/interface/api/requests/index.js +21 -0
  54. package/dist/types/interface/api/requests/index.js.map +1 -0
  55. package/dist/types/interface/api/requests/link.admin.request.d.ts +69 -0
  56. package/dist/types/interface/api/requests/link.admin.request.js +3 -0
  57. package/dist/types/interface/api/requests/link.admin.request.js.map +1 -0
  58. package/dist/types/interface/api/requests/link.public.request.d.ts +13 -0
  59. package/dist/types/interface/api/requests/link.public.request.js +3 -0
  60. package/dist/types/interface/api/requests/link.public.request.js.map +1 -0
  61. package/dist/types/interface/api/requests/link.request.d.ts +74 -0
  62. package/dist/types/interface/api/requests/link.request.js +3 -0
  63. package/dist/types/interface/api/requests/link.request.js.map +1 -0
  64. package/dist/types/interface/api/responses/abyss.admin.response.d.ts +14 -0
  65. package/dist/types/interface/api/responses/abyss.admin.response.js +3 -0
  66. package/dist/types/interface/api/responses/abyss.admin.response.js.map +1 -0
  67. package/dist/types/interface/api/responses/index.d.ts +4 -0
  68. package/dist/types/interface/api/responses/index.js +21 -0
  69. package/dist/types/interface/api/responses/index.js.map +1 -0
  70. package/dist/types/interface/api/responses/link.admin.response.d.ts +43 -0
  71. package/dist/types/interface/api/responses/link.admin.response.js +3 -0
  72. package/dist/types/interface/api/responses/link.admin.response.js.map +1 -0
  73. package/dist/types/interface/api/responses/link.public.response.d.ts +5 -0
  74. package/dist/types/interface/api/responses/link.public.response.js +3 -0
  75. package/dist/types/interface/api/responses/link.public.response.js.map +1 -0
  76. package/dist/types/interface/api/responses/link.response.d.ts +43 -0
  77. package/dist/types/interface/api/responses/link.response.js +3 -0
  78. package/dist/types/interface/api/responses/link.response.js.map +1 -0
  79. package/dist/types/interface/api/type-message/api-error.d.ts +6 -0
  80. package/dist/types/interface/api/type-message/api-error.js +3 -0
  81. package/dist/types/interface/api/type-message/api-error.js.map +1 -0
  82. package/dist/types/interface/api/type-message/base-paginate.d.ts +10 -0
  83. package/dist/types/interface/api/type-message/base-paginate.js +3 -0
  84. package/dist/types/interface/api/type-message/base-paginate.js.map +1 -0
  85. package/dist/types/interface/api/type-message/response.d.ts +5 -0
  86. package/dist/types/interface/api/type-message/response.js +3 -0
  87. package/dist/types/interface/api/type-message/response.js.map +1 -0
  88. package/dist/types/interface/index.d.ts +2 -0
  89. package/dist/types/interface/index.js +19 -0
  90. package/dist/types/interface/index.js.map +1 -0
  91. package/dist/types/interface/models/index.d.ts +5 -0
  92. package/dist/types/interface/models/index.js +22 -0
  93. package/dist/types/interface/models/index.js.map +1 -0
  94. package/dist/types/interface/models/link-list.dto.d.ts +20 -0
  95. package/dist/types/interface/models/link-list.dto.js +3 -0
  96. package/dist/types/interface/models/link-list.dto.js.map +1 -0
  97. package/dist/types/interface/models/link.dto.d.ts +91 -0
  98. package/dist/types/interface/models/link.dto.js +3 -0
  99. package/dist/types/interface/models/link.dto.js.map +1 -0
  100. package/dist/types/interface/models/organization.dto.d.ts +11 -0
  101. package/dist/types/interface/models/organization.dto.js +3 -0
  102. package/dist/types/interface/models/organization.dto.js.map +1 -0
  103. package/dist/types/interface/models/project.dto.d.ts +12 -0
  104. package/dist/types/interface/models/project.dto.js +3 -0
  105. package/dist/types/interface/models/project.dto.js.map +1 -0
  106. package/dist/types/interface/models/user.dto.d.ts +11 -0
  107. package/dist/types/interface/models/user.dto.js +3 -0
  108. package/dist/types/interface/models/user.dto.js.map +1 -0
  109. package/dist/utils/enum.utils.d.ts +1 -0
  110. package/dist/utils/enum.utils.js +3 -0
  111. package/dist/utils/enum.utils.js.map +1 -0
  112. package/dist/utils/error.utils.d.ts +15 -0
  113. package/dist/utils/error.utils.js +25 -0
  114. package/dist/utils/error.utils.js.map +1 -0
  115. package/dist/utils/index.d.ts +3 -0
  116. package/dist/utils/index.js +20 -0
  117. package/dist/utils/index.js.map +1 -0
  118. package/dist/utils/link-slug.utils.d.ts +1 -0
  119. package/dist/utils/link-slug.utils.js +11 -0
  120. package/dist/utils/link-slug.utils.js.map +1 -0
  121. package/jest.config.cjs +9 -0
  122. package/package.json +62 -4
  123. package/src/api/abyss.admin.api.ts +39 -0
  124. package/src/api/index.ts +4 -0
  125. package/src/api/link.admin.api.ts +168 -0
  126. package/src/api/link.api.ts +158 -0
  127. package/src/api/link.public.api.ts +19 -0
  128. package/src/constants/index.ts +1 -0
  129. package/src/constants/link.constants.ts +66 -0
  130. package/src/constants/tests/link-forbidden-slugs.spec.ts +103 -0
  131. package/src/index.ts +180 -0
  132. package/src/tests/link-public-api.spec.ts +37 -0
  133. package/src/tests/link-sdk-surface.spec.ts +191 -0
  134. package/src/tests/sdk-surface.spec.ts +63 -0
  135. package/src/types/enum/api-error.enum.ts +31 -0
  136. package/src/types/enum/index.ts +4 -0
  137. package/src/types/enum/link-share.enum.ts +17 -0
  138. package/src/types/enum/link-stats.enum.ts +6 -0
  139. package/src/types/enum/link.enum.ts +34 -0
  140. package/src/types/index.ts +2 -0
  141. package/src/types/interface/api/index.ts +5 -0
  142. package/src/types/interface/api/requests/abyss.admin.request.ts +17 -0
  143. package/src/types/interface/api/requests/index.ts +4 -0
  144. package/src/types/interface/api/requests/link.admin.request.ts +104 -0
  145. package/src/types/interface/api/requests/link.public.request.ts +18 -0
  146. package/src/types/interface/api/requests/link.request.ts +100 -0
  147. package/src/types/interface/api/responses/abyss.admin.response.ts +17 -0
  148. package/src/types/interface/api/responses/index.ts +4 -0
  149. package/src/types/interface/api/responses/link.admin.response.ts +56 -0
  150. package/src/types/interface/api/responses/link.public.response.ts +7 -0
  151. package/src/types/interface/api/responses/link.response.ts +55 -0
  152. package/src/types/interface/api/type-message/api-error.ts +7 -0
  153. package/src/types/interface/api/type-message/base-paginate.ts +11 -0
  154. package/src/types/interface/api/type-message/response.ts +6 -0
  155. package/src/types/interface/index.ts +2 -0
  156. package/src/types/interface/models/index.ts +5 -0
  157. package/src/types/interface/models/link-list.dto.ts +28 -0
  158. package/src/types/interface/models/link.dto.ts +117 -0
  159. package/src/types/interface/models/organization.dto.ts +21 -0
  160. package/src/types/interface/models/project.dto.ts +16 -0
  161. package/src/types/interface/models/user.dto.ts +19 -0
  162. package/src/types/tests/link-enums.spec.ts +48 -0
  163. package/src/utils/enum.utils.ts +1 -0
  164. package/src/utils/error.utils.ts +30 -0
  165. package/src/utils/index.ts +3 -0
  166. package/src/utils/link-slug.utils.ts +10 -0
  167. package/tsconfig.check.json +15 -0
  168. package/tsconfig.json +36 -0
@@ -0,0 +1,30 @@
1
+ import { Code, ErrorType } from '../types';
2
+
3
+ type ErrorParams = { code: Code; type: ErrorType; message?: string };
4
+
5
+ export class ServiceException extends Error {
6
+ private readonly code: Code;
7
+
8
+ private readonly type: ErrorType;
9
+
10
+ getCode(): Code {
11
+ return this.code;
12
+ }
13
+
14
+ getType(): ErrorType {
15
+ return this.type;
16
+ }
17
+
18
+ constructor(params: ErrorParams) {
19
+ super(params.message);
20
+ this.code = params.code;
21
+ this.type = params.type;
22
+ }
23
+ }
24
+
25
+ export const handleError = (error: Error | ErrorParams, _params?: ErrorParams): Error => {
26
+ if (error instanceof Error) {
27
+ return error;
28
+ }
29
+ return new ServiceException(error);
30
+ };
@@ -0,0 +1,3 @@
1
+ export * from './error.utils';
2
+ export * from './enum.utils';
3
+ export * from './link-slug.utils';
@@ -0,0 +1,10 @@
1
+ import { LINK_FORBIDDEN_SLUGS, LINK_FORBIDDEN_SLUG_PREFIXES } from '../constants/link.constants';
2
+
3
+ /** Whether a SHORTENED slug is reserved, compared in lowercase. The format is checked by `LINK_SLUG_PATTERN`. */
4
+ export const isForbiddenLinkSlug = (slug: string): boolean => {
5
+ const key = slug.toLowerCase();
6
+ return (
7
+ LINK_FORBIDDEN_SLUGS.includes(key) ||
8
+ LINK_FORBIDDEN_SLUG_PREFIXES.some((prefix) => key.startsWith(prefix))
9
+ );
10
+ };
@@ -0,0 +1,15 @@
1
+ {
2
+ // Perimetre de VERIFICATION, distinct de celui du build.
3
+ //
4
+ // `tsconfig.json` exclut `src/**/*.spec.ts` parce qu'il sert a emettre `dist/`, ou une spec
5
+ // n'a rien a faire. Mais eslint s'appuie sur ce meme fichier via `parserOptions.project` :
6
+ // les cinq specs du paquet sortaient donc en « Parsing error: that TSConfig does not include
7
+ // this file », mesure du 2026-09-09, et n'etaient lintees par personne.
8
+ //
9
+ // Ce fichier sert uniquement a eslint. Il n'emet rien et ne change pas ce que `build` produit.
10
+ "extends": "./tsconfig.json",
11
+ "compilerOptions": {
12
+ "noEmit": true
13
+ },
14
+ "exclude": ["./dist/**/*"]
15
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "compilerOptions": {
3
+ "incremental": false,
4
+ "target": "es2021",
5
+ "lib": [
6
+ "dom",
7
+ "es2021"
8
+ ],
9
+ "experimentalDecorators": true,
10
+ "emitDecoratorMetadata": true,
11
+ "module": "commonjs",
12
+ "rootDir": "src",
13
+ "moduleResolution": "node",
14
+ "resolveJsonModule": true,
15
+ "allowJs": true,
16
+ "declaration": true,
17
+ "sourceMap": true,
18
+ "outDir": "./dist",
19
+ "removeComments": true,
20
+ "allowSyntheticDefaultImports": true,
21
+ "esModuleInterop": true,
22
+ "forceConsistentCasingInFileNames": true,
23
+ "strict": true,
24
+ "strictNullChecks": true,
25
+ "strictFunctionTypes": true,
26
+ "strictPropertyInitialization": false,
27
+ "skipLibCheck": true
28
+ },
29
+ "include": [
30
+ "./src"
31
+ ],
32
+ "exclude": [
33
+ "./dist/**/*",
34
+ "./src/**/*.spec.ts"
35
+ ]
36
+ }