@kensio/yulin 0.0.1 → 0.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 (129) hide show
  1. package/.github/workflows/pr.yml +54 -0
  2. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  3. package/.nvmrc +1 -1
  4. package/README.md +44 -1
  5. package/dist/command/command-handler.d.ts +4 -0
  6. package/dist/command/command-handler.d.ts.map +1 -0
  7. package/dist/command/command-handler.js +2 -0
  8. package/dist/command/command-handler.js.map +1 -0
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/service/cloudfront/factory/cloudfront-functions.factory.d.ts +7 -0
  14. package/dist/service/cloudfront/factory/cloudfront-functions.factory.d.ts.map +1 -0
  15. package/dist/service/cloudfront/factory/cloudfront-functions.factory.js +33 -0
  16. package/dist/service/cloudfront/factory/cloudfront-functions.factory.js.map +1 -0
  17. package/dist/service/cloudfront/index.d.ts +3 -0
  18. package/dist/service/cloudfront/index.d.ts.map +1 -0
  19. package/dist/service/cloudfront/index.js +2 -0
  20. package/dist/service/cloudfront/index.js.map +1 -0
  21. package/dist/service/cloudfront/typings/cloudfront-functions.d.ts +37 -0
  22. package/dist/service/cloudfront/typings/cloudfront-functions.d.ts.map +1 -0
  23. package/dist/service/cloudfront/typings/cloudfront-functions.js +2 -0
  24. package/dist/service/cloudfront/typings/cloudfront-functions.js.map +1 -0
  25. package/dist/service/dynamodb/command/create-table/create-table.handler.d.ts +20 -0
  26. package/dist/service/dynamodb/command/create-table/create-table.handler.d.ts.map +1 -0
  27. package/dist/service/dynamodb/command/create-table/create-table.handler.js +47 -0
  28. package/dist/service/dynamodb/command/create-table/create-table.handler.js.map +1 -0
  29. package/dist/service/dynamodb/command/describe-table/describe-table.handler.d.ts +17 -0
  30. package/dist/service/dynamodb/command/describe-table/describe-table.handler.d.ts.map +1 -0
  31. package/dist/service/dynamodb/command/describe-table/describe-table.handler.js +37 -0
  32. package/dist/service/dynamodb/command/describe-table/describe-table.handler.js.map +1 -0
  33. package/dist/service/dynamodb/command/list-tables/list-tables.handler.d.ts +17 -0
  34. package/dist/service/dynamodb/command/list-tables/list-tables.handler.d.ts.map +1 -0
  35. package/dist/service/dynamodb/command/list-tables/list-tables.handler.js +32 -0
  36. package/dist/service/dynamodb/command/list-tables/list-tables.handler.js.map +1 -0
  37. package/dist/service/dynamodb/command/put-item/put-item.handler.d.ts +17 -0
  38. package/dist/service/dynamodb/command/put-item/put-item.handler.d.ts.map +1 -0
  39. package/dist/service/dynamodb/command/put-item/put-item.handler.js +39 -0
  40. package/dist/service/dynamodb/command/put-item/put-item.handler.js.map +1 -0
  41. package/dist/service/dynamodb/dynamodb.d.ts +27 -0
  42. package/dist/service/dynamodb/dynamodb.d.ts.map +1 -0
  43. package/dist/service/dynamodb/dynamodb.js +43 -0
  44. package/dist/service/dynamodb/dynamodb.js.map +1 -0
  45. package/dist/service/dynamodb/index.d.ts +2 -0
  46. package/dist/service/dynamodb/index.d.ts.map +1 -0
  47. package/dist/service/dynamodb/index.js +2 -0
  48. package/dist/service/dynamodb/index.js.map +1 -0
  49. package/dist/service/dynamodb/item/dynamodb-item-attribute.d.ts +21 -0
  50. package/dist/service/dynamodb/item/dynamodb-item-attribute.d.ts.map +1 -0
  51. package/dist/service/dynamodb/item/dynamodb-item-attribute.js +92 -0
  52. package/dist/service/dynamodb/item/dynamodb-item-attribute.js.map +1 -0
  53. package/dist/service/dynamodb/item/dynamodb-item.d.ts +18 -0
  54. package/dist/service/dynamodb/item/dynamodb-item.d.ts.map +1 -0
  55. package/dist/service/dynamodb/item/dynamodb-item.js +29 -0
  56. package/dist/service/dynamodb/item/dynamodb-item.js.map +1 -0
  57. package/dist/service/dynamodb/table/dynamodb-key-schema.d.ts +30 -0
  58. package/dist/service/dynamodb/table/dynamodb-key-schema.d.ts.map +1 -0
  59. package/dist/service/dynamodb/table/dynamodb-key-schema.js +61 -0
  60. package/dist/service/dynamodb/table/dynamodb-key-schema.js.map +1 -0
  61. package/dist/service/dynamodb/table/dynamodb-table.d.ts +34 -0
  62. package/dist/service/dynamodb/table/dynamodb-table.d.ts.map +1 -0
  63. package/dist/service/dynamodb/table/dynamodb-table.js +55 -0
  64. package/dist/service/dynamodb/table/dynamodb-table.js.map +1 -0
  65. package/dist/service/organizations/index.d.ts +2 -0
  66. package/dist/service/organizations/index.d.ts.map +1 -0
  67. package/dist/service/organizations/index.js +2 -0
  68. package/dist/service/organizations/index.js.map +1 -0
  69. package/dist/service/organizations/sim-aws-account.d.ts +19 -0
  70. package/dist/service/organizations/sim-aws-account.d.ts.map +1 -0
  71. package/dist/service/organizations/sim-aws-account.js +26 -0
  72. package/dist/service/organizations/sim-aws-account.js.map +1 -0
  73. package/dist/service/s3/index.d.ts +2 -0
  74. package/dist/service/s3/index.d.ts.map +1 -0
  75. package/dist/service/s3/index.js +3 -0
  76. package/dist/service/s3/index.js.map +1 -0
  77. package/dist/util/background/background.d.ts +28 -0
  78. package/dist/util/background/background.d.ts.map +1 -0
  79. package/dist/util/background/background.js +44 -0
  80. package/dist/util/background/background.js.map +1 -0
  81. package/dist/util/brand.type.d.ts +8 -0
  82. package/dist/util/brand.type.d.ts.map +1 -0
  83. package/dist/util/brand.type.js +2 -0
  84. package/dist/util/brand.type.js.map +1 -0
  85. package/dist/util/defined.d.ts +5 -0
  86. package/dist/util/defined.d.ts.map +1 -0
  87. package/dist/util/defined.js +11 -0
  88. package/dist/util/defined.js.map +1 -0
  89. package/dist/util/memo/memo.d.ts +15 -0
  90. package/dist/util/memo/memo.d.ts.map +1 -0
  91. package/dist/util/memo/memo.js +24 -0
  92. package/dist/util/memo/memo.js.map +1 -0
  93. package/dist/util/sleep.d.ts +10 -0
  94. package/dist/util/sleep.d.ts.map +1 -0
  95. package/dist/util/sleep.js +16 -0
  96. package/dist/util/sleep.js.map +1 -0
  97. package/eslint.config.ts +18 -4
  98. package/package.json +32 -19
  99. package/pnpm-workspace.yaml +23 -1
  100. package/scripts/publish.sh +14 -0
  101. package/src/index.ts +0 -0
  102. package/src/service/cloudfront/factory/cloudfront-functions.factory.iso.test.ts +10 -0
  103. package/src/service/cloudfront/factory/cloudfront-functions.factory.ts +34 -0
  104. package/src/service/cloudfront/index.ts +13 -0
  105. package/src/service/cloudfront/typings/cloudfront-functions.ts +48 -0
  106. package/src/service/dynamodb/command/create-table/create-table.handler.ts +5 -3
  107. package/src/service/dynamodb/command/create-table/create-table.iso.test.ts +36 -4
  108. package/src/service/dynamodb/command/describe-table/describe-table.handler.ts +3 -1
  109. package/src/service/dynamodb/command/describe-table/describe-table.iso.test.ts +18 -3
  110. package/src/service/dynamodb/command/list-tables/list-tables.handler.ts +3 -1
  111. package/src/service/dynamodb/command/list-tables/list-tables.iso.test.ts +54 -9
  112. package/src/service/dynamodb/command/put-item/put-item.handler.ts +56 -0
  113. package/src/service/dynamodb/command/put-item/put-item.iso.test.ts +354 -0
  114. package/src/service/dynamodb/dynamodb.ts +15 -1
  115. package/src/service/dynamodb/index.ts +0 -0
  116. package/src/service/dynamodb/item/dynamodb-item-attribute.iso.test.ts +19 -0
  117. package/src/service/dynamodb/item/dynamodb-item-attribute.ts +116 -0
  118. package/src/service/dynamodb/item/dynamodb-item.ts +39 -0
  119. package/src/service/dynamodb/table/dynamodb-key-schema.ts +94 -0
  120. package/src/service/dynamodb/{dynamodb-table.iso.test.ts → table/dynamodb-table.iso.test.ts} +8 -3
  121. package/src/service/dynamodb/table/dynamodb-table.ts +75 -0
  122. package/src/service/organizations/index.ts +0 -0
  123. package/src/service/s3/index.ts +1 -0
  124. package/src/util/background/background.ts +1 -1
  125. package/src/util/defined.ts +15 -0
  126. package/src/util/sleep.ts +1 -1
  127. package/tsconfig.json +11 -8
  128. package/src/service/dynamodb/dynamodb-table.ts +0 -46
  129. package/typings/eslint-plugin-promise.d.ts +0 -11
