@abyss-project/link 0.0.0-stage → 1.0.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 (118) 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 +1 -0
  8. package/dist/api/index.js +18 -0
  9. package/dist/api/index.js.map +1 -0
  10. package/dist/constants/index.d.ts +1 -0
  11. package/dist/constants/index.js +18 -0
  12. package/dist/constants/index.js.map +1 -0
  13. package/dist/constants/link.constants.d.ts +14 -0
  14. package/dist/constants/link.constants.js +37 -0
  15. package/dist/constants/link.constants.js.map +1 -0
  16. package/dist/index.d.ts +33 -0
  17. package/dist/index.js +120 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/types/enum/api-error.enum.d.ts +16 -0
  20. package/dist/types/enum/api-error.enum.js +22 -0
  21. package/dist/types/enum/api-error.enum.js.map +1 -0
  22. package/dist/types/enum/index.d.ts +2 -0
  23. package/dist/types/enum/index.js +19 -0
  24. package/dist/types/enum/index.js.map +1 -0
  25. package/dist/types/enum/link.enum.d.ts +20 -0
  26. package/dist/types/enum/link.enum.js +27 -0
  27. package/dist/types/enum/link.enum.js.map +1 -0
  28. package/dist/types/index.d.ts +2 -0
  29. package/dist/types/index.js +19 -0
  30. package/dist/types/index.js.map +1 -0
  31. package/dist/types/interface/api/index.d.ts +5 -0
  32. package/dist/types/interface/api/index.js +22 -0
  33. package/dist/types/interface/api/index.js.map +1 -0
  34. package/dist/types/interface/api/requests/abyss.admin.request.d.ts +14 -0
  35. package/dist/types/interface/api/requests/abyss.admin.request.js +3 -0
  36. package/dist/types/interface/api/requests/abyss.admin.request.js.map +1 -0
  37. package/dist/types/interface/api/requests/index.d.ts +1 -0
  38. package/dist/types/interface/api/requests/index.js +18 -0
  39. package/dist/types/interface/api/requests/index.js.map +1 -0
  40. package/dist/types/interface/api/responses/abyss.admin.response.d.ts +14 -0
  41. package/dist/types/interface/api/responses/abyss.admin.response.js +3 -0
  42. package/dist/types/interface/api/responses/abyss.admin.response.js.map +1 -0
  43. package/dist/types/interface/api/responses/index.d.ts +1 -0
  44. package/dist/types/interface/api/responses/index.js +18 -0
  45. package/dist/types/interface/api/responses/index.js.map +1 -0
  46. package/dist/types/interface/api/type-message/api-error.d.ts +6 -0
  47. package/dist/types/interface/api/type-message/api-error.js +3 -0
  48. package/dist/types/interface/api/type-message/api-error.js.map +1 -0
  49. package/dist/types/interface/api/type-message/base-paginate.d.ts +10 -0
  50. package/dist/types/interface/api/type-message/base-paginate.js +3 -0
  51. package/dist/types/interface/api/type-message/base-paginate.js.map +1 -0
  52. package/dist/types/interface/api/type-message/response.d.ts +5 -0
  53. package/dist/types/interface/api/type-message/response.js +3 -0
  54. package/dist/types/interface/api/type-message/response.js.map +1 -0
  55. package/dist/types/interface/index.d.ts +2 -0
  56. package/dist/types/interface/index.js +19 -0
  57. package/dist/types/interface/index.js.map +1 -0
  58. package/dist/types/interface/models/index.d.ts +4 -0
  59. package/dist/types/interface/models/index.js +21 -0
  60. package/dist/types/interface/models/index.js.map +1 -0
  61. package/dist/types/interface/models/link.dto.d.ts +91 -0
  62. package/dist/types/interface/models/link.dto.js +3 -0
  63. package/dist/types/interface/models/link.dto.js.map +1 -0
  64. package/dist/types/interface/models/organization.dto.d.ts +11 -0
  65. package/dist/types/interface/models/organization.dto.js +3 -0
  66. package/dist/types/interface/models/organization.dto.js.map +1 -0
  67. package/dist/types/interface/models/project.dto.d.ts +12 -0
  68. package/dist/types/interface/models/project.dto.js +3 -0
  69. package/dist/types/interface/models/project.dto.js.map +1 -0
  70. package/dist/types/interface/models/user.dto.d.ts +11 -0
  71. package/dist/types/interface/models/user.dto.js +3 -0
  72. package/dist/types/interface/models/user.dto.js.map +1 -0
  73. package/dist/utils/enum.utils.d.ts +1 -0
  74. package/dist/utils/enum.utils.js +3 -0
  75. package/dist/utils/enum.utils.js.map +1 -0
  76. package/dist/utils/error.utils.d.ts +15 -0
  77. package/dist/utils/error.utils.js +25 -0
  78. package/dist/utils/error.utils.js.map +1 -0
  79. package/dist/utils/index.d.ts +3 -0
  80. package/dist/utils/index.js +20 -0
  81. package/dist/utils/index.js.map +1 -0
  82. package/dist/utils/link-slug.utils.d.ts +1 -0
  83. package/dist/utils/link-slug.utils.js +11 -0
  84. package/dist/utils/link-slug.utils.js.map +1 -0
  85. package/jest.config.cjs +9 -0
  86. package/package.json +56 -3
  87. package/src/api/abyss.admin.api.ts +39 -0
  88. package/src/api/index.ts +1 -0
  89. package/src/constants/index.ts +1 -0
  90. package/src/constants/link.constants.ts +49 -0
  91. package/src/constants/tests/link-forbidden-slugs.spec.ts +103 -0
  92. package/src/index.ts +109 -0
  93. package/src/tests/sdk-surface.spec.ts +63 -0
  94. package/src/types/enum/api-error.enum.ts +18 -0
  95. package/src/types/enum/index.ts +2 -0
  96. package/src/types/enum/link.enum.ts +34 -0
  97. package/src/types/index.ts +2 -0
  98. package/src/types/interface/api/index.ts +5 -0
  99. package/src/types/interface/api/requests/abyss.admin.request.ts +17 -0
  100. package/src/types/interface/api/requests/index.ts +1 -0
  101. package/src/types/interface/api/responses/abyss.admin.response.ts +17 -0
  102. package/src/types/interface/api/responses/index.ts +1 -0
  103. package/src/types/interface/api/type-message/api-error.ts +7 -0
  104. package/src/types/interface/api/type-message/base-paginate.ts +11 -0
  105. package/src/types/interface/api/type-message/response.ts +6 -0
  106. package/src/types/interface/index.ts +2 -0
  107. package/src/types/interface/models/index.ts +4 -0
  108. package/src/types/interface/models/link.dto.ts +117 -0
  109. package/src/types/interface/models/organization.dto.ts +21 -0
  110. package/src/types/interface/models/project.dto.ts +16 -0
  111. package/src/types/interface/models/user.dto.ts +19 -0
  112. package/src/types/tests/link-enums.spec.ts +46 -0
  113. package/src/utils/enum.utils.ts +1 -0
  114. package/src/utils/error.utils.ts +30 -0
  115. package/src/utils/index.ts +3 -0
  116. package/src/utils/link-slug.utils.ts +10 -0
  117. package/tsconfig.check.json +15 -0
  118. 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
+ }