@@ -0,0 +1,75 @@
1
+ import type { Brand } from "../../../util/brand.type.js";
2
+ import type { CreateTableCommand, TableStatus } from "@aws-sdk/client-dynamodb";
3
+ import { DynamoDbKeySchema } from "./dynamodb-key-schema.js";
4
+ import { assertDefined } from "../../../util/defined.js";
5
+ import type { DynamoDbItem } from "../item/dynamodb-item.js";
6
+ import type { BackgroundScheduler } from "../../../util/background/background.js";
7
+
8
+ export type DynamoDbTableName = Brand<string, "DynamoDbTableName">;
9
+
10
+ /**
11
+ * Simulated DynamoDB Table.
12
+ */
13
+ export class SimDynamoDbTable {
14
+ public readonly creationDateTime: Date;
15
+
16
+ private readonly _tableName: DynamoDbTableName;
17
+ private readonly _keySchema: DynamoDbKeySchema;
18
+ private _status: TableStatus = "CREATING";
19
+
20
+ private readonly items = new Map<string, DynamoDbItem>();
21
+
22
+ constructor(
23
+ createCommand: CreateTableCommand,
24
+ private readonly background: BackgroundScheduler,
25
+ ) {
26
+ assertDefined(
27
+ createCommand.input.TableName,
28
+ "createCommand.input.TableName",
29
+ );
30
+ this._tableName = createCommand.input.TableName as DynamoDbTableName;
31
+ this.creationDateTime = new Date();
32
+
33
+ if (
34
+ createCommand.input.KeySchema === undefined ||
35
+ createCommand.input.KeySchema.length === 0
36
+ ) {
37
+ throw new Error("Table KeySchema is not defined");
38
+ }
39
+ this._keySchema = new DynamoDbKeySchema(createCommand.input);
40
+ }
41
+
42
+ /**
43
+ * Simulate the table entering ACTIVE status.
44
+ */
45
+ activate(): Promise<void> {
46
+ this._status = "ACTIVE";
47
+ return Promise.resolve();
48
+ }
49
+
50
+ /**
51
+ * Get the DynamoDB table name.
52
+ */
53
+ public get tableName(): DynamoDbTableName {
54
+ return this._tableName;
55
+ }
56
+
57
+ /**
58
+ * Get the current table status.
59
+ */
60
+ public get status(): TableStatus {
61
+ return this._status;
62
+ }
63
+
64
+ /**
65
+ * Put an item into the table.
66
+ */
67
+ public putItem(item: DynamoDbItem): Promise<void> {
68
+ const keyString = this._keySchema.makeItemKey(item);
69
+ this.background.schedule(() => {
70
+ this.items.set(keyString, item);
71
+ return Promise.resolve();
72
+ });
73
+ return Promise.resolve();
74
+ }
75
+ }
File without changes
@@ -0,0 +1 @@
1
+ //
@@ -22,7 +22,7 @@ export class BackgroundTasks
22
22
  */
23
23
  schedule(task: BackgroundTask): void {
24
24
  const promise = new Promise<void>((resolve) => {
25
- setTimeout(resolve, Math.random() * 3);
25
+ setTimeout(resolve, Math.random());
26
26
  })
27
27
  .then(task)
28
28
  .then(
@@ -0,0 +1,15 @@
1
+ class RequiredValueUndefinedError extends Error {
2
+ //
3
+ }
4
+
5
+ /**
6
+ * Require that a given value is defined.
7
+ */
8
+ export function assertDefined<T>(
9
+ value: T | undefined,
10
+ description: string,
11
+ ): asserts value is T {
12
+ if (value === undefined) {
13
+ throw new RequiredValueUndefinedError(`${description} must be defined`);
14
+ }
15
+ }
package/src/util/sleep.ts CHANGED
@@ -12,5 +12,5 @@ export async function sleep(ms = 0): Promise<void> {
12
12
  * operations completing in a non-deterministic order.
13
13
  */
14
14
  export async function jitter(): Promise<void> {
15
- await sleep(Math.random() * 2);
15
+ await sleep(Math.random());
16
16
  }
package/tsconfig.json CHANGED
@@ -6,28 +6,31 @@
6
6
  "lib": ["ES2023"],
7
7
  "types": ["node"],
8
8
 
9
- "strict": true,
9
+ "allowUnreachableCode": false,
10
+ "allowUnusedLabels": false,
10
11
  "exactOptionalPropertyTypes": true,
12
+ "incremental": true,
13
+ "noCheck": false,
14
+ "noEmitOnError": true,
15
+ "noFallthroughCasesInSwitch": true,
11
16
  "noImplicitOverride": true,
12
17
  "noImplicitReturns": true,
13
18
  "noPropertyAccessFromIndexSignature": true,
14
19
  "noUncheckedIndexedAccess": true,
15
20
  "noUnusedLocals": true,
16
21
  "noUnusedParameters": true,
17
- "noFallthroughCasesInSwitch": true,
18
- "allowUnusedLabels": false,
19
- "allowUnreachableCode": false,
22
+ "strict": true,
20
23
 
21
- "isolatedModules": true,
22
- "verbatimModuleSyntax": true,
23
- "skipLibCheck": true,
24
24
  "forceConsistentCasingInFileNames": true,
25
+ "isolatedModules": true,
25
26
  "resolveJsonModule": true,
27
+ "skipLibCheck": true,
28
+ "verbatimModuleSyntax": true,
26
29
 
27
30
  "declaration": true,
28
31
  "declarationMap": true,
29
- "sourceMap": true,
30
32
  "removeComments": false,
33
+ "sourceMap": true,
31
34
 
32
35
  "outDir": "dist",
33
36
  "rootDir": "."
@@ -1,46 +0,0 @@
1
- import type { Brand } from "../../util/brand.type.js";
2
- import type { CreateTableCommand, TableStatus } from "@aws-sdk/client-dynamodb";
3
-
4
- export type DynamoDbTableName = Brand<string, "DynamoDbTableName">;
5
-
6
- /**
7
- * Simulated DynamoDB Table.
8
- */
9
- export class SimDynamoDbTable {
10
- public readonly creationDateTime: Date;
11
-
12
- private readonly _tableName: DynamoDbTableName;
13
- private _status: TableStatus = "CREATING";
14
-
15
- constructor(private readonly createCommand: CreateTableCommand) {
16
- if (createCommand.input.TableName === undefined) {
17
- throw new Error(
18
- "DynamoDB CreateTableCommand.input.TableName is required",
19
- );
20
- }
21
- this._tableName = this.createCommand.input.TableName as DynamoDbTableName;
22
- this.creationDateTime = new Date();
23
- }
24
-
25
- /**
26
- * Simulate the table entering ACTIVE status.
27
- */
28
- activate(): Promise<void> {
29
- this._status = "ACTIVE";
30
- return Promise.resolve();
31
- }
32
-
33
- /**
34
- * Get the DynamoDB table name.
35
- */
36
- public get tableName(): DynamoDbTableName {
37
- return this._tableName;
38
- }
39
-
40
- /**
41
- * Get the current table status.
42
- */
43
- public get status(): TableStatus {
44
- return this._status;
45
- }
46
- }
@@ -1,11 +0,0 @@
1
- declare module "eslint-plugin-promise" {
2
- import type { ESLint } from "eslint";
3
-
4
- const plugin: ESLint.Plugin & {
5
- configs: {
6
- "flat/recommended": ESLint.Plugin;
7
- };
8
- };
9
-
10
- export default plugin;
11
- }